public ContentParseResult ParseString(string content)
{
var lines = SplitLines(content);
if (!lines[0].StartsWith("---"))
{
// No front matter.
return new ContentParseResult(new Dictionary<string, string>(), content);
}
var index = 1;
var header = new Dictionary<string, string>();
foreach (var rline in lines.Skip(1))
{
var line = rline.Trim();
if (line.StartsWith("---"))
{
break;
}
var keyIndex = line.IndexOf(':');
if (keyIndex == -1)
{
throw new InvalidOperationException("Invalid post format!");
}
var key = line.Substring(0, keyIndex);
var value = line.Substring(keyIndex + 1, line.Length - keyIndex - 1);
header.Add(key.Trim(), value.Trim());
index++;
}
var body = (index < lines.Length)
? string.Join(Environment.NewLine, lines.Skip(index + 1).Take(lines.Length - index))
: string.Empty;
// <!--excerpt-->
var excerpt = string.Empty;
var excerptParts = body.Split(new[] { "<!--excerpt-->" }, StringSplitOptions.RemoveEmptyEntries);
if (excerptParts.Length > 1)
{
excerpt = excerptParts[0];
}
return new ContentParseResult(header, body, excerpt);
}