@@ -16,9 +16,7 @@ local FluentNode = class()
1616FluentNode ._name = " FluentNode"
1717
1818function FluentNode :_init (ast , resource )
19- if self ._name == " MessageReference" or self ._name == " TermReference" then
20- rawset (getmetatable (self ), " _resource" , resource )
21- end
19+ self :set_parent (resource )
2220 for key , value in pairs (ast ) do
2321 if type (key ) == " string" then
2422 if key == " id" then
@@ -36,6 +34,16 @@ function FluentNode:_init (ast, resource)
3634 end )
3735end
3836
37+ function FluentNode :set_parent (resource )
38+ if self ._name == " MessageReference" or self ._name == " TermReference" then
39+ rawset (getmetatable (self ), " _resource" , resource )
40+ end
41+ end
42+
43+ function FluentNode :get_parent ()
44+ return rawget (getmetatable (self ), " _resource" )
45+ end
46+
3947function FluentNode :inject (node )
4048 if type (node ) ~= " table" then return nil end
4149 local elements = rawget (self , " elements" )
@@ -295,7 +303,7 @@ FTL.MessageReference = class(FluentNode)
295303FTL .MessageReference ._name = " MessageReference"
296304
297305function FTL .MessageReference :format (parameters )
298- return rawget ( getmetatable ( self ), " _resource " ):get_message (self .id .name ):format (parameters )
306+ return self : get_parent ( ):get_message (self .id .name ):format (parameters )
299307end
300308
301309FTL .TermReference = class (FluentNode )
@@ -314,7 +322,7 @@ function FTL.TermReference:__mul (node)
314322end
315323
316324function FTL .TermReference :format (parameters )
317- return rawget ( getmetatable ( self ), " _resource " ):get_term (self .id .name ):format (parameters )
325+ return self : get_parent ( ):get_term (self .id .name ):format (parameters )
318326end
319327
320328FTL ._TermReference = FTL .TermReference
0 commit comments