void ParseGroup(TextGroupDefinition group)
{
_writer.WritePropertyName(group.Name);
if (!group.RecordBreakOnLine)
{
_writer.WriteStartObject();
}
else
{
_writer.WriteStartArray();
}
int lineNo = 0;
while (!_reader.EndOfStream)
{
if (_line == null || lineNo > 0)
{
_line = _reader.ReadLine();
}
lineNo++;
if (_line.Trim() != string.Empty && lineNo >= group.ElementsStartOnLine)
{
if (group.EndString != null && _line.Contains(group.EndString))
{
break;
}
if (group.RecordBreakOnLine)
{
_writer.WriteStartObject();
}
foreach (var subGroup in group.Groups)
{
if (_line.Contains(subGroup.StartString))
{
ParseGroup(subGroup);
}
}
foreach (var element in group.Elements)
{
ParseElement(element, lineNo);
}
if (group.RecordBreakOnLine)
{
_writer.WriteEnd();
}
}
}
_writer.WriteEnd(); // object or array
}