Пример #1
0
        public void ToString_ReturnString()
        {
            // Act
            var obj = HtmlId.Create(value);

            // Assert
            Assert.Equal($@"{name}=""{value}""", obj.ToString());
        }
Пример #2
0
        public void Equals_Null()
        {
            // Arrange
            var orig = HtmlId.Create(value);

            // Assert
            Assert.False(orig.Equals(null));
        }
Пример #3
0
        public void Equals_OtherObject()
        {
            // Arrange
            var orig = HtmlId.Create(value);
            var str  = $@"{name}=""{value}""";

            // Assert
            Assert.False(orig.Equals(str));
        }
Пример #4
0
        public void Equals_IsNotEqual()
        {
            // Arrange
            var orig  = HtmlId.Create(value);
            var other = HtmlId.Create("not same");

            // Assert
            Assert.False(orig.Equals(other));
        }
Пример #5
0
        public void Equals_IsEqual()
        {
            // Arrange
            var orig = HtmlId.Create(value);
            var copy = HtmlId.Create(value);

            // Assert
            Assert.True(orig.Equals(copy));
        }
Пример #6
0
        public void Constructor_SetValues()
        {
            // Act
            var obj = new HtmlId(value);

            // Assert
            Assert.Equal(name, obj.Name);
            Assert.Equal(value, obj.Value);
        }
Пример #7
0
        public void Constructor_Empty()
        {
            // Act
            var obj = new HtmlId();

            // Assert
            Assert.Equal(name, obj.Name);
            Assert.Null(obj.Value);
        }
Пример #8
0
        public void Create_ReturnNewInstance()
        {
            // Act
            var obj = HtmlId.Create(value);

            // Assert
            Assert.Equal(name, obj.Name);
            Assert.Equal(value, obj.Value);
            Assert.IsType <HtmlId>(obj);
        }
Пример #9
0
        /// <summary>
        /// Parse the Content of a Markdown file.
        /// </summary>
        /// <param name="content"></param>
        /// <param name="sourceInformation"></param>
        /// <returns></returns>
        public static MarkdownMetadata Parse(string content, SourceInformation sourceInformation)
        {
            var output = new MarkdownMetadata
            {
                Content           = content,
                SourceInformation = sourceInformation
            };

            var lines = content.Split(new[] { "\n" }, StringSplitOptions.None);

            var lineNumber = 0;

            foreach (var line in lines)
            {
                lineNumber++;

                var trimmedLine = line.Trim();

                // todo Find Links. There could be multiple on a single line. "[text](ref)"

                // Process header line.
                if (trimmedLine.StartsWith("#"))
                {
                    // Count number of #'s and store that in Level.
                    var level = 1;

                    while (trimmedLine.Substring(level, 1).Equals("#"))
                    {
                        level++;
                    }

                    var text = trimmedLine.Substring(level).Trim();

                    var item = new Heading(level, text);
                    output.Headings.Add(item);

                    // There can be nothing more to parse on this line.
                    continue;
                }

                // Process Html Id
                var htmlMatch = HtmlRegex.Match(trimmedLine);

                if (htmlMatch.Success && htmlMatch.Groups.Count == 2)
                {
                    var item = new HtmlId(htmlMatch.Groups["id"].Value, trimmedLine);
                    output.HtmlIds.Add(item);

                    // There can be nothing more to parse on this line.
                    continue;
                }

                // Process Links
                var match = LinkRegex.Match(trimmedLine);

                if (match.Success && match.Groups.Count == 3)
                {
                    var item = new Link(match.Groups["text"].Value, match.Groups["ref"].Value, lineNumber);
                    output.Links.Add(item);
                }
            }

            return(output);
        }