diff -r 782f121133c7 -r 950431e16cb4 build.sc --- a/build.sc Thu Jan 17 18:29:45 2019 +0100 +++ b/build.sc Tue Jan 29 22:11:06 2019 +0100 @@ -6,6 +6,8 @@ import mill.scalalib.publish._ import mill.util.Loose +import scala.language.postfixOps + object V { val fatags = "0.5-SNAPSHOT" val scalaJs = "0.6.26" @@ -17,6 +19,16 @@ val scalatags = ivy"com.lihaoyi::scalatags::0.6.7" } +def camelCase(s: String): String = { + def inner(l: List[Char]): List[Char] = l match { + case '-' :: '-' :: c :: rest => c.toUpper :: inner(rest) + case '-' :: c :: rest => c.toUpper :: inner(rest) + case c :: rest => c :: inner(rest) + case Nil => Nil + } + inner(s toList) mkString "" +} + trait Common extends CrossSbtModule with PublishModule { def publishVersion: Target[String] = V.fatags @@ -73,14 +85,11 @@ } private def tpl(d: IcoDef): String = { - val sym = d._1 match { - //case "clone" => "clone_" - case x => x - } + val sym = d._1 d._2.map { - case "brands" => s""" val `fab-$sym`: T = fab("${d._1}")\n""" - case "solid" => s""" val `fas-$sym`: T = fas("${d._1}")\n""" - case "regular" => s""" val `far-$sym`: T = far("${d._1}")\n""" + 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 } @@ -107,24 +116,7 @@ | private def far(w: String): T = FA(FaStyle.Regular, w) | private def fas(w: String): T = FA(FaStyle.Solid, w) | - | ${icons map(tpl) mkString} - | - | /* - | object fab { - | private def fa(w: String): T = FA(FaStyle.Brands, w) - | {icons.filter(_._2.contains("brands")).map(tpl).mkString} - | } - | - | object fas { - | private def fa(w: String): T = FA(FaStyle.Solid, w) - | {icons.filter(_._2.contains("solid")).map(tpl).mkString} - | } - | - | object far { - | private def fa(w: String): T = FA(FaStyle.Regular, w) - | {icons.filter(_._2.contains("regular")).map(tpl).mkString} - | } - | */ + | ${icons map tpl mkString} | | } """.stripMargin)