on master help sign in
expose hyphenate and dehyphenate functions
4efcbfdEvan Czaplicki
compiler/Elm/Compiler/Module.hs+20−3
@@ -1,6 +1,8 @@
1module Elm.Compiler.Module
1module Elm.Compiler.Module
2 ( Interface, Name(Name)
2 ( Interface, Name(Name)
3+ , nameToPath
3− , nameToPath, nameToString, nameFromString
4+ , nameToString, nameFromString
5+ , hyphenate, dehyphenate
4 )
6 )
5 where
7 where
6
8
@@ -30,11 +32,26 @@ nameToString (Name names) =
30
32
31
33
32nameFromString :: String -> Maybe Name
34nameFromString :: 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 =
34 Name `fmap` mapM isLegit names
51 Name `fmap` mapM isLegit names
35 where
52 where
36 names =
53 names =
37− filter (/= ".") (List.groupBy (\a b -> a /= '.' && b /= '.') raw)
54+ filter (/= [sep]) (List.groupBy (\a b -> a /= sep && b /= sep) raw)
38
55
39 isLegit name =
56 isLegit name =
40 case name of
57 case name of