Skip to content

Commit

Permalink
Normalize JSX identifiers
Browse files Browse the repository at this point in the history
  • Loading branch information
FlorianRappl committed Mar 7, 2024
1 parent c62ca91 commit 2abf1a4
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 1 deletion.
21 changes: 21 additions & 0 deletions src/Mages.Core.Tests/FunctionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -794,5 +794,26 @@ public void MaxWithComplexReal_Issue101()
var result = "max(-1, 3i)".Eval();
Assert.AreEqual(new Complex(0.0, 3.0), (Complex)result);
}

[Test]
public void HtmlWithFragmentInside()
{
var result = " <><h1 x-foo-bar={27+19} class=\"yo\">Foo</h1><p>Bar</p></> | html".Eval();
Assert.AreEqual("<h1 x-foo-bar=\"46\" class=\"yo\">Foo</h1><p>Bar</p>", (String)result);
}

[Test]
public void HtmlWithTextInside()
{
var result = "<foo> Hi!... <strong> dear, friend.. </strong> oh my~ </foo> | html".Eval();
Assert.AreEqual("<foo> Hi!... <strong> dear, friend.. </strong> oh my~ </foo>", (String)result);
}

[Test]
public void HtmlWithPropsAndTextInside()
{
var result = "<foo disabled tabIndex={2+3} bla=\"ooo\">\r\n Hello <strong>World</strong>!\r\n</foo> | html".Eval();
Assert.AreEqual("<foo disabled=\"disabled\" tabindex=\"5\" bla=\"ooo\">\n Hello <strong>World</strong>!\n</foo>", (String)result);
}
}
}
42 changes: 42 additions & 0 deletions src/Mages.Core.Tests/JsxExpressionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,5 +61,47 @@ public void JsxFragmentIsValidExpression()
var expr = "<></>".ToExpression();
Assert.IsInstanceOf<JsxExpression>(expr);
}

[Test]
public void JsxWithPropExpressionIsValidExpression()
{
var expr = "<foo>bar<bar x={2} /></foo>".ToExpression();
Assert.IsInstanceOf<JsxExpression>(expr);
}

[Test]
public void JsxWithSelfClosingChildIsValidExpression()
{
var expr = "<foo>bar<bar /></foo>".ToExpression();
Assert.IsInstanceOf<JsxExpression>(expr);
}

[Test]
public void JsxWithStringPropIsValidExpression()
{
var expr = "<foo x=\"2\" />".ToExpression();
Assert.IsInstanceOf<JsxExpression>(expr);
}

[Test]
public void JsxWithCompleteContentIsValidExpression()
{
var expr = "<foo disabled tabIndex={2+3} bla=\"ooo\">\r\n Hello <strong>World</strong>!\r\n</foo>".ToExpression();
Assert.IsInstanceOf<JsxExpression>(expr);
}

[Test]
public void JsxWithTextAndTagMixtureIsValidExpression()
{
var expr = "<foo> Hi!... <strong> dear, friend.. </strong> oh my~ </foo>".ToExpression();
Assert.IsInstanceOf<JsxExpression>(expr);
}

[Test]
public void JsxWithFragmentAndKeywordPropExpression()
{
var expr = "<><h1 x-foo-bar={27+19} class=\"yo\">Foo</h1><p>Bar</p></>".ToExpression();
Assert.IsInstanceOf<JsxExpression>(expr);
}
}
}
9 changes: 8 additions & 1 deletion src/Mages.Core/Runtime/Stringify.cs
Original file line number Diff line number Diff line change
Expand Up @@ -196,9 +196,16 @@ private static (string, string) InspectProps(Object args)
{
content = AsHtml(value);
}
else if (value is Boolean b)
{
var k = key.ToLowerInvariant();
var val = b ? k : String.Empty;
attrs.Add($"{k}=\"{val}\"");
}
else
{
attrs.Add($"{key}=\"{value}\"");
var k = key.ToLowerInvariant();
attrs.Add($"{k}=\"{value}\"");
}
}

Expand Down

0 comments on commit 2abf1a4

Please sign in to comment.