# HG changeset patch # User Matthew Wild # Date 1454769505 0 # Node ID 54bb54fe9ed2b78d26fe25f2eaf00d069460568e # Parent 38066f635004a2ea8de3277866eaca3d6f040356 main, scansion.parser: Allow scripts to include tags in comments at the beginning, which are included in JSON output diff -r 38066f635004 -r 54bb54fe9ed2 main.lua --- a/main.lua Sat Feb 06 14:38:17 2016 +0000 +++ b/main.lua Sat Feb 06 14:38:25 2016 +0000 @@ -123,7 +123,7 @@ local script = initialize_script(parse_script(read_script())); - log_data("script", { title = script.title, summary = script.summary }); + log_data("script", { title = script.title, summary = script.summary, tags = script.tags }); if server_log_reader then if skip_server_startup_log then diff -r 38066f635004 -r 54bb54fe9ed2 scansion/parser.lua --- a/scansion/parser.lua Sat Feb 06 14:38:17 2016 +0000 +++ b/scansion/parser.lua Sat Feb 06 14:38:25 2016 +0000 @@ -36,6 +36,19 @@ if in_header and #line > 0 then if not parsed.title and not line:match("^#!") then parsed.title = line:gsub("^[#-]+%s*", ""); + elseif line:match("^##") then + if not parsed.tags then + parsed.tags = {}; + end + local tag = line:gsub("^##%s*", ""); + local k, v = tag:match("^([^:]+):%s*(.+)$"); + if k then + -- Tag format: ## tagkey:tagvalue + parsed.tags[k] = v; + else + -- Tag format: ## tagfoobar + parsed.tags[tag] = true; + end else parsed.summary = (parsed.summary and parsed.summary.."\n" or "")..line:gsub("^[#-]+%s*", ""); end