Move splitDots and prevent a non-exhaustive pattern match warning
This commit is contained in:
parent
4a25c165a4
commit
53c2ab1531
4 changed files with 14 additions and 15 deletions
|
@ -12,7 +12,6 @@ import Generate.JavaScript.Helpers
|
|||
import qualified Generate.Cases as Case
|
||||
import qualified Generate.JavaScript.Ports as Port
|
||||
import qualified Generate.Markdown as MD
|
||||
import qualified Parse.Helpers as PHelp
|
||||
import qualified SourceSyntax.Helpers as Help
|
||||
import SourceSyntax.Literal
|
||||
import SourceSyntax.Pattern as Pattern
|
||||
|
@ -312,7 +311,7 @@ generate unsafeModule =
|
|||
|
||||
jsImport modul = setup Nothing path ++ [ include ]
|
||||
where
|
||||
path = PHelp.splitDots modul
|
||||
path = Help.splitDots modul
|
||||
include = assign path $ dotSep ("Elm" : path ++ ["make"]) <| ref "_elm"
|
||||
|
||||
setup namespace path = map create paths
|
||||
|
@ -352,7 +351,7 @@ binop span op e1 e2 =
|
|||
func | Help.isOp operator = BracketRef () (dotSep (init parts ++ ["_op"])) (string operator)
|
||||
| otherwise = dotSep parts
|
||||
where
|
||||
parts = PHelp.splitDots op
|
||||
parts = Help.splitDots op
|
||||
operator = last parts
|
||||
|
||||
opDict = Map.fromList (infixOps ++ specialOps)
|
||||
|
|
|
@ -18,16 +18,6 @@ import SourceSyntax.Expression
|
|||
import SourceSyntax.PrettyPrint
|
||||
import SourceSyntax.Declaration (Assoc)
|
||||
|
||||
splitDots :: String -> [String]
|
||||
splitDots = go []
|
||||
where
|
||||
go vars str =
|
||||
case break (=='.') str of
|
||||
(x,'.':rest) | Help.isOp x -> vars ++ [x ++ '.' : rest]
|
||||
| otherwise -> go (vars ++ [x]) rest
|
||||
(x,[]) -> vars ++ [x]
|
||||
|
||||
|
||||
reserveds = [ "if", "then", "else"
|
||||
, "case", "of"
|
||||
, "let", "in"
|
||||
|
|
|
@ -3,6 +3,15 @@ module SourceSyntax.Helpers where
|
|||
|
||||
import qualified Data.Char as Char
|
||||
|
||||
splitDots :: String -> [String]
|
||||
splitDots = go []
|
||||
where
|
||||
go vars str =
|
||||
case break (=='.') str of
|
||||
(x,_:rest) | isOp x -> vars ++ [x ++ '.' : rest]
|
||||
| otherwise -> go (vars ++ [x]) rest
|
||||
(x,[]) -> vars ++ [x]
|
||||
|
||||
brkt :: String -> String
|
||||
brkt s = "{ " ++ s ++ " }"
|
||||
|
||||
|
|
|
@ -5,15 +5,16 @@ import Control.Arrow (first, (***))
|
|||
import Data.List (intercalate)
|
||||
|
||||
import qualified Data.Set as Set
|
||||
import qualified Parse.Helpers as PHelp
|
||||
|
||||
import qualified Parse.Helpers as PHelp
|
||||
import SourceSyntax.Expression
|
||||
import qualified SourceSyntax.Helpers as SHelp
|
||||
import SourceSyntax.Location
|
||||
import SourceSyntax.Module
|
||||
import SourceSyntax.Pattern
|
||||
|
||||
var :: String -> String
|
||||
var = intercalate "." . map (dereserve . deprime) . PHelp.splitDots
|
||||
var = intercalate "." . map (dereserve . deprime) . SHelp.splitDots
|
||||
where
|
||||
deprime = map (\c -> if c == '\'' then '$' else c)
|
||||
dereserve x = case Set.member x PHelp.jsReserveds of
|
||||
|
|
Loading…
Reference in a new issue