--- 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)