Add records for bib entries
This commit is contained in:
		
							parent
							
								
									f5e3f92b08
								
							
						
					
					
						commit
						74541f852e
					
				@ -5,21 +5,22 @@
 | 
				
			|||||||
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 | 
					        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 | 
				
			||||||
        xmlns:local="clr-namespace:Txt2Bib"
 | 
					        xmlns:local="clr-namespace:Txt2Bib"
 | 
				
			||||||
        mc:Ignorable="d"
 | 
					        mc:Ignorable="d"
 | 
				
			||||||
        Title="MainWindow" Height="900" Width="800">
 | 
					        Title="MainWindow" Height="718" Width="800">
 | 
				
			||||||
    <Grid Background="#FF38383E">
 | 
					    <Grid Background="#FF38383E" Margin="0,0,0,-16">
 | 
				
			||||||
        <TextBox x:Name="DropArea" HorizontalAlignment="Left" Margin="48,82,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="431" Height="295" PreviewDragEnter="DropArea_PreviewDragEnter" PreviewDragOver="DropArea_PreviewDragOver" Drop="DropArea_Drop"/>
 | 
					        <TextBox x:Name="DropArea" Text="Trascinare qui i file txt da convertire" ToolTip="Trascinare qui i file txt da convertire" HorizontalAlignment="Left" Margin="48,82,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="526" Height="437" PreviewDragEnter="DropArea_PreviewDragEnter" PreviewDragOver="DropArea_PreviewDragOver" Drop="DropArea_Drop"/>
 | 
				
			||||||
        <TextBox x:Name="Debug" HorizontalAlignment="Left" Margin="48,422,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="710" Height="429" RenderTransformOrigin="0.449,1.525"/>
 | 
					        <TextBox x:Name="Debug" IsEnabled="False" HorizontalAlignment="Center" Margin="0,572,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="710" Height="72" RenderTransformOrigin="0.449,1.525"/>
 | 
				
			||||||
        <Label Content="Txt2Bib" HorizontalAlignment="Center" Margin="0,10,0,0" VerticalAlignment="Top" Foreground="White" FontFamily="DejaVu Sans Light" FontSize="28"/>
 | 
					        <Label Content="Txt2Bib" HorizontalAlignment="Center" Margin="0,10,0,0" VerticalAlignment="Top" Foreground="White" FontFamily="Eras ITC" FontSize="28"/>
 | 
				
			||||||
        <Button x:Name="GoBtn" Content="Genera" HorizontalAlignment="Left" Margin="594,160,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5" Height="83" Width="131" Click="GoBtn_Click" BorderBrush="{x:Null}" Foreground="White" Background="#FF474671" FontFamily="Cascadia Code" FontSize="16">
 | 
					        <Button x:Name="GoBtn" Cursor="Hand" Content="Genera" HorizontalAlignment="Left" Margin="628,244,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5" Height="68" Width="127" Click="GoBtn_Click" BorderBrush="{x:Null}" Foreground="White" Background="#FF474671" FontFamily="Cascadia Code" FontSize="16">
 | 
				
			||||||
            <Button.RenderTransform>
 | 
					            <Button.RenderTransform>
 | 
				
			||||||
                <TransformGroup>
 | 
					                <TransformGroup>
 | 
				
			||||||
                    <ScaleTransform/>
 | 
					                    <ScaleTransform/>
 | 
				
			||||||
                    <SkewTransform/>
 | 
					                    <SkewTransform/>
 | 
				
			||||||
                    <RotateTransform Angle="-0.415"/>
 | 
					                    <RotateTransform/>
 | 
				
			||||||
                    <TranslateTransform/>
 | 
					                    <TranslateTransform/>
 | 
				
			||||||
                </TransformGroup>
 | 
					                </TransformGroup>
 | 
				
			||||||
            </Button.RenderTransform>
 | 
					            </Button.RenderTransform>
 | 
				
			||||||
        </Button>
 | 
					        </Button>
 | 
				
			||||||
 | 
					        <Label Content="Output" HorizontalAlignment="Left" Margin="47,545,0,0" VerticalAlignment="Top" Foreground="White"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    </Grid>
 | 
					    </Grid>
 | 
				
			||||||
</Window>
 | 
					</Window>
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										29
									
								
								Records.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								Records.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					using System;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Txt2Bib.Records
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public interface IBib { }
 | 
				
			||||||
 | 
					    public record class ArticleBib : IBib
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public string Type { get; init; } = "article";
 | 
				
			||||||
 | 
					        public string[] Author { get; init; } = { "" };
 | 
				
			||||||
 | 
					        public string Title { get; init; } = "";
 | 
				
			||||||
 | 
					        public string Journal { get; init; } = "";
 | 
				
			||||||
 | 
					        public ushort Year { get; init; } = 1950;
 | 
				
			||||||
 | 
					        public ushort Volume { get; init; } = 1;
 | 
				
			||||||
 | 
					        public byte Issue { get; init; } = 1;
 | 
				
			||||||
 | 
					        public ushort FirstPage { get; init; } = 1;
 | 
				
			||||||
 | 
					        public ushort LastPage { get; init; } = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override string ToString()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return $"@{Type}\\{{{Author[0][..5]}_{Year}," +
 | 
				
			||||||
 | 
					                $"\ttitle = \"{Title}\"," +
 | 
				
			||||||
 | 
					                $"\tjournal = \"{Journal}\"," +
 | 
				
			||||||
 | 
					                $"\tyear = \"{Year}\"," +
 | 
				
			||||||
 | 
					                $"\tvolume = \"{Volume}\"," +
 | 
				
			||||||
 | 
					                $"\tnumber = \"{Issue}\"," +
 | 
				
			||||||
 | 
					                $"\tpages = \"{FirstPage}--{LastPage}\",";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										50
									
								
								Text2Bib.cs
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								Text2Bib.cs
									
									
									
									
									
								
							@ -6,11 +6,25 @@ using System.Text;
 | 
				
			|||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using System.Windows.Controls.Primitives;
 | 
					using System.Windows.Controls.Primitives;
 | 
				
			||||||
using System.Windows;
 | 
					using System.Windows;
 | 
				
			||||||
 | 
					using Txt2Bib.Records;
 | 
				
			||||||
 | 
					using System.ComponentModel.DataAnnotations;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Txt2Bib
 | 
					namespace Txt2Bib
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    internal class Text2Bib
 | 
					    internal class Text2Bib
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        private readonly Dictionary<string, string> _citTypes = new()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            { "J" , "article"},
 | 
				
			||||||
 | 
					            { "B", "book" },
 | 
				
			||||||
 | 
					            { "P", "conference" },
 | 
				
			||||||
 | 
					            { "C" , "inbook" }
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Generate single .bib file from input text files
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="filenames"></param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
        public string Generate(string filenames)
 | 
					        public string Generate(string filenames)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var paths = filenames.Trim().Split('\n');
 | 
					            var paths = filenames.Trim().Split('\n');
 | 
				
			||||||
@ -23,24 +37,36 @@ namespace Txt2Bib
 | 
				
			|||||||
                byte[] contentBytes = File.ReadAllBytes(path);
 | 
					                byte[] contentBytes = File.ReadAllBytes(path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                result += Encoding.Latin1.GetString(contentBytes);
 | 
					                result += Encoding.Latin1.GetString(contentBytes);
 | 
				
			||||||
                // How to determine actual encoding??
 | 
					 | 
				
			||||||
                /*
 | 
					 | 
				
			||||||
                result += reader.CurrentEncoding.CodePage switch
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    65001 => Encoding.UTF8.GetString(contentBytes),
 | 
					 | 
				
			||||||
                    _ => Encoding.Latin1.GetString(contentBytes)
 | 
					 | 
				
			||||||
                }; 
 | 
					 | 
				
			||||||
                */
 | 
					 | 
				
			||||||
                
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //TODO process entry
 | 
					            var entries = result.Split('%').ToList<string>().Select(entry =>
 | 
				
			||||||
            foreach (string item in result.Split('%'))
 | 
					 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                output += item;
 | 
					                return Process(entry);
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            foreach (var entry in entries)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                output += entries;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return output;
 | 
					            return output;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private IBib Process(string entryFromTxt)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return new ArticleBib();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// TODO: How to determine correct encoding of text file??
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="reader">The stream reader for the file</param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        private Encoding GuessEncoding(StreamReader reader)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var cp = "UTF-8";
 | 
				
			||||||
 | 
					            return Encoding.GetEncoding(cp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user