Warning: this is an htmlized version!
The original is across this link,
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         = { ["&"]="&amp;", ["<"]="&lt;", [">"]="&gt;" }
Q_table["\15"]  = "<font color=\"red\"><strong>*</strong></font>"
Q_table["\171"] = "<font color=\"green\"><i>&laquo;</i></font>"
Q_table["\187"] = "<font color=\"green\"><i>&raquo;</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: