about summary refs log tree commit diff
path: root/scratch/habit-screens/client/src/Utils.elm
diff options
context:
space:
mode:
Diffstat (limited to 'scratch/habit-screens/client/src/Utils.elm')
-rw-r--r--scratch/habit-screens/client/src/Utils.elm37
1 files changed, 37 insertions, 0 deletions
diff --git a/scratch/habit-screens/client/src/Utils.elm b/scratch/habit-screens/client/src/Utils.elm
new file mode 100644
index 000000000000..23b13c224c68
--- /dev/null
+++ b/scratch/habit-screens/client/src/Utils.elm
@@ -0,0 +1,37 @@
+module Utils exposing (..)
+
+import Html exposing (..)
+import Html.Attributes exposing (..)
+import Maybe.Extra
+
+
+type Strategy
+    = Always String
+    | When Bool String
+    | If Bool String String
+
+
+class : List Strategy -> Attribute msg
+class classes =
+    classes
+        |> List.map
+            (\strategy ->
+                case strategy of
+                    Always x ->
+                        Just x
+
+                    When True x ->
+                        Just x
+
+                    When False _ ->
+                        Nothing
+
+                    If True x _ ->
+                        Just x
+
+                    If False _ x ->
+                        Just x
+            )
+        |> Maybe.Extra.values
+        |> String.join " "
+        |> Html.Attributes.class