on master help sign in
Switch enums from numbers to strings
5a973c8Evan Czaplicki
src/Parse/Kernel.hs+16−17
@@ -7,18 +7,18 @@ module Parse.Kernel
7
7
8
8
9import qualified Data.ByteString as BS
9import qualified Data.ByteString as BS
10−import qualified Data.ByteString.Builder as BS
11−import qualified Data.ByteString.Lazy as LBS
12import qualified Data.Map as Map
10import qualified Data.Map as Map
13import Data.Monoid ((<>))
11import Data.Monoid ((<>))
14import Data.Text (Text)
12import Data.Text (Text)
15import qualified Data.Text as Text
13import qualified Data.Text as Text
14+import qualified Data.Text.Encoding as Text
16import Data.Word (Word8)
15import Data.Word (Word8)
17
16
18import qualified AST.Exposing as Exposing
17import qualified AST.Exposing as Exposing
19import qualified AST.Kernel as Kernel
18import qualified AST.Kernel as Kernel
20import qualified AST.Module as Module
19import qualified AST.Module as Module
21import qualified AST.Module.Name as Module
20import qualified AST.Module.Name as Module
21+import Generate.JavaScript.Helpers as Help (toFieldName)
22import Parse.Helpers (Parser)
22import Parse.Helpers (Parser)
23import qualified Parse.Helpers as Parse
23import qualified Parse.Helpers as Parse
24import qualified Parse.Module as Parse
24import qualified Parse.Module as Parse
@@ -66,21 +66,20 @@ parserHelp table enums chunks =
66
66
67lookupEnum :: Word8 -> Text -> Enums -> (BS.ByteString, Enums)
67lookupEnum :: Word8 -> Text -> Enums -> (BS.ByteString, Enums)
68lookupEnum word var allEnums =
68lookupEnum word var allEnums =
69− case Map.lookup word allEnums of
69+ let
70− Nothing ->
70+ enums =
71− ( "0", Map.insert word (Map.singleton var "0") allEnums )
71+ Map.findWithDefault Map.empty word allEnums
72−
72+ in
73− Just enums ->
74− case Map.lookup var enums of
73+ case Map.lookup var enums of
75− Just bytes ->
74+ Just bytes ->
76− ( bytes, allEnums )
75+ ( bytes, allEnums )
77−
76+
78− Nothing ->
77+ Nothing ->
79− let
78+ let
80− number =
79+ identifier =
81− LBS.toStrict $ BS.toLazyByteString $ BS.word8Dec $ fromIntegral (Map.size enums)
80+ Text.encodeUtf8 ("'" <> Help.toFieldName (Map.size enums) <> "'")
82− in
81+ in
83− ( number, Map.insert word (Map.insert var number enums) allEnums )
82+ ( identifier, Map.insert word (Map.insert var identifier enums) allEnums )
84
83
85
84
86
85