1{-# OPTIONS_GHC -Wall #-}
2module ElmVersion where
3
4
5data ElmVersion
6  = Elm_0_16 -- TODO: remove 0_16
7  | Elm_0_17 -- TODO: remove 0_17
8  | Elm_0_18
9  | Elm_0_19
10  | Elm_0_18_Upgrade
11  | Elm_0_19_Upgrade
12
13
14instance Show ElmVersion where
15    show Elm_0_16 = "0.16"
16    show Elm_0_17 = "0.17"
17    show Elm_0_18 = "0.18"
18    show Elm_0_19 = "0.19"
19    show Elm_0_18_Upgrade = "0.18"
20    show Elm_0_19_Upgrade = "0.19"
21
22
23parse :: String -> Either String ElmVersion
24parse versionString =
25  case versionString of
26    "0.17" -> Right Elm_0_17
27    "0.18" -> Right Elm_0_18
28    "0.19" -> Right Elm_0_19
29    _ -> Left ("Invalid Elm version \"" ++ versionString ++ "\".  Supported versions are 0.18, 0.19")
30
31
32syntax_0_19_disallowApostropheInVars :: ElmVersion -> Bool
33syntax_0_19_disallowApostropheInVars elmVersion =
34    case elmVersion of
35        Elm_0_16 -> False
36        Elm_0_17 -> False
37        Elm_0_18_Upgrade -> False
38        Elm_0_18 -> False
39        Elm_0_19_Upgrade -> False
40        Elm_0_19 -> True
41
42
43style_0_19_stringEscape :: ElmVersion -> Bool
44style_0_19_stringEscape elmVersion =
45    case elmVersion of
46        Elm_0_16 -> False
47        Elm_0_17 -> False
48        Elm_0_18 -> False
49        Elm_0_18_Upgrade -> False
50        _ -> True
51
52
53style_0_19_cannotExposeOpenListing :: ElmVersion -> Bool
54style_0_19_cannotExposeOpenListing elmVersion =
55    case elmVersion of
56        Elm_0_16 -> False
57        Elm_0_17 -> False
58        Elm_0_18 -> False
59        Elm_0_18_Upgrade -> False
60        _ -> True
61