diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index b200f80..33c4868 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -34,15 +34,7 @@ namespace Txt2Bib return; } var txt2bib = new Text2Bib(); - var result = ""; - try - { - result = txt2bib.Generate(DropArea.Text); - } - catch (Exception ex) - { - MessageBox.Show($"Errore di esecuzione: {ex.Message}"); - } + var result = txt2bib.Generate(DropArea.Text); Debug.Text = result; using var outputFile = new StreamWriter($@"{OutputDir}\output_bibtex.bib"); outputFile.Write(result); @@ -96,7 +88,15 @@ namespace Txt2Bib private void GoBtn_Click(object sender, RoutedEventArgs e) { - Execute(); + try + { + Execute(); + } + catch (Exception ex) + { + MessageBox.Show($"Errore di esecuzione: {ex.Message}"); + return; + } MessageBox.Show("File BibTeX generato correttamente.", "Success", MessageBoxButton.OK, MessageBoxImage.Information); } diff --git a/Records.cs b/Records.cs index 54cf24e..38aa3c8 100644 --- a/Records.cs +++ b/Records.cs @@ -17,9 +17,10 @@ namespace Txt2Bib.Records } protected static string Rearrange(string a) { - a = a.Trim(); - var s = a.Split(' '); - return $"{s[1]} {s[0]}"; + a = a.Trim(); + var s = a.Split(' '); + return s.Length > 1 ? + $"{s[1]} {s[0]}" : a; } } @@ -56,7 +57,7 @@ namespace Txt2Bib.Records } catch (Exception) { - throw; + throw new Exception("Formato pagine non corretto"); } if (entryLines.Length > 7 ) @@ -70,7 +71,7 @@ namespace Txt2Bib.Records public override string ToString() { - return $"@{Type}{{{Author[0][..5].Replace(". ", "_")}_{Year},\n" + + return $"@{Type}{{{Author[0][..2].Replace(". ", "_")}_{Year},\n" + $"\tauthor = \"{string.Join(" and ", Author)}\",\n" + $"\ttitle = {{{Title}}},\n" + $"\tjournal = \"{Journal}\",\n" + @@ -92,6 +93,7 @@ namespace Txt2Bib.Records public string Title { get; set; } = ""; public ushort Year { get; set; } = 1950; public string Publisher { get; set; } = ""; + public string Series { get; set; } = ""; public string Place { get; set; } = ""; public string Url { get; set; } = ""; public string Doi { get; set; } = ""; @@ -99,9 +101,9 @@ namespace Txt2Bib.Records public string Convert(string[] entryLines) { var auths = entryLines[1]; - if (auths.Contains("eds")) + if (auths.Contains("ed")) { - Editor = auths.Replace("(eds.)", "").Split(',').Select(a => Rearrange(a)).ToArray(); + Editor = Regex.Replace(auths,@"\(eds?\.\)", "").Split(',').Select(a => Rearrange(a)).ToArray(); } else { @@ -109,13 +111,14 @@ namespace Txt2Bib.Records } Year = ushort.Parse(entryLines[2]); Title = entryLines[3]; - Place = entryLines[4]; - Publisher = entryLines[5]; + Series = entryLines[4] != string.Empty ? entryLines[4] : Series; + Place = entryLines[5]; + Publisher = entryLines[6]; - if (entryLines.Length > 6 ) + if (entryLines.Length > 7 ) { - if (IsDoi(entryLines[6])) Doi = entryLines[6]; - else Url = entryLines[6]; + if (IsDoi(entryLines[7])) Doi = entryLines[7]; + else Url = entryLines[7]; } return ToString(); @@ -128,12 +131,12 @@ namespace Txt2Bib.Records if (Author.Length != 0) { - label = Author[0][..5].Replace(". ", ""); + label = Author[0][..2].Replace(". ", ""); authString = $"\tauthor = \"{string.Join(" and ", Author)}\",\n"; } else { - label = Editor[0][..5].Replace(". ", ""); + label = Editor[0][..2].Replace(". ", ""); authString = $"\teditor = \"{string.Join(" and ", Editor)}\",\n"; } @@ -141,6 +144,7 @@ namespace Txt2Bib.Records authString + $"\ttitle = {{{Title}}},\n" + $"\tpublisher = \"{Publisher}\",\n" + + $"\tseries = \"{Series}\",\n" + $"\taddress = \"{Place}\",\n" + $"\tyear = \"{Year}\",\n" + $"\turl = \"{Url}\",\n" + @@ -198,7 +202,7 @@ namespace Txt2Bib.Records public override string ToString() { - string label = Author[0][..5].Replace(". ", ""); + string label = Author[0][..2].Replace(". ", ""); string authString = $"\tauthor = \"{string.Join(" and ", Author)}\",\n"; string edsString = Editor.Length != 0 ? $"\teditor = \"{string.Join(" and ", Editor)}\",\n" : ""; @@ -266,7 +270,7 @@ namespace Txt2Bib.Records public override string ToString() { - string label = Author[0][..5].Replace(". ", ""); + string label = Author[0][..2].Replace(". ", ""); string authString = $"\tauthor = \"{string.Join(" and ", Author)}\",\n"; string edsString = $"\teditor = \"{string.Join(" and ", Editor)}\",\n"; diff --git a/Text2Bib.cs b/Text2Bib.cs index 55c1121..b742e8f 100644 --- a/Text2Bib.cs +++ b/Text2Bib.cs @@ -43,6 +43,7 @@ namespace Txt2Bib { using var reader = File.OpenText(path); byte[] contentBytes = File.ReadAllBytes(path); + // Use Windows 1252?? var content = Encoding.Latin1.GetString(contentBytes); IEnumerable entries = new List(); @@ -75,7 +76,7 @@ namespace Txt2Bib var lines = entryFromTxt.Trim().Replace("\r", string.Empty).Split("\n"); var type = lines.First().Trim(); - if (!IsValidEntry(type)) throw new Exception($"Invalid entry type '{type}'"); + //if (!IsValidEntry(type)) throw new Exception($"Invalid entry type '{type}'"); string citation; try @@ -89,9 +90,9 @@ namespace Txt2Bib _ => "" }; } - catch (Exception) + catch (Exception ex) { - throw new Exception("Faulty string in " + entryFromTxt); + throw new Exception($"Errore in {entryFromTxt}\nMessaggio di errore: \"{ex.Message}\""); } return citation; diff --git a/Txt2Bib.csproj b/Txt2Bib.csproj index cdbc233..2cda057 100644 --- a/Txt2Bib.csproj +++ b/Txt2Bib.csproj @@ -5,7 +5,7 @@ net6.0-windows enable true - 0.1.7 + 0.1.8