private static EMElement CreateTOCInline( Match match, EMDocument doc, EMElementOrigin origin, EMElement parent, TransformationData data) { var start = 0; var end = 0; SpacePattern.Split(match.Groups["params"].Value).ToList().ForEach( param => { if (string.IsNullOrWhiteSpace(param)) { return; } var parts = param.Split(':'); var name = parts[0]; var value = int.Parse(parts[1]); switch (name) { case "start": start = value; break; case "end": end = value; break; } }); var path = match.Groups["path"].Value; ClosestFileStatus status; var linkedDoc = data.ProcessedDocumentCache.GetClosest(path, out status); if (status == ClosestFileStatus.FileMissing) { return(EMErrorElement.Create(doc, origin, parent, data, "BadIncludeOrMissingMarkdownFile", path)); } if (status == ClosestFileStatus.ChangedToIntVersion || status == ClosestFileStatus.ExactMatch) { EMElement output = new EMTOCInline(doc, origin, parent, start, end, linkedDoc, path); if (status == ClosestFileStatus.ChangedToIntVersion) { output.AddMessage(new EMReadingMessage(MessageClass.Info, "BadIncludeOrMissingMarkdownFileINTUsed", path), data); } return(output); } // should never happen! throw new InvalidOperationException("Bad linking file status."); }
public override void Parse(List <TextFragment> fragments, TransformationData data) { ParseElements(data, fragments, new EMMarkdownAndHTMLTagsParser(GetLocation)); ParseElements(data, fragments, EMHeader.GetParser()); ParseElements(data, fragments, EMInclude.GetParser()); ParseElements(data, fragments, EMTOCInline.GetParser()); ParseElements(data, fragments, EMBookmark.GetParser()); ParseElements(data, fragments, EMHorizontalRule.GetParser()); ParseElements(data, fragments, EMList.GetParser()); ParseElements(data, fragments, EMTable.GetParser()); ParseElements(data, fragments, EMCodeBlock.GetParser()); ParseElements(data, fragments, EMBlockQuotes.GetParser()); ParseElements(data, fragments, EMParagraph.GetParser()); }
private static EMElement CreateTOCInline( Match match, EMDocument doc, EMElementOrigin origin, EMElement parent, TransformationData data) { var start = 0; var end = 0; SpacePattern.Split(match.Groups["params"].Value).ToList().ForEach( param => { if (string.IsNullOrWhiteSpace(param)) { return; } var parts = param.Split(':'); var name = parts[0]; var value = int.Parse(parts[1]); switch (name) { case "start": start = value; break; case "end": end = value; break; } }); var path = match.Groups["path"].Value; ClosestFileStatus status; var linkedDoc = data.ProcessedDocumentCache.GetClosest(path, out status); if (status == ClosestFileStatus.FileMissing) { return EMErrorElement.Create(doc, origin, parent, data, "BadIncludeOrMissingMarkdownFile", path); } if (status == ClosestFileStatus.ChangedToIntVersion || status == ClosestFileStatus.ExactMatch) { EMElement output = new EMTOCInline(doc, origin, parent, start, end, linkedDoc, path); if (status == ClosestFileStatus.ChangedToIntVersion) { output.AddMessage(new EMReadingMessage(MessageClass.Info, "BadIncludeOrMissingMarkdownFileINTUsed", path), data); } return output; } // should never happen! throw new InvalidOperationException("Bad linking file status."); }