9 |
9 |
10 local function fill_vars(script, stanza) |
10 local function fill_vars(script, stanza) |
11 for k, v in pairs(stanza.attr) do |
11 for k, v in pairs(stanza.attr) do |
12 local expr = v:match("^%$%{(.+)%}$"); |
12 local expr = v:match("^%$%{(.+)%}$"); |
13 if expr then |
13 if expr then |
14 local name, value_name = expr:match("^(.-)'s (.+)$"); |
14 local name, value_name = expr:match("^(.+)'s (.+)$"); |
15 assert(name, "Unable to parse expression: "..expr); |
15 assert(name, "Unable to parse expression: "..expr); |
16 local key = value_name:lower():gsub(" ", "_"); |
16 local key = value_name:lower():gsub(" ", "_"); |
17 assert(script.objects[name], "Unknown object called "..name); |
17 assert(script.objects[name], "Unknown object called "..name); |
18 local value = script.objects[name][key]; |
18 local value = script.objects[name][key]; |
19 assert(value ~= nil, "Unknown attribute (of "..name.."): "..value_name); |
19 assert(value ~= nil, "Unknown attribute (of "..name.."): "..value_name); |