24 local in_meta = false |
24 local in_meta = false |
25 local linenum=1 |
25 local linenum=1 |
26 local meta = {} |
26 local meta = {} |
27 |
27 |
28 for l in f:lines() do |
28 for l in f:lines() do |
29 if string.match(l, config.meta_marker) then |
29 if (linenum==1 or in_meta) and string.match(l, config.meta_marker) then |
30 in_meta = not in_meta |
30 in_meta = not in_meta |
31 elseif in_meta then |
31 elseif in_meta then |
32 local key, val = string.match(l, "%s*([^:]*)%s*:%s*(.*)%s*") |
32 local key, val = string.match(l, "%s*([^:]*)%s*:%s*(.*)%s*") |
33 if key and val then |
33 if key and val then |
34 -- very primitive quoting, primarily as a hack to |
34 -- very primitive quoting, primarily as a hack to |
35 -- not need converting my files that much from Webgen. |
35 -- not need converting my files that much from Webgen. |
36 local val_unq=string.match(val, '^"(.*)"$') |
36 local val_unq=string.match(val, '^"(.*)"$') |
37 meta[key] = val_unq or val |
37 meta[key] = val_unq or val |
38 else |
38 else |
39 err.file_pos(file, linenum, "meta data syntax error") |
39 err.file_pos(file, linenum, "meta data syntax error: " .. l) |
40 end |
40 end |
41 else |
41 else |
42 if data then |
42 if data then |
43 data = data.."\n"..l |
43 data = data.."\n"..l |
44 elseif not string.match(l, "%s") then |
44 elseif not string.match(l, "%s") then |