Skip to content

Commit 716476f

Browse files
committed
Add type for VariableReference and simplify id handling
1 parent 40eb2e8 commit 716476f

File tree

2 files changed

+21
-17
lines changed

2 files changed

+21
-17
lines changed

fluent/resource.lua

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,24 @@ local FluentNode = class({
2222
end
2323
end
2424
end
25-
if (node[1] and #node > 0) then
26-
self.elements = {}
27-
tablex.insertvalues(self.elements, tablex.imap(node_to_type, node))
25+
tablex.foreachi(node, function (n) self:insert(node_to_type(n)) end)
26+
end,
27+
28+
insert = function (self, node)
29+
if type(node) ~= "table" then return nil end
30+
if node:is_a(node_types.Identifier) then
31+
self.id = node
32+
elseif node:is_a(node_types.Pattern) then
33+
self.value = node
34+
else
35+
if not self.elements then self.elements = {} end
36+
table.insert(self.elements, node)
2837
end
2938
end,
3039

3140
dump_ast = function (self)
3241
local ast = { type = self.type }
3342
for k, v in pairs(self) do ast[k] = v end
34-
ast.identifier = nil
3543
return ast
3644
end,
3745

@@ -70,17 +78,6 @@ node_types.Message = class({
7078
_base = FluentNode,
7179
_init = function (self, node)
7280
self:super(node)
73-
for key, value in ipairs(self.elements) do
74-
if value:is_a(node_types.Identifier) then
75-
self.identifier = value.name
76-
self.id = value
77-
self.elements[key] = nil
78-
elseif value:is_a(node_types.Pattern) then
79-
self.value = value
80-
self.elements[key] = nil
81-
end
82-
end
83-
if #self.elements == 0 then self.elements = nil end
8481
self.attributes = {}
8582
end,
8683
format = function (self, parameters)
@@ -170,6 +167,13 @@ node_types.NumberLiteral = class({
170167
end
171168
})
172169

170+
node_types.VariableReference = class({
171+
_base = FluentNode,
172+
_init = function (self, node)
173+
self:super(node)
174+
end
175+
})
176+
173177
node_types.Comment = class({
174178
appendable = true,
175179
_base = FluentNode,
@@ -292,7 +296,7 @@ local FluentResource = class({
292296
insert = function (self, node)
293297
table.insert(self.body, node)
294298
if node:is_a(node_types.Message) then
295-
self.index[node.identifier] = #self.body
299+
self.index[node.id.name] = #self.body
296300
end
297301
end,
298302

spec/fixtures_spec.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ describe('upstream reference fixture', function ()
5151
or fname:match("/tab.ftl$")
5252
-- or fname:match("/term_parameters.ftl$")
5353
-- or fname:match("/terms.ftl$")
54-
-- or fname:match("/variables.ftl$")
54+
or fname:match("/variables.ftl$")
5555
-- or fname:match("/variant_keys.ftl$")
5656
-- or fname:match("/whitespace_in_value.ftl$")
5757
or fname:match("/zero_length.ftl$")

0 commit comments

Comments
 (0)