diff options
author | Melody Horn <melody@boringcactus.com> | 2020-10-28 17:01:55 -0600 |
---|---|---|
committer | Melody Horn <melody@boringcactus.com> | 2020-10-28 17:01:55 -0600 |
commit | edf87f09045e8f56576b37078b4a0d220d6ddf55 (patch) | |
tree | 4503afb80ee7ea068db257c6381541a5fe1f716b /etc | |
parent | 72e8cabe8e3c8ae272fb4771f0d1dabb306dc2ae (diff) | |
download | spec-edf87f09045e8f56576b37078b4a0d220d6ddf55.tar.gz spec-edf87f09045e8f56576b37078b4a0d220d6ddf55.zip |
start using Sphinx for doc generation
Diffstat (limited to 'etc')
-rw-r--r-- | etc/gemtext.lua | 297 | ||||
-rw-r--r-- | etc/md.yml | 20 | ||||
-rw-r--r-- | etc/pdf.yml | 15 | ||||
-rw-r--r-- | etc/process-md.lua | 12 | ||||
-rw-r--r-- | etc/process-pdf.lua | 0 | ||||
-rw-r--r-- | etc/template.gmi | 1 | ||||
-rw-r--r-- | etc/template.html | 153 |
7 files changed, 0 insertions, 498 deletions
diff --git a/etc/gemtext.lua b/etc/gemtext.lua deleted file mode 100644 index 5fdff59..0000000 --- a/etc/gemtext.lua +++ /dev/null @@ -1,297 +0,0 @@ --- Invoke with: pandoc -t gemtext.lua - --- Tables to store links and footnotes, so they can be included correctly. -local links = {} -local notes = {} - --- Blocksep is used to separate block elements. -function Blocksep() - return "\n" -end - --- This function is called once for the whole document. Parameters: --- body is a string, metadata is a table, variables is a table. --- This gives you a fragment. You could use the metadata table to --- fill variables in a custom lua template. Or, pass `--template=...` --- to pandoc, and pandoc will do the template processing as usual. -function Doc(body, metadata, variables) - local buffer = {} - local function add(s) - table.insert(buffer, s) - end - add(body) - if #notes > 0 then - add('') - for _,note in pairs(notes) do - add(note) - end - end - return table.concat(buffer, '\n') -end - --- The functions that follow render corresponding pandoc elements. --- s is always a string, attr is always a table of attributes, and --- items is always an array of strings (the items in a list). --- Comments indicate the types of other variables. - -function Str(s) - return s -end - -function Space() - return " " -end - -function SoftBreak() - return " " -end - -function LineBreak() - return "\n" -end - -function Emph(s) - return "_" .. s .. "_" -end - -function Strong(s) - return "**" .. s .. "**" -end - -function Subscript(s) - return "_" .. s -end - -function Superscript(s) - return "^" .. s -end - -function SmallCaps(s) - return s -end - -function Strikeout(s) - return '~~' .. s .. '~~' -end - -function Link(s, tgt, tit, attr) - if tgt:match("%.html$") and not tgt:match("^https?://") then - tgt = tgt:gsub("%.html$", ".gmi") - end - table.insert(links, "=> " .. tgt .. " " .. s) - return s -end - -function Image(s, src, tit, attr) - table.insert(links, "=> " .. src .. " [IMG] " .. s) - return s -end - -function Code(s, attr) - return "`" .. s .. "`" -end - -function InlineMath(s) - return "\\(" .. s .. "\\)" -end - -function DisplayMath(s) - return "\\[" .. s .. "\\]" -end - -function SingleQuoted(s) - return "‘" .. s .. "’" -end - -function DoubleQuoted(s) - return "“" .. s .. "”" -end - -function Note(s) - local num = #notes + 1 - local num_fn = string.gsub(num, '0', '⁰') - :gsub('1', '¹') - :gsub('2', '²') - :gsub('3', '³') - :gsub('4', '⁴') - :gsub('5', '⁵') - :gsub('6', '⁶') - :gsub('7', '⁷') - :gsub('8', '⁸') - :gsub('9', '⁹') - -- add a list item with the note to the note table. - table.insert(notes, num_fn .. ' ' .. s) - -- return the footnote reference, linked to the note. - return num_fn -end - -function Span(s, attr) - return s -end - -function RawInline(format, str) - if format == "gemtext" then - return str - else - return '' - end -end - -function Cite(s, cs) - local ids = {} - for _,cit in ipairs(cs) do - table.insert(ids, cit.citationId) - end - return s .. ids:concat(",") -end - -function Plain(s) - return s -end - -function Para(s) - local finished = s .. "\n" - if #links > 0 then - local link_text = links[1]:match('=> [^ ]+ (.+)') - if link_text == s and #links == 1 then - finished = links[1] .. "\n" - else - finished = finished .. table.concat(links, "\n") .. "\n" - end - end - links = {} - return finished -end - --- lev is an integer, the header level. -function Header(lev, s, attr) - return string.rep("#", lev) .. " " .. s .. "\n" -end - -function BlockQuote(s) - return "> " .. s:gsub("\n", "\n> "):gsub("\n> $", "\n") -end - -function HorizontalRule() - return "-----\n" -end - -function LineBlock(ls) - return table.concat(ls, '\n') .. "\n" -end - -function CodeBlock(s, attr) - return "```\n" .. s .. "\n```\n" -end - -function BulletList(items) - local buffer = {} - for _, item in pairs(items) do - local finished = false - if #links > 0 then - local link_text = links[1]:match('=> [^ ]+ (.+)') - if link_text == item then - table.insert(buffer, links[1]) - table.remove(links, 1) - finished = true - end - end - if not finished then - table.insert(buffer, "* " .. item) - for _,link in pairs(links) do - table.insert(buffer, link) - end - links = {} - end - end - return table.concat(buffer, "\n") .. "\n" -end - -function OrderedList(items) - local buffer = {} - for i, item in pairs(items) do - table.insert(buffer, i .. ". " .. item) - end - return table.concat(buffer, "\n") .. "\n" -end - -function DefinitionList(items) - local buffer = {} - for _,item in pairs(items) do - local k, v = next(item) - table.insert(buffer, k .. ":\n" .. table.concat(v, "\n")) - end - return table.concat(buffer, "\n") .. "\n" -end - -function CaptionedImage(src, tit, caption, attr) - return '=> ' .. src .. ' [IMG] ' .. caption .. '\n' -end - --- Caption is a string, aligns is an array of strings, --- widths is an array of floats, headers is an array of --- strings, rows is an array of arrays of strings. -function Table(caption, aligns, widths, headers, rows) - local buffer = {} - local function add(s) - table.insert(buffer, s) - end - add("<table>") - if caption ~= "" then - add("<caption>" .. caption .. "</caption>") - end - if widths and widths[1] ~= 0 then - for _, w in pairs(widths) do - add('<col width="' .. string.format("%.0f%%", w * 100) .. '" />') - end - end - local header_row = {} - local empty_header = true - for i, h in pairs(headers) do - table.insert(header_row,'<th>' .. h .. '</th>') - empty_header = empty_header and h == "" - end - if empty_header then - head = "" - else - add('<tr class="header">') - for _,h in pairs(header_row) do - add(h) - end - add('</tr>') - end - local class = "even" - for _, row in pairs(rows) do - class = (class == "even" and "odd") or "even" - add('<tr class="' .. class .. '">') - for i,c in pairs(row) do - add('<td>' .. c .. '</td>') - end - add('</tr>') - end - add('</table>') - return table.concat(buffer,'\n') .. "\n" -end - -function RawBlock(format, str) - if format == "gemtext" then - return str - else - return '' - end -end - -function Div(s, attr) - return s -end - --- The following code will produce runtime warnings when you haven't defined --- all of the functions you need for the custom writer, so it's useful --- to include when you're working on a writer. -local meta = {} -meta.__index = - function(_, key) - io.stderr:write(string.format("WARNING: Undefined function '%s'\n",key)) - return function() return "" end - end -setmetatable(_G, meta) diff --git a/etc/md.yml b/etc/md.yml deleted file mode 100644 index 52cdcfa..0000000 --- a/etc/md.yml +++ /dev/null @@ -1,20 +0,0 @@ -template: etc/template.html -standalone: true - -filters: - - etc/process-md.lua - -metadata: - lang: "en" - -verbosity: INFO - -table-of-contents: false -number-sections: true -shift-heading-level-by: 1 -title-prefix: "Crowbar Specification" -eol: lf - -# syntax-definition: - -fail-if-warnings: true diff --git a/etc/pdf.yml b/etc/pdf.yml deleted file mode 100644 index 85750bf..0000000 --- a/etc/pdf.yml +++ /dev/null @@ -1,15 +0,0 @@ -template: etc/template.html - -filters: - - etc/process-pdf.lua - -metadata: - title-before-toc: true - title: "Crowbar Specification" - -verbosity: WARNING - -pdf-engine: weasyprint - -table-of-contents: true -number-sections: false diff --git a/etc/process-md.lua b/etc/process-md.lua deleted file mode 100644 index f0e11dc..0000000 --- a/etc/process-md.lua +++ /dev/null @@ -1,12 +0,0 @@ -function Pandoc(doc) - local title_header = pandoc.Header(1, '') - local title = doc.meta.title - title_header.content = title - doc.blocks:insert(1, title_header) - return doc -end - -function Link(node) - node.target = node.target:gsub(".md", ".html") - return node -end diff --git a/etc/process-pdf.lua b/etc/process-pdf.lua deleted file mode 100644 index e69de29..0000000 --- a/etc/process-pdf.lua +++ /dev/null diff --git a/etc/template.gmi b/etc/template.gmi deleted file mode 100644 index 36d66c2..0000000 --- a/etc/template.gmi +++ /dev/null @@ -1 +0,0 @@ -$body$ diff --git a/etc/template.html b/etc/template.html deleted file mode 100644 index 61cefb4..0000000 --- a/etc/template.html +++ /dev/null @@ -1,153 +0,0 @@ -<!DOCTYPE html> -<html xmlns="http://www.w3.org/1999/xhtml" lang="$lang$" xml:lang="$lang$"$if(dir)$ dir="$dir$"$endif$> -<head> - <meta charset="utf-8" /> - <meta name="generator" content="pandoc" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> - <title>$if(title-prefix)$$title-prefix$ – $endif$$pagetitle$</title> - <style> - /* "derived" (stolen) from evenbettermotherfucking.website */ - html { - margin: 1rem auto; - background: #f2f2f2; - color: #444444; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; - font-size: 16px; - line-height: 1.8; - text-shadow: 0 1px 0 #ffffff; - max-width: 60em; - } - @media print { - html { - background: white; - } - } - body { - margin: 0 1rem; - } - code { - background: white; - } - pre { - line-height: 1.25; - } - .highlight code { - background: unset; - } - div.highlighter-rouge { - background: white; - padding: 1rem; - line-height: 1; - overflow-x: auto; - } - div.highlighter-rouge pre { - padding: 0; - margin: 0; - } - a { - border-bottom: 1px solid #444444; - color: #444444; - text-decoration: none; - } - a:hover { - border-bottom-style: dashed; - } - blockquote { - margin-left: 1em; - border-left: 2px solid #444444; - padding-left: 1em; - } - - #TOC .header-section-number { - display: none; - } - - /* https://github.com/richleland/pygments-css/blob/master/friendly.css */ - .highlight .hll { background-color: #ffffcc } - .highlight .c { color: #60a0b0; font-style: italic } /* Comment */ - .highlight .err { border: 1px solid #FF0000 } /* Error */ - .highlight .k { color: #007020; font-weight: bold } /* Keyword */ - .highlight .o { color: #666666 } /* Operator */ - .highlight .ch { color: #60a0b0; font-style: italic } /* Comment.Hashbang */ - .highlight .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */ - .highlight .cp { color: #007020 } /* Comment.Preproc */ - .highlight .cpf { color: #60a0b0; font-style: italic } /* Comment.PreprocFile */ - .highlight .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */ - .highlight .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */ - .highlight .gd { color: #A00000 } /* Generic.Deleted */ - .highlight .ge { font-style: italic } /* Generic.Emph */ - .highlight .gr { color: #FF0000 } /* Generic.Error */ - .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ - .highlight .gi { color: #00A000 } /* Generic.Inserted */ - .highlight .go { color: #888888 } /* Generic.Output */ - .highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ - .highlight .gs { font-weight: bold } /* Generic.Strong */ - .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ - .highlight .gt { color: #0044DD } /* Generic.Traceback */ - .highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ - .highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ - .highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ - .highlight .kp { color: #007020 } /* Keyword.Pseudo */ - .highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ - .highlight .kt { color: #902000 } /* Keyword.Type */ - .highlight .m { color: #40a070 } /* Literal.Number */ - .highlight .s { color: #4070a0 } /* Literal.String */ - .highlight .na { color: #4070a0 } /* Name.Attribute */ - .highlight .nb { color: #007020 } /* Name.Builtin */ - .highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ - .highlight .no { color: #60add5 } /* Name.Constant */ - .highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ - .highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ - .highlight .ne { color: #007020 } /* Name.Exception */ - .highlight .nf { color: #06287e } /* Name.Function */ - .highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ - .highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ - .highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ - .highlight .nv { color: #bb60d5 } /* Name.Variable */ - .highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ - .highlight .w { color: #bbbbbb } /* Text.Whitespace */ - .highlight .mb { color: #40a070 } /* Literal.Number.Bin */ - .highlight .mf { color: #40a070 } /* Literal.Number.Float */ - .highlight .mh { color: #40a070 } /* Literal.Number.Hex */ - .highlight .mi { color: #40a070 } /* Literal.Number.Integer */ - .highlight .mo { color: #40a070 } /* Literal.Number.Oct */ - .highlight .sa { color: #4070a0 } /* Literal.String.Affix */ - .highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ - .highlight .sc { color: #4070a0 } /* Literal.String.Char */ - .highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */ - .highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ - .highlight .s2 { color: #4070a0 } /* Literal.String.Double */ - .highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ - .highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ - .highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ - .highlight .sx { color: #c65d09 } /* Literal.String.Other */ - .highlight .sr { color: #235388 } /* Literal.String.Regex */ - .highlight .s1 { color: #4070a0 } /* Literal.String.Single */ - .highlight .ss { color: #517918 } /* Literal.String.Symbol */ - .highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ - .highlight .fm { color: #06287e } /* Name.Function.Magic */ - .highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ - .highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ - .highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ - .highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */ - .highlight .il { color: #40a070 } /* Literal.Number.Integer.Long */ - </style> -</head> -<body> -$if(title-before-toc)$ -<h1>$title$</h1> -$if(subtitle)$ -<h2>$subtitle$</h2> -$endif$ -$if(version)$ -<p>from git: <code>$version$</code></p> -$endif$ -$endif$ -$if(toc)$ -<nav id="$idprefix$TOC" role="doc-toc"> -$table-of-contents$ -</nav> -$endif$ -$body$ -</body> -</html> |