on master help sign in
Switch enums from numbers to strings
commit5a973c8b5f6301addff5205db4d4eff0d361d5b2 authorEvan Czaplicki <evancz@users.noreply.github.com> dateSat 1 Jul 2017, 18:02 (9 years ago) parent52e43bb
1 file changed+16−17
src/Parse/Kernel.hs+16−17
src/Parse/Kernel.hs+16−17
@@ -7,18 +7,18 @@ module Parse.Kernel
77
88
99import qualified Data.ByteString as BS
10−import qualified Data.ByteString.Builder as BS
11−import qualified Data.ByteString.Lazy as LBS
1210import qualified Data.Map as Map
1311import Data.Monoid ((<>))
1412import Data.Text (Text)
1513import qualified Data.Text as Text
14+import qualified Data.Text.Encoding as Text
1615import Data.Word (Word8)
1716
1817import qualified AST.Exposing as Exposing
1918import qualified AST.Kernel as Kernel
2019import qualified AST.Module as Module
2120import qualified AST.Module.Name as Module
21+import Generate.JavaScript.Helpers as Help (toFieldName)
2222import Parse.Helpers (Parser)
2323import qualified Parse.Helpers as Parse
2424import qualified Parse.Module as Parse
@@ -66,21 +66,20 @@ parserHelp table enums chunks =
6666
6767lookupEnum :: Word8 -> Text -> Enums -> (BS.ByteString, Enums)
6868lookupEnum word var allEnums =
69− case Map.lookup word allEnums of
70− Nothing ->
71− ( "0", Map.insert word (Map.singleton var "0") allEnums )
72−
73− Just enums ->
74− case Map.lookup var enums of
75− Just bytes ->
76− ( bytes, allEnums )
77−
78− Nothing ->
79− let
80− number =
81− LBS.toStrict $ BS.toLazyByteString $ BS.word8Dec $ fromIntegral (Map.size enums)
82− in
83− ( number, Map.insert word (Map.insert var number enums) allEnums )
69+ let
70+ enums =
71+ Map.findWithDefault Map.empty word allEnums
72+ in
73+ case Map.lookup var enums of
74+ Just bytes ->
75+ ( bytes, allEnums )
76+
77+ Nothing ->
78+ let
79+ identifier =
80+ Text.encodeUtf8 ("'" <> Help.toFieldName (Map.size enums) <> "'")
81+ in
82+ ( identifier, Map.insert word (Map.insert var identifier enums) allEnums )
8483
8584
8685