diff options
author | Melody Horn <melody@boringcactus.com> | 2020-10-25 16:22:54 -0600 |
---|---|---|
committer | Melody Horn <melody@boringcactus.com> | 2020-10-25 16:22:54 -0600 |
commit | ae7bcb4277d6ce225516bcf36ef07451fe2be2ee (patch) | |
tree | c0f871944bf6d9c7edf3902049017de31b07a476 | |
parent | ee99902feaf62a60d006a5187815bdf4aa45e8b7 (diff) | |
download | spec-ae7bcb4277d6ce225516bcf36ef07451fe2be2ee.tar.gz spec-ae7bcb4277d6ce225516bcf36ef07451fe2be2ee.zip |
increase pandoc fanciness
-rw-r--r-- | .build.yml | 16 | ||||
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | LICENSE.md | 4 | ||||
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | etc/md.yml | 14 | ||||
-rw-r--r-- | etc/pdf.yml | 18 | ||||
-rw-r--r-- | etc/process-md.lua | 7 | ||||
-rw-r--r-- | etc/process-pdf.lua | 0 | ||||
-rw-r--r-- | etc/template.html | 153 | ||||
-rw-r--r-- | index.md | 2 | ||||
-rw-r--r-- | syntax.md | 2 |
11 files changed, 193 insertions, 26 deletions
@@ -8,12 +8,22 @@ sources: tasks: - page-count: | cd crowbar-spec - files="index vs-c tagged-unions types safety errors syntax" + files="index vs-c tagged-unions types safety errors syntax LICENSE" + html_files="" + i=0 for file in $files do - pandoc --defaults=etc/md.yml -o $file.html $file.md + pandoc --defaults=etc/md.yml --number-offset=$i -o $file.html $file.md + html_files="$html_files $file.html" + i=$((i+1)) done - pandoc --defaults=etc/pdf.yml -o ../spec.pdf *.html + if git describe --tags --exact-match 2>/dev/null + then + metadata="subtitle=$(git describe --tags --exact-match)" + else + metadata="version=$(git log -1 --no-decorate --oneline)" + fi + pandoc --defaults=etc/pdf.yml -o ../spec.pdf -M $metadata $html_files cd .. pdfinfo spec.pdf | grep Pages tar czvf spec-html.tar.gz crowbar-spec/*.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9b61c8c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/*.html @@ -1,2 +1,6 @@ +--- +title: License +--- + [![Creative Commons BY-SA License](https://i.creativecommons.org/l/by-sa/4.0/80x15.png)](http://creativecommons.org/licenses/by-sa/4.0/) This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/"). @@ -5,5 +5,3 @@ read the spec: <https://man.sr.ht/~boringcactus/crowbar-spec/> reference compiler: <https://git.sr.ht/~boringcactus/crowbar-reference-compiler> play with the reference compiler: <https://crowbar-playground.boringcactus.com/> - -[![Creative Commons BY-SA License](https://i.creativecommons.org/l/by-sa/4.0/80x15.png)](http://creativecommons.org/licenses/by-sa/4.0/) @@ -1,23 +1,23 @@ from: markdown to: html5 +template: etc/template.html standalone: true -verbosity: INFO +filters: + - etc/process-md.lua -top-level-division: chapter +metadata: + lang: "en" -pdf-engine: weasyprint +verbosity: INFO table-of-contents: false number-sections: true shift-heading-level-by: 1 -title-prefix: "Crowbar Specification: " +title-prefix: "Crowbar Specification" eol: lf # syntax-definition: fail-if-warnings: true -dump-args: false -ignore-args: false -trace: false diff --git a/etc/pdf.yml b/etc/pdf.yml index 5ef3857..a76afca 100644 --- a/etc/pdf.yml +++ b/etc/pdf.yml @@ -1,20 +1,18 @@ from: html to: pdf -standalone: true +template: etc/template.html -metadata: - title: "Crowbar Specification" +filters: + - etc/process-pdf.lua -verbosity: INFO +metadata: + title-before-toc: true + title: "Crowbar Specification" -top-level-division: chapter +verbosity: WARNING pdf-engine: weasyprint table-of-contents: true - -fail-if-warnings: true -dump-args: false -ignore-args: false -trace: false +number-sections: false diff --git a/etc/process-md.lua b/etc/process-md.lua new file mode 100644 index 0000000..30c85de --- /dev/null +++ b/etc/process-md.lua @@ -0,0 +1,7 @@ +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 diff --git a/etc/process-pdf.lua b/etc/process-pdf.lua new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/etc/process-pdf.lua diff --git a/etc/template.html b/etc/template.html new file mode 100644 index 0000000..61cefb4 --- /dev/null +++ b/etc/template.html @@ -0,0 +1,153 @@ +<!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> @@ -37,5 +37,3 @@ TODO - [announcement mailing list](https://lists.sr.ht/~boringcactus/crowbar-lang-announce) - [permanent discussion mailing list](https://lists.sr.ht/~boringcactus/crowbar-lang-devel) - ephemeral discussions via IRC: #crowbar-lang on freenode ([join via irc](ircs://chat.freenode.net/#crowbar-lang), [join via web](https://webchat.freenode.net/#crowbar-lang)) - -[![Creative Commons BY-SA License](https://i.creativecommons.org/l/by-sa/4.0/80x15.png)](http://creativecommons.org/licenses/by-sa/4.0/) @@ -348,5 +348,3 @@ Expression ← ComparisonExpression ('&&' ComparisonExpression)+ ComparisonExpression ('||' ComparisonExpression)+ / ComparisonExpression ``` - -[![Creative Commons BY-SA License](https://i.creativecommons.org/l/by-sa/4.0/80x15.png)](http://creativecommons.org/licenses/by-sa/4.0/) |