mirror of https://github.com/zcash/zips.git
Support writing ZIPs in Markdown, generating the HTML using pandoc.
This has some minor deficiencies in math support and formatting of references. Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
parent
198241c077
commit
66a41077ca
21
Makefile
21
Makefile
|
@ -1,14 +1,14 @@
|
|||
# Dependencies:
|
||||
# sudo apt-get install python3-pip
|
||||
# sudo apt-get install python3-pip pandoc
|
||||
# sudo pip3 install rst2html5
|
||||
|
||||
.PHONY: all all-zips protocol
|
||||
all-zips: .Makefile.uptodate
|
||||
find . -name 'zip-*.rst' |sort >.zipfilelist.new
|
||||
find . -name 'zip-*.rst' -o -name 'zip-*.md' |sort >.zipfilelist.new
|
||||
diff .zipfilelist.current .zipfilelist.new || cp -f .zipfilelist.new .zipfilelist.current
|
||||
rm -f .zipfilelist.new
|
||||
$(MAKE) README.rst
|
||||
$(MAKE) index.html $(addsuffix .html,$(filter-out README,$(basename $(wildcard *.rst))))
|
||||
$(MAKE) index.html $(addsuffix .html,$(filter-out README,$(basename $(wildcard *.rst) $(wildcard *.md))))
|
||||
|
||||
all: all-zips protocol
|
||||
|
||||
|
@ -22,7 +22,13 @@ protocol: .Makefile.uptodate
|
|||
define PROCESSRST
|
||||
$(eval TITLE := $(shell echo '$(basename $<)' | sed -E 's|zip-0{0,3}|ZIP |;s|draft-|Draft |')$(shell grep -E '^(\.\.)?\s*Title: ' $< |sed -E 's|.*Title||'))
|
||||
rst2html5 -v --title="$(TITLE)" $< >$@
|
||||
./edithtml.sh $@
|
||||
./edithtml.sh --rst $@
|
||||
endef
|
||||
|
||||
define PROCESSMD
|
||||
$(eval TITLE := $(shell echo '$(basename $<)' | sed -E 's|zip-0{0,3}|ZIP |;s|draft-|Draft |')$(shell grep -E '^(\.\.)?\s*Title: ' $< |sed -E 's|.*Title||'))
|
||||
pandoc --from=markdown --to=html $< --output=$@
|
||||
./edithtml.sh --md $@ "${TITLE}"
|
||||
endef
|
||||
|
||||
index.html: README.rst edithtml.sh
|
||||
|
@ -31,9 +37,12 @@ index.html: README.rst edithtml.sh
|
|||
%.html: %.rst edithtml.sh
|
||||
$(PROCESSRST)
|
||||
|
||||
README.rst: .zipfilelist.current makeindex.sh README.template $(wildcard zip-*.rst)
|
||||
%.html: %.md edithtml.sh
|
||||
$(PROCESSMD)
|
||||
|
||||
README.rst: .zipfilelist.current makeindex.sh README.template $(wildcard zip-*.rst) $(wildcard zip-*.md)
|
||||
./makeindex.sh | cat README.template - >README.rst
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -f .zipfilelist.* README.rst index.html $(addsuffix .html,$(basename $(wildcard *.rst)))
|
||||
rm -f .zipfilelist.* README.rst index.html $(addsuffix .html,$(basename $(wildcard *.rst) $(wildcard *.md)))
|
||||
|
|
40
edithtml.sh
40
edithtml.sh
|
@ -1,11 +1,37 @@
|
|||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
sed -i.sedbak 's|</head>|<meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="css/style.css"></head>|' $@
|
||||
sed -i.sedbak 's|<a href="\([^":]*\).rst">|<a href="\1">|g' $@
|
||||
sed -i.sedbak 's|http://cdn.mathjax.org/mathjax/latest/MathJax.js|https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js|' $@
|
||||
if [ "$1" != "--rst" -o $# -ne 2 ] && [ "$1" != "--md" -o $# -ne 3 ]; then
|
||||
echo "Usage: edithtml.sh --rst <htmlfile>"
|
||||
echo " or: edithtml.sh --md <htmlfile> <title>"
|
||||
exit
|
||||
fi
|
||||
|
||||
# First put <section id="..."> and <hN>...</hN> on the same line. <https://unix.stackexchange.com/a/337399/82702>
|
||||
sed -i.sedbak -n '$!N;s|<section id="\([^"]*\)">\s*\n\s*<h|<section id="\1"><h|;P;D' $@
|
||||
if [ "$1" == "--rst" ]; then
|
||||
sed -i.sedbak 's|</head>|<meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="css/style.css"></head>|' $2
|
||||
sed -i.sedbak 's|http://cdn.mathjax.org/mathjax/latest/MathJax.js|https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js|' $2
|
||||
else
|
||||
cat - $2 >$2.prefix <<EOF
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>$3</title>
|
||||
<meta charset="utf-8" />
|
||||
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="css/style.css">
|
||||
</head>
|
||||
<body>
|
||||
EOF
|
||||
cat $2.prefix - >$2 <<EOF
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
||||
rm -f $2.prefix
|
||||
fi
|
||||
|
||||
sed -i.sedbak 's|<a href="\([^":]*\).rst">|<a href="\1">|g' $2
|
||||
|
||||
# Put <section id="..."> and <hN>...</hN> on the same line. <https://unix.stackexchange.com/a/337399/82702>
|
||||
sed -i.sedbak -n '$!N;s|<section id="\([^"]*\)">\s*\n\s*<h|<section id="\1"><h|;P;D' $2
|
||||
sed -i.sedbak 's|<section id="\([^"]*\)"><h\([1-9]\)>\([^<]*\)</h\([1-9]\)>|<section id="\1"><h\2><span class="section-heading">\3</span><span class="section-anchor"> <a href="#\1"><img width="24" height="24" src="assets/images/section-anchor.png" alt=""></a></span></h\4>|' $2
|
||||
|
||||
sed -i.sedbak 's|<section id="\([^"]*\)"><h\([1-9]\)>\([^<]*\)</h\([1-9]\)>|<section id="\1"><h\2><span class="section-heading">\3</span><span class="section-anchor"> <a href="#\1"><img width="24" height="24" src="assets/images/section-anchor.png" alt=""></a></span></h\4>|' $@
|
||||
rm -f *.sedbak
|
||||
|
|
Loading…
Reference in New Issue