local res = re:search(inp, false, true)
if res then
- if #res == 1 then
- return res[1],'string'
+ -- Map all results in a single list
+ local flattened_table = {}
+ local function flatten_table(tbl)
+ for _, v in ipairs(tbl) do
+ if type(v) == 'table' then
+ flatten_table(v)
+ else
+ table.insert(flattened_table, v)
+ end
+ end
end
-
- return res,'string_list'
+ flatten_table(res)
+ return flattened_table,'string_list'
end
return nil
end,
- ['description'] = 'Regexp matching',
+ ['description'] = 'Regexp matching, returns all matches flattened in a single list',
['args_schema'] = {ts.string}
},
-- Returns a value if it exists in some map (or acts like a `filter` function)
selector = "header('Subject'):gsub('a', 'b')",
expect = {"Second, lower-cbsed hebder subject"}
},
+ ["header regexp first"] = {
+ selector = "header('Subject').regexp('.*').first",
+ expect = {"Second, lower-cased header subject"}
+ },
}
for case_name, case in pairs(cases) do