on master help sign in
Switch away from Data.Text in terminal arg parser
794c62fEvan Czaplicki
terminal/src/Terminal/Args/Helpers.hs+16−15
@@ -8,18 +8,19 @@ module Terminal.Args.Helpers
8
8
9
9
10import qualified Data.Char as Char
10import qualified Data.Char as Char
11−import qualified Data.Text as Text
11+import qualified Data.Utf8 as Utf8
12import qualified System.FilePath as FP
12import qualified System.FilePath as FP
13
13
14import Terminal.Args (Parser(..))
14import Terminal.Args (Parser(..))
15import qualified Elm.Package as Pkg
15import qualified Elm.Package as Pkg
16+import qualified Elm.Version as V
16
17
17
18
18
19
19-- VERSION
20-- VERSION
20
21
21
22
22−version :: Parser Pkg.Version
23+version :: Parser V.Version
23version =
24version =
24 Parser
25 Parser
25 { _singular = "version"
26 { _singular = "version"
@@ -30,9 +31,9 @@ version =
30 }
31 }
31
32
32
33
33−parseVersion :: String -> Maybe Pkg.Version
34+parseVersion :: String -> Maybe V.Version
34−parseVersion str =
35+parseVersion chars =
35− Pkg.versionFromText (Text.pack str)
36+ V.fromString (Utf8.fromChars chars)
36
37
37
38
38suggestVersion :: String -> IO [String]
39suggestVersion :: String -> IO [String]
@@ -41,10 +42,10 @@ suggestVersion _ =
41
42
42
43
43exampleVersions :: String -> [String]
44exampleVersions :: String -> [String]
44−exampleVersions string =
45+exampleVersions chars =
45 let
46 let
46− chunks = map Text.unpack (Text.splitOn "." (Text.pack string))
47+ chunks = map Utf8.toChars (Utf8.split 0x2E {-.-} (Utf8.fromChars chars))
47− isNumber str = not (null str) && all Char.isDigit str
48+ isNumber cs = not (null cs) && all Char.isDigit cs
48 in
49 in
49 if all isNumber chunks then
50 if all isNumber chunks then
50 case chunks of
51 case chunks of
@@ -73,9 +74,9 @@ elmFile =
73
74
74
75
75parseElmFile :: String -> Maybe FilePath
76parseElmFile :: String -> Maybe FilePath
76−parseElmFile string =
77+parseElmFile chars =
77− if FP.takeExtension string == ".elm" then
78+ if FP.takeExtension chars == ".elm" then
78− Just string
79+ Just chars
79 else
80 else
80 Nothing
81 Nothing
81
82
@@ -103,7 +104,7 @@ package =
103parsePackage :: String -> Maybe Pkg.Name
104parsePackage :: String -> Maybe Pkg.Name
104parsePackage string =
105parsePackage string =
105 either (const Nothing) Just $
106 either (const Nothing) Just $
106− Pkg.fromText (Text.pack string)
107+ Pkg.fromString (Utf8.fromChars string)
107
108
108
109
109suggestPackages :: String -> IO [String]
110suggestPackages :: String -> IO [String]
@@ -113,9 +114,9 @@ suggestPackages _ =
113
114
114examplePackages :: String -> IO [String]
115examplePackages :: String -> IO [String]
115examplePackages string =
116examplePackages string =
116− case Pkg.fromText (Text.pack string) of
117+ case Pkg.fromString (Utf8.fromChars string) of
117− Left (_, suggestions@(_:_)) ->
118+ Left _ ->
118− return suggestions
119+ return (error "TODO need to make suggestions")
119
120
120 _ ->
121 _ ->
121 return
122 return