in src/Elastic.Serilog.Enrichers.Web/Lib/UAParser.cs [641:687]
private void ReadIntoMappingModel(string yamlInputString)
{
// line splitting using various splitting characters
var lines = yamlInputString.Split(new[] { Environment.NewLine, "\r", "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
var lineCount = 0;
Mapping activeMapping = null;
foreach (var line in lines)
{
lineCount++;
if (line.Trim().StartsWith("#")) //skipping comments
continue;
if (line.Trim().Length == 0)
continue;
//is this a new mapping entity
if (line[0] != ' ')
{
var indexOfMappingColon = line.IndexOf(':');
if (indexOfMappingColon == -1)
throw new ArgumentException("YamlParsing: Expecting mapping entry to contain a ':', at line " + lineCount);
var name = line.Substring(0, indexOfMappingColon).Trim();
activeMapping = new Mapping();
_mappings.Add(name, activeMapping);
continue;
}
//reading scalar entries into the active mapping
if (activeMapping == null)
throw new ArgumentException("YamlParsing: Expecting mapping entry to contain a ':', at line " + lineCount);
var seqLine = line.Trim();
if (seqLine[0] == '-')
{
activeMapping.BeginSequence();
seqLine = seqLine.Substring(1);
}
var indexOfColon = seqLine.IndexOf(':');
if (indexOfColon == -1)
throw new ArgumentException("YamlParsing: Expecting scalar mapping entry to contain a ':', at line " + lineCount);
var key = seqLine.Substring(0, indexOfColon).Trim();
var value = ReadQuotedValue(seqLine.Substring(indexOfColon + 1).Trim());
activeMapping.AddToSequence(key, value);
}
}