public override void VisitSectionTitle(SectionTitle sectionTitle) { // Generate an anchor for all top level section titles if (this._document.IndexOf(sectionTitle) == 0 && !sectionTitle.Attributes.HasAnchor) { var builder = new StringBuilder(); using (var writer = new AsciiDocVisitor(new StringWriter(builder))) { writer.VisitInlineContainer(sectionTitle); } var title = builder.ToString().PascalToHyphen(); sectionTitle.Attributes.Add(new Anchor(title)); } if (sectionTitle.Attributes.HasAnchor) { // Check for duplicate ids across documents var key = sectionTitle.Attributes.Anchor.Id; if (Ids.TryGetValue(key, out var existingFile)) { throw new Exception($"duplicate id {key} in {_destination.FullName}. Id already exists in {existingFile}"); } Ids.Add(key, _destination.FullName); } base.VisitSectionTitle(sectionTitle); }
public override void Visit(SectionTitle sectionTitle) { if (sectionTitle.Level != 2) { base.Visit(sectionTitle); return; } // Generate an anchor for all Level 2 section titles if (!sectionTitle.Attributes.HasAnchor) { var builder = new StringBuilder(); using (var writer = new AsciiDocVisitor(new StringWriter(builder))) { writer.Visit((InlineContainer)sectionTitle); } var title = builder.ToString().PascalToHyphen(); sectionTitle.Attributes.Add(new Anchor(title)); } // Check for duplicate ids across documents var key = sectionTitle.Attributes.Anchor.Id; string existingFile; if (Ids.TryGetValue(key, out existingFile)) { throw new Exception($"duplicate id {key} in {_destination.FullName}. Id already exists in {existingFile}"); } Ids.Add(key, _destination.FullName); base.Visit(sectionTitle); }
private bool LastSectionTitleMatches(Func <string, bool> predicate) { var lastSectionTitle = _newDocument.OfType <SectionTitle>().LastOrDefault(e => e.Level == _topSectionTitleLevel + 1); if (lastSectionTitle != null && lastSectionTitle.Level == _topSectionTitleLevel + 1) { var builder = new StringBuilder(); using (var visitor = new AsciiDocVisitor(new StringWriter(builder))) visitor.VisitInlineContainer(lastSectionTitle); return(predicate(builder.ToString())); } return(false); }
public override Task SaveToDocumentationFolderAsync() { //load the asciidoc file for processing var docFileName = CreateDocumentationLocation(); var document = Document.Load(FileLocation.FullName); // make any modifications var rawVisitor = new RawAsciidocVisitor(FileLocation, docFileName); document.Accept(rawVisitor); // write out asciidoc to file using (var visitor = new AsciiDocVisitor(docFileName.FullName)) document.Accept(visitor); return(Task.FromResult(0)); }
public override void SaveToDocumentationFolder() { //we simply do a copy of the markdown file var destination = this.CreateDocumentationLocation(); var document = Document.Load(FileLocation.FullName); // make any modifications var rawVisitor = new RawAsciidocVisitor(FileLocation, destination); document.Accept(rawVisitor); // write out asciidoc to file using (var visitor = new AsciiDocVisitor(destination.FullName)) { document.Accept(visitor); } }
public override void SaveToDocumentationFolder() { //load the asciidoc file for processing var docFileName = this.CreateDocumentationLocation(); var document = Document.Load(FileLocation.FullName); // make any modifications var rawVisitor = new RawAsciidocVisitor(FileLocation, docFileName); document.Accept(rawVisitor); // write out asciidoc to file using (var visitor = new AsciiDocVisitor(docFileName.FullName)) { document.Accept(visitor); } }
public static void Equal(string asciidoc, Document document) { var directoryAttribute = document.Attributes.FirstOrDefault(a => a.Name == "docdir"); if (directoryAttribute != null) { document.Attributes.Remove(directoryAttribute); } var builder = new StringBuilder(); using (var visitor = new AsciiDocVisitor(new StringWriter(builder))) { document.Accept(visitor); } Assert.Equal(asciidoc, builder.ToString().TrimEnd('\r', '\n')); }
private static string RenderAsciiDoc(Document document) { var directoryAttributes = document.Attributes.Where(a => a.Name == "docdir").ToList(); foreach (var directoryAttribute in directoryAttributes) { document.Attributes.Remove(directoryAttribute); } var builder = new StringBuilder(); using (var visitor = new AsciiDocVisitor(new StringWriter(builder))) { document.Accept(visitor); } return(builder.ToString().RemoveTrailingNewLine()); }
public override void SaveToDocumentationFolder() { //we simply do a copy of the markdown file var docFileName = this.CreateDocumentationLocation(); #if !DOTNETCORE var document = Document.Load(FileLocation.FullName); // make any modifications var rawVisitor = new RawAsciidocVisitor(FileLocation); document.Accept(rawVisitor); // write out asciidoc to file using (var visitor = new AsciiDocVisitor(docFileName.FullName)) { document.Accept(visitor); } #else this.FileLocation.CopyTo(docFileName.FullName, true); #endif }
private bool LastSectionTitleMatches(Func<string, bool> predicate) { var lastSectionTitle = _newDocument.OfType<SectionTitle>().LastOrDefault(e => e.Level == 3); if (lastSectionTitle != null && lastSectionTitle.Level == 3) { var builder = new StringBuilder(); using (var visitor = new AsciiDocVisitor(new StringWriter(builder))) { visitor.Visit(lastSectionTitle.Elements); } return predicate(builder.ToString()); } return false; }
public override void Visit(SectionTitle sectionTitle) { if (sectionTitle.Level != 2) { base.Visit(sectionTitle); return; } // Generate an anchor for all Level 2 section titles if (!sectionTitle.Attributes.HasAnchor) { var builder = new StringBuilder(); using (var writer = new AsciiDocVisitor(new StringWriter(builder))) { writer.Visit(sectionTitle.Elements); } var title = builder.ToString().PascalToHyphen(); sectionTitle.Attributes.Add(new Anchor(title)); } // Check for duplicate ids across documents var key = sectionTitle.Attributes.Anchor.Id; string existingFile; if (Ids.TryGetValue(key, out existingFile)) { throw new Exception($"duplicate id {key} in {_destination.FullName}. Id already exists in {existingFile}"); } Ids.Add(key, _destination.FullName); base.Visit(sectionTitle); }
protected VisitorTestsBase() { Builder = new StringBuilder(); Visitor = new AsciiDocVisitor(new StringWriter(Builder)); }