on master help sign in
Record field name translations for shaders
2a39658Evan Czaplicki
builder/src/Generate/Nitpick.hs+1−1
@@ -75,7 +75,7 @@ hasDebug expression =
75 Opt.Record fs -> any hasDebug fs
75 Opt.Record fs -> any hasDebug fs
76 Opt.Unit -> False
76 Opt.Unit -> False
77 Opt.Tuple a b c -> hasDebug a || hasDebug b || maybe False hasDebug c
77 Opt.Tuple a b c -> hasDebug a || hasDebug b || maybe False hasDebug c
78− Opt.Shader _ -> False
78+ Opt.Shader _ _ _ -> False
79
79
80
80
81defHasDebug :: Opt.Def -> Bool
81defHasDebug :: Opt.Def -> Bool
compiler/src/AST/Optimized.hs+3−3
@@ -65,7 +65,7 @@ data Expr
65 | Record (Map.Map N.Name Expr)
65 | Record (Map.Map N.Name Expr)
66 | Unit
66 | Unit
67 | Tuple Expr Expr (Maybe Expr)
67 | Tuple Expr Expr (Maybe Expr)
68− | Shader Text
68+ | Shader Text (Set.Set N.Name) (Set.Set N.Name)
69
69
70
70
71data Global = Global ModuleName.Canonical N.Name
71data Global = Global ModuleName.Canonical N.Name
@@ -213,7 +213,7 @@ instance Binary Expr where
213 Record a -> putWord8 23 >> put a
213 Record a -> putWord8 23 >> put a
214 Unit -> putWord8 24
214 Unit -> putWord8 24
215 Tuple a b c -> putWord8 25 >> put a >> put b >> put c
215 Tuple a b c -> putWord8 25 >> put a >> put b >> put c
216− Shader a -> putWord8 26 >> put a
216+ Shader a b c -> putWord8 26 >> put a >> put b >> put c
217
217
218 get =
218 get =
219 do word <- getWord8
219 do word <- getWord8
@@ -244,7 +244,7 @@ instance Binary Expr where
244 23 -> liftM Record get
244 23 -> liftM Record get
245 24 -> pure Unit
245 24 -> pure Unit
246 25 -> liftM3 Tuple get get get
246 25 -> liftM3 Tuple get get get
247− 26 -> liftM Shader get
247+ 26 -> liftM3 Shader get get get
248 _ -> error "problem getting Opt.Expr binary"
248 _ -> error "problem getting Opt.Expr binary"
249
249
250
250
compiler/src/Generate/JavaScript/Expression.hs+16−3
@@ -16,6 +16,7 @@ import qualified Data.IntMap as IntMap
16import qualified Data.List as List
16import qualified Data.List as List
17import Data.Map ((!))
17import Data.Map ((!))
18import qualified Data.Map as Map
18import qualified Data.Map as Map
19+import qualified Data.Set as Set
19import qualified Data.Text.Encoding as Text
20import qualified Data.Text.Encoding as Text
20
21
21import qualified AST.Canonical as Can
22import qualified AST.Canonical as Can
@@ -178,9 +179,21 @@ generate mode expression =
178 , generateJsExpr mode c
179 , generateJsExpr mode c
179 ]
180 ]
180
181
181− Opt.Shader src ->
182+ Opt.Shader src attributes uniforms ->
182− let string = JS.String (Text.encodeUtf8Builder src) in
183+ let
184+ toTranlation field =
185+ ( Name.fromLocal field
186+ , JS.String (Name.toBuilder (generateField mode field))
187+ )
188+
189+ toTranslationObject fields =
190+ JS.Object (map toTranlation (Set.toList fields))
191+ in
183− JsExpr $ JS.Object [ ( Name.fromLocal "src", string ) ]
192+ JsExpr $ JS.Object $
193+ [ ( Name.fromLocal "src", JS.String (Text.encodeUtf8Builder src) )
194+ , ( Name.fromLocal "attributes", toTranslationObject attributes )
195+ , ( Name.fromLocal "uniforms", toTranslationObject uniforms )
196+ ]
184
197
185
198
186
199
compiler/src/Optimize/Expression.hs+4−2
@@ -10,11 +10,13 @@ module Optimize.Expression
10
10
11import Prelude hiding (cycle)
11import Prelude hiding (cycle)
12import Control.Monad (foldM)
12import Control.Monad (foldM)
13+import qualified Data.Map as Map
13import qualified Data.Set as Set
14import qualified Data.Set as Set
14
15
15import qualified AST.Canonical as Can
16import qualified AST.Canonical as Can
16import qualified AST.Optimized as Opt
17import qualified AST.Optimized as Opt
17import qualified AST.Module.Name as ModuleName
18import qualified AST.Module.Name as ModuleName
19+import qualified AST.Utils.Shader as Shader
18import qualified Data.Index as Index
20import qualified Data.Index as Index
19import qualified Elm.Name as N
21import qualified Elm.Name as N
20import qualified Optimize.Case as Case
22import qualified Optimize.Case as Case
@@ -168,8 +170,8 @@ optimize cycle (A.At region expression) =
168 <*> optimize cycle b
170 <*> optimize cycle b
169 <*> traverse (optimize cycle) maybeC
171 <*> traverse (optimize cycle) maybeC
170
172
171− Can.Shader _ src _ ->
173+ Can.Shader _ src (Shader.Shader attributes uniforms _varyings) ->
172− pure (Opt.Shader src)
174+ pure (Opt.Shader src (Map.keysSet attributes) (Map.keysSet uniforms))
173
175
174
176
175
177