public string ToString(int indent, bool endLine) { if (!endLine) { return(BlockIndenter.Indent("{0}: '{1}'".ToFormat(Name, Value), indent)); } return(BlockIndenter.Indent("{0}: '{1}'{2}".ToFormat(Name, Value, Environment.NewLine), indent)); }
public string OneLineSummary(string collectionName = null, int indent = 0) { //TODO: one line summary not valid if there is no Name var nameAndValue = "{0} '{1}'".ToFormat(collectionName ?? Name, ImplicitValue); var content = new[] { nameAndValue } .Concat(GetBlocks <PropertyBlock>().Select(p => p.ToString(0, false))) .Join(", "); return("{0}{1}".ToFormat(BlockIndenter.Indent(content, indent), Environment.NewLine)); }
public string ToString(int indent = 0) { var hasName = Name.IsNotEmpty(); var objectTitle = hasName ? new[] { BlockIndenter.Indent("{0}:{1}".ToFormat(Name, Environment.NewLine), indent) } : new string[] {}; var nextIndentAmount = hasName ? indent + 1 : indent; var values = objectTitle.Concat(Blocks.Select(x => x.ToString(nextIndentAmount))); return(values.Join(string.Empty)); }
public ObjectBlock Parse(string input, IObjectBlockSettings settings) { var result = input.Split(Environment.NewLine) .Aggregate(new BlockAccumulator(new ObjectBlock()), (acc, line) => { var match = IndentRegex.Match(line); var indent = match.Groups[1].Value; var rest = match.Groups[2].Value; var rank = BlockIndenter.MeasureIndent(indent); var parser = _blockParsers.FirstOrDefault(x => x.IsMatch(rest)); return(parser != null ? parser.Include(acc.SetRank(rank), parser.Parse(rest)) : acc); }) .Root .MakeCollections(settings); return(result); }