Example #1
0
        public void Constructor_LegacyMangledRubyStyleAttribute_GeneratesHtmlAttributeCollectionTag()
        {
            const string templateLine = "p{a='b'}";
            var tag = new HamlNodeTag(new HamlLine(templateLine, HamlRuleEnum.Tag, indent: ""));

            Assert.That(tag.Children.First(), Is.InstanceOf<HamlNodeHtmlAttributeCollection>());
        }
Example #2
0
        public void Constructor_HtmlStyleAttribute_GeneratesHtmlAttributeCollectionTag()
        {
            const string templateLine = "p(a='b')";
            var tag = new HamlNodeTag(new HamlLine(templateLine, HamlRuleEnum.Tag, "", 0));

            Assert.That(tag.Children.First(), Is.InstanceOf<HamlNodeHtmlAttributeCollection>());
        }
Example #3
0
        public void Constructor_HtmlStyleAttribute_AttributeCollectionContainsCorrectContent(
            string templateLine, string expectedAttributeContent, int expectedaAttrCount)
        {
            var tag = new HamlNodeTag(new HamlLine(templateLine, HamlRuleEnum.Tag, indent: ""));

            Assert.That(tag.Children.First().Content, Is.EqualTo(expectedAttributeContent));
            Assert.That(tag.Children.Count(), Is.EqualTo(expectedaAttrCount));
        }
Example #4
0
        public void Constructor_InlineContent_GeneratesCorrectChildTag()
        {
            const string templateLine = "p Hello world";
            var tag = new HamlNodeTag(new HamlLine(templateLine, HamlRuleEnum.Tag, indent: ""));

            Assert.That(tag.Children.First(), Is.InstanceOf<HamlNodeTextContainer>());
            const string expectedText = "Hello world";
            Assert.That(((HamlNodeTextContainer)tag.Children.First()).Content, Is.EqualTo(expectedText));
        }
Example #5
0
        public void Constructor_HtmlStyleAttributeWithContent_GeneratesCorrectChildren()
        {
            const string templateLine = "p(a='b')Content";
            var tag = new HamlNodeTag(new HamlLine(templateLine, HamlRuleEnum.Tag, indent: ""));

            const string expectedAttrContent = "(a='b')";
            Assert.That(tag.Children.First().Content, Is.EqualTo(expectedAttrContent));
            const string expectedStringContent = "Content";
            Assert.That(tag.Children.ToList()[1].Content, Is.EqualTo(expectedStringContent));
        }
Example #6
0
        private static IList<HamlNodeTextContainer> GetClassValues(HamlNodeTag nodeTag)
        {
            var classValues = (from collection in nodeTag.Children.OfType<HamlNodeHtmlAttributeCollection>()
                               from attr in collection.Children.OfType<HamlNodeHtmlAttribute>()
                               where attr.Name == "class"
                               from attrFragment in attr.Children
                               select (HamlNodeTextContainer)attrFragment).ToList();

            classValues.AddRange(nodeTag.Children.OfType<HamlNodeTagClass>().Select(x => new HamlNodeTextContainer(x.SourceFileLineNum, x.Content)));
            return classValues;
        }
Example #7
0
        private static IList<HamlNodeTextContainer> GetIdValues(HamlNodeTag nodeTag)
        {
            var idValues = (from collection in nodeTag.Children.OfType<HamlNodeHtmlAttributeCollection>()
                            from attr in collection.Children.OfType<HamlNodeHtmlAttribute>()
                            where attr.Name == "id"
                            from attrFragment in attr.Children
                            select (HamlNodeTextContainer)attrFragment).ToList();

            var idTag = nodeTag.Children.LastOrDefault(x => x.GetType() == typeof(HamlNodeTagId));
            if (idTag != null) idValues.Insert(0, new HamlNodeTextContainer(idTag.SourceFileLineNum, idTag.Content));
            return idValues;
        }
        public void Walk_ClassHtmlAttribute_WritesCorrectClassAttribute()
        {
            // Arrange
            var tagNode = new HamlNodeTag(new HamlLine("p", HamlRuleEnum.Tag, "", 0));
            tagNode.AddChild(new HamlNodeHtmlAttributeCollection(0, "(class='class')"));

            // Act
            _tagWalker.Walk(tagNode);

            // Assert
            const string expectedIdAttr = @"class='class'";
            Assert.That(_classBuilderMock.Build(""), Is.StringContaining(expectedIdAttr));
        }
        public void Walk_ClassNoteAndClassHtmlAttribute_WritesCorrectIdAttribute()
        {
            // Arrange
            var tagNode = new HamlNodeTag(new HamlLine("p", HamlRuleEnum.Tag, indent: ""));
            tagNode.AddChild(new HamlNodeTagClass(new HamlSourceFileMetrics(0, 0, 0, 0), "class2"));
            tagNode.AddChild(new HamlNodeHtmlAttributeCollection(new HamlSourceFileMetrics(0, 0, 0, 0), (string) "(class='class1')"));

            // Act
            _tagWalker.Walk(tagNode);

            // Assert
            const string expectedIdAttr = @"class='class1 class2'";
            Assert.That(_classBuilderMock.Build(""), Is.StringContaining(expectedIdAttr));
        }
Example #10
0
        public void Walk_ClassFollowedByIdNodes_OrderedCorrectly()
        {
            // Arrange
            const string tagId = "id";
            const string tagClass = "class";
            var tagNode = new HamlNodeTag(new HamlLine("p", HamlRuleEnum.Tag, "", 0));
            tagNode.AddChild(new HamlNodeTagClass(0, tagClass));
            tagNode.AddChild(new HamlNodeTagId(0, tagId));

            // Act
            _tagWalker.Walk(tagNode);

            // Assert
            const string expectedTag = @"<p class='class' id='id'></p>";
            Assert.That(_classBuilderMock.Build(""), Is.EqualTo(expectedTag));
        }
Example #11
0
 private void WalkHtmlStyleAttributes(HamlNodeTag nodeTag)
 {
     var attributeTags = nodeTag.Children.Where(x => x.GetType() == typeof(HamlNodeHtmlAttributeCollection));
     foreach (var child in attributeTags)
     {
         new HamlNodeHtmlAttributeCollectionWalker(ClassBuilder, Options)
             .Walk(child);
     }
 }
Example #12
0
 private void MakeClassAttribute(HamlNodeTag nodeTag)
 {
     var classValues = GetClassValues(nodeTag);
     AppendClassAttribute(classValues);
 }
Example #13
0
 private void MakeIdAttribute(HamlNodeTag nodeTag)
 {
     var idValues = GetIdValues(nodeTag);
     AppendIdAttribute(idValues);
 }
Example #14
0
 private HamlNode GetLastNonWhitespaceChild(HamlNodeTag nodeTag)
 {
     return nodeTag.Children.LastOrDefault(x => x.IsWhitespaceNode() == false);
 }
Example #15
0
        private bool IsPreCloseTagWhitespaceTrimmed(HamlNodeTag nodeTag)
        {
            if (nodeTag.IsMultiLine == false || nodeTag.WhitespaceRemoval == WhitespaceRemoval.Internal)
                return true;

            var lastNonWhitespaceChild = GetLastNonWhitespaceChild(nodeTag) as HamlNodeTag;
            if (lastNonWhitespaceChild == null)
                return false;

            return (lastNonWhitespaceChild).WhitespaceRemoval == WhitespaceRemoval.Surrounding;
        }
Example #16
0
 public void Constructor_TagWithNamespace_DeterminesTagAndNamespaceCorrectly(string templateLine,
     string expectedNamespace, string expectedTag)
 {
     var tag = new HamlNodeTag(new HamlLine(templateLine, HamlRuleEnum.Tag, indent: ""));
     Assert.That(tag.Namespace, Is.EqualTo(expectedNamespace));
     Assert.That(tag.TagName, Is.EqualTo(expectedTag));
 }
Example #17
0
        private void AppendTagStart(HamlNodeTag nodeTag)
        {
            if (nodeTag.IsLeadingWhitespaceTrimmed == false)
                ClassBuilder.Append(nodeTag.Indent);

            ClassBuilder.Append("<" + nodeTag.NamespaceQualifiedTagName);
        }
Example #18
0
        public void Walk_EmptyAttributeCollectionNode_WritesCorrectAttributes(string tag, string attributes, string expectedOutput)
        {
            var tagNode = new HamlNodeTag(new HamlLine(tag, HamlRuleEnum.Tag, "", 0));
            tagNode.AddChild(new HamlNodeHtmlAttributeCollection(0, attributes));

            _tagWalker.Walk(tagNode);

            Assert.That(_classBuilderMock.Build(""), Is.EqualTo(expectedOutput));
        }
Example #19
0
 public void Constructor_SimpleTags_DeterminesSelfClosingCorrectly(string templateLine, bool expectedSelfClosing)
 {
     var tag = new HamlNodeTag(new HamlLine(templateLine, HamlRuleEnum.Tag, indent: ""));
     Assert.That(tag.IsSelfClosing, Is.EqualTo(expectedSelfClosing));
 }
Example #20
0
 private void AppendAttributes(HamlNodeTag nodeTag)
 {
     MakeClassAttribute(nodeTag);
     MakeIdAttribute(nodeTag);
     WalkHtmlStyleAttributes(nodeTag);
 }
Example #21
0
        public void Walk_NonSelfClosingTags_AppendsCorrectTag(string templateLine, string expectedOutput)
        {
            // Arrange
            var tagNode = new HamlNodeTag(new HamlLine(templateLine, HamlRuleEnum.Tag, "", 0));

            // Act
            _tagWalker.Walk(tagNode);

            // Assert
            Assert.That(_classBuilderMock.Build(""), Is.StringContaining(expectedOutput));
        }
Example #22
0
        public void Walk_TagWithWhitespaceSupression_SetsCorrectFlag(string templateLine, string expectedVariableContent)
        {
            var tag = new HamlNodeTag(new HamlLine(templateLine, HamlRuleEnum.Tag, indent: ""));

            Assert.That(tag.Children.First().Children.First().Content, Is.EqualTo(expectedVariableContent));
        }
Example #23
0
        public void Walk_WhitespaceRemoval_GeneratesCorrectOutput(string line1, string line2, string line3, string expectedOutput)
        {
            var tagNode = new HamlNodeTag(new HamlLine(line1, HamlRuleEnum.Tag, "", 0));
            tagNode.AddChild(new HamlNodeTag(new HamlLine(line2, HamlRuleEnum.Tag, "  ", 0)));

            _tagWalker.Walk(tagNode);

            Assert.That(_classBuilderMock.Build(""), Is.EqualTo(expectedOutput));
        }
Example #24
0
        public void Walk_TagWithWhitespaceSupression_SetsCorrectFlag(string templateLine, WhitespaceRemoval expectedSetting)
        {
            var tag = new HamlNodeTag(new HamlLine(templateLine, HamlRuleEnum.Tag, indent: ""));

            Assert.That(tag.WhitespaceRemoval, Is.EqualTo(expectedSetting));
        }
Example #25
0
        public void Walk_SelfClosingTag_AppendsCorrectTag()
        {
            // Arrange
            const string tagName = "foo/";
            var tagNode = new HamlNodeTag(new HamlLine(tagName, HamlRuleEnum.Tag, "", 0));

            // Act
            _tagWalker.Walk(tagNode);

            // Assert
            const string expectedTag = "<foo />";
            Assert.That(_classBuilderMock.Build(""), Is.StringContaining(expectedTag));
        }
Example #26
0
        public void Constructor_SimpleTags_GeneratesCorrectClassChildNodes(string templateLine, string expectedFirstClass, int expectedCount)
        {
            var tag = new HamlNodeTag(new HamlLine(templateLine, HamlRuleEnum.Tag, indent: ""));

            var classChildren = tag.Children.OfType<HamlNodeTagClass>();

            Assert.That(classChildren.Count(), Is.EqualTo(expectedCount));
            string att = classChildren.FirstOrDefault() != null ? classChildren.First().Content : "";
            Assert.That(att, Is.EqualTo(expectedFirstClass));
        }
Example #27
0
        public void Walk_MultipleIdNodes_WritesCorrectIdAttribute()
        {
            // Arrange
            var tagNode = new HamlNodeTag(new HamlLine("p", HamlRuleEnum.Tag, "", 0));
            tagNode.AddChild(new HamlNodeTagId(0, "id1"));
            tagNode.AddChild(new HamlNodeTagId(0, "id2"));

            // Act
            _tagWalker.Walk(tagNode);

            // Assert
            const string expectedIdAttr = @"id='id2'";
            Assert.That(_classBuilderMock.Build(""), Is.StringContaining(expectedIdAttr));
        }
Example #28
0
 public void Constructor_SimpleTags_GeneratesCorrectTagName(string templateLine, string expectedTagName)
 {
     var tag = new HamlNodeTag(new HamlLine(templateLine, HamlRuleEnum.Tag, indent: ""));
     Assert.That(tag.TagName, Is.EqualTo(expectedTagName));
 }
Example #29
0
 private void AppendTagBodyAndClose(HamlNodeTag nodeTag)
 {
     if (nodeTag.IsSelfClosing || Options.IsAutoClosingTag(nodeTag.TagName))
         ClassBuilder.AppendSelfClosingTagSuffix();
     else
     {
         ClassBuilder.Append(">");
         base.Walk(nodeTag);
         if (IsPreCloseTagWhitespaceTrimmed(nodeTag))
         {
             ClassBuilder.AppendFormat("</{0}>", nodeTag.NamespaceQualifiedTagName);
         }
         else
         {
             ClassBuilder.AppendNewLine();
             ClassBuilder.AppendFormat(nodeTag.Indent + "</{0}>", nodeTag.NamespaceQualifiedTagName);
         }
     }
 }
Example #30
0
        public void Walk_NestedTags_AppendsCorrectTags()
        {
            // Arrange
            const string tagName = "p";
            const string nestedText = "Hello world";
            var tagNode = new HamlNodeTag(new HamlLine(tagName, HamlRuleEnum.Tag, "", 0));
            tagNode.AddChild(new HamlNodeTextContainer(new HamlLine(nestedText, HamlRuleEnum.PlainText, "", 1, true)));
            // Act
            _tagWalker.Walk(tagNode);

            // Assert
            string expectedTag = string.Format("<{0}>{1}</{0}>", tagName, nestedText);
            Assert.That(_classBuilderMock.Build(""), Is.EqualTo(expectedTag));
        }