1 local function filter_expression(script, s) |
1 local function filter_expression(script, s) |
2 local expr = s:match("^%$%{(.+)%}$"); |
2 local expr = s:match("^%$%{(.+)%}$"); |
3 if not expr then return s end |
3 if not expr then return s end |
|
4 if script.captures and script.captures[expr] then |
|
5 return script.captures[expr]; |
|
6 end |
4 local name, value_name = expr:match("^(.+)'s (.+)$"); |
7 local name, value_name = expr:match("^(.+)'s (.+)$"); |
5 assert(name, "Unable to parse expression: "..expr); |
8 assert(name, "Unable to parse expression: "..expr); |
6 local key = value_name:lower():gsub(" ", "_"); |
9 local key = value_name:lower():gsub(" ", "_"); |
7 assert(script.objects[name], "Unknown object called "..name); |
10 assert(script.objects[name], "Unknown object called "..name); |
8 local value = script.objects[name][key]; |
11 local value = script.objects[name][key]; |