Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- anggdefs.lua: some "def"s from blogme3, ported to blogme4. -- This file: -- http://angg.twu.net/blogme4/anggdefs.lua.html -- http://angg.twu.net/blogme4/anggdefs.lua -- (find-blogme4file "anggdefs.lua") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- Version: 2011feb17 -- License: GPL3 -- «.chars» (to "chars") -- «.Q» (to "Q") -- «.htmlize» (to "htmlize") -- «.htmlization_warning» (to "htmlization_warning") -- «.htmlizefile» (to "htmlizefile") require "common" -- (find-blogme4 "common.lua") require "def" -- (find-blogme4 "def.lua") require "elisp" -- (find-blogme4 "elisp.lua") require "angglisp" -- (find-blogme4 "angglisp.lua") -- Blogme words whose argparser is 1Q (or 2Q, 3Q...) quote their -- arguments - i.e., the [] blocks in it are not evaluated. -- (find-blogme4 "eval.lua" "qlongwords") -- (find-blogme4 "eval.lua" "readqword") -- (find-blogme4 "eval.lua" "_A") eval_statements = function (str) return assert(loadstring(str, str))() end eval_expr = function (str) return assert(loadstring("return "..str, str))() end def [[ ' 1Q body body ]] -- for lua-mode.el: ' def [[ lua: 1Q code eval_statements(code) ]] def [[ expr: 1Q code eval_expr(code) ]] def [[ # 0 _ "" ]] -- Remember that "def" & friends use "undollar", which expands all -- substrings of the form "$varname" in the body code. -- (find-blogme4 "def.lua" "undollar") -- (find-blogme3 "anggdefs.lua" "basic-words-for-html") def [[ J 1 text text ]] def [[ HREF 2 url,str "<a href=\"$url\">$str</a>" ]] def [[ H1 1 str "<h1>$str</h1>\n" ]] def [[ H2 1 str "<h2>$str</h2>\n" ]] def [[ H3 1 str "<h3>$str</h3>\n" ]] def [[ H4 1 str "<h4>$str</h4>\n" ]] def [[ H5 1 str "<h5>$str</h5>\n" ]] def [[ H6 1 str "<h6>$str</h6>\n" ]] def [[ BF 1 str "<strong>$str</strong>" ]] def [[ IT 1 str "<i>$str</i>" ]] def [[ RM 1 str "</i>$str<i>" ]] def [[ TT 1 str "<code>$str</code>" ]] def [[ EM 1 str "<em>$str</em>" ]] def [[ PRE 1 str "<pre>$str</pre>" ]] def [[ SMALL 1 body "<small>$body</small>" ]] def [[ NAME 2 tag,str "<a name=\"$tag\">$str</a>" ]] def [[ COLOR 2 color,str "<font color=\"$color\">$str</font>" ]] def [[ IMG 2 url,alt "<img src=\"$url\" alt=\"$alt\" border=0>\n" ]] def [[ IMAGE 2 url,alt HREF(url, "<br>"..IMG(url,alt)) ]] def [[ SCALEDIMAGE 2 perc,image "<a href=\"$image\">" .. "<img src=\"$image\" width=\"$perc\" height=\"$perc\" border=0>" .. "</a>" ]] def_ [[ P 1 str "\n\n<p>$str</p>" ]] -- (find-blogme3 "anggdefs.lua" "headers") def [[ TITLE 1 str "<title>$str</title>\n" ]] def [[ HEAD 1 str "<head>\n$str</head>\n" ]] def [[ BODY 1 str "<body>\n$str\n</body>\n" ]] def [[ HTML 1 str "<html>\n$str</html>\n" ]] html_dtd =[[ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> ]] -- (find-wdg40w3m "html/doctype.html") html_style = "" -- (find-wdg40w3m "head/head.html" "STYLE") html_meta = "" -- (find-wdg40w3m "head/head.html" "META") html_favicon = "" -- http://www.favicon.cc/ html_speedbar = "" -- (find-TH "speedbar") -- (find-THfile "speedbar.blogme") def [[ TITLEDHTML 2 title,body html_dtd.. HTML(HEAD(TITLE(title)..html_meta..html_style).."\n".. BODY(body)) ]] -- «chars» (to ".chars") -- (find-blogme3 "charset.lua") -- (find-equailfile "sgml-input.el") latin1_pairs = [[ Æ AElig Á Aacute  Acirc À Agrave Å Aring à Atilde Ä Auml Ç Ccedil É Eacute Ê Ecirc È Egrave Ë Euml Í Iacute Ï Iuml Ó Oacute Ô Ocirc Ò Ograve Õ Otilde Ö Ouml Ú Uacute Û Ucirc Ù Ugrave Ü Uuml á aacute â acirc æ aelig à agrave å aring ã atilde ä auml ç ccedil é eacute ê ecirc è egrave ë euml í iacute î icirc ì igrave ï iuml ó oacute ô ocirc ò ograve õ otilde ö ouml ß szlig ú uacute û ucirc ù ugrave ü uuml ª ordf « laquo ° deg º ordm » raquo Ñ Ntilde ñ ntilde × times ]] -- «Q» (to ".Q") -- (find-blogme3 "anggdefs.lua" "Q") -- Q_re = "([&<>])" Q_re = "([\001-\008\011-\031&<>\127-\255])" Q_table = { ["&"]="&", ["<"]="<", [">"]=">" } Q_table["\15"] = "<font color=\"red\"><strong>*</strong></font>" Q_table["\171"] = "<font color=\"green\"><i>«</i></font>" Q_table["\187"] = "<font color=\"green\"><i>»</i></font>" for c,cname in each2(split(latin1_pairs)) do Q_table[c] = "&"..cname..";" end -- (find-angg "LUA/lua50init.lua" "translatechars") def [[ Q 1 text translatechars(text, Q_re, Q_table) ]] -- «htmlize» (to ".htmlize") -- (find-blogme4 "options.lua" "dooption_i") Def [[ htmlize 2 title,body blogme_output = TITLEDHTML(title, H2(title)..body) ]] -- «htmlization_warning» (to ".htmlization_warning") -- (find-blogme3 "options.lua" "htmlization_warning") def [=[ htmlization_head 1 fname [[ <head> <title>$[fname] (htmlized) </title> </head> ]] ]=] def [=[ htmlization_warning_ 2 original,htmlizer [[ <table><tr><td bgcolor="#CC0000"><font color="#FFCC00" size=-1> Warning: this is an htmlized version! <br>The original is across <a href="$[original]">this link</a>, <br>and the conversion rules are <a href="$[htmlizer]">here</a>. </font></td></tr></table> ]] ]=] def [[ htmlization_warning 1 fname htmlization_warning_( fnamenondirectory(fname), pathto "blogme3/escripts.lua.html" ) ]] -- (find-blogme3 "options.lua" "htmlization_head") -- htmlizeline = function (line) return htmlizeline_(Q, line) end -- htmlizelines = function (bigstr) -- -- local htmlizeline = function (line) htmlizeline_(Q, line) end -- -- return maplines(htmlizeline, bigstr) -- return bigstr:gsub("[^\n]*", htmlizeline) -- end --------[ htmlizefile ]-------- -- «htmlizefile» (to ".htmlizefile") -- (find-blogme4 "options.lua" "dooption_a2html") -- (find-blogme3 "options.lua" "htmlizefile") htmlizefile_ = function (fname, fcontents, htmlizer) htmlizer = htmlizer or htmlizelines local fnamestem = fnamenondirectory(fname) local warning = htmlization_warning(fname) local head = htmlization_head(fname) local body = BODY(warning .. PRE(htmlizer(fcontents))) return HTML(head .. body) end htmlizefile = function (fname, outfname, htmlizer) local fcontents = readfile(fname) outfname = outfname or fname..".html" writefile(outfname, htmlizefile_(fname, fcontents, htmlizer)) end -- The "new way" to define "htmlize" flexibly in blogme3 (allowing for -- a speedbar, a favicon, CSS, META, etc, with less headaches than in -- the "previous way") uses something like the messy chunk of code -- below... I am not using it in demo.lua at the moment (note that -- htmlize is redefined there, to something simpler). --[=[ def [[ html_head 1 title HEAD(TITLE(title)..html_meta.. html_favicon..html_style) ]] def [[ html_body_0 2 title,body H3(Q(title)).."\n"..body ]] def [[ html_body_1 2 title,body DIV(BORDERLESSBOX(html_body_0(title,body))) ]] def [[ html_body_2 2 title,body html_speedbar..html_body_1(title,body) ]] def [[ html_body 2 title,body html_body_0(title, body) ]] def [[ html_all 2 title,body html_dtd.. HTML(html_head(title).."\n".. BODY(html_body(title,body))) ]] def [[ htmlize 2 title,body set("blogme_output", html_all(title, body)) ]] def [[ htmlize 2 title,body set("blogme_output", sgmlify(html_all(title, body))) ]] -- sgmlify can be found here: (find-blogme3 "charset.lua") -- Example: [SETHEADSTYLE h3 { background-color: orange; }] def [[ HEADSTYLE 1 styles "<style type=\"text/css\"><!--\n$styles -->\n</style>\n" ]] Def [[ SETHEADSTYLE 1 styles html_style = HEADSTYLE(styles) ]] Def [[ SETFAVICON 1 url html_favicon = "<link rel=\"shortcut icon\" href=\"$url\" />\n" ]] --]=] -- dump-to: tests --[==[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) require "anggdefs" = Q "foo&<>;" = Q "foo&<>\015\225" = htmlizefile_("Fname", [[foo\n bar (find-angg "hi")]]) -- (find-blogme4 "argparsers.lua") --]==] -- Local Variables: -- coding: raw-text-unix -- ee-anchor-format: "«%s»" -- End: