Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- options.lua: process command-line options. -- This file: -- http://angg.twu.net/blogme4/options.lua.html -- http://angg.twu.net/blogme4/options.lua -- (find-blogme4 "options.lua") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- Version: 2011aug07 -- License: GPL3 -- -- Based on: (find-blogme3 "options.lua") -- «.dooption_o» (to "dooption_o") -- «.dooption_i» (to "dooption_i") -- «.dooption_a2html» (to "dooption_a2html") -- «.dooption_e» (to "dooption_e") -- «.dooptions» (to "dooptions") require "eoo" -- (find-blogme4 "eoo.lua") -- «dooption_o» (to ".dooption_o") -- (find-blogme4 "common.lua" "pathto") -- Example: in blogme4.lua -o e/lua5.e.html ... -- the "-o" does: outputfile = "e/lua5.e.html" -- pathtoroot = "../" -- to cancel the "e/" -- and so: pathto("foo/bar/plic.html") -- yields: "../foo/bar/plic.html" dooption_o = function (fname) outputfile = fname pathtoroot = pathtoroot_(fname) eevarticle = pathto("eev-article.html") end -- «dooption_i» (to ".dooption_i") -- (find-blogme4 "eval.lua" "blogme_eval") -- Example: in blogme4.lua ... -i TH/emacs.blogme -- the "-i" evals the contents of the file "TH/emacs.blogme" -- using blogme_eval, discards the result of the expansion (!!!), -- then writes the contents of the variable "blogme_output" into -- the file whose filename is stored in the variable "outputfile". -- Usually blogme_output is set by htmlize - see: -- (find-blogme4 "anggdefs.lua" "htmlize") -- and outputfile is set by the command-line option "-o" (see above). dooption_i = function (fname) blogme_eval(readfile(fname)) writefile(outputfile, blogme_output) end -- «dooption_a2html» (to ".dooption_a2html") -- (find-blogme4 "anggdefs.lua" "htmlizefile") -- Example: in blogme4.lua -o README.html -a2html README -- the "-a2html" htmlizes the ascii file "README" in the standard way -- and stores the result in "README.html". dooption_a2html = function (fname) htmlizefile(fname, outputfile) end -- «dooption_e» (to ".dooption_e") -- Example: blogme4.lua -e 'PP(sorted(keys(_B)))' dooption_e = function (luacode) assert(loadstring(luacode))() end -- «dooptions» (to ".dooptions") -- Process all command-line arguments (by recursion). -- Example: dooptions("-o", "foo.html", "-i", "foo.blogme") -- calls: dooption_o("foo.html") -- dooptions("-i", "foo.blogme") -- dooption_i("foo.blogme") -- dooptions() _O = _O or {} _O["-o"] = function (fname, ...) dooption_o(fname); dooptions(...) end _O["-i"] = function (fname, ...) dooption_i(fname); dooptions(...) end _O["-a2html"] = function (fname, ...) dooption_a2html(fname);dooptions(...) end _O["-e"] = function (code, ...) dooption_e(code); dooptions(...) end dooptions = function (optionname, ...) if not optionname then return end if not _O[optionname] then error(format("Not in _O (for dooptions): %q", optionname)) end _O[optionname](...) end -- Here is a subtle but important point. -- (find-lua51manualw3m "#pdf-require" "argument" "modname") -- (find-lua51manualw3m "#6" "Lua Stand-alone" "'...'") -- blogme4.lua -e 'PP(B_)' --> dooptions("-e", "PP(B_)") -- blogme4.lua --> dooptions() -- no output! -- dofile "blogme4.lua" --> dooptions() -- load as a library -- require "blogme4" --> dooptions("blogme4") -- yuck! -- so 'dofile "blogme4.lua"' is a good way to load this as a library, -- but 'require "blogme4"' wouldn't even work - because it would call -- the non-existent command-line option "blogme4" - if it weren't by -- this hack: _O["blogme4"] = function () end -- Process all command-line options, -- or do nothing if this is being loaded as a library. dooptions(...) -- dump-to: tests --[==[ * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) cd ~/blogme4/ && make clean && make blogme4.lua rm -Rv /tmp/blo/ mkdir /tmp/blo/ cd /tmp/blo/ cp -v ~/blogme4/options.lua . # (find-blogme4 "Makefile") # (find-fline "~/blogme4/blogme4.lua") ~/blogme4/blogme4.lua ~/blogme4/blogme4.lua -o options.lua.html -a2html options.lua LUA_INIT= \ ~/blogme4/blogme4.lua -o options.lua.html -a2html options.lua laf # file:///tmp/blo/options.lua.html undollar = function (code) code = string.gsub(code, "%$([a-z]+)", "\"..%1..\"") code = string.gsub(code, "%$(%b())", "\"..%1..\"") code = string.gsub(code, "%$(%b[])", function (s) return "]]..("..strsub(s, 2, -2)..")..[[" end) return code end --]==] -- Local Variables: -- coding: raw-text-unix -- ee-anchor-format: "«%s»" -- End: