10import qualified Data.List as List
11import qualified Data.Map as Map
12import qualified Data.Maybe as Maybe
13import qualified Data.Name as Name
15import qualified AST.Optimized as Opt
16import qualified Elm.Compiler.Type.Extract as Extract
17import qualified Generate.JavaScript.Name as JsName
25 = Dev (Maybe Extract.Types)
26 | Prod ShortFieldNames
29isDebug :: Mode -> Bool
32 Dev mi -> Maybe.isJust mi
41 Map.Map Name.Name JsName.Name
44shortenFieldNames :: Opt.GlobalGraph -> ShortFieldNames
45shortenFieldNames (Opt.GlobalGraph _ frequencies) =
46 Map.foldr addToShortNames Map.empty $
47 Map.foldrWithKey addToBuckets Map.empty frequencies
50addToBuckets :: Name.Name -> Int -> Map.Map Int [Name.Name] -> Map.Map Int [Name.Name]
51addToBuckets field frequency buckets =
52 -- TODO try using an IntMap for buckets
53 Map.insertWith (++) frequency [field] buckets
56addToShortNames :: [Name.Name] -> ShortFieldNames -> ShortFieldNames
57addToShortNames fields shortNames =
58 List.foldl' addField shortNames fields
61addField :: ShortFieldNames -> Name.Name -> ShortFieldNames
62addField shortNames field =
63 let rename = JsName.fromInt (Map.size shortNames) in
64 Map.insert field rename shortNames
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list