diff --git a/tyrian-tags/js/src/main/scala/tyrian/syntax.scala b/tyrian-tags/js/src/main/scala/tyrian/syntax.scala index e28f85f1..bd2aabfc 100644 --- a/tyrian-tags/js/src/main/scala/tyrian/syntax.scala +++ b/tyrian-tags/js/src/main/scala/tyrian/syntax.scala @@ -1,5 +1,11 @@ package tyrian +import tyrian.Html.text + object syntax: extension [M](oa: Option[Elem[M]]) def orEmpty: Elem[M] = oa.getOrElse(tyrian.Empty) + + given Conversion[String, Text] = text(_) + given Conversion[Int, Text] = n => text(n.toString) + given Conversion[Double, Text] = d => text(d.toString) diff --git a/tyrian-tags/js/src/test/scala/tyrian/HtmlTests.scala b/tyrian-tags/js/src/test/scala/tyrian/HtmlTests.scala index 62330cf8..d06aed04 100644 --- a/tyrian-tags/js/src/test/scala/tyrian/HtmlTests.scala +++ b/tyrian-tags/js/src/test/scala/tyrian/HtmlTests.scala @@ -84,4 +84,30 @@ class HtmlTests extends munit.FunSuite { } + test("literal values : text, number implicit conversion") { + import tyrian.syntax.given + + trait Msg + + val example1: Html[Msg] = div[Msg](cls := "container")( + "text abc ", + "Total are: ", + 28, + div(cls := "inner")(99.99) + ) + + val example2 = button( + tpe := "button", + cls := "inline-flex items-center p" + )( + "Messages", + span( + cls := "inline-flex items-center" + )(2) + ) + + println(example1.render) + println(example2.render) + } + }