@@ -8,22 +8,26 @@ module Elm.Name
88 , toShort
99 , addIndex
1010 , toCompositeName
11+ , fromForeignPtr
1112 , int, float, bool, char, string
12− , maybe, list, array, tuple
13+ , maybe, list, array, tuple, jsArray
1314 , task, router, cmd, sub, platform, browser
1415 , shader, debug, bitwise, basics
1516 , utils, negate, value
16− , node, program, main, dollar
17+ , node, program, main, dollar, identity
1718 )
1819 where
1920
2021
2122import Prelude hiding (length, maybe, negate)
2223import qualified Data.ByteString.Builder as B
24+import qualified Data.ByteString.Internal as B
2325import qualified Data.ByteString.Short as S
2426import qualified Data.Set as Set
2527import qualified Data.Text as Text
2628import qualified Data.Text.Encoding as Text
29+import Data.Word (Word8)
30+import Foreign.ForeignPtr (ForeignPtr)
2731
2832
2933
@@ -64,6 +68,15 @@ toCompositeName names =
6468
6569
6670
71+-- FROM PARSER
72+
73+
74+fromForeignPtr :: ForeignPtr Word8 -> Int -> Int -> Name
75+fromForeignPtr fptr offset len =
76+ Text.decodeUtf8 (B.PS fptr offset len)
77+
78+
79+
6780-- COMMON NAMES
6881
6982
@@ -112,6 +125,11 @@ tuple :: Name
112125tuple = "Tuple"
113126
114127
128+{-# NOINLINE jsArray #-}
129+jsArray :: Name
130+jsArray = "JsArray"
131+
132+
115133{-# NOINLINE task #-}
116134task :: Name
117135task = "Task"
@@ -195,3 +213,8 @@ main = "main"
195213{-# NOINLINE dollar #-}
196214dollar :: Name
197215dollar = "$"
216+
217+
218+{-# NOINLINE identity #-}
219+identity :: Name
220+identity = "identity"