Skip to content

Commit 965760a

Browse files
committed
CSVMap and cleaning up CSV output
1 parent 4afc50f commit 965760a

File tree

4 files changed

+312
-40
lines changed

4 files changed

+312
-40
lines changed
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
using NotepadStateLibrary;
2+
using CsvHelper.Configuration;
3+
4+
namespace WindowsNotepadParser_Minimal
5+
{
6+
public sealed class NoFileMap : ClassMap<NPTabState>
7+
{
8+
public NoFileMap()
9+
{
10+
AutoMap(System.Globalization.CultureInfo.InvariantCulture);
11+
Map(m => m.FilePathLength).Ignore();
12+
Map(m => m.FilePath).Ignore();
13+
Map(m => m.SavedFileContentLength).Ignore();
14+
Map(m => m.EncodingType).Ignore();
15+
Map(m => m.CarriageReturnType).Ignore();
16+
Map(m => m.Timestamp).Ignore();
17+
Map(m => m.FileHashStored).Ignore();
18+
Map(m => m.BinSize).Ignore();
19+
20+
Map(m => m.FileName).Index(0);
21+
Map(m => m.SequenceNumber).Index(1);
22+
Map(m => m.TypeFlag).Index(2);
23+
Map(m => m.SelectionStartIndex).Index(3);
24+
Map(m => m.SelectionEndIndex).Index(4);
25+
Map(m => m.WordWrap).Index(5);
26+
Map(m => m.RightToLeft).Index(6);
27+
Map(m => m.ShowUnicode).Index(7);
28+
Map(m => m.OptionCount).Index(8);
29+
Map(m => m.Options).Index(9);
30+
Map(m => m.ContentLength).Index(10);
31+
Map(m => m.Content).Index(11);
32+
Map(m => m.ContentString).Index(12);
33+
Map(m => m.Unsaved).Index(13);
34+
Map(m => m.CRC32Stored).Index(14);
35+
Map(m => m.CRC32Calculated).Index(15);
36+
Map(m => m.bytes).Index(16);
37+
}
38+
}
39+
40+
public sealed class FileMap : ClassMap<NPTabState>
41+
{
42+
public FileMap()
43+
{
44+
AutoMap(System.Globalization.CultureInfo.InvariantCulture);
45+
46+
Map(m => m.BinSize).Ignore();
47+
48+
Map(m => m.FileName).Index(0);
49+
Map(m => m.SequenceNumber).Index(1);
50+
Map(m => m.TypeFlag).Index(2);
51+
Map(m => m.FilePathLength).Index(3);
52+
Map(m => m.FilePath).Index(4);
53+
Map(m => m.SavedFileContentLength).Index(5);
54+
Map(m => m.EncodingType).Index(6);
55+
Map(m => m.CarriageReturnType).Index(7);
56+
Map(m => m.Timestamp).Index(8);
57+
Map(m => m.FileHashStored).Index(9);
58+
Map(m => m.SelectionStartIndex).Index(10);
59+
Map(m => m.SelectionEndIndex).Index(11);
60+
Map(m => m.WordWrap).Index(12);
61+
Map(m => m.RightToLeft).Index(13);
62+
Map(m => m.ShowUnicode).Index(14);
63+
Map(m => m.OptionCount).Index(15);
64+
Map(m => m.Options).Index(16);
65+
Map(m => m.ContentLength).Index(17);
66+
Map(m => m.Content).Index(18);
67+
Map(m => m.ContentString).Index(19);
68+
Map(m => m.Unsaved).Index(20);
69+
Map(m => m.CRC32Stored).Index(21);
70+
Map(m => m.CRC32Calculated).Index(22);
71+
Map(m => m.bytes).Index(23);
72+
}
73+
}
74+
75+
public sealed class StateMap : ClassMap<NPTabState>
76+
{
77+
public StateMap()
78+
{
79+
AutoMap(System.Globalization.CultureInfo.InvariantCulture);
80+
Map(m => m.FilePathLength).Ignore();
81+
Map(m => m.FilePath).Ignore();
82+
Map(m => m.SavedFileContentLength).Ignore();
83+
Map(m => m.EncodingType).Ignore();
84+
Map(m => m.CarriageReturnType).Ignore();
85+
Map(m => m.Timestamp).Ignore();
86+
Map(m => m.FileHashStored).Ignore();
87+
Map(m => m.ContentLength).Ignore();
88+
Map(m => m.Content).Ignore();
89+
Map(m => m.ContentString).Ignore();
90+
Map(m => m.Unsaved).Ignore();
91+
92+
Map(m => m.FileName).Index(0);
93+
Map(m => m.SequenceNumber).Index(1);
94+
Map(m => m.TypeFlag).Index(2);
95+
Map(m => m.BinSize).Index(3);
96+
Map(m => m.SelectionStartIndex).Index(4);
97+
Map(m => m.SelectionEndIndex).Index(5);
98+
Map(m => m.WordWrap).Index(6);
99+
Map(m => m.RightToLeft).Index(7);
100+
Map(m => m.ShowUnicode).Index(8);
101+
Map(m => m.OptionCount).Index(9);
102+
Map(m => m.Options).Index(10);
103+
Map(m => m.CRC32Stored).Index(11);
104+
Map(m => m.CRC32Calculated).Index(12);
105+
Map(m => m.bytes).Index(13);
106+
}
107+
}
108+
109+
public sealed class WindowMap : ClassMap<NPWindowState>
110+
{
111+
public WindowMap()
112+
{
113+
AutoMap(System.Globalization.CultureInfo.InvariantCulture);
114+
Map(m => m.FileName).Index(0);
115+
Map(m => m.SequenceNumber).Index(1);
116+
Map(m => m.BytesToCRC).Index(2);
117+
Map(m => m.NumberTabs).Index(3);
118+
Map(m => m.TabsList).Index(4);
119+
Map(m => m.ActiveTab).Index(5);
120+
Map(m => m.TopLeftCoords).Index(6);
121+
Map(m => m.BottomRightCoords).Index(7);
122+
Map(m => m.WindowSize).Index(8);
123+
Map(m => m.CRC32Stored).Index(9);
124+
Map(m => m.CRC32Calculated).Index(10);
125+
Map(m => m.bytes).Index(11);
126+
}
127+
}
128+
}

NotepadStateLibrary/WindowsNotepadParser-Minimal/Program.cs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
using System.Globalization;
44
using CommandLine;
55
using System.IO.Compression;
6+
using WindowsNotepadParser_Minimal;
7+
using CsvHelper.Configuration;
68

79
Parser.Default.ParseArguments<Options>(args)
810
.WithParsed(options =>
@@ -58,6 +60,11 @@
5860
List<NPWindowState> windowStateTabs = new List<NPWindowState>();
5961
List<UnsavedBufferChunk> unsavedChunks = new List<UnsavedBufferChunk>();
6062

63+
var config = new CsvConfiguration(CultureInfo.InvariantCulture)
64+
{
65+
HasHeaderRecord = true
66+
};
67+
6168
//Tabstate
6269
Console.WriteLine("Copying TabState Folder - {0}", tabStateLocation);
6370
CreateZipFromDirectory(tabStateLocation, Path.Combine(outputLocation, "TabStateFolder.zip"));
@@ -93,11 +100,8 @@
93100

94101
using (var writer = new StreamWriter(Path.Combine(outputLocation, string.Format("{0}-UnsavedBufferChunks.csv", Path.GetFileNameWithoutExtension(path)))))
95102
{
96-
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
103+
using (var csv = new CsvWriter(writer, config))
97104
{
98-
99-
csv.WriteHeader<UnsavedBufferChunk>();
100-
csv.NextRecord();
101105
csv.WriteRecords(np.UnsavedBufferChunks);
102106
}
103107
}
@@ -111,32 +115,29 @@
111115
//Writing File Tabs
112116
using (var writer = new StreamWriter(Path.Combine(outputLocation, "FileTabs.csv")))
113117
{
114-
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
118+
using (var csv = new CsvWriter(writer, config))
115119
{
116-
csv.WriteHeader<NPTabState>();
117-
csv.NextRecord();
120+
csv.Context.RegisterClassMap<FileMap>();
118121
csv.WriteRecords(fileTabs);
119122
}
120123
}
121124

122125
//Writing No File Tabs
123126
using (var writer = new StreamWriter(Path.Combine(outputLocation, "NoFileTabs.csv")))
124127
{
125-
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
128+
using (var csv = new CsvWriter(writer, config))
126129
{
127-
csv.WriteHeader<NPTabState>();
128-
csv.NextRecord();
130+
csv.Context.RegisterClassMap<NoFileMap>();
129131
csv.WriteRecords(noFileTabs);
130132
}
131133
}
132134

133135
//Writing State Tabs
134136
using (var writer = new StreamWriter(Path.Combine(outputLocation, "StateTabs.csv")))
135137
{
136-
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
138+
using (var csv = new CsvWriter(writer, config))
137139
{
138-
csv.WriteHeader<NPTabState>();
139-
csv.NextRecord();
140+
csv.Context.RegisterClassMap<StateMap>();
140141
csv.WriteRecords(stateTabs);
141142
}
142143
}
@@ -166,10 +167,9 @@
166167
//Writing Window States
167168
using (var writer = new StreamWriter(Path.Combine(outputLocation, "WindowStateTabs.csv")))
168169
{
169-
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
170+
using (var csv = new CsvWriter(writer, config))
170171
{
171-
csv.WriteHeader<NPWindowState>();
172-
csv.NextRecord();
172+
csv.Context.RegisterClassMap<WindowMap>();
173173
csv.WriteRecords(windowStateTabs);
174174
}
175175
}
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
using NotepadStateLibrary;
2+
using CsvHelper.Configuration;
3+
4+
namespace WindowsNotepadParser_Minimal
5+
{
6+
public sealed class NoFileMap : ClassMap<NPTabState>
7+
{
8+
public NoFileMap()
9+
{
10+
AutoMap(System.Globalization.CultureInfo.InvariantCulture);
11+
Map(m => m.FilePathLength).Ignore();
12+
Map(m => m.FilePath).Ignore();
13+
Map(m => m.SavedFileContentLength).Ignore();
14+
Map(m => m.EncodingType).Ignore();
15+
Map(m => m.CarriageReturnType).Ignore();
16+
Map(m => m.Timestamp).Ignore();
17+
Map(m => m.FileHashStored).Ignore();
18+
Map(m => m.BinSize).Ignore();
19+
20+
Map(m => m.FileName).Index(0);
21+
Map(m => m.SequenceNumber).Index(1);
22+
Map(m => m.TypeFlag).Index(2);
23+
Map(m => m.SelectionStartIndex).Index(3);
24+
Map(m => m.SelectionEndIndex).Index(4);
25+
Map(m => m.WordWrap).Index(5);
26+
Map(m => m.RightToLeft).Index(6);
27+
Map(m => m.ShowUnicode).Index(7);
28+
Map(m => m.OptionCount).Index(8);
29+
Map(m => m.Options).Index(9);
30+
Map(m => m.ContentLength).Index(10);
31+
Map(m => m.Content).Index(11);
32+
Map(m => m.ContentString).Index(12);
33+
Map(m => m.Unsaved).Index(13);
34+
Map(m => m.CRC32Stored).Index(14);
35+
Map(m => m.CRC32Calculated).Index(15);
36+
Map(m => m.bytes).Index(16);
37+
}
38+
}
39+
40+
public sealed class FileMap : ClassMap<NPTabState>
41+
{
42+
public FileMap()
43+
{
44+
AutoMap(System.Globalization.CultureInfo.InvariantCulture);
45+
46+
Map(m => m.BinSize).Ignore();
47+
48+
Map(m => m.FileName).Index(0);
49+
Map(m => m.SequenceNumber).Index(1);
50+
Map(m => m.TypeFlag).Index(2);
51+
Map(m => m.FilePathLength).Index(3);
52+
Map(m => m.FilePath).Index(4);
53+
Map(m => m.SavedFileContentLength).Index(5);
54+
Map(m => m.EncodingType).Index(6);
55+
Map(m => m.CarriageReturnType).Index(7);
56+
Map(m => m.Timestamp).Index(8);
57+
Map(m => m.FileHashStored).Index(9);
58+
Map(m => m.SelectionStartIndex).Index(10);
59+
Map(m => m.SelectionEndIndex).Index(11);
60+
Map(m => m.WordWrap).Index(12);
61+
Map(m => m.RightToLeft).Index(13);
62+
Map(m => m.ShowUnicode).Index(14);
63+
Map(m => m.OptionCount).Index(15);
64+
Map(m => m.Options).Index(16);
65+
Map(m => m.ContentLength).Index(17);
66+
Map(m => m.Content).Index(18);
67+
Map(m => m.ContentString).Index(19);
68+
Map(m => m.Unsaved).Index(20);
69+
Map(m => m.CRC32Stored).Index(21);
70+
Map(m => m.CRC32Calculated).Index(22);
71+
Map(m => m.bytes).Index(23);
72+
}
73+
}
74+
75+
public sealed class StateMap : ClassMap<NPTabState>
76+
{
77+
public StateMap()
78+
{
79+
AutoMap(System.Globalization.CultureInfo.InvariantCulture);
80+
Map(m => m.FilePathLength).Ignore();
81+
Map(m => m.FilePath).Ignore();
82+
Map(m => m.SavedFileContentLength).Ignore();
83+
Map(m => m.EncodingType).Ignore();
84+
Map(m => m.CarriageReturnType).Ignore();
85+
Map(m => m.Timestamp).Ignore();
86+
Map(m => m.FileHashStored).Ignore();
87+
Map(m => m.ContentLength).Ignore();
88+
Map(m => m.Content).Ignore();
89+
Map(m => m.ContentString).Ignore();
90+
Map(m => m.Unsaved).Ignore();
91+
92+
Map(m => m.FileName).Index(0);
93+
Map(m => m.SequenceNumber).Index(1);
94+
Map(m => m.TypeFlag).Index(2);
95+
Map(m => m.BinSize).Index(3);
96+
Map(m => m.SelectionStartIndex).Index(4);
97+
Map(m => m.SelectionEndIndex).Index(5);
98+
Map(m => m.WordWrap).Index(6);
99+
Map(m => m.RightToLeft).Index(7);
100+
Map(m => m.ShowUnicode).Index(8);
101+
Map(m => m.OptionCount).Index(9);
102+
Map(m => m.Options).Index(10);
103+
Map(m => m.CRC32Stored).Index(11);
104+
Map(m => m.CRC32Calculated).Index(12);
105+
Map(m => m.bytes).Index(13);
106+
}
107+
}
108+
109+
public sealed class WindowMap : ClassMap<NPWindowState>
110+
{
111+
public WindowMap()
112+
{
113+
AutoMap(System.Globalization.CultureInfo.InvariantCulture);
114+
Map(m => m.FileName).Index(0);
115+
Map(m => m.SequenceNumber).Index(1);
116+
Map(m => m.BytesToCRC).Index(2);
117+
Map(m => m.NumberTabs).Index(3);
118+
Map(m => m.TabsList).Index(4);
119+
Map(m => m.ActiveTab).Index(5);
120+
Map(m => m.TopLeftCoords).Index(6);
121+
Map(m => m.BottomRightCoords).Index(7);
122+
Map(m => m.WindowSize).Index(8);
123+
Map(m => m.CRC32Stored).Index(9);
124+
Map(m => m.CRC32Calculated).Index(10);
125+
Map(m => m.bytes).Index(11);
126+
}
127+
}
128+
}

0 commit comments

Comments
 (0)