build.sc
changeset 43 1152fc8faf63
parent 42 e6e070b3a80f
child 44 ad85035e4d90
--- a/build.sc	Tue May 11 10:59:51 2021 +0200
+++ b/build.sc	Tue May 11 14:10:07 2021 +0200
@@ -103,13 +103,13 @@
     ujson.read(os.read! pwd / "icons.json").obj.map(e => (e._1, e._2.obj("styles").arr.map(_.str).toSet)).toList
   }
 
-  private def tpl(d: IcoDef): String = {
+  private def tpl(d: IcoDef): Set[String] = {
     val sym = d._1
     d._2.map {
-      case "brands" =>  s"""      val ${camelCase(s"fab-$sym")}: T = fab("$sym")\n"""
-      case "solid" =>   s"""      val ${camelCase(s"fas-$sym")}: T = fas("$sym")\n"""
-      case "regular" => s"""      val ${camelCase(s"far-$sym")}: T = far("$sym")\n"""
-    }.mkString
+      case "brands" =>  s"""  def ${camelCase(s"fab-$sym")}: FA = fab("$sym")"""
+      case "solid" =>   s"""  def ${camelCase(s"fas-$sym")}: FA = fas("$sym")"""
+      case "regular" => s"""  def ${camelCase(s"far-$sym")}: FA = far("$sym")"""
+    }
   }
 
   override def generatedSources: Sources = T.sources{
@@ -117,27 +117,26 @@
     val icons = parseIcons()
     write(d / "generated.scala",
       s"""
-        | package fontawesome.generic
-        | import scalatags.generic._
-        | class GenericFA[Builder, Output <: FragT, FragT](
-        |   val bun: Bundle[Builder, Output, FragT]) {
+        |package fontawesome.generic
+        |import scalatags.generic._
+        |class GenericFA[Builder, Output <: FragT, FragT](
+        |  val bun: Bundle[Builder, Output, FragT]) {
         |
-        |   import bun.all._
+        |  import bun.all._
         |
-        |   type T = FA[Builder, Output, FragT]
-        |
-        |   val faStack: Modifier = cls := "fa-stack fa-lg"
+        |  val faStack: Modifier = cls := "fa-stack fa-lg"
         |
-        |   implicit val bundle: Bundle[Builder, Output, FragT] = bun
-        |   implicit def fa2tag(x: T): TypedTag[Builder, Output, FragT] = x()
+        |  implicit val bundle: Bundle[Builder, Output, FragT] = bun
+        |  //implicit def fa2tag(x: FA): TypedTag[Builder, Output, FragT] = x()
+        |  implicit def fa2mod(x: FA): Modifier = x()
         |
-        |   private def fab(w: String): T = FA(FaStyle.Brands, w)
-        |   private def far(w: String): T = FA(FaStyle.Regular, w)
-        |   private def fas(w: String): T = FA(FaStyle.Solid, w)
+        |  private def fab(w: String): FA = FA(FaStyle.Brands, w)
+        |  private def far(w: String): FA = FA(FaStyle.Regular, w)
+        |  private def fas(w: String): FA = FA(FaStyle.Solid, w)
         |
-        |   ${icons map tpl mkString}
+        |${icons flatMap tpl mkString "\n"}
         |
-        | }
+        |}
       """.stripMargin)
     d
   }