private bool OnRenameLayout(string layoutName) { string oldName = (string)m_SavedLayoutListBox.SelectedItem; if (oldName.Equals(layoutName)) { return(true); } if (CsvLayoutManager.Instance.ExistSpecific(layoutName)) { MessageBox.Show(string.Format("", layoutName), "提示", MessageBoxButtons.OK); return(false); } CsvLayout layout = CsvLayoutManager.Instance.LoadOrCreateSpecific(oldName); layout.Key = layoutName; CsvLayoutManager.Instance.SaveSpecific(); int selectedIdx = m_SavedLayoutListBox.SelectedIndex; UpdateListBox(); m_SavedLayoutListBox.SelectedIndex = selectedIdx; UpdateButtonEnable(); return(true); }
public void LoadLayout() { m_Layout = CsvLayoutManager.Instance.LoadOrCreate(SourcePath); LoadCellSize(); LoadFrozen(); }
public void SplitsSimpleDelimitedLine() { var splitLineParams = new CsvLayout(Quote: '"', Delimiter: ';'); var result = Split("1;2;3", splitLineParams); CollectionAssert.AreEqual(new[] { "1", "2", "3" }, result); }
public void TrimsTrailingWhitespaceOfUnquotedField() { var splitLineParams = new CsvLayout('"', ';'); var result = Split("1;2;3 \t", splitLineParams); CollectionAssert.AreEqual(new[] { "1", "2", "3" }, result); }
public void CsvLayout_Format_NullTextWriter_ArgumentNullException() { var fakeLoggingEvent = new LoggingEvent(new LoggingEventData()); var underTest = new CsvLayout(); Assert.Throws <ArgumentNullException>(() => underTest.Format(null, fakeLoggingEvent)); }
public void StripsQuotes() { const string line = @"""FieldContent"""; var splitLineParams = new CsvLayout('"', ','); var result = Split(line, splitLineParams); CollectionAssert.AreEqual(new[]{"FieldContent"}, result); }
public void TrimsTrailingWhitespaceFromUnquotedField() { const string line = @"x,y ,z"; var splitLineParams = new CsvLayout('"', ','); var result = Split(line, splitLineParams); CollectionAssert.AreEqual(new[] { "x", "y", "z" }, result); }
private LoggingConfiguration GetLoggingConfiguration() { CsvLayout layout = new CsvLayout() { Delimiter = CsvColumnDelimiterMode.Semicolon, }; layout.Columns.Add(new CsvColumn("time", @"${date:format=HH\:mm\:ss}")); layout.Columns.Add(new CsvColumn("level", "${level:upperCase=true}")); layout.Columns.Add(new CsvColumn("callsite", "${callsite:includeSourcePath=false}")); layout.Columns.Add(new CsvColumn("message", "${message}")); layout.Columns.Add(new CsvColumn("exception", "${exception:format=ToString}")); layout.Columns.Add(new CsvColumn("stacktrace", "${onexception:inner=${stacktrace:topFrames=10}}")); FileTarget fileTarget = new FileTarget("file") { FileName = "${var:LogPath}/logs/${shortdate}.log", Layout = layout, MaxArchiveFiles = 3, ArchiveEvery = FileArchivePeriod.Day, }; LoggingConfiguration configuration = new LoggingConfiguration(); configuration.AddTarget(fileTarget); configuration.AddRuleForAllLevels(fileTarget); StorageFolder storageFolder = ApplicationData.Current.LocalFolder; configuration.Variables["LogPath"] = storageFolder.Path; return(configuration); }
public void SupportsFieldsWithEscapedQuotes() { const string line = "x \"y\",z"; var splitLineParams = new CsvLayout('"', ','); var result = Split(line, splitLineParams); CollectionAssert.AreEqual(new[] { "x \"y\"", "z" }, result); }
private static IEnumerable <string> Split(string line, CsvLayout splitLineParams, CsvBehaviour behaviour) { var splitter = new CsvStateMachine(new StringReader(line), splitLineParams, behaviour); var result = splitter.Lines(); return(result.First().Fields); }
public void DoesNotTrimTrailingWhitespaceOfQuotedField() { var splitLineParams = new CsvLayout('"', ';'); var result = Split("1;2;\"3 \t\"", splitLineParams); CollectionAssert.AreEqual(new[] { "1", "2", "3 \t" }, result); }
public CsvDataReader(TextReader reader, CsvLayout csvLayout, CsvBehaviour csvBehaviour, IConverter converter) { _parser = new CsvParser(reader, csvLayout, csvBehaviour); _header = _parser.Header; _line = null; _converter = converter; _enumerator = _parser.GetEnumerator(); }
public void StripsQuotes() { const string line = @"""FieldContent"""; var splitLineParams = new CsvLayout('"', ','); var result = Split(line, splitLineParams); CollectionAssert.AreEqual(new[] { "FieldContent" }, result); }
public void CsvLayout_ActivateOptions_DefaultFields_Success() { var underTest = new CsvLayout(); underTest.ActivateOptions(); Assert.AreEqual(CsvLayout.DefaultPattern, underTest.Fields); }
public void WhenValueTrimmingIsNone_LastFieldHasLeadingAndTrailingWhitespace_WhitespaceIsNotTrimmed() { const string line = "x,y, z "; var splitLineParams = new CsvLayout('"', ',', '"'); var result = Split(line, splitLineParams, new CsvBehaviour(ValueTrimmingOptions.None)); CollectionAssert.AreEqual(new[] { @"x", "y", " z " }, result); }
public void CarriageReturnCanBeUsedAsDelimiter() { const string line = "1\r2\n"; var splitLineParams = new CsvLayout('"', '\r'); var result = Split(line, splitLineParams); CollectionAssert.AreEqual(new[] { "1", "2" }, result); }
public void EscapeCharacterInsideQuotedStringIsEscaped() { const string line = @"""\\"""; var splitLineParams = new CsvLayout('"', ',', '\\'); var result = Split(line, splitLineParams, new CsvBehaviour(ValueTrimmingOptions.None)); Assert.AreEqual(@"\", result.Single()); }
public void LineWithOnlySeparatorIsSplitIntoTwoEmptyStrings() { const string line = ","; var splitLineParams = new CsvLayout('"', ',', '\\'); var result = Split(line, splitLineParams, new CsvBehaviour(ValueTrimmingOptions.None)); CollectionAssert.AreEqual(new[] { "", "" }, result); }
public void EmptyFields() { const string line = @",x,,y"; var splitLineParams = new CsvLayout('"', ','); var result = Split(line, splitLineParams); CollectionAssert.AreEqual(new[] { "", "x", "", "y" }, result); }
public CsvStateMachine(TextReader textReader, CsvLayout csvLayout, CsvBehaviour behaviour, bool debug = false) { _textReader = textReader; _csvLayout = csvLayout; _behaviour = behaviour; _debug = debug; TransitionTo(BeginningOfLine); }
public void CsvLayoutRenderingAutoQuoting() { var csvLayout = new CsvLayout() { Quoting = CsvQuotingMode.Auto, Columns = { new CsvColumn("date", "${longdate}"), new CsvColumn("level", "${level}"), new CsvColumn("message;text", "${message}"), }, QuoteChar = "'", Delimiter = CsvColumnDelimiterMode.Semicolon, }; // no quoting Assert.Equal( "2010-01-01 12:34:56.0000;Info;hello, world", csvLayout.Render(new LogEventInfo { TimeStamp = new DateTime(2010, 01, 01, 12, 34, 56), Level = LogLevel.Info, Message = "hello, world" })); // multi-line string - requires quoting Assert.Equal( "2010-01-01 12:34:56.0000;Info;'hello\rworld'", csvLayout.Render(new LogEventInfo { TimeStamp = new DateTime(2010, 01, 01, 12, 34, 56), Level = LogLevel.Info, Message = "hello\rworld" })); // multi-line string - requires quoting Assert.Equal( "2010-01-01 12:34:56.0000;Info;'hello\nworld'", csvLayout.Render(new LogEventInfo { TimeStamp = new DateTime(2010, 01, 01, 12, 34, 56), Level = LogLevel.Info, Message = "hello\nworld" })); // quote character used in string, will be quoted and doubled Assert.Equal( "2010-01-01 12:34:56.0000;Info;'hello''world'", csvLayout.Render(new LogEventInfo { TimeStamp = new DateTime(2010, 01, 01, 12, 34, 56), Level = LogLevel.Info, Message = "hello'world" })); Assert.Equal("date;level;'message;text'", csvLayout.Header.Render(LogEventInfo.CreateNullEvent())); }
public CsvDataReader(TextReader reader, CsvLayout csvLayout, CsvBehaviour csvBehaviour, CultureInfo cultureInfo) { _parser = new CsvParser(reader, csvLayout, csvBehaviour); _header = _parser.Header; _line = null; _converter = new Converter(cultureInfo ?? CultureInfo.InvariantCulture); _enumerator = _parser.GetEnumerator(); _schema = csvLayout.Schema; }
/// <summary> /// 应用布局 /// </summary> private void OnApplyLayoutToolStripMenuItem_Click(object sender, EventArgs e) { ToolStripMenuItem item = (ToolStripMenuItem)sender; CsvLayout layout = CsvLayoutManager.Instance.LoadOrCreateSpecific(item.Name); CsvLayoutManager.Instance.Replace(m_CsvForm.GetLayout(), layout); CsvLayoutManager.Instance.Save(); m_CsvForm.LoadLayout(); }
public void QuotedStringWithDelimiter() { // "x ""y"", z" const string line = "\"x \"y\" z, u\",v"; var splitLineParams = new CsvLayout(); var result = Split(line, splitLineParams); CollectionAssert.AreEqual(new[] { "x \"y\" z, u", "v" }, result); }
public void CanWorkWithMultilineField() { const string data = @"a,b,""line1 line2"""; var splitLineParams = new CsvLayout('"', ',', '\\'); var result = Split(data, splitLineParams, new CsvBehaviour(ValueTrimmingOptions.None)); CollectionAssert.AreEqual(new[] { "a", "b", @"line1 line2" }, result); }
public static void AddMeterColumns(this CsvLayout layout) { AddDateColumns(layout); layout.Columns.Add(new CsvColumn("Count", new SimpleLayout("${event-context:item=Count}"))); layout.Columns.Add(new CsvColumn("Mean Rate", new SimpleLayout("${event-context:item=Mean Rate}"))); layout.Columns.Add(new CsvColumn("One Minute Rate", new SimpleLayout("${event-context:item=One Minute Rate}"))); layout.Columns.Add(new CsvColumn("Five Minute Rate", new SimpleLayout("${event-context:item=Five Minute Rate}"))); layout.Columns.Add(new CsvColumn("Fifteen Minute Rate", new SimpleLayout("${event-context:item=Fifteen Minute Rate}"))); layout.Columns.Add(new CsvColumn("Rate Unit", new SimpleLayout("${event-context:item=Rate Unit}"))); }
private LoggingConfiguration BuildLoggingConfiguration() { var loggingConfiguration = new LoggingConfiguration(); var columns = new List <CsvColumn>() { new CsvColumn("DateTime", "${longdate}") { Quoting = CsvQuotingMode.Nothing }, new CsvColumn("Level", "${level:upperCase=true}") { Quoting = CsvQuotingMode.Nothing }, new CsvColumn("Message", "${message}") { Quoting = CsvQuotingMode.All }, new CsvColumn("Exception", "${exception:format=ToString}") { Quoting = CsvQuotingMode.All }, new CsvColumn("CallSite", "${callsite}") { Quoting = CsvQuotingMode.All }, new CsvColumn("CallSiteLineNumber", "${callsite-linenumber}") { Quoting = CsvQuotingMode.Nothing }, new CsvColumn("StackTrace", "${stacktrace:topFrames=5}") { Quoting = CsvQuotingMode.All }, }; var csvLayout = new CsvLayout(); foreach (var column in columns) { csvLayout.Columns.Add(column); } var fileTarget = new FileTarget("FileTarget") { FileName = "${basedir}/Logs/${date:format=yyyy-MM-dd}.csv", Layout = csvLayout, }; loggingConfiguration.AddTarget(fileTarget); loggingConfiguration.AddRuleForAllLevels(fileTarget); return(loggingConfiguration); }
public CsvParser(TextReader textReader, CsvLayout layOut, CsvBehaviour behaviour) { _csvStateMachine = new CsvStateMachine(textReader, layOut, behaviour); _enumerator = _csvStateMachine.Lines().GetEnumerator(); _textReader = textReader; var firstLine = Lines().FirstOrDefault(); Header = (layOut, firstLine) switch { ({ HasHeaders : true }, firstLine : not null)
public static void AddDateColumns(this CsvLayout layout) { if (!layout.Columns.Any(l => l.Name == "Date")) { layout.Columns.Add(new CsvColumn("Date", new SimpleLayout("${event-context:item=Date}"))); } if (!layout.Columns.Any(l => l.Name == "Ticks")) { layout.Columns.Add(new CsvColumn("Ticks", new SimpleLayout("${event-context:item=Ticks}"))); } }
public static void CreateLogger(string loglevel) { // Create Tab format CsvLayout layout = new CsvLayout(); layout.Delimiter = CsvLayout.ColumnDelimiterMode.Tab; layout.Columns.Add(new CsvColumn("date", "${longdate}")); layout.Columns.Add(new CsvColumn("level", "${level}")); layout.Columns.Add(new CsvColumn("message", "${message}")); layout.Columns.Add(new CsvColumn("exception", "${exception:format=tostring}")); FileTarget target = new FileTarget(); target.FileName = "${basedir}/QueryLog.txt"; target.CompiledLayout = layout; target.ArchiveFileName = "${basedir}/archives/Querylog.{#####}.txt"; target.ArchiveAboveSize = 1000 * 1024; // archive files greater than 10 KB target.ArchiveNumbering = FileTarget.ArchiveNumberingMode.Sequence; LogLevel level; switch (loglevel.ToLower()) { case "trace": level = LogLevel.Trace; break; case "debug": level = LogLevel.Debug; break; case "warn": level = LogLevel.Warn; break; case "error": level = LogLevel.Error; break; case "fatal": level = LogLevel.Fatal; break; default: level = LogLevel.Info; break; } NLog.Config.SimpleConfigurator.ConfigureForTargetLogging(target, level); logger = LogManager.GetLogger("Query"); }
public void WorksWithQuotedStringInsideQuotedField() { var data1 = @"""1"";"" 2 ""inside"" x "";3"; var csvLayout = new CsvLayout('\"', ';'); var splitter = new CsvStateMachine(new StringReader(data1), csvLayout, new CsvBehaviour()); var result = splitter.Lines().ToArray(); CollectionAssert.AreEqual(new[] { "1", @" 2 ""inside"" x ", "3" }, result[0].Fields); }
public void MultipleLinesAreSplitCorrectly() { var data1 = @"1;2;3 4;5;6"; var csvLayout = new CsvLayout('\"', ';'); var splitter = new BufferedCsvLineGenerator(new StringReader(data1), csvLayout, new CsvBehaviour()); var result = splitter.Split().ToArray(); CollectionAssert.AreEqual(new[] { "1", "2", "3" }, result[0].Fields); CollectionAssert.AreEqual(new[] { "4", "5", "6" }, result[1].Fields); }
private static IEnumerable<string> Split(string line, CsvLayout splitLineParams, CsvBehaviour behaviour) { var splitter = new BufferedCsvLineGenerator(new StringReader(line), splitLineParams, behaviour); var result = splitter.Split(); return result.First().Fields; }
public void WorksWithQuotedMultilineString() { var data1 = @"""1"";"" 2 ""in side"" x "";3"; var csvLayout = new CsvLayout('\"', ';'); var splitter = new BufferedCsvLineGenerator(new StringReader(data1), csvLayout, new CsvBehaviour()); var result = splitter.Split().ToArray(); CollectionAssert.AreEqual(new[] { "1", @" 2 ""in side"" x ", "3" }, result[0].Fields); }
public void SplitsSimpleDelimitedLine() { var splitLineParams = new CsvLayout('"', ';'); var result = Split("1;2;3", splitLineParams); CollectionAssert.AreEqual(new[]{"1", "2", "3"}, result); }
public void QuotedStringWithDelimiter() { // "x ""y"", z" const string line = "\"x \"y\" z, u\",v"; var splitLineParams = new CsvLayout('"', ','); var result = Split(line, splitLineParams); CollectionAssert.AreEqual(new[] { "x \"y\" z, u", "v" }, result); }
public void EscapeCharacterInsideQuotedStringIsEscaped() { const string line = "\"\\\\\""; var splitLineParams = new CsvLayout('"', ',', '\\'); var result = Split(line, splitLineParams, new CsvBehaviour(ValueTrimmingOptions.None)); Assert.AreEqual("\\", result.Single()); }
public void WhenValueTrimmingIsNone_LastFieldWithLeadingAndTrailingWhitespace_WhitespaceIsNotTrimmed() { const string line = "x,y, z "; var splitLineParams = new CsvLayout('"', ',', '"'); var result = Split(line, splitLineParams, new CsvBehaviour(ValueTrimmingOptions.None)); CollectionAssert.AreEqual(new[] { @"x", "y", " z " }, result); }
private static IEnumerable<string> Split(string line, CsvLayout splitLineParams) { return Split(line, splitLineParams, new CsvBehaviour()); }