diff options
Diffstat (limited to 'src/lua-script')
-rwxr-xr-x[-rw-r--r--] | src/lua-script/cify.lua | 6 | ||||
-rw-r--r-- | src/lua-script/script.h | 41 | ||||
-rw-r--r-- | src/lua-script/script.lua | 41 |
3 files changed, 74 insertions, 14 deletions
diff --git a/src/lua-script/cify.lua b/src/lua-script/cify.lua index 153feb3..a2fbcbe 100644..100755 --- a/src/lua-script/cify.lua +++ b/src/lua-script/cify.lua @@ -1,11 +1,13 @@ +#!/usr/bin/lua + -- "C"-ify a lua program -output_file = io.open(arg[2], 'w') +output_file = io.open('script.h', 'w') output_file:write('const char *argent_script =\n') -for line in io.lines(arg[1]) do +for line in io.lines('script.lua') do output_file:write(' "'..line..'\\n"\n') end diff --git a/src/lua-script/script.h b/src/lua-script/script.h index e419923..fe92cef 100644 --- a/src/lua-script/script.h +++ b/src/lua-script/script.h @@ -11,7 +11,7 @@ const char *argent_script = " if type(array) ~= 'table' then return nil end\n" "\n" " local transform = transform or function(x) return x end\n" - " \n" + "\n" " local set = {}\n" " for _, element in ipairs(array) do\n" " set[transform(element)] = true\n" @@ -19,6 +19,19 @@ const char *argent_script = " return set\n" " end\n" "\n" + " function set_tostring(set)\n" + " local str = '[empty]'\n" + " for element in pairs(set) do\n" + " if str == '[empty]' then\n" + " str = tostring(element)\n" + " else\n" + " str = str .. '; '.. tostring(element)\n" + " end\n" + " end\n" + "\n" + " return str\n" + " end\n" + "\n" "\n" " function add_end_slash(str)\n" " if type(str) ~= 'string' then return nil end\n" @@ -34,11 +47,14 @@ const char *argent_script = "\n" "\n" " function setup(config)\n" + " argent.log('debug', 'begin setup')\n" + " local fmt = string.format\n" + "\n" " argent.config = {\n" " site_directory = add_end_slash(config.site_directory) or 'site/',\n" " output_directory = add_end_slash(config.output_directory) or 'public/',\n" - " layout_directory = add_end_slash(config.layout_directory) or 'layouts/',\n" - " plugin_directory = add_end_slash(config.layout_directory) or 'plugins/',\n" + " layout_directory = add_end_slash(config.layout_directory) or nil,\n" + " plugin_directory = add_end_slash(config.layout_directory) or nil,\n" " exclude = Set(config.exclude, strip_end_slash) or {},\n" " include = Set(config.include, strip_end_slash) or {},\n" " keep = Set(config.keep, strip_end_slash) or {},\n" @@ -46,7 +62,21 @@ const char *argent_script = " rss_include = Set(config.rss_include, strip_end_slash) or {},\n" " }\n" "\n" - " package.path = argent.config.plugin_directory..'?.lua;'..package.path\n" + " argent.log('info', fmt('site directory: %s', argent.config.site_directory))\n" + " argent.log('info', fmt('output directory: %s', argent.config.output_directory))\n" + " argent.log('info', fmt('layout directory: %s', tostring(argent.config.layout_directory)))\n" + " argent.log('info', fmt('plugin directory: %s', tostring(argent.config.plugin_directory)))\n" + "\n" + " argent.log('info', 'exclusions: '..set_tostring(argent.config.exclude))\n" + " argent.log('info', 'inclusions: '..set_tostring(argent.config.include))\n" + " argent.log('info', 'files to keep: '..set_tostring(argent.config.keep))\n" + " argent.log('info', 'noprocess: '..set_tostring(argent.config.noprocess))\n" + " argent.log('info', 'rss files: '..set_tostring(argent.config.rss_include))\n" + "\n" + " if argent.config.plugin_directory then\n" + " package.path = argent.config.plugin_directory..'?.lua;'..package.path\n" + " end\n" + " argent.log('debug', 'end setup')\n" " end\n" "\n" "\n" @@ -106,7 +136,7 @@ const char *argent_script = " function obliterate_directory(dirname, parent)\n" " local dirname = add_end_slash(dirname) or ''\n" " local parent = parent or ''\n" - " \n" + "\n" " if argent.config.keep[dirname] then return true end\n" "\n" " local keep_self = (dirname == '')\n" @@ -205,5 +235,4 @@ const char *argent_script = " end\n" " process_directory()\n" "end\n" - "\n" ;
\ No newline at end of file diff --git a/src/lua-script/script.lua b/src/lua-script/script.lua index 733c494..ef2ef8f 100644 --- a/src/lua-script/script.lua +++ b/src/lua-script/script.lua @@ -10,7 +10,7 @@ return function(config) if type(array) ~= 'table' then return nil end local transform = transform or function(x) return x end - + local set = {} for _, element in ipairs(array) do set[transform(element)] = true @@ -18,6 +18,19 @@ return function(config) return set end + function set_tostring(set) + local str = '[empty]' + for element in pairs(set) do + if str == '[empty]' then + str = tostring(element) + else + str = str .. '; '.. tostring(element) + end + end + + return str + end + function add_end_slash(str) if type(str) ~= 'string' then return nil end @@ -33,11 +46,14 @@ return function(config) function setup(config) + argent.log('debug', 'begin setup') + local fmt = string.format + argent.config = { site_directory = add_end_slash(config.site_directory) or 'site/', output_directory = add_end_slash(config.output_directory) or 'public/', - layout_directory = add_end_slash(config.layout_directory) or 'layouts/', - plugin_directory = add_end_slash(config.layout_directory) or 'plugins/', + layout_directory = add_end_slash(config.layout_directory) or nil, + plugin_directory = add_end_slash(config.layout_directory) or nil, exclude = Set(config.exclude, strip_end_slash) or {}, include = Set(config.include, strip_end_slash) or {}, keep = Set(config.keep, strip_end_slash) or {}, @@ -45,7 +61,21 @@ return function(config) rss_include = Set(config.rss_include, strip_end_slash) or {}, } - package.path = argent.config.plugin_directory..'?.lua;'..package.path + argent.log('info', fmt('site directory: %s', argent.config.site_directory)) + argent.log('info', fmt('output directory: %s', argent.config.output_directory)) + argent.log('info', fmt('layout directory: %s', tostring(argent.config.layout_directory))) + argent.log('info', fmt('plugin directory: %s', tostring(argent.config.plugin_directory))) + + argent.log('info', 'exclusions: '..set_tostring(argent.config.exclude)) + argent.log('info', 'inclusions: '..set_tostring(argent.config.include)) + argent.log('info', 'files to keep: '..set_tostring(argent.config.keep)) + argent.log('info', 'noprocess: '..set_tostring(argent.config.noprocess)) + argent.log('info', 'rss files: '..set_tostring(argent.config.rss_include)) + + if argent.config.plugin_directory then + package.path = argent.config.plugin_directory..'?.lua;'..package.path + end + argent.log('debug', 'end setup') end @@ -105,7 +135,7 @@ return function(config) function obliterate_directory(dirname, parent) local dirname = add_end_slash(dirname) or '' local parent = parent or '' - + if argent.config.keep[dirname] then return true end local keep_self = (dirname == '') @@ -204,4 +234,3 @@ return function(config) end process_directory() end - |