@@ -8,18 +8,19 @@ module Terminal.Args.Helpers
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
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
22−version :: Parser Pkg.Version
23+version :: Parser V.Version
25 { _singular = "version"
26 { _singular = "version"
@@ -30,9 +31,9 @@ version =
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)
38suggestVersion :: String -> IO [String]
39suggestVersion :: String -> IO [String]
@@ -41,10 +42,10 @@ suggestVersion _ =
43exampleVersions :: String -> [String]
44exampleVersions :: String -> [String]
44−exampleVersions string =
45+exampleVersions chars =
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
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 =
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
@@ -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)
109suggestPackages :: String -> IO [String]
110suggestPackages :: String -> IO [String]
@@ -113,9 +114,9 @@ suggestPackages _ =
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")