Inheritance: NodeBase
コード例 #1
0
 public void should_encode_csv()
 {
     var file = new FileNode(NodeType.Array, 
         typeof(List<Record>), Options.Create(x => 
         x.IncludePublicFields()));
     var row = new RowNode(1)
     {
         { new ValueNode("Property", "oh,"), x => {} },
         { new ValueNode("Field", "\"hai\""), x => {} },
         { new ValueNode("Null"), x => {} }
     };
     file.Add(row, x => {});
     file.EncodeToString().ShouldEqual(Data);
 }
コード例 #2
0
ファイル: Encoder.cs プロジェクト: mikeobrien/Bender
        public void Write(RowNode node)
        {
            if (_columns == null) _columns = node.Select(x => x.Name).ToArray();

            if (!_columns.Any()) return;

            Action<object[]> writeLine = x => _writer.Value.Write(x.Select(Encode)
                .Aggregate((a, i) => a + _delimiter + i) + _newLine);

            if (_header && _firstRow) writeLine(_columns);

            var fields = new object[_columns.Length];
            node.Where(x => _columns.Contains(x.Name))
                .ForEach(x => fields[_columns.IndexOf(x.Name)] = x.Value);
            writeLine(fields);

            _writer.Value.Flush();

            _firstRow = false;
        }
コード例 #3
0
ファイル: FileNode.cs プロジェクト: mikeobrien/Bender
 private List<RowNode> ParseFile()
 {
     var nodes = new List<RowNode>();
     var parser = new TextFieldParser(new StreamReader(_readStream, _encoding));
     parser.TextFieldType = FieldType.Delimited;
     parser.SetDelimiters(_options.CsvDelimiter);
     if (parser.EndOfData) return nodes;
     var columns = parser.ReadFields();
     if (columns == null || columns.Length == 0) return nodes;
     while (!parser.EndOfData)
     {
         var fields = parser.ReadFields();
         if (fields == null || fields.Length == 0) continue;
         var rowNode = new RowNode(_rowNumber++);
         nodes.Add(rowNode);
         for (var i = 0; i < fields.Length; i++)
         {
             rowNode.Add(new ValueNode(columns[i], rowNode, 
                 fields[i] == "" ? null : fields[i]), x => {});
         }
     }
     return nodes;
 }
コード例 #4
0
ファイル: FileNode.cs プロジェクト: carl-berg/Bender
 private List<RowNode> ParseFile(TextReader reader)
 {
     var nodes = new List<RowNode>();
     using (var parser = new TextFieldParser(reader))
     {
         parser.TextFieldType = FieldType.Delimited;
         parser.SetDelimiters(_options.CsvDelimiter);
         if (parser.EndOfData) return nodes;
         var columns = parser.ReadFields();
         if (columns == null || columns.Length == 0) return nodes;
         while (!parser.EndOfData)
         {
             var fields = parser.ReadFields();
             if (fields == null || fields.Length == 0) continue;
             var rowNode = new RowNode(_rowIndex++);
             nodes.Add(rowNode);
             for (var i = 0; i < fields.Length; i++)
             {
                 rowNode.Add(new ValueNode(columns[i], fields[i]), x => {});
             }
         }
     }
     return nodes;
 }