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