@@ -1,6 +1,8 @@
11module Elm.Compiler.Module
22 ( Interface, Name(Name)
3− , nameToPath, nameToString, nameFromString
3+ , nameToPath
4+ , nameToString, nameFromString
5+ , hyphenate, dehyphenate
46 )
57 where
68
@@ -30,11 +32,26 @@ nameToString (Name names) =
3032
3133
3234nameFromString :: String -> Maybe Name
33−nameFromString raw =
35+nameFromString =
36+ fromString '.'
37+
38+
39+hyphenate :: Name -> String
40+hyphenate (Name names) =
41+ List.intercalate "-" names
42+
43+
44+dehyphenate :: String -> Maybe Name
45+dehyphenate =
46+ fromString '-'
47+
48+
49+fromString :: Char -> String -> Maybe Name
50+fromString sep raw =
3451 Name `fmap` mapM isLegit names
3552 where
3653 names =
37− filter (/= ".") (List.groupBy (\a b -> a /= '.' && b /= '.') raw)
54+ filter (/= [sep]) (List.groupBy (\a b -> a /= sep && b /= sep) raw)
3855
3956 isLegit name =
4057 case name of