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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
        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);
			}
		}
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
        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'));
        }
Esempio n. 8
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);
            }
        }
Esempio n. 9
0
        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());
        }
Esempio n. 10
0
		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
		}
Esempio n. 11
0
        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);
		}
Esempio n. 14
0
 protected VisitorTestsBase()
 {
     Builder = new StringBuilder();
     Visitor = new AsciiDocVisitor(new StringWriter(Builder));
 }