Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2012
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.90 KB | None | 0 0
  1. #!/usr/bin/lua
  2.  
  3. fd_out = nil
  4.  
  5. version = arg[1]
  6.  
  7. function w(...)
  8.     fd_out:write(string.format(...) .. "\n")
  9. end
  10.  
  11. fd = io.open(version .. "/manual.html")
  12. html = fd:read("*a")
  13. fd:close()
  14.  
  15.  
  16.  
  17. while true do
  18.     name, html = html:match('<a name=".-"><code>(.-)</code></a></h3>(.*)')
  19.    
  20.     html = html:gsub("&sect;", "#")
  21.     html = html:gsub("&lt;", "<")
  22.     html = html:gsub("&gt;", ">")
  23.     html = html:gsub("&amp;", "&")
  24.     html = html:gsub("&#8211;", "-")
  25.     html = html:gsub("&nbsp;", " ")
  26.  
  27.     print(name)
  28.  
  29.     fd_out = io.open(version .. "/man3/" .. name .. ".3", "w")
  30.     w('.TH %s 3 "2012" "Lua ' .. version .. '" "Lua ' ..version .. ' manual"', name:upper())
  31.     w('.SH NAME')
  32.     w(name)
  33.  
  34.     api = nil
  35.     api, tmp = html:match('^<p>\n<span class="apii">(.-)</span>(.*)')
  36.     if api then
  37.         api = api:gsub("<em>(.-)</em>", "%1")
  38.         html = tmp
  39.     end
  40.  
  41.     proto, html = html:match("<pre>(.-)</pre>(.*)")
  42.     w('.SH SYNOPSIS')
  43.     for l in proto:gmatch("([^\n]+)") do
  44.         w('.B " %s', l)
  45.         w('.br')
  46.     end
  47.     w('.br\n')
  48.     if api then
  49.         w('%s\n', api)
  50.         w('.br\n')
  51.     end
  52.    
  53.     desc, html = html:match("(.-)<h3>(.*)")
  54.     w('.SH DESCRIPTION')
  55.  
  56.     if not desc then break end
  57.  
  58.     desc = desc:gsub("<hr>", "")
  59.     desc = desc:gsub("</?a ?[^>]*>", "")
  60.     desc = desc:gsub("<p>", "\n.P\n")
  61.     desc = desc:gsub("</p>", "")
  62.     desc = desc:gsub("</?ul>", "")
  63.     desc = desc:gsub("<li><b><code>([^<]+)</code>: </b>", "\n.IP \\[bu]\n%1 ")
  64.     desc = desc:gsub("<li><b>'<code>(.-)</code>': </b>", "\n.IP \\[bu]\n'%1' ")
  65.     desc = desc:gsub("<li>(.-)</li>", "\n.IP \\[bu]\n%1")
  66.     desc = desc:gsub("</li>", "")
  67.     desc = desc:gsub("<code>(.-)</code> *", "\n.I %1\n")
  68.     desc = desc:gsub("<b>(.-)</b> *", "\n.B %1")
  69.     desc = desc:gsub("<em>(.-)</em> *", "\n.B %1\n")
  70.     desc = desc:gsub("<pre>(.-)</pre>", "\n.nf\n%1.fi\n")
  71.     desc = desc:gsub("\n+", "\n")
  72.     desc = desc:gsub("'", "\\(cq")
  73.     desc = desc:gsub("\n%.", "\n\\.")
  74.  
  75.     w("%s", desc)
  76.    
  77. end
  78.  
  79.  
  80.  
  81.  
  82. -- vi: ft=lua ts=3 sw=3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement