summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2018-02-02 10:59:21 +1100
committerChris Johns <chrisj@rtems.org>2018-02-05 14:22:27 +1100
commit652a90f0a8613ee3bc4112a69137730b5abd9938 (patch)
treef462f74e3e2ce3758a1ae4d2cce87aee54429a78
parent61d2c55de6f8f7acd3bcc7eb1f0b9c13a87bf0a4 (diff)
downloadrtems-source-builder-652a90f0a8613ee3bc4112a69137730b5abd9938.tar.bz2
sb: Back port changes to support mailing list posting.
Close #3287
-rw-r--r--rtems/config/4.10/rtems-autotools.bset5
-rw-r--r--source-builder/sb/asciidoc/BUGS27
-rw-r--r--source-builder/sb/asciidoc/BUGS.txt20
-rw-r--r--source-builder/sb/asciidoc/CHANGELOG3291
-rw-r--r--source-builder/sb/asciidoc/CHANGELOG.txt3128
-rw-r--r--source-builder/sb/asciidoc/COPYING339
-rw-r--r--source-builder/sb/asciidoc/COPYRIGHT18
-rw-r--r--source-builder/sb/asciidoc/INSTALL235
-rw-r--r--source-builder/sb/asciidoc/INSTALL.txt227
-rw-r--r--source-builder/sb/asciidoc/MANIFEST90
-rw-r--r--source-builder/sb/asciidoc/Makefile.in185
-rw-r--r--source-builder/sb/asciidoc/README45
-rw-r--r--source-builder/sb/asciidoc/README.txt35
-rwxr-xr-xsource-builder/sb/asciidoc/a2x.py960
-rw-r--r--source-builder/sb/asciidoc/asciidoc.conf647
-rwxr-xr-xsource-builder/sb/asciidoc/asciidoc.py6260
-rw-r--r--source-builder/sb/asciidoc/asciidocapi.py257
-rw-r--r--source-builder/sb/asciidoc/common.aap9
-rwxr-xr-xsource-builder/sb/asciidoc/configure3033
-rw-r--r--source-builder/sb/asciidoc/configure.ac11
-rw-r--r--source-builder/sb/asciidoc/dblatex/asciidoc-dblatex.sty20
-rw-r--r--source-builder/sb/asciidoc/dblatex/asciidoc-dblatex.xsl74
-rw-r--r--source-builder/sb/asciidoc/dblatex/dblatex-readme.txt39
-rw-r--r--source-builder/sb/asciidoc/doc/a2x.1744
-rw-r--r--source-builder/sb/asciidoc/doc/a2x.1.txt358
-rw-r--r--source-builder/sb/asciidoc/doc/article-docinfo.xml87
-rw-r--r--source-builder/sb/asciidoc/doc/article.pdfbin37949 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/article.txt139
-rw-r--r--source-builder/sb/asciidoc/doc/asciidoc.1310
-rw-r--r--source-builder/sb/asciidoc/doc/asciidoc.1.txt197
-rw-r--r--source-builder/sb/asciidoc/doc/asciidoc.conf7
-rw-r--r--source-builder/sb/asciidoc/doc/asciidoc.dict1085
-rw-r--r--source-builder/sb/asciidoc/doc/asciidoc.txt6038
-rw-r--r--source-builder/sb/asciidoc/doc/asciidocapi.txt189
-rw-r--r--source-builder/sb/asciidoc/doc/asciimathml.txt61
-rw-r--r--source-builder/sb/asciidoc/doc/book-multi.txt181
-rw-r--r--source-builder/sb/asciidoc/doc/book.epubbin17614 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/book.txt156
-rw-r--r--source-builder/sb/asciidoc/doc/customers.csv18
-rw-r--r--source-builder/sb/asciidoc/doc/epub-notes.txt210
-rw-r--r--source-builder/sb/asciidoc/doc/faq.txt1358
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/README5
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/callouts/1.pngbin329 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/callouts/10.pngbin361 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/callouts/11.pngbin565 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/callouts/12.pngbin617 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/callouts/13.pngbin623 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/callouts/14.pngbin411 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/callouts/15.pngbin640 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/callouts/2.pngbin353 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/callouts/3.pngbin350 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/callouts/4.pngbin345 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/callouts/5.pngbin348 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/callouts/6.pngbin355 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/callouts/7.pngbin344 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/callouts/8.pngbin357 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/callouts/9.pngbin357 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/caution.pngbin2734 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/example.pngbin2599 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/home.pngbin1340 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/important.pngbin2980 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/next.pngbin1302 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/note.pngbin2494 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/prev.pngbin1348 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/tip.pngbin2718 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/up.pngbin1320 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/icons/warning.pngbin3214 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/smallnew.pngbin292 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/images/tiger.pngbin6515 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/latex-backend.txt192
-rw-r--r--source-builder/sb/asciidoc/doc/latex-bugs.txt134
-rw-r--r--source-builder/sb/asciidoc/doc/latex-filter.pdfbin100587 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/latex-filter.txt196
-rw-r--r--source-builder/sb/asciidoc/doc/latexmath.txt121
-rw-r--r--source-builder/sb/asciidoc/doc/latexmathml.txt41
-rw-r--r--source-builder/sb/asciidoc/doc/main.aap233
-rw-r--r--source-builder/sb/asciidoc/doc/music-filter.pdfbin36491 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/music-filter.txt148
-rw-r--r--source-builder/sb/asciidoc/doc/publishing-ebooks-with-asciidoc.txt398
-rw-r--r--source-builder/sb/asciidoc/doc/slidy-example.txt167
-rw-r--r--source-builder/sb/asciidoc/doc/slidy.txt113
-rw-r--r--source-builder/sb/asciidoc/doc/source-highlight-filter.pdfbin127428 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/doc/source-highlight-filter.txt270
-rw-r--r--source-builder/sb/asciidoc/doc/testasciidoc.txt231
-rw-r--r--source-builder/sb/asciidoc/docbook-xsl/asciidoc-docbook-xsl.txt65
-rw-r--r--source-builder/sb/asciidoc/docbook-xsl/chunked.xsl17
-rw-r--r--source-builder/sb/asciidoc/docbook-xsl/common.xsl106
-rw-r--r--source-builder/sb/asciidoc/docbook-xsl/epub.xsl35
-rw-r--r--source-builder/sb/asciidoc/docbook-xsl/fo.xsl152
-rw-r--r--source-builder/sb/asciidoc/docbook-xsl/htmlhelp.xsl16
-rw-r--r--source-builder/sb/asciidoc/docbook-xsl/manpage.xsl31
-rw-r--r--source-builder/sb/asciidoc/docbook-xsl/text.xsl55
-rw-r--r--source-builder/sb/asciidoc/docbook-xsl/xhtml.xsl14
-rw-r--r--source-builder/sb/asciidoc/docbook45.conf802
-rw-r--r--source-builder/sb/asciidoc/examples/website/ASCIIMathML.js938
-rw-r--r--source-builder/sb/asciidoc/examples/website/CHANGELOG.txt3128
-rw-r--r--source-builder/sb/asciidoc/examples/website/INSTALL.txt227
-rw-r--r--source-builder/sb/asciidoc/examples/website/LaTeXMathML.js1223
-rw-r--r--source-builder/sb/asciidoc/examples/website/README-website.txt29
-rw-r--r--source-builder/sb/asciidoc/examples/website/README.txt35
-rw-r--r--source-builder/sb/asciidoc/examples/website/a2x.1.txt358
-rw-r--r--source-builder/sb/asciidoc/examples/website/asciidoc-docbook-xsl.txt65
-rw-r--r--source-builder/sb/asciidoc/examples/website/asciidoc-graphviz-sample.txt170
-rw-r--r--source-builder/sb/asciidoc/examples/website/asciidoc.css525
-rw-r--r--source-builder/sb/asciidoc/examples/website/asciidoc.js189
-rw-r--r--source-builder/sb/asciidoc/examples/website/asciidocapi.txt189
-rw-r--r--source-builder/sb/asciidoc/examples/website/asciimathml.txt61
-rwxr-xr-xsource-builder/sb/asciidoc/examples/website/build-website.sh25
-rw-r--r--source-builder/sb/asciidoc/examples/website/customers.csv18
-rw-r--r--source-builder/sb/asciidoc/examples/website/epub-notes.txt210
-rw-r--r--source-builder/sb/asciidoc/examples/website/faq.txt1358
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/highlighter.pngbin128142 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/README5
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/callouts/1.pngbin329 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/callouts/10.pngbin361 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/callouts/11.pngbin565 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/callouts/12.pngbin617 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/callouts/13.pngbin623 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/callouts/14.pngbin411 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/callouts/15.pngbin640 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/callouts/2.pngbin353 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/callouts/3.pngbin350 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/callouts/4.pngbin345 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/callouts/5.pngbin348 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/callouts/6.pngbin355 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/callouts/7.pngbin344 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/callouts/8.pngbin357 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/callouts/9.pngbin357 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/caution.pngbin2734 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/example.pngbin2599 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/home.pngbin1340 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/important.pngbin2980 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/next.pngbin1302 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/note.pngbin2494 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/prev.pngbin1348 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/tip.pngbin2718 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/up.pngbin1320 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/icons/warning.pngbin3214 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/smallnew.pngbin292 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/images/tiger.pngbin6515 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/examples/website/index.txt510
-rw-r--r--source-builder/sb/asciidoc/examples/website/latex-backend.txt192
-rw-r--r--source-builder/sb/asciidoc/examples/website/latex-bugs.txt134
-rw-r--r--source-builder/sb/asciidoc/examples/website/latex-filter.txt196
-rw-r--r--source-builder/sb/asciidoc/examples/website/latexmathml.txt41
-rw-r--r--source-builder/sb/asciidoc/examples/website/layout1.conf153
-rw-r--r--source-builder/sb/asciidoc/examples/website/layout1.css65
-rw-r--r--source-builder/sb/asciidoc/examples/website/layout2.conf153
-rw-r--r--source-builder/sb/asciidoc/examples/website/layout2.css83
-rw-r--r--source-builder/sb/asciidoc/examples/website/main.aap159
-rw-r--r--source-builder/sb/asciidoc/examples/website/manpage.txt197
-rw-r--r--source-builder/sb/asciidoc/examples/website/music-filter.txt148
-rw-r--r--source-builder/sb/asciidoc/examples/website/newlists.txt40
-rw-r--r--source-builder/sb/asciidoc/examples/website/newtables.txt743
-rw-r--r--source-builder/sb/asciidoc/examples/website/plugins.txt91
-rw-r--r--source-builder/sb/asciidoc/examples/website/publishing-ebooks-with-asciidoc.txt398
-rw-r--r--source-builder/sb/asciidoc/examples/website/slidy-example.txt167
-rw-r--r--source-builder/sb/asciidoc/examples/website/slidy.txt113
-rw-r--r--source-builder/sb/asciidoc/examples/website/source-highlight-filter.txt270
-rw-r--r--source-builder/sb/asciidoc/examples/website/support.txt5
-rw-r--r--source-builder/sb/asciidoc/examples/website/testasciidoc.txt231
-rw-r--r--source-builder/sb/asciidoc/examples/website/userguide.txt6038
-rw-r--r--source-builder/sb/asciidoc/examples/website/version83.txt37
-rw-r--r--source-builder/sb/asciidoc/examples/website/xhtml11-quirks.css43
-rw-r--r--source-builder/sb/asciidoc/filters/code/code-filter-readme.txt37
-rw-r--r--source-builder/sb/asciidoc/filters/code/code-filter-test.txt15
-rw-r--r--source-builder/sb/asciidoc/filters/code/code-filter.conf8
-rwxr-xr-xsource-builder/sb/asciidoc/filters/code/code-filter.py239
-rw-r--r--source-builder/sb/asciidoc/filters/graphviz/asciidoc-graphviz-sample.txt170
-rw-r--r--source-builder/sb/asciidoc/filters/graphviz/graphviz-filter.conf53
-rwxr-xr-xsource-builder/sb/asciidoc/filters/graphviz/graphviz2png.py169
-rw-r--r--source-builder/sb/asciidoc/filters/latex/latex-filter.conf28
-rwxr-xr-xsource-builder/sb/asciidoc/filters/latex/latex2png.py232
-rw-r--r--source-builder/sb/asciidoc/filters/music/music-filter-test.txt40
-rw-r--r--source-builder/sb/asciidoc/filters/music/music-filter.conf42
-rwxr-xr-xsource-builder/sb/asciidoc/filters/music/music2png.py213
-rw-r--r--source-builder/sb/asciidoc/filters/source/source-highlight-filter-test.txt19
-rw-r--r--source-builder/sb/asciidoc/filters/source/source-highlight-filter.conf140
-rw-r--r--source-builder/sb/asciidoc/help.conf394
-rw-r--r--source-builder/sb/asciidoc/html4.conf506
-rw-r--r--source-builder/sb/asciidoc/html5.conf696
-rw-r--r--source-builder/sb/asciidoc/images/highlighter.pngbin128142 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/README5
-rw-r--r--source-builder/sb/asciidoc/images/icons/callouts/1.pngbin329 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/callouts/10.pngbin361 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/callouts/11.pngbin565 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/callouts/12.pngbin617 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/callouts/13.pngbin623 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/callouts/14.pngbin411 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/callouts/15.pngbin640 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/callouts/2.pngbin353 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/callouts/3.pngbin350 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/callouts/4.pngbin345 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/callouts/5.pngbin348 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/callouts/6.pngbin355 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/callouts/7.pngbin344 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/callouts/8.pngbin357 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/callouts/9.pngbin357 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/caution.pngbin2734 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/example.pngbin2599 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/home.pngbin1340 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/important.pngbin2980 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/next.pngbin1302 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/note.pngbin2494 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/prev.pngbin1348 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/tip.pngbin2718 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/up.pngbin1320 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/icons/warning.pngbin3214 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/smallnew.pngbin292 -> 0 bytes
-rw-r--r--source-builder/sb/asciidoc/images/tiger.pngbin6515 -> 0 bytes
-rwxr-xr-xsource-builder/sb/asciidoc/install-sh201
-rw-r--r--source-builder/sb/asciidoc/javascripts/ASCIIMathML.js938
-rw-r--r--source-builder/sb/asciidoc/javascripts/LaTeXMathML.js1223
-rw-r--r--source-builder/sb/asciidoc/javascripts/asciidoc.js189
-rw-r--r--source-builder/sb/asciidoc/javascripts/slidy.js2845
-rw-r--r--source-builder/sb/asciidoc/javascripts/toc.js77
-rw-r--r--source-builder/sb/asciidoc/lang-de.conf61
-rw-r--r--source-builder/sb/asciidoc/lang-el.conf55
-rw-r--r--source-builder/sb/asciidoc/lang-en.conf54
-rw-r--r--source-builder/sb/asciidoc/lang-es.conf57
-rw-r--r--source-builder/sb/asciidoc/lang-fr.conf59
-rw-r--r--source-builder/sb/asciidoc/lang-hu.conf57
-rw-r--r--source-builder/sb/asciidoc/lang-it.conf57
-rw-r--r--source-builder/sb/asciidoc/lang-nl.conf62
-rw-r--r--source-builder/sb/asciidoc/lang-pt-BR.conf58
-rw-r--r--source-builder/sb/asciidoc/lang-ru.conf59
-rw-r--r--source-builder/sb/asciidoc/lang-uk.conf60
-rw-r--r--source-builder/sb/asciidoc/latex.conf700
-rw-r--r--source-builder/sb/asciidoc/main.aap77
-rw-r--r--source-builder/sb/asciidoc/slidy.conf150
-rw-r--r--source-builder/sb/asciidoc/stylesheets/asciidoc.css525
-rw-r--r--source-builder/sb/asciidoc/stylesheets/docbook-xsl.css329
-rw-r--r--source-builder/sb/asciidoc/stylesheets/pygments.css66
-rw-r--r--source-builder/sb/asciidoc/stylesheets/slidy.css445
-rw-r--r--source-builder/sb/asciidoc/stylesheets/toc2.css34
-rw-r--r--source-builder/sb/asciidoc/stylesheets/xhtml11-quirks.css43
-rw-r--r--source-builder/sb/asciidoc/tests/asciidocapi.py257
-rw-r--r--source-builder/sb/asciidoc/tests/data/deprecated-quotes.txt12
-rw-r--r--source-builder/sb/asciidoc/tests/data/filters-test.txt90
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-de-man-test.txt21
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-de-test.txt106
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-en-man-test.txt21
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-en-test.txt114
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-es-man-test.txt21
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-es-test.txt106
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-fr-man-test.txt21
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-fr-test.txt106
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-hu-man-test.txt21
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-hu-test.txt106
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-it-man-test.txt21
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-it-test.txt106
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-nl-man-test.txt21
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-nl-test.txt94
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-pt-BR-man-test.txt21
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-pt-BR-test.txt106
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-ru-man-test.txt21
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-ru-test.txt106
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-uk-man-test.txt21
-rw-r--r--source-builder/sb/asciidoc/tests/data/lang-uk-test.txt106
-rw-r--r--source-builder/sb/asciidoc/tests/data/oldtables.txt64
-rw-r--r--source-builder/sb/asciidoc/tests/data/open-block-test.txt117
-rw-r--r--source-builder/sb/asciidoc/tests/data/rcs-id-marker-test.txt6
-rw-r--r--source-builder/sb/asciidoc/tests/data/testcases.conf12
-rw-r--r--source-builder/sb/asciidoc/tests/data/testcases.txt786
-rw-r--r--source-builder/sb/asciidoc/tests/data/utf8-bom-test.txt9
-rw-r--r--source-builder/sb/asciidoc/tests/data/utf8-examples.txt217
-rw-r--r--source-builder/sb/asciidoc/tests/testasciidoc.conf652
-rwxr-xr-xsource-builder/sb/asciidoc/tests/testasciidoc.py420
-rw-r--r--source-builder/sb/asciidoc/text.conf16
-rw-r--r--source-builder/sb/asciidoc/themes/flask/flask.css597
-rw-r--r--source-builder/sb/asciidoc/themes/volnitsky/volnitsky.css435
-rw-r--r--source-builder/sb/asciidoc/vim/ftdetect/asciidoc_filetype.vim53
-rw-r--r--source-builder/sb/asciidoc/vim/syntax/asciidoc.vim173
-rw-r--r--source-builder/sb/asciidoc/wordpress.conf88
-rw-r--r--source-builder/sb/asciidoc/xhtml11-quirks.conf61
-rw-r--r--source-builder/sb/asciidoc/xhtml11.conf694
-rw-r--r--source-builder/sb/macros.py3
-rw-r--r--source-builder/sb/markdown/LICENSE.md30
-rw-r--r--source-builder/sb/markdown/README.md38
-rw-r--r--source-builder/sb/markdown/__init__.py529
-rw-r--r--source-builder/sb/markdown/__main__.py136
-rw-r--r--source-builder/sb/markdown/__version__.py30
-rw-r--r--source-builder/sb/markdown/blockparser.py100
-rw-r--r--source-builder/sb/markdown/blockprocessors.py573
-rw-r--r--source-builder/sb/markdown/extensions/__init__.py100
-rw-r--r--source-builder/sb/markdown/extensions/abbr.py91
-rw-r--r--source-builder/sb/markdown/extensions/admonition.py96
-rw-r--r--source-builder/sb/markdown/extensions/attr_list.py178
-rw-r--r--source-builder/sb/markdown/extensions/codehilite.py265
-rw-r--r--source-builder/sb/markdown/extensions/def_list.py115
-rw-r--r--source-builder/sb/markdown/extensions/extra.py132
-rw-r--r--source-builder/sb/markdown/extensions/fenced_code.py113
-rw-r--r--source-builder/sb/markdown/extensions/footnotes.py416
-rw-r--r--source-builder/sb/markdown/extensions/headerid.py97
-rw-r--r--source-builder/sb/markdown/extensions/meta.py78
-rw-r--r--source-builder/sb/markdown/extensions/nl2br.py35
-rw-r--r--source-builder/sb/markdown/extensions/sane_lists.py55
-rw-r--r--source-builder/sb/markdown/extensions/smart_strong.py41
-rw-r--r--source-builder/sb/markdown/extensions/smarty.py268
-rw-r--r--source-builder/sb/markdown/extensions/tables.py196
-rw-r--r--source-builder/sb/markdown/extensions/toc.py310
-rw-r--r--source-builder/sb/markdown/extensions/wikilinks.py89
-rw-r--r--source-builder/sb/markdown/inlinepatterns.py534
-rw-r--r--source-builder/sb/markdown/odict.py191
-rw-r--r--source-builder/sb/markdown/postprocessors.py111
-rw-r--r--source-builder/sb/markdown/preprocessors.py352
-rw-r--r--source-builder/sb/markdown/serializers.py282
-rw-r--r--source-builder/sb/markdown/treeprocessors.py371
-rw-r--r--source-builder/sb/markdown/util.py177
-rw-r--r--source-builder/sb/reports.py283
-rw-r--r--source-builder/sb/setbuilder.py138
311 files changed, 6436 insertions, 70224 deletions
diff --git a/rtems/config/4.10/rtems-autotools.bset b/rtems/config/4.10/rtems-autotools.bset
index f7f1929..a15aa1b 100644
--- a/rtems/config/4.10/rtems-autotools.bset
+++ b/rtems/config/4.10/rtems-autotools.bset
@@ -18,5 +18,10 @@
#
%define _internal_autotools_path %{_tmppath}/sb-%{_uid}/${SB_PREFIX_CLEAN}
+#
+# Disable emailing reports of this building for RTEMS.
+#
+%define mail_disable
+
4.10/rtems-autotools-internal
4.10/rtems-autotools-base
diff --git a/source-builder/sb/asciidoc/BUGS b/source-builder/sb/asciidoc/BUGS
deleted file mode 100644
index 8e17177..0000000
--- a/source-builder/sb/asciidoc/BUGS
+++ /dev/null
@@ -1,27 +0,0 @@
- Bugs and Known Problems
-
- version 8.6.8, 17 July 2012
- __________________________________________________________________
-
-1. AsciiDoc
-
- * A benign warning with will become a reserved keyword in Python 2.6
- sometimes occurs when using Python 2.5 — it’s harmless and will
- disappear with Python 3.
- * Reported line numbers in diagnostic messages are sometimes wrong.
- * Attribute references in macro attribute lists can’t be unescaped
- (with the exception of attribute list entry {0}).
- * Section numbering is incorrect when outputting HTML from a
- multi-part book type document. This is not a biggy since multi-part
- books are generally processed to DocBook.
- * A row of apostrophes in an inline context throws AsciiDoc into an
- endless loop. The problem seems to be in the input file Reader.
- __________________________________________________________________
-
-2. dblatex
-
- See ./dblatex/dblatex-readme.txt.
- __________________________________________________________________
-
- Version 8.6.8
- Last updated 2011-11-10 09:23:10 NZDT
diff --git a/source-builder/sb/asciidoc/BUGS.txt b/source-builder/sb/asciidoc/BUGS.txt
deleted file mode 100644
index b74c1a2..0000000
--- a/source-builder/sb/asciidoc/BUGS.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-Bugs and Known Problems
-=======================
-
-AsciiDoc
---------
-- A benign warning 'with will become a reserved keyword
- in Python 2.6' sometimes occurs when using Python 2.5 -- it's
- harmless and will disappear with Python 3.
-- Reported line numbers in diagnostic messages are sometimes wrong.
-- Attribute references in macro attribute lists can't be unescaped
- (with the exception of attribute list entry `{0}`).
-- Section numbering is incorrect when outputting HTML from a
- multi-part book type document. This is not a biggy since multi-part
- books are generally processed to DocBook.
-- A row of apostrophes in an inline context throws AsciiDoc into an
- endless loop. The problem seems to be in the input file 'Reader'.
-
-dblatex
--------
-See `./dblatex/dblatex-readme.txt`.
diff --git a/source-builder/sb/asciidoc/CHANGELOG b/source-builder/sb/asciidoc/CHANGELOG
deleted file mode 100644
index 8d260e5..0000000
--- a/source-builder/sb/asciidoc/CHANGELOG
+++ /dev/null
@@ -1,3291 +0,0 @@
- AsciiDoc ChangeLog
-
- version 8.6.8, 17 July 2012
- __________________________________________________________________
-
-1. Version 8.6.8 (2012-07-17)
-
- Release highlights
- Added full complement of styles to Open Blocks and Normal Paragraphs —
- those with a minimalist bent could construct virtually any document
- using just Title, Normal Paragraph and Open Block syntaxes.
-
- Other additions and changes
- * Increased default maximum include depth from 5 to 10.
- * Emit warning if maximum include depth is exceeded.
- * Suppress repeated console messages.
- * Music filter: removed --beams=None option from abc2ly invocation
- because it is broken on LilyPond 2.14 (Ubuntu 12.04).
- * Replaced obsolete <tt> tag with <code> in HTML backends.
- * Allow configuration attribute entries to create a new section
- (previously you could only modify existing sections). See:
- [1]discussion list.
- * Documented {wj} (word-joiner) attribute and updated FAQ. See:
- [2]discussion list.
- * FAQ: Added How can I place a footnote immediately following quoted
- text? See [3]discussion list.
- * Added Greek language configuration file. Contributed by Michael
- Dourmousoglou. See [4]discussion list.
- * FAQ: Added Using roles to select fonts for PDF. Submitted by Lex
- Trotman and based on solution by Antonio Borneo. See: [5]discussion
- list.
- * Apply same monospaced font size to all monospaced text.
- * Changed 0 number padding to spaces in numbered GNU source-highlight
- outputs.
- * Allow highlight source highlighter to use python for Python
- {language} name. r1142: Update the AsciiDoc source filter to allow
- the use of the highlight source code highlighter. See [6]discussion
- list.
-
- Note
- The pygments attribute has been deprecated in favor of the new
- source-highlighter attribute.
- * Vim syntax highlighter: Don’t confuse trailing open block delimiter
- with section underline.
- * Added skip option to paragraphs (c.f. Delimited Block skip option).
-
- Bug fixes
- * FIXED: latex, music and graphviz filters: When the filter output
- image is data-uri encoded write it to the indir (instead of the
- outdir) so that encoder can find it. See [7]discussion list.
- * FIXED: Escape the ] character inside inline macros. See
- [8]discussion list.
- * FIXED: source highlighter filter: Pass role attribute to HTML
- backends.
- * FIXED: source highlight filter: docbook backend: role attribute was
- not passed to listings without a title. Patch submitted by Lex
- Trotman. See [9]discussion list.
- * FIXED: music2png.py: FOPException: Raster ByteInterleavedRaster
- error (FOP 1.0, ImageMagick 6.6.9-7).
- __________________________________________________________________
-
-2. Version 8.6.7 (2012-03-17)
-
- Release highlights
- No major enhancements but quite a few bug fixes which, among other
- things, fixes Jython compatibility and improves Windows compatibility.
-
- All additions and changes
- * Vim syntax highlighter: highlight entity refs in macro arguments.
- * Added files with .asciidoc extension to Vim file type detection.
- [10]Patch submitted by Dag Wiers.
- * Added replacement3 substitution to enable [11]ODT whitespace
- processing.
- * Added unbreakable option to XHTML and HTML 5 backends.
- * Implemented toc::[] block macro and toc-placement attribute for
- HTML backends to allow the Table of Contents placement to be set
- manually by the author.
- * Added FAQs: How can I control page breaks when printing HTML
- outputs? and Is it possible to reposition the Table of Contents in
- HTML outputs?.
- * Added --backend and --backend-opts options to the a2x command to
- allow a2x to use backend plugin code extensions. [12]Patch
- submitted by Lex Trotman.
- * Added [13]args block attribute to source highlight blocks to allow
- arbitrary parameters to be passed to the source highlighters.
- * If the ascii-ids attribute is defined then non-ascii characters in
- auto-generated IDs [14]are replaced by their nearest ascii
- equivalents (to work around DocBook processor limitations).
- * Added global blockname attribute which is dynamically updated to
- identify the current block. See [15]discussion list.
- * xhtml11, html5 backends: Include book part TOC entries for
- multi-part books. Patch submitted by Loïc Paillotin.
- * Removed code filter example from the AsciiDoc User Guide so that
- backends implemented as external plugins can compile the manual.
- See [16]discussion list.
- * If the delimited block skip option is set then do not consume block
- title and attributes. This makes it possible for the comment
- delimited blocks to use an attribute list (previously the comment
- delimited block was hardwired to skip preceding attributes and
- titles). See [17]discussion list.
- * Added backend-confdir intrinsic attribute.
-
- Bug fixes
- * FIXED: slidy backend: broken stylesheet attribute. [18]Patch
- submitted by Micheal Hackett.
- * FIXED: Restored [19]missing themes to zip file distribution
- archive.
- * FIXED: Grammatical error in error messages. [20]Patch submitted by
- Dag Wieers.
- * FIXED: Use configured normal substitution in preference to the
- default one.
- * FIXED: The eval block macro would execute multiple times if it
- evaluated to None.
- * FIXED: Duplicated entries in TOC of large document. [21]Patch
- submitted by Sebastien Helleu.
- * FIXED: Python 2.4 backward [22]incompatibility.
- * FIXED: 8.6.6 regression broke Jython compatibility. See
- [23]discussion list.
- * FIXED: Leaky file handles in a2x and music and latex filters which
- created incompatibility problems for Jython.
- * FIXED: All Python filters are executed with the same Python
- interpreter that executes the asciidoc parent (previously filters
- were hardwired to execute the python interpreter). This prevents
- [24]Python mix-ups.
- * FIXED: Microsoft Windows shelled command-line truncation that
- caused shelled commands to fail e.g. the data-uri attribute
- failure.
- __________________________________________________________________
-
-3. Version 8.6.6 (2011-09-04)
-
- Release highlights
- * The AsciiDoc plugin architecture has been enhanced, unified and
- extended:
- + Plugin commands have been added to the asciidoc(1) --backend
- option.
- + An asciidoc(1) --theme option has been implemented to specify
- a theme and to manage theme plugins.
- + A plugin build command (for creating plugins) added.
- + build, install, list and remove plugin commands are all
- recognized by asciidoc(1) --backend, --filter and --theme
- options.
- * A security update by Kenny MacDermid removes the use of eval() on
- untrusted input (to disallow code malicious execution).
-
- All additions and changes
- * xhtml11, html5: Made verse and quote block text darker to print
- legibly in Google Chrome browser.
- * Added plugin build command for plugin file creation.
- * Merged --help plugins back to --help manpage so it matches the
- asciidoc(1) manpage.
- * The --filter command-line option can specify the name of filters
- that will be unconditionally loaded.
- * If a filter directory contains a file named __noautoload__ then the
- filter is not automatically loaded (you can used the --filter
- command-line option to override this behavior).
- * tests: Add Italian language tests. Patch submitted by Simon
- Ruderich. See:
- [25]http://groups.google.com/group/asciidoc/browse_thread/thread/5e
- 2e6f4dd740d51a
- * tests: Add tests for localized man pages. Patch submitted by Simon
- Ruderich. See:
- [26]http://groups.google.com/group/asciidoc/browse_thread/thread/5e
- 2e6f4dd740d51a
- * If the section name is prefixed with a + character then the section
- contents is appended to the contents of an already existing
- same-named section (the default behavior is to replace the the
- section).
- * If a configuration file section named docinfo is loaded then it
- will be included in the document header. Typically the docinfo
- section name will be prefixed with a + character so that it is
- appended to (rather than replace) other docinfo sections.
- * Added {sp} intrinsic attribute for single space character. See
- [27]http://groups.google.com/group/asciidoc/browse_thread/thread/a8
- 39aa01db0765d2
- * Fixed TOC and footnotes generator. Patch submitted by Will. See
- [28]http://groups.google.com/group/asciidoc/browse_thread/thread/73
- 4ac5afed736987
- * The asciidoc-confdir attribute is set to the asciidoc executable
- directory if it contains global configuration files i.e. a local
- asciidoc installation.
- * asciidoc now throws an error instead of just a warning of the
- backend configuration file is not found.
- * latex filter: write MD5 file after successful PNG file generation.
- Always delete temp files irrespective of outcome.
- * Added truecolor option to LaTeX filter. Patch submitted by Michel
- Krämer. See:
- [29]http://groups.google.com/group/asciidoc/browse_thread/thread/64
- 36788a10561851
- * Unit test for table column specifiers with merged cells. Patch
- submitted by Simon Ruderich. See:
- [30]http://groups.google.com/group/asciidoc/browse_thread/thread/c9
- 238380a1f2507a
- * Added verbose message for ifeval::[] macro evaluation.
- * Added test case for ifeval::[] evaluation.
- * Security update to remove the use of eval() on untrusted input (to
- disallow code malicious execution). Patch submitted by Kenny
- MacDermid.
- * Changed web site layout from table to CSS based. See
- [31]http://groups.google.com/group/asciidoc/browse_thread/thread/ec
- 8e8481eb0e27b0/d1c035092b5bb7a4?lnk=gst&q=caption+option#d1c035092b
- 5bb7a4
- * a2x: Pass --format option value to asciidoc as a2x-format
- attribute. Patch submitted by Lex Trotman
- ([32]http://groups.google.com/group/asciidoc/browse_thread/thread/3
- e177b84bc133ca9/659796dfadad30ea?lnk=gst&q=a2x+format#659796dfadad3
- 0ea).
- * Added two FAQs submitted by Lex Trotman. See:
- [33]http://groups.google.com/group/asciidoc/browse_thread/thread/16
- d3fb9672a408e7
- * html5,xhtml11: Implemented themes directory structure.
- * html5,xhtml11: Implemented asciidoc --theme management option
- (install, list, build and remove commands).
- * html5,xhtml11: A theme can now optionally include a JavaScript file
- <theme>.js
- * html5,xhtml11: If the data-uri attribute is defined then icons from
- the theme icons directory (if they exist) will be embedded in the
- generated document.
- * Added optional warnings argument to include macros.
- * The asciidoc --verbose option now prints file inclusion messages.
- * xhtml11, html5: Remove necessity for separate manpage CSS files.
- * Added css-signature attribute to tests.
- * Add css-signature attribute to set a CSS signature for the
- document. Patch submitted by Peg Russell, see:
- [34]http://groups.google.com/group/asciidoc/browse_thread/thread/ba
- cbf8aeb8ad6a3a
- * White background for toc2 TOC viewport so that horizontally
- scrolled content does not obscure the the TOC. Patch submitted by
- Lionel Orry, see:
- [35]http://code.google.com/p/asciidoc/issues/detail?id=8
-
- Bug fixes
- * FIXED: Plugin install command: Delete backend directory is install
- fails.
- * FIXED: Plugin install command: Fixed bug extracting binary files on
- Windows (reported by Jean-Michel Inglebert).
- * FIXED: tests: Skip blank sections in testasciidoc.conf test
- configuration file instead of throwing an exception (reported by
- Jean-Michel Inglebert).
- * FIXED: If a plugin Zip file does not contain file permissions
- (probably because it was created under Windows) then install it
- using the default permissions.
- * FIXED: Fixed missing quote in preceding LaTeX filter patch. Fix
- submitted by Simon Ruderich. See:
- [36]http://groups.google.com/group/asciidoc/browse_thread/thread/64
- 36788a10561851
- * FIXED: Some path attributes were processed as escaped Python
- strings which could result in corrupted path names with backslash
- separated Windows path names. Reported by Will. See:
- [37]http://groups.google.com/group/asciidoc/browse_thread/thread/e8
- f3938bcb4c8bb4/44d13113a35738ef
- * FIXED: Vertically spanned table cells resulted in incorrect column
- styles being applied to some cells. Reported by Will:
- [38]http://groups.google.com/group/asciidoc/browse_thread/thread/c9
- 238380a1f2507a/9afc4559d51e1dbd
- * FIXED: LaTeX backend: fixed bad escapes. Patch submitted by Mark
- McCurry:
- [39]http://groups.google.com/group/asciidoc/browse_thread/thread/8c
- 111f1046b33691/158a944cf4d5ff0d?lnk=gst&q=latex+escapes#158a944cf4d
- 5ff0d
- * FIXED: When using slidy backend, display of characters with accents
- is wrong because of meta http-equiv line missing. Reported by
- Fabrice Flore-Thebault. See:
- [40]http://groups.google.com/group/asciidoc/browse_thread/thread/ea
- f25f21d1da180a
- __________________________________________________________________
-
-4. Version 8.6.5 (2011-05-20)
-
- Release highlights
- * The addition of an html5 backend to generate HTML 5 output. Apart
- from the inclusion of audio and video block macros the html5
- backend is functionally identical to the xhtml11 backend.
- * A new flask theme for xhtml11 and html5 backends inspired by the
- [41]Flask website styling (see toc2 example in the next item
- below).
- * The new toc2 attribute generates a table of contents in the left
- hand margin (xhtml11 and html5 backends). [42]This example was
- generated using the following command:
- asciidoc -b html5 -a icons -a toc2 -a theme=flask article.txt
- * a2x(1) now has a flexible mechanism for copying arbitrary resource
- files to HTML based outputs — this is very handy for generating
- EPUB files with embedded fonts and other resources.
- + The a2x(1) --resource option can be used to inject any file
- into EPUB output documents e.g. CSS resources such as fonts
- and background images.
- + Explicitly specified resources are added to the EPUB OPF
- manifest automatically.
- + You can explicitly specify file extension MIME types.
- + The enhanced resource processing works around a couple of
- DocBook XSL bugs (see [43]EPUB Notes).
-
- All additions and changes
- * A new flask theme for xhtml11 and html5 backends. A shameless
- knock-off of the [44]Flask website styling.
- * Added HTML 5 article with toc2 table of contents to the example on
- the AsciiDoc website home page.
- * Added filters and topics help topics. Fixed documentation errors in
- help text. Patch submitted by Lionel Orry, see:
- [45]http://groups.google.com/group/asciidoc/browse_thread/thread/9d
- a9d48a6461ff14
- * Pass parent configuration files, command-line attributes and header
- attributes to table asciidoc filters. Based on patch submitted by
- Simon Ruderich, see:
- [46]http://groups.google.com/group/asciidoc/browse_thread/thread/5c
- 792cbb395b753b
- * Allow a title attribute entry in the document header so that HTML
- backends can set the title element separately from the displayed
- document title (the doctitle attribute).
- * Pass lang attribute to asciidoc table style filter. Patch submitted
- by Simon Ruderich, see:
- [47]http://groups.google.com/group/asciidoc/browse_thread/thread/e2
- 100b7cb29283ce
- * xhtml11,html5: Added toc2 attribute which generates a scrollable
- table of contents in the left hand margin. Based on customized CSS
- written by Suraj Kurapati, see
- [48]http://groups.google.com/group/asciidoc/browse_thread/thread/c5
- e30ee5555877f5
- * Added asciidoc-confdir intrinsic attribute which expands to the
- global conf directory.
- * Documented that you can specify multiple CSS files with the a2x(1)
- --stylesheet command option. See:
- [49]http://groups.google.com/group/asciidoc/browse_thread/thread/ba
- f3218551d05a05
- * Improved xhtml11 backend’s table of contents generation latency.
- Patch submitted by Hongli Lai. See:
- [50]http://groups.google.com/group/asciidoc/browse_thread/thread/5a
- 7fe64fbfd65ad
- * Added html5 backend.
- * For consistency converted all DOS formatted configuration and text
- files to UNIX format.
- * html4: Added ability to use role attribute with most block
- elements. Patch contributed by Simon Ruderich. See
- [51]http://groups.google.com/group/asciidoc/browse_thread/thread/56
- 20ba634fdb030a
- * Added Dutch language configuration file and accompanying test file
- (contributed by Dag Wieers, see
- [52]http://groups.google.com/group/asciidoc/browse_thread/thread/f9
- 69b9ce987d7f5d).
- * Configuration files are loaded in two passes when the -e
- command-line option is used (the same behavior as when the -e
- option is not used). Patch submitted by haad. See
- [53]http://groups.google.com/group/asciidoc/browse_thread/thread/cd
- 0f47495fd04181 and
- [54]http://code.google.com/p/asciidoc/issues/detail?id=6&q=label%3A
- Priority-Medium
- * Documented how to include embedded fonts in an EPUB document.
- * a2x: Added .<ext>=<mimetype> resource specifier syntax.
- * a2x: Enable admonition icons in example EPUBs.
- * a2x: allow environment variables and tilde home directories in
- resource manifest files.
- * a2x: don’t process non-existent resource directories.
- * a2x: assume resource option is a directory if the name ends with a
- directory separator.
- * a2x: Added a new syntax to the --resource option specifier which
- allows the destination path to be specified.
- * a2x: Copy resources referenced in the OPF and resources referenced
- by the generated HTML (in theory DocBook XSL should ensure they are
- identical but this is not always the case e.g.
- [55]http://sourceforge.net/tracker/?func=detail&atid=373747&aid=285
- 4075&group_id=21935).
- * Drop border from callout list image links.
- * html4: Moved manpage NAME section out of header so that the name
- section is rendered when the asciidoc(1) --no-header-footer option
- is specified (so that manpages processed blogpost include the NAME
- section).
- * Vim syntax highlighter: TODO markers now appear in list items and
- literal paragraphs and blocks.
- * Constrained quotes can now be bounded on the left by a } character.
- See:
- [56]http://groups.google.com/group/asciidoc/browse_thread/thread/b2
- 4cc3362f35b801
- * Added text-decoration roles (underline, overline, line-through,
- blink) for xhtml11 and html5 outputs.
-
- Bug fixes
- * FIXED: epubcheck 1.1 previously issued a warning for files not
- registered in the manifest (epubcheck 1.0.5 did not). This resulted
- in a problem compiling the adventures-of-sherlock-holmes.txt
- example (the underline.png resource was not in the manifest).
- __________________________________________________________________
-
-5. Version 8.6.4 (2011-02-20)
-
- Additions and changes
- * Added text foreground and background color along with text size CSS
- styles for XHTML outputs, see
- [57]http://www.methods.co.nz/asciidoc/userguide.html#X96.
- * Vim syntax highlighter: highlight macros that start with an
- attribute reference (a common idiom).
- * Vim syntax highlighter: highlight attribute references in macro
- attribute lists.
- * Attribute entries can be used to set configuration markup
- templates.
- * Double-width East Asian characters in titles now correctly match
- the title underline widths. Submitted by Changjian Gao (see
- [58]http://groups.google.com/group/asciidoc/browse_thread/thread/77
- f28b0dfe60d262).
- * Implemented [59]asciidoc(1) filter commands, see:
- [60]http://groups.google.com/group/asciidoc/browse_thread/thread/40
- c64cd33ee1905c
- * User’s home directory now calculated in a platform independent
- manner.
- * Added double-quote characters to French language file. Patch
- contributed Yves-Alexis Perez, see:
- [61]http://groups.google.com/group/asciidoc/browse_thread/thread/e1
- 5282f072413940
- * Vim Syntax highlighter: Highlight closing OpenBlocks which
- immediately follow a literal paragraph.
- * Changed UNIX /dev/null to OS independent os.devnull in filters
- code. Suggested by Henrik Maier:
- [62]http://groups.google.com/group/asciidoc/browse_thread/thread/5a
- c8e8ea895147e9
- * Vim syntax highlighter: Single and double quoted text now
- highlights correctly when preceded by an attributes list.
- * Added Ukrainian language file (lang-uk.conf). Added double-quote
- characters to Russian language file.conf). Patches contributed by
- Lavruschenko Oleksandr, see
- [63]http://groups.google.com/group/asciidoc/browse_thread/thread/e1
- 5282f072413940
- * Single and double quote characters are now set using the {lsquo},
- {rsquo}, {ldquo} and {rdquo} attributes. This makes is easy to
- customise language specific quotes. See:
- [64]http://groups.google.com/group/asciidoc/browse_thread/thread/e1
- 5282f072413940
- * Implemented conf-files attribute to allow configuration files to be
- specified in the source document. Suggested by Lex Trotman, see:
- [65]http://groups.google.com/group/asciidoc/browse_thread/thread/b1
- 1066a828ab45b9
-
- Bug fixes
- * FIXED: Auto-generated section title ids are now Unicode aware.
- * FIXED: Setting quotes configuration entries using document
- attribute entries failed if the attribute entry was not in the
- document header. See:
- [66]http://groups.google.com/group/asciidoc/browse_thread/thread/a1
- dd0562dee8b939
- * FIXED: If the input and output file names were different then the
- output file name was incorrectly used to synthesize docinfo file
- names. Reported by Christian Zuckschwerdt.
- * FIXED: An error can occur when more than one consecutive quotes are
- defined as a blank string. Reported by Peggy Russell.
- * FIXED: Encoding error in automatically generated author initials.
- Patch submitted by Xin Wang. See:
- [67]http://groups.google.com/group/asciidoc/browse_thread/thread/f4
- 4615dca0b834e9
- __________________________________________________________________
-
-6. Version 8.6.3 (2010-11-14)
-
- Additions and changes
- * Added and unbreakable option to bulleted and numbered lists (thanks
- to Henrik Maier for this patch).
- * Added ifeval::[] system macro (thanks to Henrik Maier for
- suggesting this feature).
- * The image scale attribute sets the DocBook imagedata element scale
- attribute. Patch submitted by Henrik Maier.
- * DocBook preface, colophon and dedication style section titles now
- work. Based on patch submitted by Henrik Maier.
- * a2x: Do not inject xsltproc parameters if they were specified on
- the command-line (parameter double-ups generate xsltproc Global
- parameter already defined errors).
- * a2x: Refactored xsltproc parameter injection.
- * a2x: articles chunked at section level by default.
- * attributes, titles and specialcharacters sections are now read from
- the local asciidoc.conf file before the header is parsed. This
- fixes a regression problem. See
- [68]http://groups.google.com/group/asciidoc/browse_thread/thread/1b
- 3f88f1f8118ab3
- * Document header attributes take precedence over configuration file
- attributes.
- * Refactored music, graphviz and latex filter configurations.
- * Refactored source filter configuration and added literal paragraph
- source style.
- * Separated paragraph styles from paragraph syntax — any style can be
- applied to any syntax.
- * Added listing and quote paragraph styles.
- * Renamed paragraph default style to normal.
- * Updated --help option text.
- * a2x: The asciidoc_opts, dblatex_opts, fop_opts and xsltproc_opts
- command-line options can be specified multiple times. This makes
- embedding multiple a2x options in document headers easier to manage
- and less error prone.
- * Added ASCIIMathML and LaTeXMathML support to slidy backend.
- * Pass the encoding attribute to the Pygments source highlight filter
- command.
- * a2x: HTML Help .hhk file named after AsciiDoc source file.
- * a2x: Added --xsl-file option to allow custom XSL stylesheets to be
- specified.
- * Make builds the man pages. Patch submitted by Sebastian Pipping.
- See
- [69]http://groups.google.com/group/asciidoc/browse_thread/thread/c2
- 1c2902c29bae64
-
- Bug fixes
- * FIXED: Sometimes double backquotes were misinterpreted as inline
- literal macros. See:
- [70]http://groups.google.com/group/asciidoc/browse_thread/thread/f5
- 10ea82a88aaee8
- * FIXED: Regression in 8.6.2: command-line attributes were not
- available to the global asciidoc.conf.
- * FIXED: Postponed document title substitutions until backend conf
- files have been loaded (8.6.2 regression). See
- [71]http://groups.google.com/group/asciidoc/browse_thread/thread/42
- b63ce90c2563b8
- * FIXED: The XSL Stylesheets customizations were preventing chapter
- and section level TOCs from being generated when using XSL
- Stylesheets via a2x. See
- [72]http://groups.google.com/group/asciidoc/browse_thread/thread/42
- b63ce90c2563b8
- * FIXED: “UnicodeDecodeError: 'ascii' codec can’t decode byte” error.
- This error is due to a limitation in the Python HTMLParser module,
- see: [73]http://bugs.python.org/issue3932
- * FIXED: Broken --no-conf option (8.6.2 regression).
- * FIXED: Regression in 8.6.2: configuration attribute entries set in
- the document header may cause a FAILED: incomplete configuration
- files error.
- * FIXED: html4: corrected self closed meta tags.
- * FIXED: a2x regression in 8.6.2: HTML Help .hhp file name had
- reverted to default name instead of the AsciiDoc source file name.
- See:
- [74]http://groups.google.com/group/asciidoc/browse_thread/thread/de
- dc961b23e9ac56
- * FIXED: Attributes in man page title caused it to be dropped
- resulting in invalid DocBook output.
- * FIXED: make uninstall now deletes the asciidoc.1 and a2x.1 man
- pages.
- __________________________________________________________________
-
-7. Version 8.6.2 (2010-10-03)
-
- Additions and changes
- * docbook45: Enclosed bibliographic lists in a bibliodiv — you can
- now include block titles with bibliographic lists.
- * Added optional keywords, description and title document header
- meta-data attributes to HTML backends for SEO.
- * AttributeEntry values can span multiple lines with a ' +' line
- continuation.
- * Added slidy backend (based on Phillip Lord’s slidy backend
- [75]https://phillordbio-asciidoc-fixes.googlecode.com/hg/).
- * Implemented OpenBlock partintro style for book part introductions.
- * Comment lines substitute special characters only.
- * Backend specific global configuration files (all except
- asciidoc.conf) are loaded after the header has been parsed —
- virtually any attribute can now be specified in the document
- header.
- * xhtml11: Volnitsky theme: allow bulleted lists to have intervening
- children.
- * xhtml11: refactored CSS font-family rules to start of file.
- * xhtml11: list bullets colored gray.
- * ifdef and ifndef system block macros accept multiple attribute
- names: multiple names separated by commas are ored; multiple
- attribute names separated by pluses are anded.
- * xhtml11: Volnitsky theme: set max-width on labeled lists.
- * Vim syntax highlighter: Entities inside quoted text are now
- highlighted.
- * Added role and id attributes to HTML outputs generated by
- OpenBlocks.
- * Allow floating titles to generate h1 (level 0) titles in HTML
- outputs.
- * Added a start attribute to numbered lists to set the start number.
- See:
- [76]http://groups.google.com/group/asciidoc/browse_thread/thread/c1
- 4a4c3b1e4f6dc5
- * Added two more docinfo attributes docinfo1 and docinfo2 to allow
- and control inclusion of a shared docinfo file. See
- [77]http://groups.google.com/group/asciidoc/browse_thread/thread/c9
- 48697943432e24
- * Vim syntax highlighter highlights multi-name conditional
- attributes.
- * LaTeX backend patch submitted by Andreas Hermann Braml (see
- [78]http://groups.google.com/group/asciidoc/browse_thread/thread/1c
- 415fc4540ce5e5).
- * Implemented backend aliases; renamed docbook.conf to docbook45.conf
- and aliased docbook45 backend to docbook; aliased xhtml11 to html.
-
- Bug fixes
- * FIXED: Filter commands located in filter directories local to the
- source document that where not in the search PATH where not found.
- * FIXED: Volnitsky theme: Verseblock font set normal instead of
- monospaced.
- * FIXED: xhtml11: Callout icons were not rendered as Data URIs when
- icons and data-uri attributes were specified.
- * FIXED: Long standing bug: nested include macros did not restore the
- parent document infile and indir attributes. See:
- [79]http://groups.google.com/group/asciidoc/browse_thread/thread/87
- 12a95e95a292a7
- * FIXED: html4: set preamble ID anchor.
- * FIXED: xhtml11: dropped unusable id and role attributes from
- preamble template.
- * FIXED: Bug in multi-name conditional attributes e.g. {x,y#} fails
- if x or y is undefined.
- * FIXED: latex filter not being installed by Makefile. Thanks to
- Grant Edwards for this patch. See
- [80]http://groups.google.com/group/asciidoc/browse_thread/thread/c4
- 427a3902d130a8
- * FIXED: a2x: Long-standing bug in a2x which always passes
- --string-param navig.graphics 0 to xsltproc, regardless of whether
- icons are enabled or not. Reported by Michael Wild:
- [81]http://groups.google.com/group/asciidoc/browse_thread/thread/59
- a610068e4acb58
- __________________________________________________________________
-
-8. Version 8.6.1 (2010-08-22)
-
- Additions and changes
- * a2x: --resource-dir option renamed to --resource.
- * a2x: --resource option accepts both file and directory names.
- * a2x: Added -m,--resource-manifest option.
- * Added Vim syntax highlighting for quote attribute lists.
- * Load asciidoc.conf from all configuration directories before any
- other configuration files. This ensures that attributes used for
- conditional inclusion are set before backend configuration files
- are processed. Previously if you wanted to control global conf file
- inclusion your only choice was to modify the global asciidoc.conf
- file.
- * AsciiDoc Quote element attributes have been simplified and
- generalized — positional color and size attributes and named role
- attribute have been replaced by a single positional attribute.
-
- Bug fixes
- * FIXED: testasciidoc.py: BACKEND command argument was being ignored.
- * FIXED: Broken docinfo file functionality in html4 and xhtml11
- backends (previously the docinfo file was included in the body
- instead of the header).
-
- 8.1. Regression issues
-
- This release breaks compatibility with quoted element positional color
- and size attributes (HTML backends). To revert to the deprecated quote
- behavior define the deprecated-quotes attribute in the global
- asciidoc.conf file or on the command-line. For a more detailed
- explanation of the rationale behind this change see
- [82]http://groups.google.com/group/asciidoc/browse_thread/thread/b22603
- bfb879418c.
- __________________________________________________________________
-
-9. Version 8.6.0 (2010-08-16)
-
- Additions and changes
- * The AsciiDoc distribution can now be built “out of the box” from
- the distribution tarball or the Mercurial repository (provided you
- have the requisite build applications installed).
- * The global configuration files directory is ignored by both
- asciidoc and a2x if AsciiDoc configuration files are installed in
- the same directory as the asciidoc executable. This change allows
- both a system wide copy and multiple local copies of AsciiDoc to
- coexist on the same host PC.
- * CSS quirks mode is no longer the default xhtml11 output
- ([83]http://groups.google.com/group/asciidoc/browse_thread/thread/1
- c02d27d49221aa2).
- * Relaxed anchor ID name syntax
- ([84]http://groups.google.com/group/asciidoc/browse_thread/thread/5
- f3e825c74ed30c).
- * Added document files: doc/epub-notes.txt,
- doc/publishing-ebooks-with-asciidoc.txt.
- * a2x: If all other resource locations are exhausted then recursively
- search directories named images and stylesheets in the asciidoc
- configuration files directory.
- * a2x: options can also be set in the AsciiDoc source file. If the
- source file contains a line beginning with // a2x: then the
- remainder of the line will be treated as a2x command-line options.
- * Added dblatex table-width processing instruction — tables generated
- by dblatex now observe the AsciiDoc table width as a percentage
- (thanks to Gustav Broberg for suggesting this enhancement).
- * a2x: Don’t exit if the --epubcheck option is set and epubcheck is
- missing, issue warning and continue.
- * Added a global plaintext attribute for dealing with large amounts
- of imported text.
- * The author name format has been relaxed, if the the author does not
- match the formal specification then it is assigned to the firstname
- attribute (previously asciidoc exited with an error message).
- * FAQ and documentation updates.
- * Refactored chunked.xsl and epub.xsl files.
- * Exchanged article.epub for more relevant book.epub on website.
- * Put asciidoc.epub User Guide on website.
- * a2x: Chunking EPUB and HTML outputs set to a per chapter basis and
- the first chapter is separate from preceding contents.
- * Changed dates format in example article and books to suppress EPUB
- validation error.
- * Added style and role CSS classes to xhtml11 section templates.
- * Added the role element to xhtml11 backend block templates.
- * Suppressed md5 module deprecation warning from music and Graphviz
- filters.
- * Pygments ([85]http://pygments.org/) option added to source code
- highlight filter. Based on Pygments source code filter written by
- David Hajage
- ([86]http://groups.google.com/group/asciidoc/browse_thread/thread/d
- 8d042f5a3021369/8934ebbb8cb7144b).
- * xhtml11: Added a new theme (volnitsky). Written and contributed by
- Leonid V. Volnitsky.
- * xhtml11: Set body element class name to document type.
- * Added refentryinfo element and contents (including revdate) to man
- page DocBook output. Man pages are now dated using the revdate
- attribute value if it has been defined. Based on patch supplied by
- Rainer Muller
- [87]http://groups.google.com/group/asciidoc/browse_frm/thread/319e5
- cd94493e330/3fcb83fab067af42.
- * Added {template:...} system attribute.
- * Table of contents attribute toc can now be specified in the
- document header.
- * Reimplemented music and latex filter -m option functionality when
- the input is stdin using MD5 checksums.
- * Added latex filter.
- * Added auto file name generation to image generating filters
- (latex,music, graphviz).
- * Added counter2 and set2 system attributes (to implement image auto
- file name generation).
- * Undefined attribute in filter command generates error but does not
- exit.
- * Attribute substitution proceeds from start line to end line
- (previously was in reverse order which was really confusing).
- * Tidied up music filter code:
- + Format option is optional and default to abc unless Lilypond
- notation detected.
- + The -m option does not apply to stdin input.
- * Added paragraph styles to music and graphviz filters.
- * Documented dynamic template names. 753: Graphviz filter can now
- generate SVG format images. Patch submitted by Elmo Todurov, see:
- [88]http://groups.google.com/group/asciidoc/browse_frm/thread/fe9b3
- 3d8f5f1e0af The xhtml11 SVG Graphviz template marked EXPERIMENTAL.
- No SVG support for other backends.
- * AsciiDoc template names can now contain embedded attribute
- references.
- * Added legalnotice tag to doc/article-docinfo.xml example.
- * xhtml11 backend: Callouts and callout lists display callout icons
- when the icons attribute is defined. See
- [89]http://groups.google.com/group/asciidoc/browse_frm/thread/8eda3
- ea812968854
- * Document attribute names are case insensitive everywhere, this
- makes using attribute entries more consistent e.g. previously
- :VERS: had to be refered to
- * Hungarian translation of footer-text (submitted by Miklos Vajna).
- See
- [90]http://groups.google.com/group/asciidoc/browse_frm/thread/7174c
- b7598993c72#
- * asciidocapi.py 0.1.2: Can now load AsciiDoc script named asciidoc.
- See
- [91]http://groups.google.com/group/asciidoc/browse_frm/thread/66e7b
- 59d12cd2f91 Based on patch submitted by Phillip Lord.
- * German translation of footer-text (submitted by Simon Ruderich).
- See
- [92]http://groups.google.com/group/asciidoc/browse_frm/thread/7174c
- b7598993c72
- * Pushed HTML footer text into language conf files with the
- introduction of a [footer-text] configuration file template
- section. See
- [93]http://groups.google.com/group/asciidoc/browse_frm/thread/7174c
- b7598993c72
-
- Bug fixes
- * FIXED: Sometimes multiple double quoted text elements in the same
- paragraph were mistakenly seen as starting with an inline literal.
- See
- [94]http://groups.google.com/group/asciidoc/browse_frm/thread/219c8
- 6ae25b79a21
- * FIXED: localtime and doctime attributes calculated incorrect
- daylight saving / non daylight saving timezones and consequently so
- did HTML footers. Patch submitted by Slawomir Testowy. See
- [95]http://groups.google.com/group/asciidoc/browse_frm/thread/af652
- 507caf6cec9
- * FIXED: Missing selector for List of examples title in DocBook CSS
- file. Patch submitted by Laurent Laville. See
- [96]http://groups.google.com/group/asciidoc/browse_frm/thread/3f969
- 00f7fbf5620
- * FIXED: Broken accents in lang-hu.conf. See:
- [97]http://groups.google.com/group/asciidoc/browse_frm/thread/7174c
- b7598993c72
- * FIXED: DocBook XSL generated HTML callout lists are properly
- aligned. Submitted by Lionel Orry. See
- [98]http://groups.google.com/group/asciidoc/browse_frm/thread/2ff80
- 2547b6a75ea
- * FIXED: Filter execution now occurs prior to filter markup template
- substitution to ensure image data URI encoding happens after image
- generation (see
- [99]http://groups.google.com/group/asciidoc/browse_thread/thread/14
- e8fcb289a135b).
- * FIXED: The section numbers no longer increment when the numbered
- attribute is undefined (see
- [100]http://groups.google.com/group/asciidoc/browse_thread/thread/f
- aa36e9e5c7da019/d24cab3fe363e58d).
- __________________________________________________________________
-
-10. Version 8.5.3 (2010-01-18)
-
- Additions and changes
- * a2x: Added a2x configuration file options ASCIIDOC_OPTS,
- DBLATEX_OPTS, FOP_OPTS, XSLTPROC_OPTS (appended to same-named
- command-line options). See
- [101]http://groups.google.com/group/asciidoc/browse_frm/thread/ac4b
- 9bfa2116db28
- * Dropped .hgignore from the repository. See
- [102]http://groups.google.com/group/asciidoc/browse_frm/thread/c17a
- bd175778f5ea
- * Don’t pass verbose options to asciidoc table filter so that
- asciidocapi messages are not discarded. See:
- [103]http://groups.google.com/group/asciidoc/browse_frm/thread/c17a
- bd175778f5ea
- * Added ./tests/data/lang-pt-BR-test.txt file to the repository.
- * xhtml11: Verse block and verse paragraph content enveloped in a pre
- tag (instead of a div) so it renders better in text-only browsers.
- See:
- [104]http://groups.google.com/group/asciidoc/browse_frm/thread/1b6b
- 66adb24e710
- * User Guide: Clarified Passthrough Blocks (suggested by Simon
- Ruderich).
- * FAQ: How can I include lines of dashes inside a listing block?
- * FAQ errata and updates (submitted by Simon Ruderich).
- * User Guide errata.
- * Simplified asciidoc-toc processing instruction and included lists
- of figures, tables, examples and equations in books (i.e. revert to
- pre-8.5.0 behavior).
- * Attempted to have dblatex recognise the asciidoc-toc processing
- instruction but couldn’t get it to work.
- * Added notitle attribute to allow the document title to be hidden.
-
- Bug fixes
- * FIXED: Regression: system attribute escaping did not work.
- * FIXED: Website: broken image links in chunked User Guide.
- __________________________________________________________________
-
-11. Version 8.5.2 (2009-12-07)
-
- Additions and changes
- * Updated example article and book documents with the recommended
- explicit section name syntax (see the Special section titles vs.
- explicit template names sidebar in the AsciiDoc User Guide).
- * Added Italian language configuration file (contributed by Fabio
- Inguaggiato).
- * Added header table style. See:
- [105]http://groups.google.com/group/asciidoc/browse_frm/thread/a23f
- ea28394c8ca9
- * Pass icons, data-uri, imagesdir, iconsdir attributes to asciidoc
- table style filter so that images are rendered in table cells.
- * Pass trace and verbose attributes to asciidoc table style filter so
- diagnostic information is printed from table cell source.
- * The eval system attribute can be nested inside other system
- attributes.
- * HTML outputs: Table and figure caption punctuation set to more
- usual syntax.
- * docbook backend: footnotes can now contain embedded images. See
- [106]http://groups.google.com/group/asciidoc/browse_frm/thread/50b2
- 8f6941de111a
- * CSS tweaks so that tables processed by DocBook XSL Stylesheets have
- the default asciidoc xhtml11 backend styling. See
- [107]http://groups.google.com/group/asciidoc/browse_frm/thread/dfe5
- 204d5b2c9685
- * Block titles take precedence over section titles to avoid titled
- delimited blocks being mistaken for two line section titles (see
- [108]http://groups.google.com/group/asciidoc/browse_frm/thread/f0b6
- f9989f828c3).
- * Section title trace displays level and title text.
- * FAQ additions.
- * Added {zwsp} (zero width space) attribute.
- * Undefined paragraph styles are reported (previously threw a runtime
- error).
- * Eliminated empty preamble generation.
- * Floating titles now processed in all contexts.
- * Implemented auto-lettered appendix names and updated example
- documents.
- * Section numbering can be disabled in HTML outputs with a
- :numbered!: AttributeEntry.
- * xhtml11: Nicer default quote block styling.
- * Exclude floating titles from xhtml11 table of contents. Patch
- submitted by Mark Burton (see
- [109]http://groups.google.com/group/asciidoc/browse_frm/thread/14ae
- fc1cb6bd85f5).
- * Enhanced doc/article-docinfo.xml example docinfo file.
- * Vim syntax highlighter improvements.
-
- Bug fixes
- * FIXED: Absolute imagesdir and iconsdir attribute path names do not
- work with the xhtml11 data-uri encoding. See
- [110]http://groups.google.com/group/asciidoc/browse_frm/thread/cb8b
- 7694bbc82a6
- * FIXED: Regression issue with inline data-uri images. See
- [111]http://groups.google.com/group/asciidoc/browse_frm/thread/cb8b
- 7694bbc82a6
- * FIXED: An unexpected error occurred when processing a table
- containing CSV data if the cols attribute was not explicitly
- specified. See
- [112]http://groups.google.com/group/asciidoc/browse_frm/thread/4b0f
- 364b477ec165
- __________________________________________________________________
-
-12. Version 8.5.1 (2009-10-31)
-
- Additions and changes
- * If an AsciiDoc document file begins with a UTF-8 BOM (byte order
- mark) then it is passed transparently through to the output file.
- The BOM is stripped from included files. See
- [113]http://groups.google.com/group/asciidoc/browse_frm/thread/e5e6
- 1823ff4203cd
- * Added AsciiDoc role attribute to quoted text. Sets class attribute
- in HTML outputs; role attribute in DocBook outputs. See:
- [114]http://groups.google.com/group/asciidoc/browse_frm/thread/2aa3
- e5711d243045
- * Conditional attribute syntax extended: they now accept multiple
- ORed or ANDed attribute names.
- * The xhtml11 backend dynamically processes footnotes using
- JavaScript.
- * Tidied up and namespaced xhtml11 JavaScript.
- * Superceded javascripts/toc.js with javascripts/asciidoc-xhtml11.js.
- * Added disable-javascript attribute (xhtml11 backend).
- * Styled HTML footnotes.
- * Added links to HTML footnote refs.
- * Added title attribute to inline image macros to display popup
- “tooltip” (HTML outputs only).
- * Single-quoted attribute values are substituted in block macros
- (just like the AttributeList element).
- * For consistency changed underscores to dashes in attribute names.
- Public attributes with underscores retained for compatibility.
- * Added Brazilian Portuguese language configuration file (contributed
- by Thiago Farina).
- * Added leveloffset attribute to make it easier to combine documents.
-
- Bug fixes
- * FIXED: a2x: --dblatex-opts is now processed last so
- asciidoc-dblatex.xsl params can be overridden. Patch submitted by
- Mark Fernandes (see
- [115]http://groups.google.com/group/asciidoc/browse_frm/thread/5215
- c99dcc865e7d).
- * FIXED: An error occurred if a directory in current path with same
- name as executable.
-
- 12.1. Regression issues
-
- There’s been quite a bit of tiding up to the xhtml11 JavaScript. The
- most obvious change is that the toc.js script has been superceded by
- asciidoc-xhtml11.js so if you’re linking you’ll need get a copy of the
- new file from the distribution javascripts directory.
-
- If you use customised xhtml11 configuration file [header] and [footer]
- sections and you want them to use the new footnotes feature then you’ve
- got a bit more work to do:
- 1. The onload event expression changed.
- 2. The new <div id="content">...</div> div envelopes document content.
- 3. You need to add <div id="footnotes">...</div> div to the
- [footnotes] section for footnotes to work.
- 4. Drop the ifdef::toc[] macro that surround JavaScript inclusion.
-
- Take a look at the [header] and [footer] changes in the xhtml11.conf
- diff to see what’s going on:
- [116]http://hg.sharesource.org/asciidoc/diff/55a5999bfd04/xhtml11.conf
- __________________________________________________________________
-
-13. Version 8.5.0 (2009-10-04)
-
- Additions and changes
- * Implemented a float attribute for tables and block images (HTML
- outputs only).
- * Added unfloat::[] block macro to cancel floating.
- * Added table align attribute to (HTML outputs only).
- * The image align attribute now works with HTML backends.
- * Renamed table cell align attribute to halign so it doesn’t clash
- with the new table align attribute.
- * Added breakable and unbreakable options to AsciiDoc example and
- block image elements.
- * [miscellaneous] section entries now update properly when set from a
- document AttributeEntry.
- * [miscellaneous] section pagewidth entry accepts fractional values.
- * Fractional column widths are now calculated correctly when using
- fractional pageunits (DocBook tables).
- * Use DocBook XSL table width processing instructions.
- * asciidoc KeyboardInterrupt exits with error code 1.
- * Added set system attribute to allow attributes to be set from
- configuration file templates.
- * Allow constrained quotes to be bounded on the left by a colons and
- semicolons, see
- [117]http://groups.google.com/group/asciidoc/browse_frm/thread/b276
- a927fdc87995
- * Titled listing and literal blocks (DocBook outputs) no longer
- default to examples. See
- [118]http://groups.google.com/group/asciidoc/browse_frm/thread/f4df
- 7c9eec01a9bd
- * Updated language file table, figure and example captions to
- accommodate new auto-numbering in html4 and xhtml11 backends.
- * Titled source highlight filter listings generated by docbook
- backend are now rendered as examples. See
- [119]http://groups.google.com/group/asciidoc/browse_frm/thread/f4df
- 7c9eec01a9bd
- * Implemented counter system attribute.
- * Use counter system attributes to number titled tables and block
- images in HTML backends.
- * Added program name suffix to console messages.
- * Added substitution to the AttributeEntry passthrough syntax, this
- replaces the now unnecessary attributeentry-subs attribute.
- * Allow passthrough inline macro syntax to be used in
- AttributeEntrys.
- * Reinstated 8.4.4 default lang attribute behavior. See
- [120]http://groups.google.com/group/asciidoc/browse_frm/thread/d299
- 24043e21cb6a.
- * Added max-width attribute to the xhtml11 backend to set maximum
- display width. See
- [121]http://groups.google.com/group/asciidoc/browse_frm/thread/74d9
- a542b79ccd50.
- * Added a2x.py, a rewritten and much enhanced version of the old a2x
- bash script.
- * The new a2x can output EPUB formatted documents.
- * Added --safe option and deprecated --unsafe option. Patch submitted
- by Todd Zullinger. See
- [122]http://groups.google.com/group/asciidoc/browse_frm/thread/ea3a
- 8ea399ae5d2a and
- [123]http://groups.google.com/group/asciidoc/browse_frm/thread/69b3
- 183fdab7c6a5
- * Added CHECK and TEST todo highlight words to Vim syntax
- highlighter.
- * Line breaks, page breaks, and horizontal rulers are now processed
- by dblatex, thanks to a patch submitted by Mark Fernandes
- ([124]http://groups.google.com/group/asciidoc/browse_frm/thread/a25
- 4cf949ea7c6c5).
- * Allow footnote macros hard up against the preceding word so the
- rendered footnote mark can be placed against the noted text without
- an intervening space (patch submitted by Stas Bushuev,
- [125]http://groups.google.com/group/asciidoc/browse_frm/thread/e1dc
- b7ee0efc17b5).
- * Normalized path in safe_filename function (submitted by Todd
- Zullinger,
- [126]http://groups.google.com/group/asciidoc/browse_frm/thread/69b3
- 183fdab7c6a5).
- * The Asciidoc numbered and toc attributes cause DocBook outputs to
- include asciidoc-numbered and asciidoc-toc processing instructions,
- these are used by DocBook XSL to include section numbering and
- table of contents (like Asciidoc HTML backends). For backward
- compatibility both numbered and toc attributes are defined by
- default when the docbook backend is used. See
- [127]http://groups.google.com/group/asciidoc/browse_frm/thread/1bad
- ad21ff9447ac.
- * data-uri attribute is now evaluated dynamically and can be set in
- document body (previously could only be set from command-line).
- * Added sys3 and eval3 system attributes to passthrough generated
- output, this fixes the data-uri inline image problem:
- [128]http://groups.google.com/group/asciidoc/browse_frm/thread/a42d
- b6bc54c2c537.
- * Missing language file generates a warning instead of an error.
- * Updated Spanish language file (updates contributed by Gustavo
- Andrés Gómez Farhat).
-
- Bug fixes
- * FIXED: Options in an AttributeList option attribute are merged with
- (rather than replace) configuration file options.
- * FIXED: Comment blocks and comment block macros no longer consume
- preceding block titles and attribute lists.
- * FIXED: examples/website/layout1.conf and
- examples/website/layout2.conf TOC problem. Submitted by Mark
- (burtoogle). See
- [129]http://groups.google.com/group/asciidoc/browse_frm/thread/b9c6
- 3be67dd1d11c
- * FIXED: Only the first occurrence of passthrough macro was
- substituted. Patch submitted by Peter Johnson. See
- [130]http://groups.google.com/group/asciidoc/browse_frm/thread/1269
- dc2feb1a482c
- * FIXED: asciidoc now runs on Jython 2.5.0.
- * FIXED: Wordpress margins and pads in a number of block elements
- ([131]http://groups.google.com/group/asciidoc/browse_frm/thread/36f
- f073c79cbc20a).
-
- 13.1. Regression issues
-
- * Tables generated by dblatex occupy 100% of the available space
- regardless of the width attribute setting. To restore width
- behavior change the pageunits miscellaneous parameter to pt. You
- can do this from the command-line with the -a pageunits=pt option.
- See [132]DocBook table widths.
- __________________________________________________________________
-
-14. Version 8.4.5 (2009-05-24)
-
- Additions and changes
- * Added manpage Name and Synopsis section title customization to
- languages configuration files.
- * Synopsis manpage section no longer mandatory.
- * Section markup templates can be specified by setting the title’s
- first positional attribute or template attribute.
- * The article and book document header can now include a revision
- remark.
- * A role attribute can now be applied to block elements. This adds
- the role attribute to DocBook elements. Patch submitted by
- [133]Noah Slater).
- * Renamed revision and date attributes to more sensible and
- consistent revnumber and revdate (old names deprecated but still
- recognized).
- * Moved backend specific attributes to Appendix H in User Guide.
- * Renamed and generalized the docbook backend revision history
- inclusion mechanism to docinfo to reflect the use of all article or
- book information elements. The old revision history names still
- work but have been deprecated.
- * Refactored docbook.conf headers.
- * Moved line break replacement from [replacements] to [replacements2]
- so the replacement occurs after the mailto macro. This fixes bug
- [134]http://groups.google.com/group/asciidoc/browse_thread/thread/4
- bdcdfb0af773e2
- * The typewriter to punctuation apostrophe replacement can be escaped
- with a backslash.
- * Graphviz filter outputs images to imagesdir if it is defined.
- * Made the block image macro generic so that it can be used for
- filter outputs. As a result Music and Graphviz filters:
- + Have been greatly simplified.
- + Honor the data-uri attribute.
- + html4 outputs no longer generate W3C validation warning.
- * The iconsdir attribute no longer requires a trailing directory
- separator character.
- * Removed borders around linked html4 images.
- * Added html4 specific HTML output for music filter.
- * a2x: Added --unsafe option (shortcut for --asciidoc-opts=--unsafe).
- * a2x: The FOP executable can now be named fop (this is the default
- name in some distributions).
- * Attributes are now substituted in the system macro attribute list.
- * If the output is set to stdout (i.e. no output directory is
- defined) then Music and Graphviz filters will output included
- images to the source file directory.
- * Added name directive to testasciidoc.
- * Added lots of testasciidoc new tests.
- * Moved language specific configuration parameters into lang-en.conf
- file.
- * lang attribute entry can be specified in the AsciiDoc source file
- (preceding the header).
- * Removed cruft from A-A-P scripts and documented them.
- * Added German language config file (lang-de.conf) contributed by
- Michael Wild.
- * Added French language config file (lang-fr.conf) contributed by
- Yves-Alexis Perez.
- * Added Russian language config file (lang-ru.conf) contributed by
- Artem Zolochevskiy.
- * Added Hungarian language config file (lang-hu.conf) contributed by
- Miklos Vajna.
-
- Bug fixes
- * FIXED: Multiple manpage names are now handled correctly when
- generating DocBook output, each name now generates a separate
- DocBook <refname> element. See
- [135]http://groups.google.com/group/asciidoc/browse_thread/thread/c
- 93bb4db025225d8
- * FIXED: A problem that caused AttributeEntries preceding the header
- to be overwritten when the language conf file loaded.
- * FIXED: Possible inline macro name ambiguity e.g. link matches
- olink.
- * FIXED: The documented macro definition deletion behavior had been
- broken for a long time.
- * FIXED: Email addresses not recognized when followed by a period
- character.
- * FIXED: Hyphens in mailto macros can delimit nested addresses e.g.
- bloggs@mail was processed inside
- mailto:joe-bloggs@mail-server.com[Mail].
- * FIXED: User name in FTP URI generated incorrect FTP link. See
- [136]http://groups.google.com/group/asciidoc/browse_thread/thread/1
- d796a9c9ddb2855
- * FIXED: Source highlighter now works with Wordpress backend (see
- [137]http://groups.google.com/group/asciidoc/browse_thread/thread/6
- d8c716748b109e3).
-
- 14.1. Regression issues
-
- 1. A colon following the date in the AsciiDoc header is treated as a
- revision remark delimiter — this could be an issue if you have used
- a colon in the header date.
- __________________________________________________________________
-
-15. Version 8.4.4 (2009-04-26)
-
- Additions and changes
- * Added table column and row spanning.
- * Table styles can now be applied per cell.
- * Vertical cell alignment can be applied to columns and individual
- cells.
- * Added table align attribute to set horizontal alignment for entire
- table.
- * Included Geoff Eddy’s update of the experimental LaTeX backend.
- * A new attribute named trace controls the output of diagnostic
- information. If the trace attribute is defined then
- element-by-element diagnostic messages detailing output markup
- generation are printed to stderr.
- * Added literal paragraph style (allows literal style to be applied
- to normal paragraphs).
- * Deleted unused replacements2 from xhtml11.conf.
- * Added replacements2 to default substitutions.
- * testasciidoc.py: messages to stdout, only diffs to stderr.
- * Added transparency to smallnew.png image.
-
- Bug fixes
- * All combinations of leading comments and attribute entries at the
- start of a document are now skipped correctly.
- * FIXED: ./configure doesn’t support --docdir as expected (patch
- submitted by Artem Zolochevskiy)
- * FIXED: Constrained quotes were incorrectly matched across line
- boundaries e.g. the string +\nabc+ incorrectly matched a monospace
- quote.
- __________________________________________________________________
-
-16. Version 8.4.3 (2009-04-13)
-
- Additions and changes
- * DocBook outputs default to DocBook version 4.5 doctype (previously
- 4.2).
- * Configuration file [specialsections] definitions can be undefined
- by setting their configuration entry values blank.
- * The Makefile install target depends on the all target to ensure
- pre-install patches are applied.
- * testasciidoc.py now emits user friendly messages if:
- 1. the configuration file is missing.
- 2. an illegal backend is specified.
- 3. an illegal test number is specified.
-
- Bug fixes
- * Fixed [138]missing template section error.
- * The testasciidoc.py --force option no longer deletes test data
- files that were not specified.
- * Dropped second quotes substitution in table cells — it had
- effectively disabled quote escaping in table cells.
- __________________________________________________________________
-
-17. Version 8.4.2 (2009-03-19)
-
- Additions and changes
- * Added [139]testasciidoc, a tool to verify AsciiDoc conformance.
- * A warning is issued if nested inline passthroughs are encountered.
- * asciidocapi: setting an attribute value to None will undefine
- (delete) the attribute (this in addition to the name! attribute
- name format that the asciidoc(1) command uses).
- __________________________________________________________________
-
-18. Version 8.4.1 (2009-03-10)
-
- Additions and changes
- * AsciiDoc now has a [140]Python API. The following minimal example
- compiles mydoc.txt to mydoc.html:
-
- from asciidocapi import AsciiDocAPI asciidoc = AsciiDocAPI()
- asciidoc.execute('mydoc.txt')
-
- * Backtick quoting for monospaced text is now implemented as an
- inline literal passthrough. This makes more sense since monospace
- text is usually intended to be rendered literally. See
- [141]Regression issues below for the impact this may have on
- existing documents. Here are some examples that would previously
- have had to be escaped:
- The `++i` and `++j` auto-increments.
- Paths `~/.vim` and `~/docs`.
- The `__init__` method.
- The `{id}` attribute.
- * Added --doctest option to asciidoc(1) command.
- * Added an optional second argument to BlockId element, this sets the
- {reftext} attribute which in turn is used to set the xreflabel
- attribute in DocBook elements.
- * Added lists to --help syntax summary.
- * {infile} and {indir} attributes reflect the current input file
- (previously always referred to the root document).
- * {docfile} (new) and {docdir} (previously deprecated) attributes
- refer to the root document specified on the asciidoc(1)
- command-line.
- * Vim syntax highlighter improvements.
- * Syntax summary command (asciidoc -h syntax) additions.
- * Admonition icons now have transparent backgrounds.
- * Changed yellow W3C badges to blue ones in page footers.
-
- Bug fixes
- * Dropped asciidoc(1) broken undocumented --profile option.
- * Em dash replacement now recognized at start of block.
-
- 18.1. Regression issues
-
- Replacing backtick quoting with the inline literal passthrough raises
- two regression scenarios for existing documents:
- 1. You have escaped the expansion of enclosed inline elements, for
- example: \{id}. You would need to delete the backslashes: {id} (if
- you don’t the backslashes will be printed). Mostly it’s just a case
- of interactively finding and replacing of all occurrences of `\.
- 2. There are enclosed inline elements, for example: some *bold*
- monospaced. You would need to switch to plus character monospace
- quoting: +some *bold* monospaced+ (if you don’t the enclosed
- elements won’t be expanded).
-
- If your existing documents include these cases and you don’t want to
- upgrade then use the -a no-inline-literal command-line option,
- alternatively put this in ~/.asciidoc/asciidoc.conf:
- [attributes]
- no-inline-literal=
- __________________________________________________________________
-
-19. Version 8.3.5 (2009-02-02)
-
- Additions and changes
- * Cached compiled regular expression delimiters (speed up User Manual
- compilation by 250%).
- * Created distinct list definitions for each numbered list style to
- allow nesting of all styles.
- * Roman numbers in numbered lists are followed by a closing
- parenthesis instead of a period to eliminate i, v, x item ambiguity
- with respect to alpha numbered list items.
- * Added **, ***, ****, ***** bulleted lists.
- * Added ..., ...., ..... implicit numbered lists.
- * Added :::, :::: labeled lists.
- * Updated User Guide for new list syntaxes.
- * Optimized paragraph and list termination detection with separate
- precompiled regular expressions for performance and to prevent
- reaching Python 100 named group limit.
- * Updated Vim syntax highlighter for new list syntaxes.
- * Allow template::[] macros in conf file entries sections (not just
- in template sections).
- * Dropped unused [listdef-numbered2] conf file sections.
- * Renamed ListBlock to more appropriate OpenBlock.
- * Implemented single-line versions of ifdef::[] and ifndef::[]
- macros.
- * html4 backend styling:
- + Underlined admonition captions.
- + Added side border to Example Blocks.
- * xhtml11 backend styling:
- + Dropped right hand margin from all but quote and verse blocks.
- + html4 backend: corrected over-sized width of caption in
- admonition block.
-
- Bug fixes
- * Fixed broken numbered list nesting.
-
- 19.1. Compatibility issues
-
- The roman numbered list parenthesis syntax is incompatible with the
- potentially ambiguous roman period syntax introduced in 8.3.2.
- __________________________________________________________________
-
-20. Version 8.3.4 (2009-01-20)
-
- Additions and changes
- * Implemented a title float style. A floating title (or bridgehead)
- is rendered just like a normal section but is not formally
- associated with a text body and is not part of the regular section
- hierarchy so the normal ordering rules do not apply.
- * Implemented inline comment macro so comment lines can now appear
- inside block elements.
- * Comment lines are sent to the output if the showcomments attribute
- is defined (comment blocks are never sent to the output).
- * Single quoting attribute values in AttributeList elements causes
- them to be substituted like normal inline text (without single
- quoting only attribute substitution is performed).
- * Rewrote list item processing (was very crufty). List continuation
- and list blocks now work as expected. Updated and clarified list
- documentation in User Guide.
- * The revision attribute now recognizes the RCS $Id$ marker format.
- * An RCS $Id$ marker formatted revision line in the header does not
- need to be preceded by an author line.
- * If an RCS $Id$ formatted revision is specified and the author name
- has not already been set then the author name in the $Id$ marker
- will be used.
- * Updated Gouichi Iisaka’s Graphviz filter to version 1.1.3.
- * Added autowidth table attribute option for (X)HTML outputs.
- * DocBook backend now puts orgname optional attribute in DocBook
- header.
- * Deprecated undocumented companyname attribute in favor of DocBook’s
- corpname.
- * Removed explicit closing backslash from HTML4 self-closing tags to
- comply with WC3 recommendation.
-
- Bug fixes
- * Fixed 8.3.3 regression whereby adjacent lists with the same syntax
- but different list styles were incorrectly treated as a single
- list.
- __________________________________________________________________
-
-21. Version 8.3.3 (2009-01-02)
-
- This release supersedes 8.3.2.
-
- Bug fixes
- * The broken and confusing numeration and numeration2 numbered list
- attributes have been dropped, use the style attribute instead.
- __________________________________________________________________
-
-22. Version 8.3.2 (2009-01-01)
-
- Additions and changes
- * Added Gouichi Iisaka’s Graphviz filter to distribution.
- * The SidebarBlock element can now be rendered with an abstract
- style.
- * Reorganized filters into a separate subdirectory for each filter.
- * Updated Makefile.in and MANIFEST files to reflect new filters
- organization.
- * Added listing style to LiteralBlock element so listings with nested
- listing blocks can be rendered as a listing block.
- * Changed example code filter to use preferred ListingBlock syntax
- (the old ~ delimited filter syntax is no longer used).
- * Implemented enumeration and enumeration2 numbered list attributes
- for specifying the list numbering style (arabic, loweralpha,
- upperalpha, lowerroman and upperroman).
- * AsciiDoc now recognizes upperalpha, lowerroman and upperroman
- numbers in listdef-numbered2 numbered lists and sets the number
- style based on the style of the first numbered list item
- (alternative to setting enumeration2 attribute).
- * Updated formatlistpat definition in .vimrc example in User Guide.
- * You can now backslash escape system block macros.
- * Added Pychart FAQ.
- * Drop paragraph text and list text, index and label match groups
- from attributes — they are included in the element’s text and we
- don’t want them processed a second time as attributes.
- * Changed comment line block macro to a passthrough block macro to
- ensure no substitutions.
- * A subslist no longer has to be appended to a PassthroughBlock macro
- definition, if omitted no substitutions are performed.
- * Code tidy up: replaced deprecated <> operator with !=.
- * Removed unused linuxdoc code.
- * Code tidy ups: dropped old types module reference; replaced
- has_key() with preferred in operator.
-
- Bug fixes
- * Old syntax source highlight filter regression: special characters
- where not escaped in DocBook outputs.
- __________________________________________________________________
-
-23. Version 8.3.1 (2008-12-14)
-
- Additions and changes
- * Replaced the install.sh script with Ben Walton’s updated autoconf
- scripts — see [142]INSTALL for details.
- * Added a generalized AttributeEntry syntax to allow arbitrary
- configuration file entries to be set from within an AsciiDoc
- document (suggested by Henrik Maier).
- * Listing delimited blocks in DocBook outputs now support IDs; IDs of
- titled Listing and Literal delimited blocks have been moved to the
- enclosing DocBook example tag (thanks to Vijay Kumar for this
- patch).
- * Replaced vertical typewriter apostrophe with punctuation apostrophe
- (thanks to Noah Slater).
-
- Bug fixes
- * Regression: Excluding double-quotes from unquoted attribute values
- resulted in backward incompatibility, double-quotes in unquoted
- attribute values has been reinstated.
- * Regression: Text like &...; was sometimes mistaken for an entity
- reference — tightened up entity reference matching.
- __________________________________________________________________
-
-24. Version 8.3.0 (2008-11-29)
-
- Additions and changes
- * [143]AsciiDoc new tables is a complete redesign of the tables
- syntax and generation. The new syntax and features are a huge
- improvement over the old tables. The old tables syntax has been
- deprecated but is currently still processed.
- * [144]Lists can now be styled like other block elements. This allows
- a single list syntax for glossary, qanda (Question and Answer) and
- bibliography lists instead of having to remember a different syntax
- for each type.
- * Inline passthroughs macros have been improved and block passthrough
- macros added. Attribute substitution can be optionally specified
- when the macro is called.
- * The passthrough block has a fully transparent passthrough delimited
- block block style called pass.
- * The asciimath and latexmath [145]passthrough macros along with
- asciimath and latexmath [146]passthrough blocks provide a (backend
- dependent) mechanism for rendering mathematical formulas. There are
- [147]LaTeX Math, [148]AsciiMathML and [149]LaTeXMathML examples on
- the AsciiDoc website.
- * Reimplemented and cleaned up filter processing based on a patch
- submitted by Kelly Anderson. Uses the newer subprocess module
- instead of the deprecated popen2 module. Now works in Win32 command
- shell.
- * Addition FAQs, more documentation updates.
- * Arbitrary HTML/XML entities can be entered in AsciiDoc source.
- * Did away with the need for the shaded-literallayout.patch (thanks
- to Henrik Maier for this patch).
- * Implemented page break block macro.
- * Added line breaks and ruler processing instructions to DocBook
- outputs (thanks to Henrik Maier for this patch).
- * Added deg (degree) and wj (word joiner) entity attributes (thanks
- to Henrik Maier).
- * Tweaked DocBook indexterm2 macro to avoid white space preceding the
- term when used in table cells (thanks to Henrik Maier for this
- patch).
- * Title elements now process the options attribute like other block
- elements.
- * Added ‘single quoted’ element.
- * Spaces on both sides of a — em-dash are translated to thin space
- characters.
- * Improved detection and reporting of malformed attribute lists.
- * The list compact style is now a list option.
- * Added strong labeled list option which makes the labels bold (HTML
- outputs only).
- * Dropped unsupported linuxdoc backend.
- * Dropped deprecated xhtml-deprecated (version 6) backend.
- * Added breakable and unbreakable attribute options to tables to
- control table breaking across page boundaries (DocBook XSL/FO
- outputs). By and in collaboration with Henrik Maier.
- * Added pgwide attribute option to tables to table, block image,
- horizontal labeled lists. Specifies that the element should be
- rendered across the full text width of the page irrespective of the
- current indentation (DocBook XSL/FO outputs). Thanks to Henrik
- Maier for this patch.
- * Vim syntax highlighter: spaces before/after bullets no longer
- highlighted (which is ugly if using a theme that highlights with
- underlines). Thanks to Donald Chai for this patch.
- * Added a2x(1) --fop option.
- * Added a2x(1) --no-xmllint option.
- * Highlighted labelled list terms with the navy color in XHTML
- outputs.
- * Use w3m(1) as default a2x(1) text format generator (fallback to
- lynx(1)).
- * Changed callout formats in html4 and xhtml11 outputs to angle
- brackets to match source highlighter rendering.
- * Macros now inject user defined <optionname>-option attributes into
- markup.
- * Added IRC URLs to AsciiDoc inline macros.
- * Added depth attribute to include::[] system macro.
- * Added footnoteref inline macro.
- * Added stylesheet XHTML attribute to specify additional custom CSS
- stylesheet.
- * If a paragraph style is specified it will be added to the XHTML
- class attribute and DocBook role attribute.
- * Replacements can be set in a document using the reserved
- AttributeEntry name replacement.
- * The prefix for auto-generated section name IDs can be set with the
- idprefix attribute.
-
- Bug fixes
- * Escaped quote skipped over leading and trailing quote instead of
- just the leading quote.
- * Fixed bug that was causing false negative safe mode warnings (patch
- submitted by Julien Palmas).
- * Placed priority of AttributeEntry, AttributeList and BlockTitle
- above Title. This ensures an AttributeEntry, AttributeList or
- BlockTitle followed by a same length leading ListingBlock delimiter
- is not mistaken for a two-line title.
- * Vim syntax highlighter: fixed multi-line quoted text.
- * Contstrained quote termination after non-space character enforced.
- * Vim syntax highlighter: unterminated quoted text is no longer
- highlighted.
- * Vim syntax highlighter: passthroughs now exactly match AsciiDoc
- semantics.
- * Vim syntax highlighter: escaped quoted text, attribute references
- and inline macros are not highlighted.
- * Vim syntax highlighter: TODO’s highlighted in CommentBlocks (thanks
- to Scott Wall); non-greedy $$...$$.
- * Vim syntax highlighter: Comment lines mistaken for vertical list
- labels (thanks to Scott Wall).
- * Vim syntax highlighter: Single unmatched $$ mistakenly highlighted
- remaining text (patch contributed by Scott Wall).
- * Callouts now work in source highlighted listing generated by
- dblatex.
- * Fixed exception that occured if undefined attribute was present in
- filter command.
- * AttributeList block can now follow a paragraph without intervening
- blank line.
- * The include macro tabsize attribute is no longer propagated to
- nested includes.
-
- Omissions
- The following features were implemented but then but removed from this
- release:
- * pi, cdata and comment passthrough macros and passthrough block
- styles (creeping featurism, use pass macros instead).
- * Generic tag inline macro (creeping featurism, use pass macros
- instead).
-
- 24.1. Compatibility issues
-
- Version 8.3.0 has a number of backward incompatibilities with respect
- to the previous 8.2.7 release:
- * The old table syntax is still processed but a DEPRECATED warning is
- issued.
- * Entity references have to be escaped with a backslash.
- * You have to explicitly precede horizontal style labeled lists with
- the [horizontal] style attribute — by default all labeled lists are
- rendered vertically.
- * The list compact style has been dropped and is now a list option
- (use options="compact" in attribute lists).
- * AsciiDoc version 6 sytnax no longer supported.
- * Linuxdoc been removed from the distribution.
- * The unsupported experimental latex backend has not been tested on
- this release.
- * The introduction of single-quote quoting requires that double-quote
- quoting is escaped with two backslashes.
- __________________________________________________________________
-
-25. Version 8.2.7 (2008-07-04)
-
- Additions and changes
- * Added dvi, ps and tex output format options to a2x(1).
- * Added --dblatex option to a2x(1) so dblatex(1) can be used to
- generate PDFs.
- * Added custom dblatex(1) configuration files (in distribution
- ./dblatex directory) that are used by a2x(1).
- * dblatex(1) is now used to generate the distributed PDF version of
- the AsciiDoc User Guide.
- * If you don’t need a customized the link caption you can enter the
- http, https, ftp, file URLs and email addresses without any special
- macro syntax — you get the links by just cutting and pasting URLs
- and emails addresses. This also makes it easier to open links
- directly form AsciiDoc source ( most editors allow you to open URLs
- directly). The Vim syntax highlighter has been updated to reflect
- these changes.
- * Highlighted source code paragraphs have been implemented — it’s a
- much more convenient way to enter short code examples (see [150]the
- online docs).
- * The source highlighter and music filter syntax has changed — they
- now used the ListingBlock syntax customized with source and music
- style attribute values. This follows the Paragraph styling
- convention introduced by the source paragraph (previous item) and
- is easier to read. The old syntax still works but has been
- deprecated.
- * QuoteBlocks now have a verse style — you no longer have to nest a
- verse LiteralBlock inside a QuoteBlock for verses. The verse style
- on the LiteralBlock has been deprecated (still works though) and
- the style attribute is positional attribute 1, pushing attribution
- and citetitle attributes to the right (you’ll need to insert a
- quote attribute into your existing QuoteBlocks).
- * It is no up to the DocBook processor to highlight source code
- syntax in <programlisting> elements rather than GNU Highlighter —
- this is the correct way to handle it, plus dblatex(1) makes a much
- better job.
- * scaledwidth and align attributes have been added to the image
- macro. They apply to DocBook outputs (specifically for PDF
- documents). scaledwidth sets the image size as a percent of the
- available page width; align applies left, center or right
- horizontal image justification.
- * Added a2x(1) --fop-opts=FOP_OPTS option (patch submitted by Miklos
- Vajna).
- * Added a2x(1) --dblatex-opts=DBLATEX_OPTS option.
- * Added Mikhail Yakshin’s FOP 0.95 patch which fixes a long-standing
- fo.xsl problem and allows PDF’s to be generated with FOP 0.95
- (previously had to use FOP 0.20.5).
- * The User Guide has been updated and outdated FOP configuration and
- installation sections removed.
-
- Bug fixes
- * Fixed stylesheets/xhtml11-manpage.css not being included when
- linkcss attribute was used.
- * Configuration file *-style attributes are now dumped correctly.
- * Fixed FAILED: malformed section entry LaTeX backend error.
-
- See the also the [151]AsciiDoc repository changelog.
- __________________________________________________________________
-
-26. Version 8.2.6 (2008-04-29)
-
- Additions and changes
- * Enhancements to the Vim AsciiDoc syntax highlighter, for example,
- quoted text is now highlighted in titles and macro captions.
- * If you define the data-uri intrinsic attribute images referenced by
- image macros will be embedded in XHTML using the [152]data: URI
- scheme. NOTE: Microsoft browser support for the data: URI scheme is
- currently limited to MSIE 8 beta 1.
- * Added toc-title attribute to allow custom table of contents titles.
- * Added references to Alex Efros’s AsciiDoc Cheatsheet to AsciiDoc
- website.
- * asciidoc(1) and a2x(1) man pages formatted to conform to
- man-pages(7) recommendations.
- * Old code-filter syntax (pre-8.1.0) is no longer recognized so that
- malformed two-line level 2 titles are no longer confused with
- code-filter block delimiters.
- * Added → ← ⇒ ⇐ arrow replacements from the Arrows block of Unicode.
- * Added DocBook refentry lang attribute — patch contributed by
- VMiklos.
- * AttributeEntry names can now be numeric (“named macro targets”).
- * Hide Table of Contents title if Table of Contents empty — patch
- contributed by Alex Efros.
- * Various XHTML CSS tweaks.
- * Code cleanup:
- + Replaced realpath() with Python 2.2 os.path.realpath() library
- function.
- + Replaced old string library functions with string methods.
- + Use file generators instead of readlines().
- + Renamed entities that shadowed builtins.
- + Standardized string quoting.
- + Dropped readlines() function.
-
- Bug fixes
- * Fixed broken CSS for decimal ordered lists nested in alpha ordered
- list, thanks to Alex Efros.
- * A missing closing block delimiter now reports the opening delimiter
- line number instead of the end of file line number.
- * Fixed an error generated by the asciidoc -e option when there are
- no block definitions — patch contributed by Alejandro Mery.
- * Handle both \r\n (as well as \n) line separators that may be
- returned by {sys} attribute evaluation.
- * Numbered attribute names no longer interfere with positional
- attribute list values.
- __________________________________________________________________
-
-27. Version 8.2.5 (2007-11-18)
-
- Bug fixes
- * Fixed exception thrown by illegal command-line arguments.
- * Rolled back the with warning bug fix introduced in 8.2.4 — it was
- incompatible with Python <2.5.
- __________________________________________________________________
-
-28. Version 8.2.4 (2007-11-10)
-
- Additions and changes
- * You can now use the lang attribute to set the DocBook language
- attribute.
- * Attribute values can now contain attribute references.
- * If the lang attribute is defined then configuration files named
- like lang-<lang>.conf will be loaded automatically.
- * The help file name help-<lang>.conf is based on the AsciiDoc lang
- attribute, defaults to help.conf (English).
- * Admonition, figure and table captions have been factored into a
- predefined set of caption_* attributes. They only apply to directly
- generated (X)HTML outputs (DocBook stylesheets generate their own
- language specific captions based on the lang attribute).
- * Dropped platform dependent doc/asciidoc.chm file from distribution
- documentation formats.
-
- Bug fixes
- * The spurious warning with will become a reserved keyword in Python
- 2.6 has been suppressed.
- __________________________________________________________________
-
-29. Version 8.2.3 (2007-09-12)
-
- Additions and changes
- * Added VMiklos’s permalink patch for auto-generated section IDs
- (enabled by default by the sectids attribute).
- * Added [153]FAQ to website.
- * Changed format of {localdate} attribute to ISO 8601 (%Y-%m-%d).
- * Added abc2ly --beams=None option to make music2png.py conform to
- ABC’s notion of beams.
- * XHTML level 2 section headings are now styled with an underlining
- border.
- * XHTML links to AsciiDoc title elements are now implemented with
- title ID attributes (previously separate <a> element targets were
- generated.
- * Multi-word first, middle and last names can be entered in the
- header author line using the underscore as a word separator.
- * The nested inline macros restriction has now been lifted, for
- example you can now include links and inline images inside
- footnotes.
- * Help topic names can be shortened (so long as they are not
- ambiguous). For example asciidoc -hm will print the AsciiDoc man
- page.
- * Added {two_colons} and {two_semicolons} attributes for escaping
- labeled list ambiguity.
- * If quirks mode is disabled the XHTML Mime Type is set to the
- recommended application/xhtml+xml (rather than text/html).
-
- Bug fixes
- * Author information is now correctly set when using attribute
- entries in the header instead of an author line (previously the
- author attribute was not being calculated correctly and there were
- attribute substitution problems).
- __________________________________________________________________
-
-30. Version 8.2.2 (2007-07-22)
-
- Additions and changes
- * [154]LaTeXMathML capability has been added for users who are more
- familiar with or prefer LaTeX math formulas to the [155]ASCIIMathML
- notation (thanks to Arthur Sakellariou for the patch).
- * The source highlight and code filters now process embedded
- callouts.
- * Added an --attribute=ATTRIBUTE option to a2x(1) for passing
- attribute values to asciidoc(1) (a shortcut for --asciidoc-opts="-a
- ATTRIBUTE").
- * Image block and inline macros prepend optional {imagesdir}
- attribute to image link targets.
-
- Bug fixes
- * Fixed an assertion error that occurred when a configuration file
- containing an include::[] macro was loaded using the --conf-file
- option and the configuration file name did not include an explicit
- directory path — patch submitted by Dmitry Potapov.
- * Asciidoc titles are only converted to lower case if all characters
- are upper case otherwise case is left unchanged — patch submitted
- by Dmitry Potapov.
- * Added a missing check that input is not stdin before loading
- configuration files from the document directory — patch submitted
- by Dmitry Potapov.
- * Attribute list items must evaluate to strings, numbers or None
- (previously it was possible to evaluate to other object types which
- resulted in surprising attribute values).
- * If an AsciiDoc document has no title an empty XHTML 1.1 title
- element is created — previously the title element was dropped which
- resulted in invalid XHTML 1.1.
- * The Vim syntax file no longer highlights escaped callouts.
- * The Vim syntax highlighter now correctly highlights Double-dollar
- passthroughs when they enclose dollar delimited ASCIIMathML and
- LaTeXMathML formulas.
- __________________________________________________________________
-
-31. Version 8.2.1 (2007-04-06)
-
- Additions and changes
- * A number of improvements have been made to the Vim syntax
- highlighter, for example the word C++ is no longer mistaken for the
- start of an unconstrained monospace quote.
- * Labeled list definitions have been tightened — a list label can no
- longer containing trailing spaces. The following example is no
- longer recognized as a valid list label:
-
- Lorum ipsum
- This change implements the originally intended behavior
- (as per the AsciiDoc documentation and examples) so there
- should be very few compatibility issues.
- __________________________________________________________________
-
-32. Version 8.2.0 (2007-04-04)
-
- Additions and changes
- * A Vim syntax file is now included in the AsciiDoc distribution
- (inspired by Felix Obenhuber’s asciidoc.vim script). You can find
- it (along with a Vim filetype detection script in the distribution
- ./vim/ directory (the scripts are installed automatically by the
- AsciiDoc installer ./install.sh). See Appendix J of the AsciiDoc
- User Guide for details.
- * Added toclevel attribute (1..4) which sets the number of title
- levels reported in the table of contents. Defaults to 2 and must be
- used with the toc attribute. Example usage:
- $ asciidoc -a toc -a toclevels=3 doc/asciidoc.txt
- * Added a listindex attribute which is the current list item index
- (1..). If this attribute appears outside a list its value is the
- number of items in the most recently closed list.
- * The single line titles syntax now accepts trailing suffixes — this
- syntax matches the title line syntax of a number of popular Wiki
- markups.
- * If a QuoteBlock has no attribution or citetitle then the DocBook
- <attribution> element is not generated (previously generated empty
- <attribution> element).
- * If the text of a labeled list item is blank then no texttag is
- written.
- * An end of line backslash performs line continuation for horizontal
- labeled list items.
- * The Revision line now accommodates Subversion $Id markers (in
- addition to CVS and RCS markers). Thanks to Tiago Sturmer Daitx for
- this patch.
- * Implemented a2x(1) option --skip-asciidoc which allows a2x(1) to
- convert DocBook XML files not derived from AsciiDoc sources.
- * If a2x(1) --doctype option is not specified it defaults to manpage
- if --format=manpage else defaults to article (previously --doctype
- always defaulted to article).
- * Added an External Resources section to the [156]AsciiDoc home page.
- __________________________________________________________________
-
-33. Version 8.1.0 (2006-10-22)
-
- Additions and changes
- * AsciiDoc generated XHTML documents now display a table of contents
- if the toc attribute is defined (JavaScript needs to be enabled for
- this to work). Thanks to Troy Hanson who contributed this feature
- based on a JavaScript by Mihai Bazon. I’ve simplified things
- somewhat to match Docbook XSL Stylesheets style, see Troy’s
- [157]tpl User Guide for a fancier layout. Use the -a toc -a
- numbered command-line options to produce a number table of
- contents.
- * A [158]music filter is included in the distribution ./filters/
- directory. It translates music in [159]LilyPond or [160]ABC
- notation to standard classical notation in the form of a trimmed
- PNG image which is inserted into the AsciiDoc output document.
- * Incorporated Paul Melis’s Win32 filter patch. This workaround
- allows AsciiDoc to run filters under Windows.
- * Added uninstall.sh script.
- * Rather than proliferate a confusing number of filter block
- delimiters the following convention has been adopted: delimiters
- belonging to DelimitedBlock filters distributed with AsciiDoc will
- consist of a word (normally a noun identifying the block content)
- followed by four or more tilde characters. This has necessitated
- changing existing filter delimiters (the old delimiters still work
- but may be deprecated in future versions):
- + The example code filter block delimiter is now the word code
- followed by four or more tilde characters.
- + The source highlight filter block delimiter is now the word
- source followed by four or more tilde characters.
- * Conditionally redefined subscript and superscripting so they use
- the old replacements mechanism when asciidoc7compatible is defined
- rather than the asciidoc 8 default unconstrained quoting (patch for
- affected files attached).
- * Moved the source highlight filter from ./examples/ to ./filter/.
- * Added {verbose} intrinsic attribute (useful for passing verbose
- flag to filters).
- * Added {outdir} intrinsic attribute.
- * Renamed {docdir} intrinsic attribute to unambiguous {indir}
- ({docdir} still works but may be removed in future release).
- * If asciidoc(1) outputs to stdout then intrinsic attribute {docname}
- is extracted from the input file name.
- __________________________________________________________________
-
-34. Version 8.0.0 (2006-08-27)
-
- This is a major release because changes to quoting and index entry
- handling may break existing documents (see Additions and changes below
- and Appendix A: Migration Notes in the AsciiDoc User Guide).
-
- Please report any problems you encounter.
-
- [161]Stuart Rackham
-
- Additions and changes
- * Quoting can can occur within words (based on patch submitted by
- Benjamin Klum). See the Unconstrained Quotes sub-section in the
- User Guide.
- * The underline and plus characters can be used as alternatives to
- the existing apostrophe and backtick quote characters. They are
- arguably better choices than the apostrophe and backtick as they
- are not confused with punctuation.
- * The syntax for index entry macros have have been deprecated from
- +...+ and ++...++ to ((...)) and (((...))) respectively. Rationale:
- + Bracketing is consistent other with [[...]] and <<...>>
- reference macros.
- + To easily confused with triple plus passthroughs.
- + To make way for the new monospace quoting.
- * Superscripts and subscripts are implemented as constrained quotes
- so they can now be escaped with a leading backslash and prefixed
- with with an attribute list.
- * An experimental LaTeX backend has been written by Benjamin Klum (a
- number additions in this release are to accommodate the LaTeX
- backend).
- * include macro file names now expand environment variables and tilde
- expansions.
- * A configuration file [quotes] entry can be undefined by setting to
- a blank value.
- * Added callto inline macro for Skype callto links.
- * Added colnumber attribute for table data markup.
- * A leading comment block or comment lines are now skipped
- (previously a document had to start with either attribute entries
- or a document Title).
- * Experimental rows attribute (number of source lines in table)
- available in table markup templates (used by experimental LaTeX
- backend).
- * Included install shell script written by [162]Jacob Mandelson for
- installing the tarball distribution.
- * Added INSTALL documentation file.
- * Added replacements2 substitution options — a second replacements
- section.
- * Added the ability to redefine normal and verbatim substitutions
- with subsnormal and subsverbatim entries in configuration file
- [miscellaneous] section.
- * By default AttributeEntry values are substituted for
- specialcharacters and attributes, if you want a different
- AttributeEntry substitution set the attributeentry-subs attribute.
- * The name in name=value configuration file entries can now end with
- a backslash, just escape the trailing backslash with a backslash.
- For example:
- abc\\=xyz
- Results in name=abc\ and value=xyz — previously this would have
- escaped the = character.
- * A blank configuration file section deletes any preceding section
- with the same name (applies to non-markup template sections).
- * A command-line attribute value with a @ suffix does not override
- existing document and configuration file attributes (normally
- command-line attributes have precedence over document and
- configuration file attributes).
- * localtime attribute is now encoded from the native system encoding
- to the output encoding. Patch submitted by [163]FKtPp — here’s his
- description of the problem:
- “I am a Chinese user of AsciiDoc and I find that when I use UTF-8
- (the default encoding) to write asciidoc documents in Windows
- platform the resulting html footer line will get screwed. It was
- caused by a localized tzname that was always encoded in the windows
- native encoding, which in my case is cp936.”
- * a2x(1) can generate Open Document Text files using
- [164]docbook2odf. Currently docbook2odf(1) only processes a subset
- of DocBook, unimplemented elements are skipped.
- * The a2x(1) format option defaults to xhtml (previously a format had
- to be specified explicitly).
- * The -d, \--doctype=DOCTYPE option has been added to a2x(1) which is
- a shortcut for --asciidoc-options="--doctype=DOCTYPE".
- * Replaced a2x(1) --no-icons and --no-copy options with their negated
- equivalents: --icons and --copy respectively. The default behavior
- has also changed: copying and use of icons is disabled by default.
- Rationale:
- + To make the default behavior more consistent since use of
- icons and CSS stylesheets does not apply to all formats.
- + To make the default behavior less surprising (the creation of
- icon and stylesheet output files must now be explicit).
- * a2x(1) has been bumped from version 0.1.1 to version 1.0.0.
-
- Bug fixes
- * Removed duplicate ./doc/a2x.1.txt from distribution tarball.
- * Documentation errata.
- * Attribute replacement is no longer performed twice in Titles and
- AttributeEntrys.
- * a2x(1) skipped asciidoc(1) execution when rerun with different
- --asciidoc-options options, it now always executes asciidoc(1). The
- problem was that previously asciidoc(1) was executed only if the
- output file was missing or older than the source file.
- __________________________________________________________________
-
-35. Version 7.1.2 (2006-03-07)
-
- Additions and changes
- * Support for [165]ASCIIMathML has been added. See Appendix I:
- ASCIIMathML Support in the User Guide and the examples at
- [166]http://www.methods.co.nz/asciidoc/asciimath.html.
- * You can now prefix quoted text with inline attributes lists. You
- can use this to set font size and color (XHTML and HTML outputs).
- * Added ##...## quoting — it does nothing — it’s purpose is to allow
- inline attributes to be applied to normal text.
- * An inline passthrough mechanism has been implemented.
- * Configuration file comment lines can be escaped with a backslash —
- this is to allows the inclusion of configuration lines that start
- with a hash character.
- * The scriptsdir attribute can be used to specify the name of the
- directory containing linked JavaScripts (see the [167]User Guide
- for details.
- * The BackendBlock has been renamed PassthroughBlock for consistency
- with the new inline passthrough naming.
- * a2x(1) now works with the older bash(1) version 2.05b. Patch
- submitted by [168]Francis Daly.
- * Content included by the include1::[] system macro is no longer
- subject to attribute substitution so that ambiguities no longer
- arise when used to include CSS or JavaScript files.
- __________________________________________________________________
-
-36. Version 7.1.1 (2006-02-24)
-
- Additions and changes
- * The caption attribute can be used to customize admonition captions
- as well as image, table and example block element title prefixes
- (xhtml11 and html4 backends).
- * You can now override the default icon image using the icon
- attribute to specify the path of the linked image (xhtml11 and
- html4 backends only).
- * The deprecated imagesdir attribute is no longer recognized (use
- iconsdir instead).
- * Added Appendix H: Using AsciiDoc with non-English Languages to the
- AsciiDoc User Guide.
- * Added Admonition Icons and Captions subsection to the User Guide
- explaining how to customize Admonition elements.
-
- Bug fixes
- * a2x(1) failed when configuration files were installed in the global
- /etc/asciidoc/ directory — it was only searching the directory
- containing the asciidoc executable (thanks to Christian Wiese for
- finding and submitting a patch this bug).
- * The html4 backend admonition caption now correctly displays the
- admonition caption attribute (previously displayed the style
- attribute).
- __________________________________________________________________
-
-37. Version 7.1.0 (2006-01-13)
-
- Additions and changes
- * a2x(1) toolchain wrapper utility. This overcomes the biggest hurdle
- for new users which seems to be assembling and using a working
- DocBook XML toolchain. With a2x(1) you can generate XHTML (chunked
- and unchunked), PDF, man page, HTML Help and text file outputs from
- an AsciiDoc input file with a single command. All you need to
- install (in addition to AsciiDoc) is xsltproc(1), DocBook XSL
- Stylesheets and optionally FOP (if you want PDF) or lynx(1) (if you
- want text).
- * Block titles can now start with any non-space character (previously
- where not allowed to start with .~-_ characters).
- * ./stylesheets/docbook.css renamed to ./stylesheets/docbook-xsl.css
- to clarify its function.
- * Renamed ./docbook-xsl/manpages.xsl to ./docbook-xsl/manpage.xsl for
- consistency.
- * Admonition and navigation icons moved to ./images/icons/ to clarify
- usage and conform with a2x(1) usage.
- * Renamed xhtml11 intrinsic attribute imagesdir to iconsdir to keep
- vocab consistent and changed default value to ./images/icons
- (previously ./images). imagesdir attribute still accepted but
- deprecated.
- * Unused image files have been weeded out of the distribution.
- * Packager notes (appendix B) have been updated to reflect the needs
- of a2x(1).
-
- Important
- The renaming of the xhtml11 backend imagesdir intrinsic attribute and
- it’s new default value introduces a backward compatibility issue: if
- you use the icons attribute you will need to either move your icons to
- the new default ./images/icons location or include an
- --attribute{nbsp}iconsdir="your_icons_path" option in your asciidoc
- commands.
-
- Bug fixes
- * Backslash line continuation is now observed in verbatim paragraphs.
- * Fixed errors generated by example
- ./examples/website/build-website.sh script.
- __________________________________________________________________
-
-38. Version 7.0.4 (2005-12-08)
-
- Additions and changes
- * Added ternary conditional attributes
- {<name>@<regexp>:<value1>[:<value2>]} and
- {<name>$<regexp>:<value1>[:<value2>]}.
- * Safety violations now generate errors (they previously generated
- warnings).
- * asciidoc(1) now defaults to safe mode, consequently the
- [miscellaneous] safe mode entry and --safe command-line option are
- no longer necessary (though for backward compatibility asciidoc(1)
- still accepts the --safe option).
- * Backend Blocks are now flagged unsafe (they could be used to
- include arbitrary and hence potentially unsafe output content).
- * Filters are no longer considered unsafe. There’s not much point in
- insisting on filter safety since the installation of an unsafe
- filter would require the introduction of new or modified
- configuration files — if your application configurations can be
- compromised you’re in all sorts of trouble (safe mode protects
- against unsafe input files not unsafe configuration). As with all
- filters, before installing, you should verify that they can’t be
- coerced into generating malicious output or exposing sensitive
- information.
-
- Bug fixes
- * Fixed a lot of glaring grammatical and factual errors in the User
- Guide.
- __________________________________________________________________
-
-39. Version 7.0.3 (2005-12-01)
-
- Additions and changes
- * Added --safe and --unsafe command-line options — AsciiDoc can now
- be executed in a safe mode which disallows the execution of
- arbitrary code or the inclusion of arbitrary files (see
- [169]Appendix C in the AsciiDoc User Guide).
- * Included [170]source-highlight filter in the distribution
- ./examples/source-highlight-filter/ directory (based on filter
- submitted by [171]Ryan Phillips).
- * Included the DocBook XSL Stylesheets 1.69.1 customizations used to
- generate the distributed AsciiDoc documentation (read the
- asciidoc-docbook-xsl.txt file in the distribution ./docbook-xsl/
- directory).
- * AsciiDoc DocBook XSL Stylesheet drivers moved from ./doc/ to
- ./docbook-xsl/.
- * Modified ./doc/manpages.xsl so only URL content is displayed in
- manpages.
-
- Bug fixes
- * Explicitly set table CSS border style (xhtml11 backend) to solid
- because default border styles vary from browser to browser.
- __________________________________________________________________
-
-40. Version 7.0.2 (2005-08-28)
-
- Additions and changes
- * There are now long versions of all AsciiDoc options.
- * If the --backend is not specified it defaults to xhtml11.
- * Added CSS simulated frames layout to the examples website (see
- ./examples/website/layout2/README-website.txt). This layout does
- not work with IE6 and the original tables based layout is still the
- default.
- * Support page added to AsciiDoc website.
-
- Bug fixes
- * Invalid options are now trapped gracefully.
- * Documentation errata.
- __________________________________________________________________
-
-41. Version 7.0.1 (2005-06-24)
-
- Additions and changes
- * Reverted to use of strong, em, tt XHTML tags — they’re more obvious
- and no less correct than span tags, besides, the generated file
- sizes are smaller (the User Guide was 11% smaller).
- * Table title rendered with caption tag rather than a separate div.
- * The AsciiDoc stylesdir attribute (if specified) is now recognized
- when searching for embedded stylesheets (previously only searched
- default ./stylesheets directory).
- * Default charset encoding changed from ISO-8859-1 to UTF-8 — it’s
- less language specific and displays most common languages.
- * template::[] macros now expand in all configuration file sections
- previously only in markup template sections.
- * Cleaned up example website layout CSS and configuration
- (presentation has not been changed).
- * Refactored xhtml11.conf configuration file.
- * Set consistent and sensible permissions on distributed files.
- * White space is now stripped from DSV formatted table cell data.
- * class="tableblock" attribute added to tables generated by
- xhtml-deprecated-css.conf to assist CSS.
-
- Bug fixes
- * Illegal character set encoder (specified by the AsciiDoc encoding
- attribute) and character data are trapped gracefully.
- * AsciiDoc table format attribute in table attribute lists were not
- recognized.
- * The nested horizontal labeled list example in the AsciiDoc User
- Guide has been dropped — it generated invalid DocBook markup.
- __________________________________________________________________
-
-42. Version 7.0.0 (2005-06-06)
-
- This is a major release with many code and documentation changes.
- Please report any problems you encounter.
-
- [172]Stuart Rackham
-
- Additions and changes
- * A new xhtml11 backend generates XHTML 1.1 with integrated CSS2
- replacing the previous xhtml, css, and css-embedded backends.
- * The CSS stylesheets have finally been rewritten.
- * The asciidoc(1) command help now includes user [173]customizable
- help topics. When asciidoc is invoked with the --help option the
- command argument is interpreted as a help topic.
- * The previous example website has been replaced by the actual
- AsciiDoc website (see ./examples/website/.
- * XHTML generation options now controlled by the following
- attributes: badges, linkcss, icons, numbered, quirks, theme,
- stylesdir, imagesdir (see the [174]User Guide for details.
- * By default HTML and XHTML are output as stand-alone documents (no
- embedded CSS and no linked admonition icon images).
- * Documents encoded with the UTF-8 Unicode character set are now
- processed thanks to a patch supplied by [175]Viktor Vasilev.
- * The -a ^name command-line syntax to undefine an attribute has been
- deprecated in favor of the -a name! syntax.
- * AttributeEntry syntax addition: :name!: to undefine name attribute.
- * Added template system block macro to allow the inclusion of one
- configuration file template section within another.
- * A verse style attribute can now be applied to literal paragraphs
- and blocks to reproduce line breaks and white space from the source
- document.
- * Replacements and Special Words can now be escaped with leading
- backslashes.
- * Replacements are now processed in configuration file order
- (previous ordering was indeterminate).
- * System macros can now be used in the base asciidoc.conf
- configuration file.
- * Deprecated features that emitted warnings in prior versions are no
- longer tolerated.
- * The eval system attribute expression evaluates to False the
- attribute is undefined, if it evaluates to True the result is an
- empty string.
- * The Paragraph and DelimitedBlock presubs parameter can be aliased
- as subs.
- * Added verbatim substitutions option.
- * Renamed List Continuation Block to List Block and renamed the
- listcontinuation option to list.
- * Deprecated default substitutions option (use normal instead).
- * The section-numbers section numbering attribute has be renamed
- numbered.
- * Dropped the #UNDER CONSTRUCTION# block macro.
- * Rewrote Paragraph and DelimitedBlock handlers adding a [176]styles
- configuration entry.
-
- Bug fixes
- * Included files are no longer read inside conditionally excluded
- content.
- * Manpage command names containing dashes (in the manpage NAME
- section) were misinterpreted as the spaced dash command
- name/purpose separator. Bug report and patch supplied by [177]David
- Greaves.
- * Unexpected error following malformed author line error.
- __________________________________________________________________
-
-43. Version 6.0.3 (2005-04-20)
-
- Additions and changes
- * Special characters are now substituted in AttributeEntry element
- values.
- * Spaced and unspaced em dashes are now recognized (previously only
- spaced em dashes were recognized).
- * Replaced the table noborders option with richer frame and grid
- attributes.
- * The duplicate macro warning message now only occurs when the
- verbose (-v) option is enabled.
- * Single lines starting with two forward slashes hard up against the
- left margin are treated as comments and are not processed.
- * Renamed section delimited block option to sectionbody to more
- accurately reflect it’s role.
- * Added a List Continuation block — a specialized delimited block
- that is functionally equivalent to the List Item Continuation
- feature except that the list contained within the block does not
- require explicit + list item continuation lines.
- * Dropped deprecated <u> tags from generated HTML.
- * Literal Block delimiters must now consist of at least four points
- (previously three) to avoid lone ellipsis ambiguity.
-
- Bug fixes
- * Some system attribute evaluation failures caused unexpected
- exceptions to occur.
- __________________________________________________________________
-
-44. Version 6.0.2 (2005-03-30)
-
- Additions and changes
- * Three new system block macros have been added — eval, sys and sys2
- which are the block macro equivalents to the same named system
- attributes.
- * Intrinsic macros have been renamed system macros along with action
- attributes which have been renamed system attributes:
- + To reflect their common (though contextually different)
- behavior.
- + To avoid confusion with intrinsic attributes.
-
- Bug fixes
- * Asciidoc now searches in /etc/asciidoc/filters for filters.
- __________________________________________________________________
-
-45. Version 6.0.1 (2005-03-06)
-
- Additions and changes
- * A global configuration file location /etc/asciidoc has been added
- and is now processed before all other locations (patch supplied by
- [178]Fredrik Steen).
- * Recoded tempfile.mktemp() and other artifacts that are no longer
- necessary or desirable (patches supplied by [179]Fredrik Steen).
- * Added BUGS file to the distribution.
-
- Bug fixes
- * Illegal comment syntax in css-embedded-stylesheet.conf resulted in
- illegal CSS in files generated by the css-embedded backend.
- __________________________________________________________________
-
-46. Version 6.0.0 (2005-01-28)
-
- This release has had some fairly major code and documentation changes.
- Please report any problems you encounter.
-
- [180]Stuart Rackham
-
- A lot of new stuff. A new major version number — some regression
- incompatibility (hopefully mitigated by deprecated warnings).
-
- Went mad trying to rein in the current feature anarchy — established a
- unified notion of document attributes. Attempted to introduce a
- consistent vocabulary — renamed many poorly or inconsistently named
- entities.
-
- Actually, deprecated syntax is still processed correctly in almost all
- cases. One source of incompatibility that may arise if you have
- customized CSS stylesheets is the change of AsciiDoc CSS class names
- (see below). I guess the moral is if you’ve done a lot of configuration
- file customization and are happy with version 5 then you may want to
- stay put.
-
- Note
- This version requires Python 2.3 or better to run.
-
- Additions and changes
- * Glossary entries have been renamed attributes. This eliminates
- confusion with the accepted meaning of glossary.
- * An AttributeEntry block element has been added so that document
- attributes can be assigned from within an AsciiDoc document.
- * The AttributeList block element has been added which is a more
- general solution than the (now deprecated) DelimitedBlock
- arguments.
- * An BlockId element has been added for setting block element anchor
- (link target) IDs.
- * Quoted text can now span multiple lines (thanks to James Bowlin for
- this patch).
- * Inline macros can now span multiple lines.
- * ‘`double backtick / apostrophe’' quotes generate “curly quotes”.
- * A warning is now emitted for out of order list item (applies to
- explicitly enumerated numbered list items).
- * Added include action attribute.
- * A line of three or more apostrophes generates an HTML horizontal
- ruler (<hr/> tag). You will get a warning if processed with
- non-HTML backend.
- * An {imagesdir} attribute specifies image file location for images
- referenced in configuration files when generating HTML (the default
- location is images).
- * An {stylesdir} attribute specifies the location of CSS stylesheets
- when generating styled HTML (the default location for configured
- markup is .).
- * The use of the (often inappropriately named) {caption} attribute
- list entry has been deprecated, use {0} instead.
- * New ExampleBlock delimited block along with associated variants
- Note, Tip, Warning, Caution and Important.
- * The docbook.conf file now facilitates the optional inclusion of a
- DocBook revision history file.
- * To better reflect their purpose the following block elements have
- been renamed: VerbatimBlock to ListingBlock; IndentedBlock to
- LiteralBlock; IndentedParagraph to LiteralParagraph; CustomBlock to
- BackendBlock; SimpleSection to SectionBody. Any corresponding CSS
- class names have also been changed which could result in backward
- incompatibility in customized stylesheets.
- * Swapped plain DocBook admonition icons for Jimmac’s DocBook icons
- ([181]http://jimmac.musichall.cz/ikony.php3). The original plain
- icons have been moved to ./images/plain.
- * Renamed html backend to xhtml to better reflect it’s function
- (former html-4 backend renamed to html).
- * A new inline anchor macro syntax [[[<id>]]] is available, it
- displays [<id>] at the anchor location and is for anchoring
- bibliography list entries.
- * An optional single-line titles syntax can be used.
- * Tweaks to distributed CSS stylesheets and FOP fo.xsl customization
- file.
- * List Item Continuation has been implemented which allows additional
- block elements to be included in list items by separating them from
- the preceding list item element with a line containing a single
- plus character.
- * A new Horizontal Labeled List list type has been added. Generates
- two column list — the first column contains the list element
- labels, the second contains the element text. Same syntax as
- Vertical Labeled Lists except the double colon label suffix is
- followed by the start of the list item text.
-
- Bug fixes
- * Fixed broken backslash line continuation.
- * Labeled list end tags were not undergoing attribute substitution.
- * Documents without any author information now generate legitimate
- DocBook (previously if the author line was not included in the
- document header then an empty (illegal) DocBook author element was
- generated).
- * Multiple spaces in filter command arguments were replaced by a
- single space. The ./examples/asciidoc2text/asciidoc2text.sh script
- now indents text correctly.
- __________________________________________________________________
-
-47. Version 5.1.1 (2004-10-10)
-
- 15-December-2004: Interim update: Updated asciidoc.py to fix broken
- join_lines function — no other changes.
- * PDF documentation is now produced from DocBook XML using XSLTLib
- and FOP. Previously we processed DocBook SGML with jw(1) (which
- used Dvips to convert DVI files to PDF). FOP has come a long way in
- the last 12 months and produces very acceptable PDF under both
- Linux and Windows.
- * Sections detailing how to install and use the DocBook XSL
- Stylesheets, xsltproc, FOP toolchain and the AsciiDoc XSLT drivers
- have been added to the User Guide.
- * The PDF output from the he example article template has been
- included in the distribution (./doc/article.pdf).
- * Special characters are emitted using decimal Unicode character
- codes (previously used named character entities which cannot be
- assumed included in non-HTML documents).
- * Added registered trademark ® to [replacements].
- * CSS stylesheet tweaks.
- * Admonitions (Note, Tip, Important, Warning, Caution) include icons
- when generating css output.
- __________________________________________________________________
-
-48. Version 5.1.0 (2004-09-18)
-
- * Callouts have been implemented (see the Callouts section of the
- AsciiDoc User Guide for details).
- * Added XSL drivers for generating XHTML, chunked XHTML and HTML Help
- from DocBook XML using XSL stylesheets and xsltproc(1).
- * Added CSS stylesheet for HTML generated from DocBook XML using XSL
- stylesheets.
- * Distribution contains HTML Help formatted User Guide
- (./doc/asciidoc.chm), the User Guide tells you how it’s generated.
- * Images referred to by distributed stylesheets are now located in
- the ./images subdirectory (previously located in .).
- * Filters path names are now handled properly under Cygwin.
- * The usual documentation and examples additions, updates and
- polishing.
- __________________________________________________________________
-
-49. Version 5.0.9 (2004-09-09)
-
- * The convention of using a .asc file extension for AsciiDoc files
- has been dropped in favor of the familiar .txt extension. It makes
- more sense in that AsciiDoc is a text presentation format and
- because .asc clashed with the same extension used by other
- applications. It’s only a naming convention — you don’t have to
- switch if you don’t want to.
- * Changed the subscript formatting character from underline to tilde
- since underscores in file names are reasonably common (especially
- in link and image macros).
- * An alternative syntax for the index term inline macro has been
- added: ++<primary>,<secondary>,<tertiary>++.
- * Index terms that have secondary and tertiary entries now
- additionally generate separate index terms for the secondary and
- tertiary entries.
- * A +<primary>+ index term inline macro has been added which displays
- the term in the primary text flow.
- * Added alternative variable list definition using double semi-colon
- terminator as opposed to the standard double colon terminator so
- variable lists can be nested to two levels.
- * Footnotes now appear on a separate line in HTML and Linuxdoc
- outputs.
- * Python version compatibility is checked at startup.
- * Preface and appendix section titles in multi-part Book documents
- are meant to be out of sequence — warnings are no longer emitted
- when outputting HTML.
- * Empty section warnings have been replaced by error messages and are
- emitted only if invalid markup would result.
- * Missing macro sections or invalid macro name warnings are only
- generated at startup if the -v (verbose) option is set. Otherwise
- they are deferred until a matching macro is encountered in the
- input file.
- * Missing or invalid table definition warnings are only generated at
- startup if the -v (verbose) option is set. Otherwise they are
- deferred until a matching table is encountered in the input file.
- * AsciiDoc now makes more of an effort to continue in the face of
- errors.
- * Fixed broken ./examples/website/main.aap script.
- * Converted distribution text files DOS text format as a sop to
- Windows users with challenged text editors.
- * Documentation additions and corrections.
- __________________________________________________________________
-
-50. Version 5.0.8 (2004-05-15)
-
- * Spurious out of sequence level 2 warnings no longer appear when
- processing book document multi-part book top level Preface and
- Appendix sub-sections since they are (correctly) out of sequence.
- * A warning is no longer emitted for empty Index sections since this
- is normal when generating DocBook outputs.
- * Fixed: [quotes] configuration file entries where not being
- overridden by downstream configuration file entries.
- * Footnote text is now output enclosed in square brackets in HTML
- documents.
- * Added superscripts and subscripts to the standard PRS configuration
- files.
- * Adjusted CSS stylesheets so list titles don’t have so much space
- between title and first list item (broken in IE6 due to poor CSS
- compliance). Lessened sidebar title top margin.
- __________________________________________________________________
-
-51. Version 5.0.7 (2004-04-22)
-
- * The version 5.0.6 README incorrectly stated that AsciiDoc would run
- under Python 2.0, in fact it requires Python 2.1 or better. The
- README has been corrected.
- * Documented techniques for combining and splitting AsciiDoc
- documents and processing the combined and split parts (see the Tips
- and Tricks section of the User Guide).
- * An example of marking up superscripts and subscripts is documented
- in the Tips and Tricks section of the User Guide (the example
- configuration file is in the AsciiDoc examples directory).
- * Added ellipsis to shipped [replacements]; three periods output an
- ellipsis entity.
- * Removed unused SectionClose class.
- * The AsciiDoc Preamble element is output as a DocBook Preface when
- processed as a book document type (in older AsciiDoc versions a
- warning was issued and processing stopped).
- * Fixed a quoting anomaly: quoted text can no longer begin or end
- with with white space.
- __________________________________________________________________
-
-52. Version 5.0.6 (2004-03-07)
-
- * New image macro implements optional image scaling and linking and
- works in both inline and block contexts. The image macro obsolesces
- the existing graphic block macro and icon inline macro.
- * Macro substitution section names now have -inlinemacro and
- -blockmacro suffixes to resolve context ambiguity, make their
- purpose clearer and relieve section namespace congestion.
- * Header derived glossary entries can now be overridden from the
- command-line.
- * Special character substitution is now performed on AuthorLine
- derived author names.
- * A macro or block argument called options can be used as a shortcut
- for a list named arguments with zero length string values.
- * Tables can be output without borders using the options="noborders"
- argument.
- * Table data lines that do not immediately follow a table section
- underline can now be blank. This allows CSV data with embedded
- blank lines to be processed correctly.
- * Blank DSV format table data lines are silently skipped.
- * Tightened up on enforcement of configuration file section names to
- reduce the possibility of section content being seen as a section
- header line.
- * Section titles can be optionally suffixed with title arguments
- enclosed in double square brackets.
- * A replacement has been added to asciidoc.conf to replace inline
- double dashes with the &mdash; entity.
- * Changed the .UNDER-CONSTRUCTION. macro syntax to
- #UNDER-CONSTRUCTION# so it is not mistaken for a BlockTitle.
- Similarly changed the .NEW. replacement with &#35;NEW&#35;.
- * &#35;NEW&#35; and #UNDER-CONSTRUCTION# macros are now included in
- the DocBook backend.
- * Replaced shipped smallnew.gif with smallnew.png.
- * Documentation tidy ups.
- __________________________________________________________________
-
-53. Version 5.0.5 (2004-02-25)
-
- * Fixed the disappearing paragraph titles problem that was caused by
- Inline macros (incorrectly) processing BlockTitles.
- * Tightened AuthorLine validation. Previously invalid email addresses
- and embedded special characters in the AuthorLine resulted in
- invalid output markup.
- __________________________________________________________________
-
-54. Version 5.0.4 (2004-02-09)
-
- * Reinstated missing infile, outfile, filetype and
- filetype-<filetype> glossary entries.
- * As of version 5.0.3 asciidoc(1) now requires Python 2.0 or greater,
- this has now been documented.
- __________________________________________________________________
-
-55. Version 5.0.3 (2004-01-23)
-
- * Fixed problem that caused any filters directory file containing
- .conf (not just those with the .conf extension) from being loaded.
- * All [miscellaneous] configuration file entries can now be
- referenced like glossary entries (they are now processed internally
- as glossary entries).
- * The output file line terminator (previously hardwired to \r\n is
- now set using the newline entry in the configuration file
- [miscellaneous] section.
- * The misspelt blocktitles configuration file entry name has been
- corrected (to blocktitle).
- * An {empty} glossary entry has been added to the default
- configuration which is useful for outputting trailing blank lines
- from configuration file substitution sections.
- __________________________________________________________________
-
-56. Version 5.0.2 (2003-12-18)
-
- * New (alternative) anchor and xref macro syntax (old syntax still
- valid).
- * DocBook mediaobject and inlinemediaobject tags are generated in
- place of graphic and inlinegraphic tags by the AsciiDoc graphic and
- icon macros. If a macro argument is specified it is the alternative
- text output if the target document format does not support the
- specified graphic file format.
- * Dropped the LinuxDoc left and right square bracket special
- character substitutions as they interfered with macro substitution.
- * Documentation updates and corrections.
- __________________________________________________________________
-
-57. Version 5.0.1 (2003-12-09)
-
- * Fixed problem with anchor tag when generating CSS styled HTML.
- __________________________________________________________________
-
-58. Version 5.0 (2003-12-08)
-
- This release has had some fairly major code and documentation changes.
- Please report any problems you encounter.
-
- [182]Stuart Rackham
-
- * AsciiDoc can now produce a full-blown multi-part DocBook book
- including dedication, abstract, preface, colophon, glossary,
- appendix, bibliography and book part elements using the new
- specialsections configuration file section.
- * All Section element children (Paragraph, DelimitedBlock, List,
- Table, BlockMacro) can now be titled using the BlockTitle element.
- A BlockTitle element is a single line containing a title and
- beginning with a period.
- * The index and backmatter macros have been dropped, superseded by
- specialsections.
- * The AsciiDoc Preface element has been renamed Preamble (to avoid
- confusion with the DocBook book preface element).
- * Out of sequence titles are now tolerated with a warning. This
- allows book document level 0 sections to be processed.
- * An anchor inline macro has been added for document link target
- creation.
- * Note, Tip, Important and Warning paragraph types have been added to
- support the corresponding DocBook elements.
- * Title substitution is now performed in SidebarBlock titles.
- * DocBook graphics now output as figure and informalfigure elements
- rather than mediaobjects. This ensures numbered figures and a lists
- of figures are produced by the DocBook toolchain.
- * You can now escape block argument lines by appending a backslash.
- Alternatively, if you embed arguments in the delimiter line
- AsciiDoc does not check for an arguments line.
- * The default DocBook backend file extension has been changed from
- .docbook to .xml (.sgml for the docbook-sgml backend).
- * Warnings are output by default (previously they only printed when
- verbose option enabled).
- * A Question and Answer variable list definition has been added to
- the shipped configuration files, primarily to create DocBook qanda
- DocBook elements.
- * Fixed broken code-filter -b linuxdoc option. The asciidoc.asc User
- Guide can now be processed by linuxdoc(1) (although tables are
- dropped because LinuxDoc does not implement tables).
-
- Compatibility issues:
- 1. Table titles are no longer in the arguments line, use the new
- BlockTitles.
- 2. Graphic titles are no longer in the graphic block macro caption,
- use the new BlockTitles.
- 3. The code-filter title must be placed in a preceding BlockTitle.
- 4. SidebarBlock titles must be placed in a preceding BlockTitle.
- 5. The DelimitedBlock option sidebar has been renamed to section.
- 6. The default DocBook backend file extension has been changed from
- .docbook to .xml (.sgml for the docbook-sgml backend).
- __________________________________________________________________
-
-59. Version 4.2 (2003-11-26)
-
- * The default HTML output is now XHTML 1.0 markup. To output the
- former HTML 4 markup specify the html-4 backend.
- * The default DocBook output is now DocBook XML. To output the former
- DocBook SGML specify the docbook-sgml backend. The associated
- docbook-sgml.conf file illustrates how to support minor DTD
- variations. Examples of using the xmlto(1) command for DocBook
- conversion have been added to the User Guide.
- * Glossary entries set using the command-line -g option can now be
- referenced in configuration files.
- * Configuration dumps (-c command-line option) no longer output
- redundant undefined glossary entries.
- * DelimitedBlock arguments can now be specified in a separate
- arguments line immediately following the leading delimiter line,
- This is in preference to the existing delimiter embedded arguments.
- Reasons:
- + The syntax is in keeping with the Tables arguments syntax.
- + It’s easier to enter and implements line continuation.
- * A new QuoteBlock DelimitedBlock definition has been added to the
- distribution configuration files.
- * The table arguments lines can be continued using the backslash line
- continuation character.
- * Added new calculated glossary reference type {<name>%<value>}.
- * Double-quote characters can now appear in unquoted positional
- arguments.
- __________________________________________________________________
-
-60. Version 4.1 (2003-11-13)
-
- * Added DSV (Delimiter Separated Values) tables format.
- * {eval:<expr>} glossary references drop the containing line if
- <expr> evaluates to None.
- * Block, Table and Macro arguments can now be positional (quoted or
- unquoted).
- * Vocabulary change: DelimitedBlock, Table and Macro attributes are
- now referred to as arguments. This makes more sense in light of the
- extended syntax and avoids confusion with backend markup tag
- attributes.
- * tablewidth table ruler parameter can now be expressed in percent
- units (0..100). If between 0 and 1 then the original fractional
- unit measure is applied.
- * The use of quoting for generating footnotes and index entries has
- been dropped in favor of footnote and indexterm inline macros.
- * backmatter inline macro included in distribution.
- * Fixed: CSS styled HTML tables are now fully XHTML 1.0 conformant.
- * Fixed: tablewidth was processed incorrectly when passed as table
- argument.
- * Fixed: Glossary references like {x=\{y}} were one character off if
- {x] was defined and {y} was not.
- __________________________________________________________________
-
-61. Version 4.0 (2003-11-08)
-
- This release has had some fairly major code and documentation changes.
- Please report any problems you encounter.
-
- Stuart Rackham
-
- * Added tables to AsciiDoc.
- * Added two special subs options: default specifies the default
- substitution options and none specifies no substitution. These
- options can only appear singly.
- * Line continuation using a trailing backslash character is available
- in Paragraphs, ListItems, Tables.
- * The left and right quotes for quoted text can now be specified
- separately.
- * Shipped configuration files implement footnotes (only useful for
- DocBook output) using \[[]] quoting.
- * Shipped configuration files implement index terms (only useful for
- DocBook and LinuxDoc output) using \(()) quoting.
- * The shipped html backend configuration now emits valid HTML 4.01
- Transitional.
- * Added new calculated glossary reference types {<name>!<value>} and
- {<name>#<value>}.
- * The DelimitedBlock params option has been dropped in favor of the
- new block attributes mechanism. If you have customized block params
- options you may need to adjust source files to use the block
- attributes syntax. The example code filter has been updated to
- reflect these changes.
- * The code filter now has a -t tabsize option.
- * Replaced -w option with -v (verbose) option. The warnings option
- was just to confusing.
- * Named attributes can now be specified in macro calls.
- * The tabsize attribute is recognized in the built-in include macros.
- A tabsize of zero suppresses tab expansion.
- * The configuration file [options] section has been split into
- [miscellaneous] and [titles]. If you have customized any of these
- settings you will need to adjust the affected configuration files.
- * Configuration file [miscellaneous] entries can now also be set
- using the command-line -g option.
- * Fixed: error that occurred when attempting to use zero length
- configuration and source files.
- * Fixed: blocking filter halt problem.
- * Fixed: inline macro escape prefix problem.
- * Fixed: missing macros from configuration dump problem.
- * Fixed: named macros were dumped incorrectly.
- * Many documentation changes/additions/corrections.
- __________________________________________________________________
-
-62. Version 3.2.2 (2003-10-26)
-
- * Added -n option (synonym for -g section-numbers).
- * Dropped the processing commentary (hey, this is Unix).
- * Added new calculated glossary reference type {<name>?<value>}.
- <name> is the glossary entry name and <value> is the text
- substituted if the glossary entry is defined. <value> can only
- contain literal text (no glossary references allowed).
- * Added asciidoc2text to distribution examples/asciidoc2text
- directory (converts AsciiDoc source to text file with section
- numbering).
- * Fixed incorrect nesting of Simple lists inside Variable lists.
- * List definitions have been modified so that list items can be
- indented. This allows a more intuitive indentation of nested lists
- in AsciiDoc source.
- * Lists must be separated from preceding paragraphs by a blank line.
- This is to avoid paragraph lines being mistaken for list items.
- * Corrected asciidoc man page documentation error: the`-f` option
- does not search relative to source document directory for the
- configuration file.
- * Minor updates to various distribution .conf files.
- * Included badges.conf in examples directory.
- * css-embedded-stylesheet.conf now supports footer badges.
- * The default in-line element processing order has been changed:
- Glossary References are now processed before Inline Macros. This
- allows glossary expansions to occur inside macro references.
- * Glossary entries are now allowed in Author and Revision lines.
- * Default List subs options and Paragraph presubs options are
- assigned the following default value if not specified:
- specialcharacters,quotes,specialwords,replacements,glossary,macros
- * Documentation changes/additions/corrections.
- __________________________________________________________________
-
-63. Version 3.2 (2003-05-26)
-
- * Added a -s command-line option to suppress the output of [header]
- and [footer] sections.
- * Article document headers are no longer mandatory: this allows
- AsciiDoc to process arbitrary chunks of text. When used in
- conjunction with the new -s command-line option corresponding
- chunks of backend markup can be generated.
- * AsciiDoc now emits a warning message and continues when an out of
- sequence section title is detected (previously it failed and
- halted). This allows document sections to be processed separately.
- * Optional presubs and postsubs entries have been added to
- DelimitedBlock and Paragraph definitions. As a consequence
- substitution options are no longer legal in options entries.
- * presubs and postsubs substitutions are processed in the order the
- options are specified (rather than the fixed options order of
- previous versions).
- * ./filters subdirectories are automatically searched for filter
- commands.
- * A title-subs configuration option specifies the substitutions
- performed on document Header and Section titles.
- * A subs entry in now included in List configuration file definitions
- that specified substitutions performed on list entry text.
- * Configuration files are auto-loaded from ./filters subdirectories.
- * Added example code filter (see ./examples/filters).
- * Bug fix: if section was empty you may have got erroneous missing
- tag "paragraph" error.
- * Internal code tidy up.
- __________________________________________________________________
-
-64. Version 3.1 (2003-05-18)
-
- * In version 3.0 a [macros] section entry of the form name was
- equivalent to name=. An entry of the form name now undefines the
- entry (to bring it in line with the behavior of other special
- sections).
- * Paragraphs have now been generalized (in the same way as Lists and
- DelimitedBlocks).
- * The indentsize option has been dropped as as consequence of
- paragraph generalization.
- * Pipe | characters can be included in substituted tag and
- substitution section text using the {brvbar} (broken vertical bar)
- glossary reference.
- * Removed the restriction requiring substitution section text
- placeholders | to be on a separate line.
- * Added an -e asciidoc(1) command option that excludes implicit
- configuration files (used in conjunction with -c generated
- configuration files).
- * Version 3.0 documentation has undergone a considerable cleanup.
- * The dumping of quoted section entries (see -c option) now works
- correctly.
- * The format of special section entries has been made consistent:
- name undefines the entry; name= sets the entry value to a blank
- string; name=value sets the entry value to value.
- * As a consequence of the previous change the caret prefix is no
- longer used in glossary configuration file entries (although it is
- still used when undefining an entry using the -g command-line
- option).
- __________________________________________________________________
-
-65. Version 3.0 (2003-05-13)
-
- This version is the culmination of work begun in the 2.x releases
- whereby fixed policy has been replaced by extensible mechanisms.
- * Added -c command-line option to dump a composite asciidoc(1)
- configuration file to stdout.
- * Lists and Delimited Blocks are now defined by a set of
- configuration file parameter sections. The user can modify the
- default definitions or add new ones.
- * Block content can now be processed through external filters.
- * The default behavior for Custom Blocks is to perform glossary
- substitution (previously there was no substitution inside Custom
- Blocks).
- * The old 2.x style macros have been reimplemented; as with Lists and
- Delimited Blocks there syntax and behavior can be configured by the
- user. The default macro syntax remains the same but the semantics
- are now (hopefully) a bit more intelligible.
- * Block and Builtin macros use :: delimiter instead of the 2.x single
- colon delimit (to distinguish them from inline macros). The 2.x
- syntax is still supported for backward compatibility.
- * Nested lists are now supported and IndentedParagraphs can be
- included in list items.
- * Conditional source inclusion can be specified using built in ifdef,
- ifndef and endif macros.
- * The new conditional source inclusion feature has been used to
- reduce the number of default configuration files down to one per
- backend.
- * A change of name: 2.x Substitutions are now called Replacements and
- the 2.x [substitutions] configuration file section is now called
- [replacements] (the old name is still recognized for backward
- compatibility).
- * The line break is now implemented as a Replacements substitution.
- * Inline icon macro for inline images has been added to default
- configuration files.
- __________________________________________________________________
-
-66. Version 2.2 (2003-04-07)
-
- * The master.conf configuration file name has been deprecated in
- favor of asciidoc.conf.
- * The standard configuration files set is now loaded from the
- .asciidoc folder in the users home directory (if it exists) and
- then from the source document directory. Configuration files that
- don’t exist are silently skipped.
- * Configuration files named like the source file will be
- automatically loaded if they are found in the source file
- directory. For example if the source file is mydoc.asc and the -b
- html option is used then asciidoc(1) will look for mydoc.conf and
- mydoc-html.conf in that order.
- * The characters used to quote formatted text can be configured and
- extended by the user (see the master.conf [quotes] section).
- * Quoted text can now be escaped by prefixing a backslash character
- to the leading quote.
- * The double single-quote '' strong text quote has been deprecated in
- favor of an asterisk * character.
- * Added {eval:expression}, {sys:command} and {sys2:command} glossary
- reference actions.
- * Trailing brace characters } are now allowed inside glossary
- references provided they are escaped with a backslash character.
- * Glossary entries can now be escaped by prefixing a backslash
- character to the leading brace character (use this in preference to
- placing the backslash inside the brace).
- * The output macro has been deprecated (use the new include1 macro
- inside a CustomBlock).
- * The default document type is article (asciidoc no longer attempts
- to guess).
- * Files included within DelimitedBlocks are not searched for block
- termination underlines. This ensures the entire file is part of the
- DelimitedBlock.
- * include macros can now be used in configuration files.
- * Corrected {infile} and {outfile} glossary entry documentation.
- * File inclusion is now limited to a depth of 5 to catch recursion
- loops.
- * Inline tags have been deprecated, they’re not necessary and they
- immediately make the source document backend specific. Use
- CustomBlocks or Substitutions instead.
- __________________________________________________________________
-
-67. Version 2.1 (2003-03-17)
-
- * Added section auto numbering {sectnum} glossary entry
- (auto-numbering function contributed by Ludovico Magnocavallo).
- * asciidoc(1) now correctly returns non-zero exit status if an error
- occurs.
- * An AsciiDoc example website has been included in the AsciiDoc
- distribution examples/website directory.
- * NOTE: The asciidoc wrapper script included in the 2.0 distribution
- has been dropped, if you’ve symlinked or aliased to asciidoc you’ll
- need to change them to point directly to asciidoc.py instead.
- * An RCS $Id$ marker can be used as the document header revision line
- (based on a patch submitted by Ludovico Magnocavallo).
- * In addition to the name=value glossary entry format two new ones
- have been introduced: name (the default value is set to an empty
- string) and ^name (the glossary entry is undefined).
- * The -q command-line option has been deprecated and the -w level
- command-line option added.
- NOTE: By default skipped substitution warnings are now suppressed.
- * If a configuration file specified with the -f command-line option
- is not found relative to the current working directory then the
- search is repeated relative to the asciidoc(1) directory. This
- allows global configuration files to be used.
- * Added {infile}, {outfile} predefined glossary entries.
- * Added under-construction macro to HTML article configuration files.
- * Deprecated {asciidoc_version} glossary entry in favor of
- {asciidoc-version} (to it consistent with other entries).
- __________________________________________________________________
-
-68. Version 2.0 (2003-02-24)
-
- * The emphasized, strong and monospaced words options have been
- generalized with the introduction of macro based special words
- lists.
- * Glossary references can now appear in both the document and macro
- bodies.
- * All output files use crlf line termination (previously used UNIX lf
- (newline) termination).
- * Added [substitutions] section which implements arbitrary regular
- expression based substitutions.
- * An optional master.conf configuration file can be used for entries
- that are not backend or document type specific.
- * Special character definitions moved from the code to the new
- [special_characters] configuration file section.
- * Configuration file glossary added.
- * Command-line -g glossary entry added.
- * A new book document type has been implemented for the docbook
- backend. It outputs DocBook book documents.
- * A major internal change has been the implementation of parametrized
- user definable macros. Internally most document elements are now
- processed as macros.
- * Configuration file macro variables can be specified with default
- values (literals or other macro variables).
- * An attempt has been made to tighten up the vocabulary used to
- describe the AsciiDoc document syntax.
- * The term abstract has been replaced by the more general term
- preface and a new preface section introduced into article
- configuration files (replacing the synopsis sections).
- * Any section elements can now be put in the document preface
- (previous versions only allowed paragraphs).
- * AsciiDoc Blocks have been unified and their behavior can be user
- defined and parametrized.
- * An output inclusion allows an external file to be written directly
- to the backend output file.
- * A new CustomBlock has been added. Default behavior is to insert the
- enveloped AsciiDoc source lines directly into the output file.
- * A line break tag can be inserted by terminating a line with a +
- character (only really useful for HTML backends).
- * An fourth section level has been introduced.
- * The SidebarBlock delimiter line characters have been changed. The
- deprecated underline is still accepted.
- * Levels 2 and 3 title underline characters have been changed. The
- deprecated underlines are still accepted.
- * Lines with backend specific inline tags can be inserted into
- AsciiDoc source files.
- * Single words enveloped by underscores are no longer emphasized.
- This feature was deprecated as it is redundant (use single quotes
- instead) and was being applied to file names with underscores.
- * A -q quiet option has been added to suppress warning messages.
- * Badge images sourced locally.
- * Added author and author-mail meta tags to HTML configuration files.
- __________________________________________________________________
-
-69. Version 1.5 (2003-01-08)
-
- * Implemented sidebar document elements.
- * Explicit checks for user specified configuration files and input
- file (rather than throwing exception).
- __________________________________________________________________
-
-70. Version 1.4 (2003-01-04)
-
- * New configuration file options emphasizedwords and strongwords.
- These allow the definition of words that will always be emphasized
- or rendered in a strong font without inline formatting.
- * Document and section titles are no long subject to inline
- formatting.
- * Multiple configuration files can be overlaid in a single command.
- * Configuration file tags and options entries can now be overridden
- on an entry by entry basis (previously the entire section was
- overloaded).
- * Configuration file tags and options entries are now cached this has
- resulted in around 37% performance improvement over version 1.3.
- * Variable lists can now contain multiple terms per list item.
- * Placeholder paragraph eliminated from empty sections that contain
- subsections.
- * Added {asciidoc_version} substitution variable.
- * More documentation additions and tidy ups.
- __________________________________________________________________
-
-71. Version 1.3 (2003-01-01)
-
- * A new strong text formatting convention has been implemented: Word
- phrases enclosed in pairs of single quote characters (acute
- accents) are rendered in a strong font (usually bold).
- * Paragraphs can now be followed immediately by Simple lists and
- Ordered lists without an intervening blank line.
- * A user specified configuration file (asciidoc(1) -f option)
- overlays the default configuration file rather than replacing it.
- Custom configuration files need only contain those sections that
- have been customized.
- * Comment Block delimiters have been relaxed slightly. They must
- start with three forward slashes /// but the remainder can contain
- any characters, this allows comments to be embedded in the
- delimiter line.
- * Leading non-digit characters preceding revision number are now
- ignored.
- * Set default indentsize [option] from 2 to documented default value
- of zero in HTML backend html-article.conf and html-manpage.conf
- files.
- * Fixed error that occurred when taking input from stdin without
- explicitly specifying a document type.
- * Restored file name and line number error message information.
- * Changed deprecated -t option to -d in asciidoc --help and usage
- command output.
- * CSS styles tweaking.
- * Code, configuration file and documentation tidy ups.
- __________________________________________________________________
-
-72. Version 1.2 (2002-12-28)
-
- * Implemented include URL to allow file inclusion.
- * fileextension configuration file [option] renamed to more sensible
- outfilesuffix (fileextension still accepted by this version but
- will be dropped in future).
- * Improved error reporting.
- * CSS backends generate valid XHTML.
- * New css-embedded backend generates HTML with embedded stylesheets
- (use the css backend for linked stylesheets). The css-embedded
- backend output contains no linked images so the generated html
- files are completely self contained.
- * Bug fixes.
- __________________________________________________________________
-
-73. Version 1.1 (2002-12-03)
-
- * Added css (cascading style sheets) backend
- * Implemented IndentedBlock document element.
- * Tabsize command-line option has been deprecated in favor of
- configuration file.
- * Default indent width changed to zero.
- * Added {localdate} and {localtime} substitution variables.
- * Added optional [options] configuration file section with
- fileextension, tabsize and indentsize options.
- * Implemented {authorinitials} substitution variable.
- * Added https link type.
- * Corrected [graphic] substitution from {title} to {caption} in
- linuxdoc-article.conf configuration file.
- * Fixed error that occurred when == title underline was used.
- __________________________________________________________________
-
-74. Version 1.0 (2002-11-25)
-
- First AsciiDoc public release along with AsciiDoc web site
- ([183]http://www.methods.co.nz/asciidoc/) and SourceForge.net project
- registration ([184]https://sourceforge.net/projects/asciidoc/).
- __________________________________________________________________
-
- Version 8.6.8
- Last updated 2012-07-17 07:24:10 NZST
-
-References
-
- 1. https://groups.google.com/group/asciidoc/browse_thread/thread/7be28e9714f249c7
- 2. https://groups.google.com/group/asciidoc/browse_thread/thread/961a957ab5872ebf
- 3. https://groups.google.com/group/asciidoc/browse_thread/thread/961a957ab5872ebf
- 4. https://groups.google.com/group/asciidoc/browse_thread/thread/9e79d8494ef8d870
- 5. https://groups.google.com/group/asciidoc/browse_frm/thread/64b071bb21de9cf0
- 6. https://groups.google.com/group/asciidoc/browse_frm/thread/e045c9986c71d72a
- 7. https://groups.google.com/group/asciidoc/browse_thread/thread/f5174f450a61f14b
- 8. https://groups.google.com/group/asciidoc/browse_thread/thread/db3b734a6931cb74
- 9. https://groups.google.com/group/asciidoc/browse_thread/thread/13c9ee97930342b3
- 10. http://groups.google.com/group/asciidoc/browse_thread/thread/a9762e21ec0cc244/5d3a4ebf20e6847e
- 11. http://groups.google.com/group/asciidoc/browse_thread/thread/843d7d3d671006fb/25628e14c829db3f
- 12. http://groups.google.com/group/asciidoc/browse_thread/thread/b8e93740b7cd0e1d/b5e0b83fe37ae31a
- 13. http://groups.google.com/group/asciidoc/browse_thread/thread/3d06b0105dfbb780/8c60eb7a62f522e4
- 14. http://groups.google.com/group/asciidoc/browse_thread/thread/33e99b78e2472122
- 15. http://groups.google.com/group/asciidoc/browse_thread/thread/8200e29815c40f72
- 16. http://groups.google.com/group/asciidoc/browse_thread/thread/849e5ea91f43adf2
- 17. http://groups.google.com/group/asciidoc/browse_thread/thread/e92a75abcc382701
- 18. http://groups.google.com/group/asciidoc/browse_thread/thread/58d0843ae4345afd
- 19. http://groups.google.com/group/asciidoc/browse_thread/thread/b0e69e393b6f9f20/47a2c7586f9e40c6?lnk=gst&q=themes+tarball#47a2c7586f9e40c6
- 20. http://groups.google.com/group/asciidoc/browse_thread/thread/b9d705c6b6b39f59/1e120483dafca109
- 21. http://groups.google.com/group/asciidoc/browse_thread/thread/103445ab9d95cb0c
- 22. http://code.google.com/p/asciidoc/issues/detail?id=9
- 23. http://groups.google.com/group/asciidoc/browse_thread/thread/4608b77ec289f6c4
- 24. http://groups.google.com/group/asciidoc/browse_thread/thread/14e8fcb289a135b/3af3b4e57b827c78?lnk=gst&q=archlinux#3af3b4e57b827c78
- 25. http://groups.google.com/group/asciidoc/browse_thread/thread/5e2e6f4dd740d51a
- 26. http://groups.google.com/group/asciidoc/browse_thread/thread/5e2e6f4dd740d51a
- 27. http://groups.google.com/group/asciidoc/browse_thread/thread/a839aa01db0765d2
- 28. http://groups.google.com/group/asciidoc/browse_thread/thread/734ac5afed736987
- 29. http://groups.google.com/group/asciidoc/browse_thread/thread/6436788a10561851
- 30. http://groups.google.com/group/asciidoc/browse_thread/thread/c9238380a1f2507a
- 31. http://groups.google.com/group/asciidoc/browse_thread/thread/ec8e8481eb0e27b0/d1c035092b5bb7a4?lnk=gst&q=caption+option#d1c035092b5bb7a4
- 32. http://groups.google.com/group/asciidoc/browse_thread/thread/3e177b84bc133ca9/659796dfadad30ea?lnk=gst&q=a2x+format#659796dfadad30ea
- 33. http://groups.google.com/group/asciidoc/browse_thread/thread/16d3fb9672a408e7
- 34. http://groups.google.com/group/asciidoc/browse_thread/thread/bacbf8aeb8ad6a3a
- 35. http://code.google.com/p/asciidoc/issues/detail?id=8
- 36. http://groups.google.com/group/asciidoc/browse_thread/thread/6436788a10561851
- 37. http://groups.google.com/group/asciidoc/browse_thread/thread/e8f3938bcb4c8bb4/44d13113a35738ef
- 38. http://groups.google.com/group/asciidoc/browse_thread/thread/c9238380a1f2507a/9afc4559d51e1dbd
- 39. http://groups.google.com/group/asciidoc/browse_thread/thread/8c111f1046b33691/158a944cf4d5ff0d?lnk=gst&q=latex+escapes#158a944cf4d5ff0d
- 40. http://groups.google.com/group/asciidoc/browse_thread/thread/eaf25f21d1da180a
- 41. http://flask.pocoo.org/docs/
- 42. file://localhost/tmp/lynxXXXXrCQLhm/article-html5-toc2.html
- 43. file://localhost/tmp/lynxXXXXrCQLhm/epub-notes.html
- 44. http://flask.pocoo.org/docs/
- 45. http://groups.google.com/group/asciidoc/browse_thread/thread/9da9d48a6461ff14
- 46. http://groups.google.com/group/asciidoc/browse_thread/thread/5c792cbb395b753b
- 47. http://groups.google.com/group/asciidoc/browse_thread/thread/e2100b7cb29283ce
- 48. http://groups.google.com/group/asciidoc/browse_thread/thread/c5e30ee5555877f5
- 49. http://groups.google.com/group/asciidoc/browse_thread/thread/baf3218551d05a05
- 50. http://groups.google.com/group/asciidoc/browse_thread/thread/5a7fe64fbfd65ad
- 51. http://groups.google.com/group/asciidoc/browse_thread/thread/5620ba634fdb030a
- 52. http://groups.google.com/group/asciidoc/browse_thread/thread/f969b9ce987d7f5d
- 53. http://groups.google.com/group/asciidoc/browse_thread/thread/cd0f47495fd04181
- 54. http://code.google.com/p/asciidoc/issues/detail?id=6&q=label%3APriority-Medium
- 55. http://sourceforge.net/tracker/?func=detail&atid=373747&aid=2854075&group_id=21935
- 56. http://groups.google.com/group/asciidoc/browse_thread/thread/b24cc3362f35b801
- 57. http://www.methods.co.nz/asciidoc/userguide.html#X96
- 58. http://groups.google.com/group/asciidoc/browse_thread/thread/77f28b0dfe60d262
- 59. http://www.methods.co.nz/asciidoc/manpage.html
- 60. http://groups.google.com/group/asciidoc/browse_thread/thread/40c64cd33ee1905c
- 61. http://groups.google.com/group/asciidoc/browse_thread/thread/e15282f072413940
- 62. http://groups.google.com/group/asciidoc/browse_thread/thread/5ac8e8ea895147e9
- 63. http://groups.google.com/group/asciidoc/browse_thread/thread/e15282f072413940
- 64. http://groups.google.com/group/asciidoc/browse_thread/thread/e15282f072413940
- 65. http://groups.google.com/group/asciidoc/browse_thread/thread/b11066a828ab45b9
- 66. http://groups.google.com/group/asciidoc/browse_thread/thread/a1dd0562dee8b939
- 67. http://groups.google.com/group/asciidoc/browse_thread/thread/f44615dca0b834e9
- 68. http://groups.google.com/group/asciidoc/browse_thread/thread/1b3f88f1f8118ab3
- 69. http://groups.google.com/group/asciidoc/browse_thread/thread/c21c2902c29bae64
- 70. http://groups.google.com/group/asciidoc/browse_thread/thread/f510ea82a88aaee8
- 71. http://groups.google.com/group/asciidoc/browse_thread/thread/42b63ce90c2563b8
- 72. http://groups.google.com/group/asciidoc/browse_thread/thread/42b63ce90c2563b8
- 73. http://bugs.python.org/issue3932
- 74. http://groups.google.com/group/asciidoc/browse_thread/thread/dedc961b23e9ac56
- 75. https://phillordbio-asciidoc-fixes.googlecode.com/hg/
- 76. http://groups.google.com/group/asciidoc/browse_thread/thread/c14a4c3b1e4f6dc5
- 77. http://groups.google.com/group/asciidoc/browse_thread/thread/c948697943432e24
- 78. http://groups.google.com/group/asciidoc/browse_thread/thread/1c415fc4540ce5e5
- 79. http://groups.google.com/group/asciidoc/browse_thread/thread/8712a95e95a292a7
- 80. http://groups.google.com/group/asciidoc/browse_thread/thread/c4427a3902d130a8
- 81. http://groups.google.com/group/asciidoc/browse_thread/thread/59a610068e4acb58
- 82. http://groups.google.com/group/asciidoc/browse_thread/thread/b22603bfb879418c
- 83. http://groups.google.com/group/asciidoc/browse_thread/thread/1c02d27d49221aa2
- 84. http://groups.google.com/group/asciidoc/browse_thread/thread/5f3e825c74ed30c
- 85. http://pygments.org/
- 86. http://groups.google.com/group/asciidoc/browse_thread/thread/d8d042f5a3021369/8934ebbb8cb7144b
- 87. http://groups.google.com/group/asciidoc/browse_frm/thread/319e5cd94493e330/3fcb83fab067af42
- 88. http://groups.google.com/group/asciidoc/browse_frm/thread/fe9b33d8f5f1e0af
- 89. http://groups.google.com/group/asciidoc/browse_frm/thread/8eda3ea812968854
- 90. http://groups.google.com/group/asciidoc/browse_frm/thread/7174cb7598993c72
- 91. http://groups.google.com/group/asciidoc/browse_frm/thread/66e7b59d12cd2f91
- 92. http://groups.google.com/group/asciidoc/browse_frm/thread/7174cb7598993c72
- 93. http://groups.google.com/group/asciidoc/browse_frm/thread/7174cb7598993c72
- 94. http://groups.google.com/group/asciidoc/browse_frm/thread/219c86ae25b79a21
- 95. http://groups.google.com/group/asciidoc/browse_frm/thread/af652507caf6cec9
- 96. http://groups.google.com/group/asciidoc/browse_frm/thread/3f96900f7fbf5620
- 97. http://groups.google.com/group/asciidoc/browse_frm/thread/7174cb7598993c72
- 98. http://groups.google.com/group/asciidoc/browse_frm/thread/2ff802547b6a75ea
- 99. http://groups.google.com/group/asciidoc/browse_thread/thread/14e8fcb289a135b
- 100. http://groups.google.com/group/asciidoc/browse_thread/thread/faa36e9e5c7da019/d24cab3fe363e58d
- 101. http://groups.google.com/group/asciidoc/browse_frm/thread/ac4b9bfa2116db28
- 102. http://groups.google.com/group/asciidoc/browse_frm/thread/c17abd175778f5ea
- 103. http://groups.google.com/group/asciidoc/browse_frm/thread/c17abd175778f5ea
- 104. http://groups.google.com/group/asciidoc/browse_frm/thread/1b6b66adb24e710
- 105. http://groups.google.com/group/asciidoc/browse_frm/thread/a23fea28394c8ca9
- 106. http://groups.google.com/group/asciidoc/browse_frm/thread/50b28f6941de111a
- 107. http://groups.google.com/group/asciidoc/browse_frm/thread/dfe5204d5b2c9685
- 108. http://groups.google.com/group/asciidoc/browse_frm/thread/f0b6f9989f828c3
- 109. http://groups.google.com/group/asciidoc/browse_frm/thread/14aefc1cb6bd85f5
- 110. http://groups.google.com/group/asciidoc/browse_frm/thread/cb8b7694bbc82a6
- 111. http://groups.google.com/group/asciidoc/browse_frm/thread/cb8b7694bbc82a6
- 112. http://groups.google.com/group/asciidoc/browse_frm/thread/4b0f364b477ec165
- 113. http://groups.google.com/group/asciidoc/browse_frm/thread/e5e61823ff4203cd
- 114. http://groups.google.com/group/asciidoc/browse_frm/thread/2aa3e5711d243045
- 115. http://groups.google.com/group/asciidoc/browse_frm/thread/5215c99dcc865e7d
- 116. http://hg.sharesource.org/asciidoc/diff/55a5999bfd04/xhtml11.conf
- 117. http://groups.google.com/group/asciidoc/browse_frm/thread/b276a927fdc87995
- 118. http://groups.google.com/group/asciidoc/browse_frm/thread/f4df7c9eec01a9bd
- 119. http://groups.google.com/group/asciidoc/browse_frm/thread/f4df7c9eec01a9bd
- 120. http://groups.google.com/group/asciidoc/browse_frm/thread/d29924043e21cb6a
- 121. http://groups.google.com/group/asciidoc/browse_frm/thread/74d9a542b79ccd50
- 122. http://groups.google.com/group/asciidoc/browse_frm/thread/ea3a8ea399ae5d2a
- 123. http://groups.google.com/group/asciidoc/browse_frm/thread/69b3183fdab7c6a5
- 124. http://groups.google.com/group/asciidoc/browse_frm/thread/a254cf949ea7c6c5
- 125. http://groups.google.com/group/asciidoc/browse_frm/thread/e1dcb7ee0efc17b5
- 126. http://groups.google.com/group/asciidoc/browse_frm/thread/69b3183fdab7c6a5
- 127. http://groups.google.com/group/asciidoc/browse_frm/thread/1badad21ff9447ac
- 128. http://groups.google.com/group/asciidoc/browse_frm/thread/a42db6bc54c2c537
- 129. http://groups.google.com/group/asciidoc/browse_frm/thread/b9c63be67dd1d11c
- 130. http://groups.google.com/group/asciidoc/browse_frm/thread/1269dc2feb1a482c
- 131. http://groups.google.com/group/asciidoc/browse_frm/thread/36ff073c79cbc20a
- 132. http://www.methods.co.nz/asciidoc/userguide.html#X89
- 133. http://groups.google.com/group/asciidoc/browse_thread/thread/62278a054188a038
- 134. http://groups.google.com/group/asciidoc/browse_thread/thread/4bdcdfb0af773e2
- 135. http://groups.google.com/group/asciidoc/browse_thread/thread/c93bb4db025225d8
- 136. http://groups.google.com/group/asciidoc/browse_thread/thread/1d796a9c9ddb2855
- 137. http://groups.google.com/group/asciidoc/browse_thread/thread/6d8c716748b109e3
- 138. http://groups.google.com/group/asciidoc/browse_thread/thread/fd27add515597c06
- 139. http://www.methods.co.nz/asciidoc/testasciidoc.html
- 140. http://www.methods.co.nz/asciidoc/asciidocapi.html
- 141. file://localhost/tmp/lynxXXXXrCQLhm/L12417-6257TMP.html#X2
- 142. http://www.methods.co.nz/asciidoc/INSTALL.html
- 143. http://www.methods.co.nz/asciidoc/newtables.html
- 144. http://www.methods.co.nz/asciidoc/newlists.html
- 145. http://www.methods.co.nz/asciidoc/userguide.html#X77
- 146. http://www.methods.co.nz/asciidoc/userguide.html#X76
- 147. http://www.methods.co.nz/asciidoc/latexmath.pdf
- 148. http://www.methods.co.nz/asciidoc/asciimathml.html
- 149. http://www.methods.co.nz/asciidoc/latexmathml.html
- 150. http://www.methods.co.nz/asciidoc/source-highlight-filter.html
- 151. https://sharesource.org/hg/asciidoc/
- 152. http://en.wikipedia.org/wiki/Data:_URI_scheme
- 153. http://www.methods.co.nz/asciidoc/faq.html
- 154. http://www.maths.nottingham.ac.uk/personal/drw/lm.html
- 155. http://www.methods.co.nz/asciidoc/asciimathml.html
- 156. http://www.methods.co.nz/asciidoc/index.html
- 157. http://tpl.sourceforge.net/userguide.html
- 158. http://www.methods.co.nz/asciidoc/music-filter.html
- 159. http://lilypond.org/
- 160. http://abcnotation.org.uk/
- 161. mailto:srackham@gmail.com
- 162. mailto:jlm@ofb.net
- 163. mailto:m_pupil@yahoo.com.cn
- 164. http://open.comsultia.com/docbook2odf/
- 165. http://www1.chapman.edu/~jipsen/mathml/asciimath.html
- 166. http://www.methods.co.nz/asciidoc/asciimath.html
- 167. file://localhost/tmp/lynxXXXXrCQLhm/userguide.html#X33
- 168. mailto:francis@daoine.org
- 169. file://localhost/tmp/lynxXXXXrCQLhm/userguide.html#X39
- 170. file://localhost/tmp/lynxXXXXrCQLhm/source-highlight-filter.html
- 171. mailto:trolocsis@gmail.com
- 172. mailto:srackham@gmail.com
- 173. file://localhost/tmp/lynxXXXXrCQLhm/userguide.html#X36
- 174. file://localhost/tmp/lynxXXXXrCQLhm/userguide.html#X33
- 175. mailto:viktor@rbg.informatik.tu-darmstadt.de
- 176. file://localhost/tmp/lynxXXXXrCQLhm/userguide.html#X23
- 177. mailto:david@dgreaves.com
- 178. mailto:stone@debian.org
- 179. mailto:stone@debian.org
- 180. mailto:srackham@gmail.com
- 181. http://jimmac.musichall.cz/ikony.php3
- 182. mailto:srackham@gmail.com
- 183. http://www.methods.co.nz/asciidoc/
- 184. https://sourceforge.net/projects/asciidoc/
diff --git a/source-builder/sb/asciidoc/CHANGELOG.txt b/source-builder/sb/asciidoc/CHANGELOG.txt
deleted file mode 100644
index 5b01600..0000000
--- a/source-builder/sb/asciidoc/CHANGELOG.txt
+++ /dev/null
@@ -1,3128 +0,0 @@
-AsciiDoc ChangeLog
-==================
-
-:website: http://www.methods.co.nz/asciidoc/
-
-
-Version 8.6.8 (2012-07-17)
---------------------------
-.Release highlights
-Added full complement of styles to 'Open Blocks' and 'Normal
-Paragraphs' -- those with a minimalist bent could construct virtually
-any document using just Title, Normal Paragraph and Open Block
-syntaxes.
-
-.Other additions and changes
-- Increased default maximum include depth from 5 to 10.
-- Emit warning if maximum include depth is exceeded.
-- Suppress repeated console messages.
-- Music filter: removed '--beams=None' option from abc2ly invocation
- because it is broken on LilyPond 2.14 (Ubuntu 12.04).
-- Replaced obsolete '<tt>' tag with '<code>' in HTML backends.
-- Allow configuration attribute entries to create a new section
- (previously you could only modify existing sections). See:
- https://groups.google.com/group/asciidoc/browse_thread/thread/7be28e9714f249c7[discussion
- list].
-- Documented `{wj}` (word-joiner) attribute and updated FAQ. See:
- https://groups.google.com/group/asciidoc/browse_thread/thread/961a957ab5872ebf[discussion
- list].
-- FAQ: Added 'How can I place a footnote immediately following quoted
- text?' See
- https://groups.google.com/group/asciidoc/browse_thread/thread/961a957ab5872ebf[discussion
- list].
-- Added Greek language configuration file. Contributed by Michael
- Dourmousoglou. See
- https://groups.google.com/group/asciidoc/browse_thread/thread/9e79d8494ef8d870[discussion
- list].
-- FAQ: Added 'Using roles to select fonts for PDF'. Submitted by Lex
- Trotman and based on solution by Antonio Borneo. See:
- https://groups.google.com/group/asciidoc/browse_frm/thread/64b071bb21de9cf0[discussion
- list].
-- Apply same monospaced font size to all monospaced text.
-- Changed '0' number padding to spaces in numbered GNU
- source-highlight outputs.
-- Allow 'highlight' source highlighter to use 'python' for Python
- `{language}` name. r1142: Update the AsciiDoc 'source' filter to
- allow the use of the 'highlight' source code highlighter. See
- https://groups.google.com/group/asciidoc/browse_frm/thread/e045c9986c71d72a[discussion
- list].
-+
-NOTE: The 'pygments' attribute has been deprecated in favor of the new
-'source-highlighter' attribute.
-
-- Vim syntax highlighter: Don't confuse trailing open block delimiter
- with section underline.
-- Added 'skip' option to paragraphs (c.f. Delimited Block 'skip'
- option).
-
-.Bug fixes
-- *FIXED*: latex, music and graphviz filters: When the filter output
- image is data-uri encoded write it to the indir (instead of the
- outdir) so that encoder can find it. See
- https://groups.google.com/group/asciidoc/browse_thread/thread/f5174f450a61f14b[discussion
- list].
-- *FIXED*: Escape the ']' character inside inline macros. See
- https://groups.google.com/group/asciidoc/browse_thread/thread/db3b734a6931cb74[discussion
- list].
-- *FIXED*: source highlighter filter: Pass 'role' attribute to HTML
- backends.
-- *FIXED*: source highlight filter: docbook backend: 'role' attribute
- was not passed to listings without a title. Patch submitted by Lex
- Trotman. See
- https://groups.google.com/group/asciidoc/browse_thread/thread/13c9ee97930342b3[discussion
- list].
-- *FIXED*: music2png.py: 'FOPException: Raster ByteInterleavedRaster'
- error (FOP 1.0, ImageMagick 6.6.9-7).
-
-
-
-Version 8.6.7 (2012-03-17)
---------------------------
-.Release highlights
-No major enhancements but quite a few bug fixes which, among other
-things, fixes Jython compatibility and improves Windows compatibility.
-
-.All additions and changes
-- Vim syntax highlighter: highlight entity refs in macro arguments.
-- Added files with `.asciidoc` extension to Vim file type detection.
- http://groups.google.com/group/asciidoc/browse_thread/thread/a9762e21ec0cc244/5d3a4ebf20e6847e[Patch]
- submitted by Dag Wiers.
-- Added 'replacement3' substitution to enable
- http://groups.google.com/group/asciidoc/browse_thread/thread/843d7d3d671006fb/25628e14c829db3f[ODT
- whitespace processing].
-- Added 'unbreakable' option to XHTML and HTML 5 backends.
-- Implemented toc::[] block macro and 'toc-placement' attribute for
- HTML backends to allow the Table of Contents placement to be set
- manually by the author.
-- Added FAQs: 'How can I control page breaks when printing HTML
- outputs?' and 'Is it possible to reposition the Table of Contents
- in HTML outputs?'.
-- Added `--backend` and `--backend-opts` options to the 'a2x' command
- to allow 'a2x' to use backend plugin code extensions.
- http://groups.google.com/group/asciidoc/browse_thread/thread/b8e93740b7cd0e1d/b5e0b83fe37ae31a[Patch]
- submitted by Lex Trotman.
-- Added
- http://groups.google.com/group/asciidoc/browse_thread/thread/3d06b0105dfbb780/8c60eb7a62f522e4[args
- block attribute] to source highlight blocks to allow arbitrary
- parameters to be passed to the source highlighters.
-- If the 'ascii-ids' attribute is defined then non-ascii characters in
- auto-generated IDs
- http://groups.google.com/group/asciidoc/browse_thread/thread/33e99b78e2472122[are
- replaced] by their nearest ascii equivalents (to work around DocBook
- processor limitations).
-- Added global 'blockname' attribute which is dynamically updated to
- identify the current block. See
- http://groups.google.com/group/asciidoc/browse_thread/thread/8200e29815c40f72[discussion
- list].
-- 'xhtml11', 'html5' backends: Include book part TOC entries for
- multi-part books. Patch submitted by Loïc Paillotin.
-- Removed code filter example from the AsciiDoc User Guide so that
- backends implemented as external plugins can compile the manual. See
- http://groups.google.com/group/asciidoc/browse_thread/thread/849e5ea91f43adf2[discussion
- list].
-- If the delimited block 'skip' option is set then do not consume
- block title and attributes. This makes it possible for the comment
- delimited blocks to use an attribute list (previously the comment
- delimited block was hardwired to skip preceding attributes and
- titles). See
- http://groups.google.com/group/asciidoc/browse_thread/thread/e92a75abcc382701[discussion
- list].
-- Added `backend-confdir` intrinsic attribute.
-
-.Bug fixes
-- *FIXED*: slidy backend: broken 'stylesheet' attribute.
- http://groups.google.com/group/asciidoc/browse_thread/thread/58d0843ae4345afd[Patch]
- submitted by Micheal Hackett.
-- *FIXED*: Restored
- http://groups.google.com/group/asciidoc/browse_thread/thread/b0e69e393b6f9f20/47a2c7586f9e40c6?lnk=gst&q=themes+tarball#47a2c7586f9e40c6[missing
- themes] to zip file distribution archive.
-- *FIXED*: Grammatical error in error messages.
- http://groups.google.com/group/asciidoc/browse_thread/thread/b9d705c6b6b39f59/1e120483dafca109[Patch]
- submitted by Dag Wieers.
-- *FIXED*: Use configured normal substitution in preference to the
- default one.
-- *FIXED*: The 'eval' block macro would execute multiple times if it
- evaluated to 'None'.
-- *FIXED*: Duplicated entries in TOC of large document.
- http://groups.google.com/group/asciidoc/browse_thread/thread/103445ab9d95cb0c[Patch]
- submitted by Sebastien Helleu.
-- *FIXED*: Python 2.4 backward
- http://code.google.com/p/asciidoc/issues/detail?id=9[incompatibility].
-- *FIXED*: 8.6.6 regression broke Jython compatibility. See
- http://groups.google.com/group/asciidoc/browse_thread/thread/4608b77ec289f6c4[discussion
- list].
-- *FIXED*: Leaky file handles in a2x and music and latex filters which
- created incompatibility problems for Jython.
-- *FIXED*: All Python filters are executed with the same Python
- interpreter that executes the asciidoc parent (previously filters
- were hardwired to execute the 'python' interpreter). This prevents
- http://groups.google.com/group/asciidoc/browse_thread/thread/14e8fcb289a135b/3af3b4e57b827c78?lnk=gst&q=archlinux#3af3b4e57b827c78[Python
- mix-ups].
-- *FIXED*: Microsoft Windows shelled command-line truncation that
- caused shelled commands to fail e.g. the 'data-uri' attribute
- failure.
-
-
-Version 8.6.6 (2011-09-04)
---------------------------
-.Release highlights
-- The AsciiDoc plugin architecture has been enhanced, unified and
- extended:
- * Plugin commands have been added to the asciidoc(1) `--backend`
- option.
- * An asciidoc(1) `--theme` option has been implemented to specify a
- theme and to manage theme plugins.
- * A plugin 'build' command (for creating plugins) added.
- * 'build', 'install', 'list' and 'remove' plugin commands are all
- recognized by asciidoc(1) `--backend`, `--filter` and `--theme`
- options.
-- A security update by Kenny MacDermid removes the use of `eval()` on
- untrusted input (to disallow code malicious execution).
-
-.All additions and changes
-- 'xhtml11', 'html5': Made verse and quote block text darker to print
- legibly in Google Chrome browser.
-- Added plugin 'build' command for plugin file creation.
-- Merged `--help plugins` back to `--help manpage` so it matches the
- asciidoc(1) manpage.
-- The `--filter` command-line option can specify the name of filters
- that will be unconditionally loaded.
-- If a filter directory contains a file named `__noautoload__` then
- the filter is not automatically loaded (you can used the `--filter`
- command-line option to override this behavior).
-- tests: Add Italian language tests. Patch submitted by Simon
- Ruderich. See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/5e2e6f4dd740d51a
-- tests: Add tests for localized man pages. Patch submitted by Simon
- Ruderich. See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/5e2e6f4dd740d51a
-- If the section name is prefixed with a '+' character then the
- section contents is appended to the contents of an already existing
- same-named section (the default behavior is to replace the the
- section).
-- If a configuration file section named 'docinfo' is loaded then it
- will be included in the document header. Typically the 'docinfo'
- section name will be prefixed with a '+' character so that it is
- appended to (rather than replace) other 'docinfo' sections.
-- Added `{sp}` intrinsic attribute for single space character. See
- http://groups.google.com/group/asciidoc/browse_thread/thread/a839aa01db0765d2
-- Fixed TOC and footnotes generator. Patch submitted by Will. See
- http://groups.google.com/group/asciidoc/browse_thread/thread/734ac5afed736987
-- The `asciidoc-confdir` attribute is set to the asciidoc executable
- directory if it contains global configuration files i.e. a local
- asciidoc installation.
-- asciidoc now throws an error instead of just a warning of the
- backend configuration file is not found.
-- latex filter: write MD5 file after successful PNG file generation.
- Always delete temp files irrespective of outcome.
-- Added truecolor option to LaTeX filter. Patch submitted by Michel
- Krämer. See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/6436788a10561851
-- Unit test for table column specifiers with merged cells. Patch
- submitted by Simon Ruderich. See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/c9238380a1f2507a
-- Added verbose message for `ifeval::[]` macro evaluation.
-- Added test case for `ifeval::[]` evaluation.
-- Security update to remove the use of `eval()` on untrusted input (to
- disallow code malicious execution). Patch submitted by Kenny
- MacDermid.
-- Changed web site layout from table to CSS based. See
- http://groups.google.com/group/asciidoc/browse_thread/thread/ec8e8481eb0e27b0/d1c035092b5bb7a4?lnk=gst&q=caption+option#d1c035092b5bb7a4
-- a2x: Pass `--format` option value to asciidoc as 'a2x-format'
- attribute. Patch submitted by Lex Trotman
- (http://groups.google.com/group/asciidoc/browse_thread/thread/3e177b84bc133ca9/659796dfadad30ea?lnk=gst&q=a2x+format#659796dfadad30ea).
-- Added two FAQs submitted by Lex Trotman. See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/16d3fb9672a408e7
-- html5,xhtml11: Implemented themes directory structure.
-- html5,xhtml11: Implemented asciidoc `--theme` management option
- (install, list, build and remove commands).
-- html5,xhtml11: A theme can now optionally include a JavaScript file
- `<theme>.js`
-- html5,xhtml11: If the 'data-uri' attribute is defined then icons
- from the theme icons directory (if they exist) will be embedded in
- the generated document.
-- Added optional 'warnings' argument to include macros.
-- The asciidoc `--verbose` option now prints file inclusion messages.
-- xhtml11, html5: Remove necessity for separate manpage CSS files.
-- Added 'css-signature' attribute to tests.
-- Add 'css-signature' attribute to set a CSS signature for the
- document. Patch submitted by Peg Russell, see:
- http://groups.google.com/group/asciidoc/browse_thread/thread/bacbf8aeb8ad6a3a
-- White background for toc2 TOC viewport so that horizontally scrolled
- content does not obscure the the TOC. Patch submitted by Lionel
- Orry, see: http://code.google.com/p/asciidoc/issues/detail?id=8
-
-.Bug fixes
-- *FIXED*: Plugin install command: Delete backend directory is install
- fails.
-- *FIXED*: Plugin install command: Fixed bug extracting binary files
- on Windows (reported by Jean-Michel Inglebert).
-- *FIXED*: tests: Skip blank sections in testasciidoc.conf test
- configuration file instead of throwing an exception (reported by
- Jean-Michel Inglebert).
-- *FIXED*: If a plugin Zip file does not contain file permissions
- (probably because it was created under Windows) then install it
- using the default permissions.
-- *FIXED*: Fixed missing quote in preceding LaTeX filter patch. Fix
- submitted by Simon Ruderich. See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/6436788a10561851
-- *FIXED*: Some path attributes were processed as escaped Python
- strings which could result in corrupted path names with backslash
- separated Windows path names. Reported by Will. See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/e8f3938bcb4c8bb4/44d13113a35738ef
-- *FIXED*: Vertically spanned table cells resulted in incorrect column
- styles being applied to some cells. Reported by Will:
- http://groups.google.com/group/asciidoc/browse_thread/thread/c9238380a1f2507a/9afc4559d51e1dbd
-- *FIXED*: LaTeX backend: fixed bad escapes. Patch submitted by Mark
- McCurry:
- http://groups.google.com/group/asciidoc/browse_thread/thread/8c111f1046b33691/158a944cf4d5ff0d?lnk=gst&q=latex+escapes#158a944cf4d5ff0d
-- *FIXED*: When using slidy backend, display of characters with
- accents is wrong because of 'meta http-equiv' line missing. Reported
- by Fabrice Flore-Thebault. See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/eaf25f21d1da180a
-
-
-Version 8.6.5 (2011-05-20)
---------------------------
-.Release highlights
-- The addition of an 'html5' backend to generate HTML 5 output. Apart
- from the inclusion of 'audio' and 'video' block macros the 'html5'
- backend is functionally identical to the 'xhtml11' backend.
-
-- A new 'flask' theme for 'xhtml11' and 'html5' backends inspired by
- the http://flask.pocoo.org/docs/[Flask website] styling (see 'toc2'
- example in the next item below).
-
-- The new 'toc2' attribute generates a table of contents in
- the left hand margin ('xhtml11' and 'html5' backends).
- link:article-html5-toc2.html[This example] was generated using
- the following command:
-
- asciidoc -b html5 -a icons -a toc2 -a theme=flask article.txt
-
-- `a2x(1)` now has a flexible mechanism for copying arbitrary
- resource files to HTML based outputs -- this is very handy for
- generating EPUB files with embedded fonts and other resources.
-
- * The `a2x(1)` `--resource` option can be used to inject any file
- into EPUB output documents e.g. CSS resources such as fonts and
- background images.
- * Explicitly specified resources are added to the EPUB OPF manifest
- automatically.
- * You can explicitly specify file extension MIME types.
- * The enhanced resource processing works around a couple of DocBook
- XSL bugs (see link:epub-notes.html[EPUB Notes]).
-
-.All additions and changes
-- A new 'flask' theme for 'xhtml11' and 'html5' backends. A shameless
- knock-off of the http://flask.pocoo.org/docs/[Flask website]
- styling.
-- Added HTML 5 article with 'toc2' table of contents to the example on
- the AsciiDoc website home page.
-- Added 'filters' and 'topics' help topics. Fixed documentation
- errors in help text. Patch submitted by Lionel Orry, see:
- http://groups.google.com/group/asciidoc/browse_thread/thread/9da9d48a6461ff14
-- Pass parent configuration files, command-line attributes and header
- attributes to table asciidoc filters. Based on patch submitted by
- Simon Ruderich, see:
- http://groups.google.com/group/asciidoc/browse_thread/thread/5c792cbb395b753b
-- Allow a 'title' attribute entry in the document header so that HTML
- backends can set the 'title' element separately from the displayed
- document title (the 'doctitle' attribute).
-- Pass 'lang' attribute to 'asciidoc' table style filter. Patch
- submitted by Simon Ruderich, see:
- http://groups.google.com/group/asciidoc/browse_thread/thread/e2100b7cb29283ce
-- xhtml11,html5: Added 'toc2' attribute which generates a scrollable
- table of contents in the left hand margin. Based on customized CSS
- written by Suraj Kurapati, see
- http://groups.google.com/group/asciidoc/browse_thread/thread/c5e30ee5555877f5
-- Added 'asciidoc-confdir' intrinsic attribute which expands to the
- global conf directory.
-- Documented that you can specify multiple CSS files with the a2x(1)
- `--stylesheet` command option. See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/baf3218551d05a05
-- Improved xhtml11 backend's table of contents generation latency.
- Patch submitted by Hongli Lai. See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/5a7fe64fbfd65ad
-- Added html5 backend.
-- For consistency converted all DOS formatted configuration and text
- files to UNIX format.
-- html4: Added ability to use 'role' attribute with most block
- elements. Patch contributed by Simon Ruderich. See
- http://groups.google.com/group/asciidoc/browse_thread/thread/5620ba634fdb030a
-- Added Dutch language configuration file and accompanying test file
- (contributed by Dag Wieers, see
- http://groups.google.com/group/asciidoc/browse_thread/thread/f969b9ce987d7f5d).
-- Configuration files are loaded in two passes when the -e
- command-line option is used (the same behavior as when the -e option
- is not used). Patch submitted by haad. See
- http://groups.google.com/group/asciidoc/browse_thread/thread/cd0f47495fd04181
- and
- http://code.google.com/p/asciidoc/issues/detail?id=6&q=label%3APriority-Medium
-- Documented how to include embedded fonts in an EPUB document.
-- a2x: Added `.<ext>=<mimetype>` resource specifier syntax.
-- a2x: Enable admonition icons in example EPUBs.
-- a2x: allow environment variables and tilde home directories in
- resource manifest files.
-- a2x: don't process non-existent resource directories.
-- a2x: assume resource option is a directory if the name ends with a
- directory separator.
-- a2x: Added a new syntax to the `--resource` option specifier which
- allows the destination path to be specified.
-- a2x: Copy resources referenced in the OPF and resources referenced
- by the generated HTML (in theory DocBook XSL should ensure they are
- identical but this is not always the case e.g.
- http://sourceforge.net/tracker/?func=detail&atid=373747&aid=2854075&group_id=21935).
-- Drop border from callout list image links.
-- html4: Moved manpage NAME section out of header so that the name
- section is rendered when the asciidoc(1) `--no-header-footer` option
- is specified (so that manpages processed blogpost include the NAME
- section).
-- Vim syntax highlighter: TODO markers now appear in list items and
- literal paragraphs and blocks.
-- Constrained quotes can now be bounded on the left by a } character.
- See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/b24cc3362f35b801
-- Added text-decoration roles (underline, overline, line-through,
- blink) for xhtml11 and html5 outputs.
-
-.Bug fixes
-- *FIXED*: epubcheck 1.1 previously issued a warning for files not
- registered in the manifest (epubcheck 1.0.5 did not). This resulted
- in a problem compiling the adventures-of-sherlock-holmes.txt example
- (the `underline.png` resource was not in the manifest).
-
-
-Version 8.6.4 (2011-02-20)
---------------------------
-.Additions and changes
-- Added text foreground and background color along with text size CSS
- styles for XHTML outputs, see {website}userguide.html#X96[].
-- Vim syntax highlighter: highlight macros that start with an
- attribute reference (a common idiom).
-- Vim syntax highlighter: highlight attribute references in macro
- attribute lists.
-- Attribute entries can be used to set configuration markup templates.
-- Double-width East Asian characters in titles now correctly match the
- title underline widths. Submitted by Changjian Gao (see
- http://groups.google.com/group/asciidoc/browse_thread/thread/77f28b0dfe60d262).
-- Implemented {website}manpage.html[asciidoc(1)] filter commands, see:
- http://groups.google.com/group/asciidoc/browse_thread/thread/40c64cd33ee1905c
-- User's home directory now calculated in a platform independent
- manner.
-- Added double-quote characters to French language file. Patch
- contributed Yves-Alexis Perez, see:
- http://groups.google.com/group/asciidoc/browse_thread/thread/e15282f072413940
-- Vim Syntax highlighter: Highlight closing OpenBlocks which
- immediately follow a literal paragraph.
-- Changed UNIX `/dev/null` to OS independent `os.devnull` in filters
- code. Suggested by Henrik Maier:
- http://groups.google.com/group/asciidoc/browse_thread/thread/5ac8e8ea895147e9
-- Vim syntax highlighter: Single and double quoted text now highlights
- correctly when preceded by an attributes list.
-- Added Ukrainian language file (`lang-uk.conf`). Added double-quote
- characters to Russian language file.conf). Patches contributed by
- Lavruschenko Oleksandr, see
- http://groups.google.com/group/asciidoc/browse_thread/thread/e15282f072413940
-- Single and double quote characters are now set using the `{lsquo}`,
- `{rsquo}`, `{ldquo}` and `{rdquo}` attributes. This makes is easy to
- customise language specific quotes. See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/e15282f072413940
-- Implemented 'conf-files' attribute to allow configuration files to
- be specified in the source document. Suggested by Lex Trotman, see:
- http://groups.google.com/group/asciidoc/browse_thread/thread/b11066a828ab45b9
-
-.Bug fixes
-- *FIXED*: Auto-generated section title ids are now Unicode aware.
-- *FIXED*: Setting 'quotes' configuration entries using document
- attribute entries failed if the attribute entry was not in the
- document header. See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/a1dd0562dee8b939
-- *FIXED*: If the input and output file names were different then the
- output file name was incorrectly used to synthesize 'docinfo' file
- names. Reported by Christian Zuckschwerdt.
-- *FIXED*: An error can occur when more than one consecutive quotes
- are defined as a blank string. Reported by Peggy Russell.
-- *FIXED*: Encoding error in automatically generated author initials.
- Patch submitted by Xin Wang. See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/f44615dca0b834e9
-
-
-Version 8.6.3 (2010-11-14)
---------------------------
-.Additions and changes
-- Added and 'unbreakable' option to bulleted and numbered lists
- (thanks to Henrik Maier for this patch).
-- Added `ifeval::[]` system macro (thanks to Henrik Maier for
- suggesting this feature).
-- The image 'scale' attribute sets the DocBook 'imagedata' element
- 'scale' attribute. Patch submitted by Henrik Maier.
-- DocBook 'preface', 'colophon' and 'dedication' style section titles
- now work. Based on patch submitted by Henrik Maier.
-- 'a2x': Do not inject xsltproc parameters if they were specified on
- the command-line (parameter double-ups generate xsltproc 'Global
- parameter already defined' errors).
-- 'a2x': Refactored xsltproc parameter injection.
-- 'a2x': articles chunked at section level by default.
-- 'attributes', 'titles' and 'specialcharacters' sections are now read
- from the local `asciidoc.conf` file before the header is parsed.
- This fixes a regression problem. See
- http://groups.google.com/group/asciidoc/browse_thread/thread/1b3f88f1f8118ab3
-- Document header attributes take precedence over configuration file
- attributes.
-- Refactored 'music', 'graphviz' and 'latex' filter configurations.
-- Refactored source filter configuration and added literal paragraph
- source style.
-- Separated paragraph styles from paragraph syntax -- any style can be
- applied to any syntax.
-- Added 'listing' and 'quote' paragraph styles.
-- Renamed paragraph 'default' style to 'normal'.
-- Updated `--help` option text.
-- 'a2x': The `asciidoc_opts`, `dblatex_opts`, `fop_opts` and
- `xsltproc_opts` command-line options can be specified multiple
- times. This makes embedding multiple 'a2x' options in document
- headers easier to manage and less error prone.
-- Added ASCIIMathML and LaTeXMathML support to slidy backend.
-- Pass the 'encoding' attribute to the Pygments source highlight
- filter command.
-- 'a2x': HTML Help `.hhk` file named after AsciiDoc source file.
-- 'a2x': Added `--xsl-file` option to allow custom XSL stylesheets to
- be specified.
-- Make builds the man pages. Patch submitted by Sebastian Pipping. See
- http://groups.google.com/group/asciidoc/browse_thread/thread/c21c2902c29bae64
-
-.Bug fixes
-- *FIXED*: Sometimes double backquotes were misinterpreted as inline
- literal macros. See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/f510ea82a88aaee8
-- *FIXED*: Regression in 8.6.2: command-line attributes were not
- available to the global asciidoc.conf.
-- *FIXED*: Postponed document title substitutions until backend conf
- files have been loaded (8.6.2 regression). See
- http://groups.google.com/group/asciidoc/browse_thread/thread/42b63ce90c2563b8
-- *FIXED*: The XSL Stylesheets customizations were preventing chapter
- and section level TOCs from being generated when using XSL
- Stylesheets via 'a2x'. See
- http://groups.google.com/group/asciidoc/browse_thread/thread/42b63ce90c2563b8
-- *FIXED*: ``UnicodeDecodeError: \'ascii' codec can't decode byte''
- error. This error is due to a limitation in the Python HTMLParser
- module, see: http://bugs.python.org/issue3932
-- *FIXED*: Broken `--no-conf` option (8.6.2 regression).
-- *FIXED*: Regression in 8.6.2: configuration attribute entries set in
- the document header may cause a 'FAILED: incomplete configuration
- files' error.
-- *FIXED*: 'html4': corrected self closed meta tags.
-- *FIXED*: 'a2x' regression in 8.6.2: HTML Help `.hhp` file name had
- reverted to default name instead of the AsciiDoc source file name.
- See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/dedc961b23e9ac56
-- *FIXED*: Attributes in man page title caused it to be dropped
- resulting in invalid DocBook output.
-- *FIXED*: `make uninstall` now deletes the `asciidoc.1` and `a2x.1`
- man pages.
-
-
-Version 8.6.2 (2010-10-03)
---------------------------
-.Additions and changes
-- 'docbook45': Enclosed bibliographic lists in a 'bibliodiv' -- you
- can now include block titles with bibliographic lists.
-- Added optional 'keywords', 'description' and 'title' document header
- meta-data attributes to HTML backends for SEO.
-- AttributeEntry values can span multiple lines with a ' +' line
- continuation.
-- Added 'slidy' backend (based on Phillip Lord's slidy backend
- https://phillordbio-asciidoc-fixes.googlecode.com/hg/).
-- Implemented 'OpenBlock' 'partintro' style for book part
- introductions.
-- Comment lines substitute special characters only.
-- Backend specific global configuration files (all except
- `asciidoc.conf`) are loaded *after* the header has been parsed --
- virtually any attribute can now be specified in the document header.
-- 'xhtml11': Volnitsky theme: allow bulleted lists to have intervening
- children.
-- 'xhtml11': refactored CSS font-family rules to start of file.
-- 'xhtml11': list bullets colored gray.
-- 'ifdef' and 'ifndef' system block macros accept multiple attribute
- names: multiple names separated by commas are 'ored'; multiple
- attribute names separated by pluses are 'anded'.
-- 'xhtml11': Volnitsky theme: set max-width on labeled lists.
-- Vim syntax highlighter: Entities inside quoted text are now
- highlighted.
-- Added 'role' and 'id' attributes to HTML outputs generated by
- 'OpenBlocks'.
-- Allow floating titles to generate 'h1' (level 0) titles in HTML
- outputs.
-- Added a 'start' attribute to numbered lists to set the start number.
- See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/c14a4c3b1e4f6dc5
-- Added two more docinfo attributes 'docinfo1' and 'docinfo2' to allow
- and control inclusion of a shared docinfo file. See
- http://groups.google.com/group/asciidoc/browse_thread/thread/c948697943432e24
-- Vim syntax highlighter highlights multi-name conditional attributes.
-- LaTeX backend patch submitted by Andreas Hermann Braml (see
- http://groups.google.com/group/asciidoc/browse_thread/thread/1c415fc4540ce5e5).
-- Implemented 'backend aliases'; renamed `docbook.conf` to
- `docbook45.conf` and aliased 'docbook45' backend to 'docbook';
- aliased 'xhtml11' to 'html'.
-
-.Bug fixes
-- *FIXED*: Filter commands located in filter directories local to the
- source document that where not in the search 'PATH' where not found.
-- *FIXED*: Volnitsky theme: Verseblock font set normal instead of
- monospaced.
-- *FIXED*: 'xhtml11': Callout icons were not rendered as Data URIs
- when 'icons' and 'data-uri' attributes were specified.
-- *FIXED*: Long standing bug: nested include macros did not restore
- the parent document 'infile' and 'indir' attributes. See:
- http://groups.google.com/group/asciidoc/browse_thread/thread/8712a95e95a292a7
-- *FIXED*: 'html4': set preamble ID anchor.
-- *FIXED*: 'xhtml11': dropped unusable 'id' and 'role' attributes from
- preamble template.
-- *FIXED*: Bug in multi-name conditional attributes e.g. `{x,y#}`
- fails if x or y is undefined.
-- *FIXED*: latex filter not being installed by Makefile. Thanks to
- Grant Edwards for this patch. See
- http://groups.google.com/group/asciidoc/browse_thread/thread/c4427a3902d130a8
-- *FIXED*: 'a2x': Long-standing bug in a2x which always passes
- `--string-param navig.graphics 0` to 'xsltproc', regardless of
- whether icons are enabled or not. Reported by Michael Wild:
- http://groups.google.com/group/asciidoc/browse_thread/thread/59a610068e4acb58
-
-
-Version 8.6.1 (2010-08-22)
---------------------------
-.Additions and changes
-- 'a2x': `--resource-dir` option renamed to `--resource`.
-- 'a2x': `--resource` option accepts both file and directory names.
-- 'a2x': Added `-m,--resource-manifest` option.
-- Added Vim syntax highlighting for quote attribute lists.
-- Load 'asciidoc.conf' from all configuration directories before any
- other configuration files. This ensures that attributes used for
- conditional inclusion are set before backend configuration files are
- processed. Previously if you wanted to control global conf file
- inclusion your only choice was to modify the global 'asciidoc.conf'
- file.
-- AsciiDoc 'Quote element' attributes have been simplified and
- generalized -- positional color and size attributes and named 'role'
- attribute have been replaced by a single positional attribute.
-
-.Bug fixes
-- *FIXED*: 'testasciidoc.py': `BACKEND` command argument was being
- ignored.
-- *FIXED*: Broken 'docinfo' file functionality in 'html4' and
- 'xhtml11' backends (previously the docinfo file was included in
- the 'body' instead of the 'header').
-
-Regression issues
-~~~~~~~~~~~~~~~~~
-This release breaks compatibility with quoted element positional color
-and size attributes (HTML backends). To revert to the deprecated quote
-behavior define the 'deprecated-quotes' attribute in the global
-`asciidoc.conf` file or on the command-line. For a more detailed
-explanation of the rationale behind this change see
-http://groups.google.com/group/asciidoc/browse_thread/thread/b22603bfb879418c.
-
-
-Version 8.6.0 (2010-08-16)
---------------------------
-.Additions and changes
-- The AsciiDoc distribution can now be built ``out of the box''
- from the distribution tarball or the Mercurial repository
- (provided you have the requisite build applications installed).
-- The global configuration files directory is ignored by both
- 'asciidoc' and 'a2x' if AsciiDoc configuration files are installed
- in the same directory as the asciidoc executable. This change
- allows both a system wide copy and multiple local copies of AsciiDoc
- to coexist on the same host PC.
-- CSS 'quirks' mode is no longer the default 'xhtml11' output
- (http://groups.google.com/group/asciidoc/browse_thread/thread/1c02d27d49221aa2).
-- Relaxed anchor ID name syntax
- (http://groups.google.com/group/asciidoc/browse_thread/thread/5f3e825c74ed30c).
-- Added document files: `doc/epub-notes.txt`,
- `doc/publishing-ebooks-with-asciidoc.txt`.
-- 'a2x': If all other resource locations are exhausted then recursively
- search directories named 'images' and 'stylesheets' in the
- 'asciidoc' configuration files directory.
-- 'a2x': options can also be set in the AsciiDoc source file. If the
- source file contains a line beginning with '// a2x:' then the
- remainder of the line will be treated as a2x command-line options.
-- Added dblatex table-width processing instruction -- tables generated
- by dblatex now observe the AsciiDoc table width as a percentage
- (thanks to Gustav Broberg for suggesting this enhancement).
-- 'a2x': Don't exit if the `--epubcheck` option is set and 'epubcheck'
- is missing, issue warning and continue.
-- Added a global 'plaintext' attribute for dealing with large amounts
- of imported text.
-- The author name format has been relaxed, if the the author does not
- match the formal specification then it is assigned to the
- 'firstname' attribute (previously asciidoc exited with an error
- message).
-- FAQ and documentation updates.
-- Refactored chunked.xsl and epub.xsl files.
-- Exchanged article.epub for more relevant book.epub on website.
-- Put asciidoc.epub User Guide on website.
-- 'a2x': Chunking EPUB and HTML outputs set to a per chapter basis and
- the first chapter is separate from preceding contents.
-- Changed dates format in example article and books to suppress EPUB
- validation error.
-- Added 'style' and 'role' CSS classes to xhtml11 section templates.
-- Added the 'role' element to xhtml11 backend block templates.
-- Suppressed md5 module deprecation warning from music and Graphviz filters.
-- Pygments (http://pygments.org/) option added to source code
- highlight filter. Based on Pygments source code filter written by
- David Hajage
- (http://groups.google.com/group/asciidoc/browse_thread/thread/d8d042f5a3021369/8934ebbb8cb7144b).
-- xhtml11: Added a new theme (volnitsky). Written and contributed by
- Leonid V. Volnitsky.
-- xhtml11: Set body element class name to document type.
-- Added refentryinfo element and contents (including revdate) to man
- page DocBook output. Man pages are now dated using the revdate
- attribute value if it has been defined. Based on patch supplied by
- Rainer Muller
- http://groups.google.com/group/asciidoc/browse_frm/thread/319e5cd94493e330/3fcb83fab067af42.
-- Added `{template:...}` system attribute.
-- Table of contents attribute 'toc' can now be specified in the
- document header.
-- Reimplemented music and latex filter -m option functionality when
- the input is stdin using MD5 checksums.
-- Added 'latex' filter.
-- Added auto file name generation to image generating filters
- (latex,music, graphviz).
-- Added `counter2` and `set2` system attributes (to implement image
- auto file name generation).
-- Undefined attribute in filter command generates error but does not
- exit.
-- Attribute substitution proceeds from start line to end line
- (previously was in reverse order which was really confusing).
-- Tidied up music filter code:
- * Format option is optional and default to 'abc' unless Lilypond
- notation detected.
- * The -m option does not apply to stdin input.
-- Added paragraph styles to music and graphviz filters.
-- Documented dynamic template names. 753: Graphviz filter can now
- generate SVG format images. Patch submitted by Elmo Todurov, see:
- http://groups.google.com/group/asciidoc/browse_frm/thread/fe9b33d8f5f1e0af
- The xhtml11 SVG Graphviz template marked EXPERIMENTAL. No SVG
- support for other backends.
-- AsciiDoc template names can now contain embedded attribute
- references.
-- Added 'legalnotice' tag to `doc/article-docinfo.xml` example.
-- xhtml11 backend: Callouts and callout lists display callout icons
- when the 'icons' attribute is defined. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/8eda3ea812968854
-- Document attribute names are case insensitive everywhere, this makes using
-attribute entries more consistent e.g. previously :VERS: had to be refered to
-with {vers} ({VERS} did not work).
-- Hungarian translation of footer-text (submitted by Miklos Vajna).
- See
- http://groups.google.com/group/asciidoc/browse_frm/thread/7174cb7598993c72#
-- asciidocapi.py 0.1.2: Can now load AsciiDoc script named asciidoc.
- See
- http://groups.google.com/group/asciidoc/browse_frm/thread/66e7b59d12cd2f91
- Based on patch submitted by Phillip Lord.
-- German translation of footer-text (submitted by Simon Ruderich). See
- http://groups.google.com/group/asciidoc/browse_frm/thread/7174cb7598993c72
-- Pushed HTML footer text into language conf files with the
- introduction of a [footer-text] configuration file template section.
- See
- http://groups.google.com/group/asciidoc/browse_frm/thread/7174cb7598993c72
-
-.Bug fixes
-- *FIXED*: Sometimes multiple double quoted text elements in the same
- paragraph were mistakenly seen as starting with an inline literal.
- See
- http://groups.google.com/group/asciidoc/browse_frm/thread/219c86ae25b79a21
-- *FIXED*: 'localtime' and 'doctime' attributes calculated incorrect
- daylight saving / non daylight saving timezones and consequently so
- did HTML footers. Patch submitted by Slawomir Testowy. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/af652507caf6cec9
-- *FIXED*: Missing selector for 'List of examples' title in DocBook
- CSS file. Patch submitted by Laurent Laville. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/3f96900f7fbf5620
-- *FIXED*: Broken accents in lang-hu.conf. See:
- http://groups.google.com/group/asciidoc/browse_frm/thread/7174cb7598993c72
-- *FIXED*: DocBook XSL generated HTML callout lists are properly
- aligned. Submitted by Lionel Orry. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/2ff802547b6a75ea
-- *FIXED*: Filter execution now occurs prior to filter markup template
- substitution to ensure image data URI encoding happens after image
- generation (see
- http://groups.google.com/group/asciidoc/browse_thread/thread/14e8fcb289a135b).
-- *FIXED*: The section numbers no longer increment when the 'numbered'
- attribute is undefined (see
- http://groups.google.com/group/asciidoc/browse_thread/thread/faa36e9e5c7da019/d24cab3fe363e58d).
-
-
-Version 8.5.3 (2010-01-18)
---------------------------
-.Additions and changes
-- a2x: Added a2x configuration file options ASCIIDOC_OPTS,
- DBLATEX_OPTS, FOP_OPTS, XSLTPROC_OPTS (appended to same-named
- command-line options). See
- http://groups.google.com/group/asciidoc/browse_frm/thread/ac4b9bfa2116db28
-- Dropped `.hgignore` from the repository. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/c17abd175778f5ea
-- Don't pass verbose options to asciidoc table filter so that
- asciidocapi messages are not discarded. See:
- http://groups.google.com/group/asciidoc/browse_frm/thread/c17abd175778f5ea
-- Added `./tests/data/lang-pt-BR-test.txt` file to the repository.
-- xhtml11: Verse block and verse paragraph content enveloped in a
- 'pre' tag (instead of a 'div') so it renders better in text-only
- browsers. See:
- http://groups.google.com/group/asciidoc/browse_frm/thread/1b6b66adb24e710
-- User Guide: Clarified Passthrough Blocks (suggested by Simon
- Ruderich).
-- FAQ: 'How can I include lines of dashes inside a listing block?'
-- FAQ errata and updates (submitted by Simon Ruderich).
-- User Guide errata.
-- Simplified 'asciidoc-toc' processing instruction and included lists
- of figures, tables, examples and equations in books (i.e. revert to
- pre-8.5.0 behavior).
-- Attempted to have dblatex recognise the 'asciidoc-toc' processing
- instruction but couldn't get it to work.
-- Added 'notitle' attribute to allow the document title to be hidden.
-
-
-.Bug fixes
-- *FIXED*: Regression: system attribute escaping did not work.
-- *FIXED*: Website: broken image links in chunked User Guide.
-
-
-Version 8.5.2 (2009-12-07)
---------------------------
-.Additions and changes
-- Updated example article and book documents with the recommended
- explicit section name syntax (see the 'Special section titles
- vs. explicit template names' sidebar in the AsciiDoc 'User Guide').
-- Added Italian language configuration file (contributed by Fabio
- Inguaggiato).
-- Added 'header' table style. See:
- http://groups.google.com/group/asciidoc/browse_frm/thread/a23fea28394c8ca9
-- Pass 'icons', 'data-uri', 'imagesdir', 'iconsdir' attributes to
- 'asciidoc' table style filter so that images are rendered in table
- cells.
-- Pass 'trace' and 'verbose' attributes to 'asciidoc' table style
- filter so diagnostic information is printed from table cell source.
-- The 'eval' system attribute can be nested inside other system
- attributes.
-- HTML outputs: Table and figure caption punctuation set to more usual
- syntax.
-- docbook backend: footnotes can now contain embedded images. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/50b28f6941de111a
-- CSS tweaks so that tables processed by DocBook XSL Stylesheets have
- the default asciidoc xhtml11 backend styling. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/dfe5204d5b2c9685
-- Block titles take precedence over section titles to avoid titled
- delimited blocks being mistaken for two line section titles (see
- http://groups.google.com/group/asciidoc/browse_frm/thread/f0b6f9989f828c3).
-- Section title trace displays level and title text.
-- FAQ additions.
-- Added `{zwsp}` (zero width space) attribute.
-- Undefined paragraph styles are reported (previously threw a runtime
- error).
-- Eliminated empty preamble generation.
-- Floating titles now processed in all contexts.
-- Implemented auto-lettered appendix names and updated example
- documents.
-- Section numbering can be disabled in HTML outputs with a
- ':numbered!:' AttributeEntry.
-- xhtml11: Nicer default quote block styling.
-- Exclude floating titles from xhtml11 table of contents. Patch
- submitted by Mark Burton (see
- http://groups.google.com/group/asciidoc/browse_frm/thread/14aefc1cb6bd85f5).
-- Enhanced `doc/article-docinfo.xml` example docinfo file.
-- Vim syntax highlighter improvements.
-
-.Bug fixes
-- *FIXED*: Absolute 'imagesdir' and 'iconsdir' attribute path names
- do not work with the xhtml11 data-uri encoding. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/cb8b7694bbc82a6
-- *FIXED*: Regression issue with inline data-uri images. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/cb8b7694bbc82a6
-- *FIXED*: An unexpected error occurred when processing a table
- containing CSV data if the 'cols' attribute was not explicitly
- specified. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/4b0f364b477ec165
-
-
-Version 8.5.1 (2009-10-31)
---------------------------
-.Additions and changes
-- If an AsciiDoc document file begins with a UTF-8 BOM (byte order
- mark) then it is passed transparently through to the output file.
- The BOM is stripped from included files. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/e5e61823ff4203cd
-- Added AsciiDoc 'role' attribute to quoted text. Sets 'class'
- attribute in HTML outputs; 'role' attribute in DocBook outputs. See:
- http://groups.google.com/group/asciidoc/browse_frm/thread/2aa3e5711d243045
-- Conditional attribute syntax extended: they now accept multiple ORed
- or ANDed attribute names.
-- The 'xhtml11' backend dynamically processes footnotes using
- JavaScript.
-- Tidied up and namespaced 'xhtml11' JavaScript.
-- Superceded `javascripts/toc.js` with `javascripts/asciidoc-xhtml11.js`.
-- Added 'disable-javascript' attribute ('xhtml11' backend).
-- Styled HTML footnotes.
-- Added links to HTML footnote refs.
-- Added title attribute to inline image macros to display popup
- ``tooltip'' (HTML outputs only).
-- Single-quoted attribute values are substituted in block macros (just
- like the AttributeList element).
-- For consistency changed underscores to dashes in attribute names.
- Public attributes with underscores retained for compatibility.
-- Added Brazilian Portuguese language configuration file (contributed
- by Thiago Farina).
-- Added 'leveloffset' attribute to make it easier to combine
- documents.
-
-.Bug fixes
-- *FIXED:* a2x: `--dblatex-opts` is now processed last so
- `asciidoc-dblatex.xsl` params can be overridden. Patch submitted by
- Mark Fernandes (see
- http://groups.google.com/group/asciidoc/browse_frm/thread/5215c99dcc865e7d).
-- *FIXED:* An error occurred if a directory in current path with same
- name as executable.
-
-Regression issues
-~~~~~~~~~~~~~~~~~
-There's been quite a bit of tiding up to the xhtml11 JavaScript. The
-most obvious change is that the toc.js script has been superceded by
-asciidoc-xhtml11.js so if you're linking you'll need get a copy of
-the new file from the distribution javascripts directory.
-
-If you use customised xhtml11 configuration file `[header]` and
-`[footer]` sections and you want them to use the new footnotes feature
-then you've got a bit more work to do:
-
-. The onload event expression changed.
-. The new `<div id="content">...</div>` div envelopes document
- content.
-. You need to add `<div id="footnotes">...</div>` div to the
- `[footnotes]` section for footnotes to work.
-. Drop the `ifdef::toc[]` macro that surround JavaScript inclusion.
-
-Take a look at the [header] and [footer] changes in the xhtml11.conf
-diff to see what's going on:
-http://hg.sharesource.org/asciidoc/diff/55a5999bfd04/xhtml11.conf
-
-
-Version 8.5.0 (2009-10-04)
---------------------------
-.Additions and changes
-- Implemented a 'float' attribute for tables and block images (HTML
- outputs only).
-- Added `unfloat::[]` block macro to cancel floating.
-- Added table 'align' attribute to (HTML outputs only).
-- The image 'align' attribute now works with HTML backends.
-- Renamed table cell 'align' attribute to 'halign' so it doesn't clash
- with the new table 'align' attribute.
-- Added 'breakable' and 'unbreakable' options to AsciiDoc example and
- block image elements.
-- `[miscellaneous]` section entries now update properly when set from
- a document 'AttributeEntry'.
-- `[miscellaneous]` section `pagewidth` entry accepts fractional
- values.
-- Fractional column widths are now calculated correctly when using
- fractional 'pageunits' (DocBook tables).
-- Use DocBook XSL table width processing instructions.
-- asciidoc 'KeyboardInterrupt' exits with error code 1.
-- Added 'set' system attribute to allow attributes to be set from
- configuration file templates.
-- Allow constrained quotes to be bounded on the left by a colons and
- semicolons, see
- http://groups.google.com/group/asciidoc/browse_frm/thread/b276a927fdc87995
-- Titled listing and literal blocks (DocBook outputs) no longer default
- to examples. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/f4df7c9eec01a9bd
-- Updated language file table, figure and example captions to
- accommodate new auto-numbering in html4 and xhtml11 backends.
-- Titled source highlight filter listings generated by docbook backend
- are now rendered as examples. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/f4df7c9eec01a9bd
-- Implemented 'counter' system attribute.
-- Use 'counter' system attributes to number titled tables and block
- images in HTML backends.
-- Added program name suffix to console messages.
-- Added substitution to the 'AttributeEntry' passthrough syntax, this
- replaces the now unnecessary 'attributeentry-subs' attribute.
-- Allow passthrough inline macro syntax to be used in
- 'AttributeEntrys'.
-- Reinstated 8.4.4 default 'lang' attribute behavior. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/d29924043e21cb6a.
-- Added 'max-width' attribute to the 'xhtml11' backend to set maximum
- display width. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/74d9a542b79ccd50.
-- Added 'a2x.py', a rewritten and much enhanced version of the old
- 'a2x' bash script.
-- The new 'a2x' can output EPUB formatted documents.
-- Added `--safe` option and deprecated `--unsafe` option. Patch
- submitted by Todd Zullinger. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/ea3a8ea399ae5d2a
- and
- http://groups.google.com/group/asciidoc/browse_frm/thread/69b3183fdab7c6a5
-- Added 'CHECK' and 'TEST' todo highlight words to Vim syntax
- highlighter.
-- Line breaks, page breaks, and horizontal rulers are now processed by
- dblatex, thanks to a patch submitted by Mark Fernandes
- (http://groups.google.com/group/asciidoc/browse_frm/thread/a254cf949ea7c6c5).
-- Allow footnote macros hard up against the preceding word so the
- rendered footnote mark can be placed against the noted text without
- an intervening space (patch submitted by Stas Bushuev,
- http://groups.google.com/group/asciidoc/browse_frm/thread/e1dcb7ee0efc17b5).
-- Normalized path in `safe_filename` function (submitted by Todd
- Zullinger,
- http://groups.google.com/group/asciidoc/browse_frm/thread/69b3183fdab7c6a5).
-- The Asciidoc 'numbered' and 'toc' attributes cause DocBook outputs
- to include `asciidoc-numbered` and `asciidoc-toc` processing
- instructions, these are used by DocBook XSL to include section
- numbering and table of contents (like Asciidoc HTML backends). For
- backward compatibility both 'numbered' and 'toc' attributes are
- defined by default when the 'docbook' backend is used. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/1badad21ff9447ac.
-- 'data-uri' attribute is now evaluated dynamically and can be set in
- document body (previously could only be set from command-line).
-- Added 'sys3' and 'eval3' system attributes to passthrough generated
- output, this fixes the data-uri inline image problem:
- http://groups.google.com/group/asciidoc/browse_frm/thread/a42db6bc54c2c537.
-- Missing language file generates a warning instead of an error.
-- Updated Spanish language file (updates contributed by Gustavo Andrés
- Gómez Farhat).
-
-.Bug fixes
-- *FIXED:* Options in an 'AttributeList' option attribute are merged
- with (rather than replace) configuration file options.
-- *FIXED:* Comment blocks and comment block macros no longer consume
- preceding block titles and attribute lists.
-- *FIXED:* `examples/website/layout1.conf` and
- `examples/website/layout2.conf` TOC problem. Submitted by Mark
- (burtoogle). See
- http://groups.google.com/group/asciidoc/browse_frm/thread/b9c63be67dd1d11c
-- *FIXED:* Only the first occurrence of passthrough macro was
- substituted. Patch submitted by Peter Johnson. See
- http://groups.google.com/group/asciidoc/browse_frm/thread/1269dc2feb1a482c
-- *FIXED:* asciidoc now runs on Jython 2.5.0.
-- *FIXED:* Wordpress margins and pads in a number of block
- elements
- (http://groups.google.com/group/asciidoc/browse_frm/thread/36ff073c79cbc20a).
-
-Regression issues
-~~~~~~~~~~~~~~~~~
-- Tables generated by 'dblatex' occupy 100% of the available space
- regardless of the 'width' attribute setting. To restore width
- behavior change the 'pageunits' miscellaneous parameter to 'pt'. You
- can do this from the command-line with the `-a pageunits=pt` option.
- See {website}userguide.html#X89[DocBook table widths].
-
-
-Version 8.4.5 (2009-05-24)
---------------------------
-.Additions and changes
-- Added manpage 'Name' and 'Synopsis' section title customization to languages
- configuration files.
-- Synopsis manpage section no longer mandatory.
-- Section markup templates can be specified by setting the title's
- first positional attribute or 'template' attribute.
-- The article and book document header can now include a revision
- remark.
-- A 'role' attribute can now be applied to block elements. This adds
- the 'role' attribute to DocBook elements. Patch submitted by
- http://groups.google.com/group/asciidoc/browse_thread/thread/62278a054188a038[Noah
- Slater]).
-- Renamed 'revision' and 'date' attributes to more sensible and consistent
- 'revnumber' and 'revdate' (old names deprecated but still
- recognized).
-- Moved backend specific attributes to Appendix H in User Guide.
-- Renamed and generalized the docbook backend revision history
- inclusion mechanism to 'docinfo' to reflect the use of all article
- or book information elements. The old revision history names still
- work but have been deprecated.
-- Refactored docbook.conf headers.
-- Moved line break replacement from `[replacements]` to
- `[replacements2]` so the replacement occurs after the mailto macro.
- This fixes bug
- http://groups.google.com/group/asciidoc/browse_thread/thread/4bdcdfb0af773e2
-- The typewriter to punctuation apostrophe replacement can be escaped
- with a backslash.
-- Graphviz filter outputs images to 'imagesdir' if it is defined.
-- Made the block image macro generic so that it can be used for filter
- outputs. As a result Music and Graphviz filters:
- * Have been greatly simplified.
- * Honor the 'data-uri' attribute.
- * 'html4' outputs no longer generate W3C validation warning.
-- The 'iconsdir' attribute no longer requires a trailing directory
- separator character.
-- Removed borders around linked html4 images.
-- Added 'html4' specific HTML output for music filter.
-- 'a2x': Added `--unsafe` option (shortcut for
- `--asciidoc-opts=--unsafe`).
-- 'a2x': The FOP executable can now be named `fop` (this is the
- default name in some distributions).
-- Attributes are now substituted in the system macro attribute list.
-- If the output is set to stdout (i.e. no output directory is defined)
- then Music and Graphviz filters will output included images to the
- source file directory.
-- Added 'name' directive to 'testasciidoc'.
-- Added lots of 'testasciidoc' new tests.
-- Moved language specific configuration parameters into `lang-en.conf`
- file.
-- 'lang' attribute entry can be specified in the AsciiDoc source file
- (preceding the header).
-- Removed cruft from A-A-P scripts and documented them.
-- Added German language config file (`lang-de.conf`) contributed by
- Michael Wild.
-- Added French language config file (`lang-fr.conf`) contributed by
- Yves-Alexis Perez.
-- Added Russian language config file (`lang-ru.conf`) contributed by
- Artem Zolochevskiy.
-- Added Hungarian language config file (`lang-hu.conf`) contributed by
- Miklos Vajna.
-
-.Bug fixes
-- *FIXED:* Multiple manpage names are now handled correctly when
- generating DocBook output, each name now generates a separate
- DocBook `<refname>` element. See
- http://groups.google.com/group/asciidoc/browse_thread/thread/c93bb4db025225d8
-- *FIXED:* A problem that caused AttributeEntries preceding the header
- to be overwritten when the language conf file loaded.
-- *FIXED:* Possible inline macro name ambiguity e.g. link matches olink.
-- *FIXED:* The documented macro definition deletion behavior had been
- broken for a long time.
-- *FIXED:* Email addresses not recognized when followed by a period
- character.
-- *FIXED:* Hyphens in mailto macros can delimit nested addresses e.g.
- \bloggs@mail was processed inside
- \mailto:joe-bloggs@mail-server.com[Mail].
-- *FIXED:* User name in FTP URI generated incorrect FTP link. See
- http://groups.google.com/group/asciidoc/browse_thread/thread/1d796a9c9ddb2855
-- *FIXED:* Source highlighter now works with Wordpress backend (see
- http://groups.google.com/group/asciidoc/browse_thread/thread/6d8c716748b109e3).
-
-[[X2]]
-Regression issues
-~~~~~~~~~~~~~~~~~
-. A colon following the date in the AsciiDoc header is treated as a
- revision remark delimiter -- this could be an issue if you have used
- a colon in the header date.
-
-
-Version 8.4.4 (2009-04-26)
---------------------------
-.Additions and changes
-- Added table column and row spanning.
-- Table styles can now be applied per cell.
-- Vertical cell alignment can be applied to columns and individual
- cells.
-- Added table 'align' attribute to set horizontal alignment for entire
- table.
-- Included Geoff Eddy's update of the experimental LaTeX backend.
-- A new attribute named 'trace' controls the output of diagnostic
- information. If the 'trace' attribute is defined then
- element-by-element diagnostic messages detailing output markup
- generation are printed to stderr.
-- Added 'literal' paragraph style (allows 'literal' style to be
- applied to normal paragraphs).
-- Deleted unused `replacements2` from `xhtml11.conf`.
-- Added `replacements2` to default substitutions.
-- 'testasciidoc.py': messages to 'stdout', only diffs to 'stderr'.
-- Added transparency to `smallnew.png` image.
-
-.Bug fixes
-- All combinations of leading comments and attribute entries at the
- start of a document are now skipped correctly.
-- *FIXED:* `./configure` doesn't support `--docdir` as expected (patch
- submitted by Artem Zolochevskiy)
-- *FIXED:* Constrained quotes were incorrectly matched across line
- boundaries e.g. the string `+\nabc+` incorrectly matched a monospace
- quote.
-
-
-Version 8.4.3 (2009-04-13)
---------------------------
-.Additions and changes
-- DocBook outputs default to DocBook version 4.5 doctype (previously
- 4.2).
-- Configuration file `[specialsections]` definitions can be undefined
- by setting their configuration entry values blank.
-- The Makefile 'install' target depends on the 'all' target to ensure
- pre-install patches are applied.
-- 'testasciidoc.py' now emits user friendly messages if:
- . the configuration file is missing.
- . an illegal backend is specified.
- . an illegal test number is specified.
-
-.Bug fixes
-- Fixed
- http://groups.google.com/group/asciidoc/browse_thread/thread/fd27add515597c06[missing
- template section] error.
-- The 'testasciidoc.py' `--force` option no longer deletes test data
- files that were not specified.
-- Dropped second quotes substitution in table cells -- it had
- effectively disabled quote escaping in table cells.
-
-
-Version 8.4.2 (2009-03-19)
---------------------------
-.Additions and changes
-- Added {website}testasciidoc.html[testasciidoc], a tool to verify
- AsciiDoc conformance.
-- A warning is issued if nested inline passthroughs are encountered.
-- 'asciidocapi': setting an attribute value to `None` will undefine
- (delete) the attribute (this in addition to the `name!` attribute
- name format that the `asciidoc(1)` command uses).
-
-.Bug fixes
-
-
-Version 8.4.1 (2009-03-10)
---------------------------
-.Additions and changes
-- AsciiDoc now has a {website}asciidocapi.html[Python API]. The
- following minimal example compiles `mydoc.txt` to `mydoc.html`:
-+
-[source,python]
--------------------------------------------------------------------------------
-from asciidocapi import AsciiDocAPI asciidoc = AsciiDocAPI()
-asciidoc.execute('mydoc.txt')
--------------------------------------------------------------------------------
-
-- Backtick quoting for monospaced text is now implemented as an
- 'inline literal' passthrough. This makes more sense since monospace
- text is usually intended to be rendered literally. See
- <<X2,Regression issues>> below for the impact this may have on
- existing documents. Here are some examples that would previously
- have had to be escaped:
-
- The `++i` and `++j` auto-increments.
- Paths `~/.vim` and `~/docs`.
- The `__init__` method.
- The `{id}` attribute.
-
-- Added `--doctest` option to `asciidoc(1)` command.
-- Added an optional second argument to 'BlockId' element, this sets
- the `{reftext}` attribute which in turn is used to set the `xreflabel`
- attribute in DocBook elements.
-- Added lists to `--help` syntax summary.
-- `{infile}` and `{indir}` attributes reflect the current input file
- (previously always referred to the root document).
-- `{docfile}` (new) and `{docdir}` (previously deprecated) attributes
- refer to the root document specified on the `asciidoc(1)`
- command-line.
-- Vim syntax highlighter improvements.
-- Syntax summary command (`asciidoc -h syntax`) additions.
-- Admonition icons now have transparent backgrounds.
-- Changed yellow W3C badges to blue ones in page footers.
-
-.Bug fixes
-- Dropped `asciidoc(1)` broken undocumented `--profile` option.
-- Em dash replacement now recognized at start of block.
-
-Regression issues
-~~~~~~~~~~~~~~~~~
-Replacing backtick quoting with the 'inline literal' passthrough
-raises two regression scenarios for existing documents:
-
-1. You have escaped the expansion of enclosed inline elements, for
- example: `\{id}`. You would need to delete the backslashes: `{id}`
- (if you don't the backslashes will be printed). Mostly it's just a
- case of interactively finding and replacing of all occurrences of
- `\.
-
-2. There are enclosed inline elements, for example: `some *bold*
- monospaced`. You would need to switch to plus character monospace
- quoting: `+some *bold* monospaced+` (if you don't the enclosed
- elements won't be expanded).
-
-If your existing documents include these cases and you don't want to
-upgrade then use the `-a no-inline-literal` command-line option,
-alternatively put this in `~/.asciidoc/asciidoc.conf`:
-
- [attributes]
- no-inline-literal=
-
-
-Version 8.3.5 (2009-02-02)
---------------------------
-.Additions and changes
-- Cached compiled regular expression delimiters (speed up 'User
- Manual' compilation by 250%).
-- Created distinct list definitions for each numbered list style to
- allow nesting of all styles.
-- Roman numbers in numbered lists are followed by a closing
- parenthesis instead of a period to eliminate 'i', 'v', 'x' item
- ambiguity with respect to alpha numbered list items.
-- Added `**`, `***`, `****`, `*****`
- bulleted lists.
-- Added `...`, `....`, `.....` implicit numbered
- lists.
-- Added `:::`, `::::` labeled lists.
-- Updated User Guide for new list syntaxes.
-- Optimized paragraph and list termination detection with separate
- precompiled regular expressions for performance and to prevent
- reaching Python 100 named group limit.
-- Updated Vim syntax highlighter for new list syntaxes.
-- Allow `template::[]` macros in conf file entries sections (not just
- in template sections).
-- Dropped unused `[listdef-numbered2]` conf file sections.
-- Renamed 'ListBlock' to more appropriate 'OpenBlock'.
-- Implemented single-line versions of `ifdef::[]` and `ifndef::[]`
- macros.
-- 'html4' backend styling:
- * Underlined admonition captions.
- * Added side border to Example Blocks.
-- 'xhtml11' backend styling:
- * Dropped right hand margin from all but quote and verse blocks.
- * html4 backend: corrected over-sized width of caption in admonition
- block.
-
-.Bug fixes
-- Fixed broken numbered list nesting.
-
-Compatibility issues
-~~~~~~~~~~~~~~~~~~~~
-The roman numbered list parenthesis syntax is incompatible with the
-potentially ambiguous roman period syntax introduced in 8.3.2.
-
-
-Version 8.3.4 (2009-01-20)
---------------------------
-.Additions and changes
-- Implemented a title 'float' style. A floating title (or bridgehead)
- is rendered just like a normal section but is not formally
- associated with a text body and is not part of the regular section
- hierarchy so the normal ordering rules do not apply.
-- Implemented inline comment macro so comment lines can now appear
- inside block elements.
-- Comment lines are sent to the output if the 'showcomments' attribute
- is defined (comment blocks are never sent to the output).
-- Single quoting attribute values in 'AttributeList' elements causes
- them to be substituted like normal inline text (without single
- quoting only attribute substitution is performed).
-- Rewrote list item processing (was very crufty). List continuation
- and list blocks now work as expected. Updated and clarified list
- documentation in User Guide.
-- The 'revision' attribute now recognizes the RCS $Id$ marker format.
-- An RCS $Id$ marker formatted revision line in the header does not
- need to be preceded by an author line.
-- If an RCS $Id$ formatted revision is specified and the author name
- has not already been set then the author name in the $Id$ marker
- will be used.
-- Updated Gouichi Iisaka's Graphviz filter to version 1.1.3.
-- Added 'autowidth' table attribute option for (X)HTML outputs.
-- DocBook backend now puts 'orgname' optional attribute in DocBook
- header.
-- Deprecated undocumented 'companyname' attribute in favor of
- DocBook's 'corpname'.
-- Removed explicit closing backslash from HTML4 self-closing tags to
- comply with WC3 recommendation.
-
-.Bug fixes
-- Fixed 8.3.3 regression whereby adjacent lists with the same syntax
- but different list styles were incorrectly treated as a single list.
-
-
-Version 8.3.3 (2009-01-02)
---------------------------
-This release supersedes 8.3.2.
-
-.Bug fixes
-- The broken and confusing numeration and numeration2 numbered list
- attributes have been dropped, use the style attribute instead.
-
-
-Version 8.3.2 (2009-01-01)
---------------------------
-.Additions and changes
-- Added Gouichi Iisaka's Graphviz filter to distribution.
-- The 'SidebarBlock' element can now be rendered with an 'abstract'
- style.
-- Reorganized filters into a separate subdirectory for each filter.
-- Updated `Makefile.in` and `MANIFEST` files to reflect new filters
- organization.
-- Added 'listing' style to 'LiteralBlock' element so listings with
- nested listing blocks can be rendered as a listing block.
-- Changed example 'code' filter to use preferred 'ListingBlock' syntax
- (the old `~` delimited filter syntax is no longer used).
-- Implemented 'enumeration' and 'enumeration2' numbered list
- attributes for specifying the list numbering style ('arabic',
- 'loweralpha', 'upperalpha', 'lowerroman' and 'upperroman').
-- AsciiDoc now recognizes 'upperalpha', 'lowerroman' and 'upperroman'
- numbers in `listdef-numbered2` numbered lists and sets the number
- style based on the style of the first numbered list item
- (alternative to setting 'enumeration2' attribute).
-- Updated `formatlistpat` definition in `.vimrc` example in User
- Guide.
-- You can now backslash escape system block macros.
-- Added 'Pychart' FAQ.
-- Drop paragraph 'text' and list 'text', 'index' and 'label' match
- groups from attributes -- they are included in the element's text
- and we don't want them processed a second time as attributes.
-- Changed comment line block macro to a passthrough block macro to
- ensure no substitutions.
-- A 'subslist' no longer has to be appended to a 'PassthroughBlock'
- macro definition, if omitted no substitutions are performed.
-- Code tidy up: replaced deprecated `<>` operator with `!=`.
-- Removed unused linuxdoc code.
-- Code tidy ups: dropped old types module reference; replaced
- `has_key()` with preferred `in` operator.
-
-.Bug fixes
-- Old syntax source highlight filter regression: special characters
- where not escaped in DocBook outputs.
-
-
-Version 8.3.1 (2008-12-14)
---------------------------
-.Additions and changes
-- Replaced the `install.sh` script with Ben Walton's updated autoconf
- scripts -- see {website}INSTALL.html[INSTALL] for details.
-- Added a generalized 'AttributeEntry' syntax to allow arbitrary
- configuration file entries to be set from within an AsciiDoc
- document (suggested by Henrik Maier).
-- Listing delimited blocks in DocBook outputs now support IDs; IDs of
- titled Listing and Literal delimited blocks have been moved to the
- enclosing DocBook example tag (thanks to Vijay Kumar for this
- patch).
-- Replaced vertical typewriter apostrophe with punctuation apostrophe
- (thanks to Noah Slater).
-
-.Bug fixes
-- Regression: Excluding double-quotes from unquoted attribute values
- resulted in backward incompatibility, double-quotes in unquoted
- attribute values has been reinstated.
-- Regression: Text like `&...;` was sometimes mistaken for an entity
- reference -- tightened up entity reference matching.
-
-
-Version 8.3.0 (2008-11-29)
---------------------------
-.Additions and changes
-- {website}newtables.html[AsciiDoc new tables] is a complete redesign
- of the tables syntax and generation. The new syntax and features are
- a huge improvement over the old tables. The old tables syntax has
- been deprecated but is currently still processed.
-- {website}newlists.html[Lists can now be styled] like other block
- elements. This allows a single list syntax for 'glossary', 'qanda'
- (Question and Answer) and 'bibliography' lists instead of having to
- remember a different syntax for each type.
-- Inline passthroughs macros have been improved and block passthrough
- macros added. Attribute substitution can be optionally specified
- when the macro is called.
-- The passthrough block has a fully transparent passthrough delimited
- block block style called 'pass'.
-- The 'asciimath' and 'latexmath'
- {website}userguide.html#X77[passthrough macros] along with
- 'asciimath' and 'latexmath' {website}userguide.html#X76[passthrough
- blocks] provide a (backend dependent) mechanism for rendering
- mathematical formulas. There are {website}latexmath.pdf[LaTeX Math],
- {website}asciimathml.html[AsciiMathML] and
- {website}latexmathml.html[LaTeXMathML] examples on the AsciiDoc
- website.
-- Reimplemented and cleaned up filter processing based on a patch
- submitted by Kelly Anderson. Uses the newer subprocess module
- instead of the deprecated popen2 module. Now works in Win32 command
- shell.
-- Addition FAQs, more documentation updates.
-- Arbitrary HTML/XML entities can be entered in AsciiDoc source.
-- Did away with the need for the `shaded-literallayout.patch` (thanks
- to Henrik Maier for this patch).
-- Implemented 'page break' block macro.
-- Added 'line breaks' and 'ruler' processing instructions to DocBook
- outputs (thanks to Henrik Maier for this patch).
-- Added 'deg' (degree) and 'wj' (word joiner) entity attributes
- (thanks to Henrik Maier).
-- Tweaked DocBook 'indexterm2' macro to avoid white space preceding
- the term when used in table cells (thanks to Henrik Maier for this
- patch).
-- Title elements now process the 'options' attribute like other block
- elements.
-- Added `single quoted' element.
-- Spaces on both sides of a -- em-dash are translated to thin space
- characters.
-- Improved detection and reporting of malformed attribute lists.
-- The list 'compact' style is now a list option.
-- Added 'strong' labeled list option which makes the labels bold (HTML
- outputs only).
-- Dropped unsupported 'linuxdoc' backend.
-- Dropped deprecated 'xhtml-deprecated' (version 6) backend.
-- Added 'breakable' and 'unbreakable' attribute options to tables to
- control table breaking across page boundaries (DocBook XSL/FO
- outputs). By and in collaboration with Henrik Maier.
-- Added 'pgwide' attribute option to tables to table, block image,
- horizontal labeled lists. Specifies that the element should be
- rendered across the full text width of the page irrespective of the
- current indentation (DocBook XSL/FO outputs). Thanks to Henrik Maier
- for this patch.
-- Vim syntax highlighter: spaces before/after bullets no longer
- highlighted (which is ugly if using a theme that highlights with
- underlines). Thanks to Donald Chai for this patch.
-- Added `a2x(1)` `--fop` option.
-- Added `a2x(1)` `--no-xmllint` option.
-- Highlighted labelled list terms with the navy color in XHTML
- outputs.
-- Use `w3m(1)` as default `a2x(1)` text format generator (fallback to
- `lynx(1)`).
-- Changed callout formats in html4 and xhtml11 outputs to angle
- brackets to match source highlighter rendering.
-- Macros now inject user defined `<optionname>-option` attributes into
- markup.
-- Added IRC URLs to AsciiDoc inline macros.
-- Added `depth` attribute to `include::[]` system macro.
-- Added 'footnoteref' inline macro.
-- Added 'stylesheet' XHTML attribute to specify additional custom CSS
- stylesheet.
-- If a paragraph style is specified it will be added to the XHTML
- 'class' attribute and DocBook 'role' attribute.
-- Replacements can be set in a document using the reserved
- AttributeEntry name 'replacement'.
-- The prefix for auto-generated section name IDs can be set with the
- 'idprefix' attribute.
-
-.Bug fixes
-- Escaped quote skipped over leading and trailing quote instead of
- just the leading quote.
-- Fixed bug that was causing false negative safe mode warnings (patch
- submitted by Julien Palmas).
-- Placed priority of AttributeEntry, AttributeList and BlockTitle
- above Title. This ensures an AttributeEntry, AttributeList or
- BlockTitle followed by a same length leading ListingBlock delimiter
- is not mistaken for a two-line title.
-- Vim syntax highlighter: fixed multi-line quoted text.
-- Contstrained quote termination after non-space character enforced.
-- Vim syntax highlighter: unterminated quoted text is no longer
- highlighted.
-- Vim syntax highlighter: passthroughs now exactly match AsciiDoc
- semantics.
-- Vim syntax highlighter: escaped quoted text, attribute references
- and inline macros are not highlighted.
-- Vim syntax highlighter: TODO's highlighted in CommentBlocks (thanks
- to Scott Wall); non-greedy pass:[$$...$$].
-- Vim syntax highlighter: Comment lines mistaken for vertical list
- labels (thanks to Scott Wall).
-- Vim syntax highlighter: Single unmatched $$ mistakenly highlighted
- remaining text (patch contributed by Scott Wall).
-- Callouts now work in source highlighted listing generated by
- dblatex.
-- Fixed exception that occured if undefined attribute was present in
- filter command.
-- AttributeList block can now follow a paragraph without intervening
- blank line.
-- The include macro tabsize attribute is no longer propagated to
- nested includes.
-
-.Omissions
-The following features were implemented but then but removed from this
-release:
-
-- 'pi', 'cdata' and 'comment' passthrough macros and passthrough block
- styles (creeping featurism, use 'pass' macros instead).
-- Generic 'tag' inline macro (creeping featurism, use 'pass' macros
- instead).
-
-
-[[X1]]
-Compatibility issues
-~~~~~~~~~~~~~~~~~~~~
-Version 8.3.0 has a number of backward incompatibilities with respect
-to the previous 8.2.7 release:
-
-- The old table syntax is still processed but a 'DEPRECATED' warning
- is issued.
-- Entity references have to be escaped with a backslash.
-- You have to explicitly precede horizontal style labeled lists with
- the `[horizontal]` style attribute -- by default all labeled lists
- are rendered vertically.
-- The list 'compact' style has been dropped and is now a list option
- (use `options="compact"` in attribute lists).
-- AsciiDoc version 6 sytnax no longer supported.
-- Linuxdoc been removed from the distribution.
-- The unsupported experimental 'latex' backend has not been tested on
- this release.
-- The introduction of single-quote quoting requires that double-quote
- quoting is escaped with two backslashes.
-
-
-Version 8.2.7 (2008-07-04)
---------------------------
-.Additions and changes
-- Added `dvi`, `ps` and `tex` output format options to a2x(1).
-- Added `--dblatex` option to a2x(1) so `dblatex(1)` can be used to
- generate PDFs.
-- Added custom `dblatex(1)` configuration files (in distribution
- `./dblatex` directory) that are used by a2x(1).
-- `dblatex(1)` is now used to generate the distributed PDF version of
- the AsciiDoc User Guide.
-- If you don't need a customized the link caption you can enter the
- 'http', 'https', 'ftp', 'file' URLs and email addresses without any
- special macro syntax -- you get the links by just cutting and
- pasting URLs and emails addresses. This also makes it easier to open
- links directly form AsciiDoc source ( most editors allow you to open
- URLs directly). The Vim syntax highlighter has been updated to
- reflect these changes.
-- Highlighted source code paragraphs have been implemented -- it's a
- much more convenient way to enter short code examples (see
- http://www.methods.co.nz/asciidoc/source-highlight-filter.html[the
- online docs]).
-- The source highlighter and music filter syntax has changed -- they
- now used the ListingBlock syntax customized with 'source' and
- 'music' style attribute values. This follows the Paragraph styling
- convention introduced by the source paragraph (previous item) and is
- easier to read. The old syntax still works but has been deprecated.
-- QuoteBlocks now have a 'verse' style -- you no longer have to nest a
- 'verse' LiteralBlock inside a QuoteBlock for verses. The 'verse'
- style on the LiteralBlock has been deprecated (still works though)
- and the 'style' attribute is positional attribute 1, pushing
- 'attribution' and 'citetitle' attributes to the right (you'll need
- to insert a 'quote' attribute into your existing QuoteBlocks).
-- It is no up to the DocBook processor to highlight source code syntax
- in `<programlisting>` elements rather than GNU Highlighter -- this
- is the correct way to handle it, plus `dblatex(1)` makes a much
- better job.
-- 'scaledwidth' and 'align' attributes have been added to the 'image'
- macro. They apply to DocBook outputs (specifically for PDF
- documents). 'scaledwidth' sets the image size as a percent of the
- available page width; 'align' applies 'left', 'center' or 'right'
- horizontal image justification.
-- Added a2x(1) `--fop-opts=FOP_OPTS` option (patch submitted by Miklos
- Vajna).
-- Added a2x(1) `--dblatex-opts=DBLATEX_OPTS` option.
-- Added Mikhail Yakshin's FOP 0.95 patch which fixes a long-standing
- `fo.xsl` problem and allows PDF's to be generated with FOP 0.95
- (previously had to use FOP 0.20.5).
-- The User Guide has been updated and outdated FOP configuration and
- installation sections removed.
-
-.Bug fixes
-- Fixed `stylesheets/xhtml11-manpage.css` not being included when
- 'linkcss' attribute was used.
-- Configuration file `*-style` attributes are now dumped correctly.
-- Fixed 'FAILED: malformed section entry' LaTeX backend error.
-
-See the also the https://sharesource.org/hg/asciidoc/[AsciiDoc
-repository changelog].
-
-
-Version 8.2.6 (2008-04-29)
---------------------------
-.Additions and changes
-- Enhancements to the Vim AsciiDoc syntax highlighter, for example,
- quoted text is now highlighted in titles and macro captions.
-- If you define the `data-uri` intrinsic attribute images referenced
- by 'image' macros will be embedded in XHTML using the
- http://en.wikipedia.org/wiki/Data:_URI_scheme[data: URI scheme].
- *NOTE*: Microsoft browser support for the 'data: URI scheme' is
- currently limited to MSIE 8 beta 1.
-- Added `toc-title` attribute to allow custom table of contents
- titles.
-- Added references to Alex Efros's AsciiDoc Cheatsheet to AsciiDoc
- website.
-- `asciidoc(1)` and `a2x(1)` man pages formatted to conform to
- `man-pages(7)` recommendations.
-- Old code-filter syntax (pre-8.1.0) is no longer recognized so that
- malformed two-line level 2 titles are no longer confused with
- 'code-filter' block delimiters.
-- Added -> <- => <= arrow replacements from the Arrows block of
- Unicode.
-- Added DocBook refentry lang attribute -- patch contributed by
- VMiklos.
-- AttributeEntry names can now be numeric (``named macro targets'').
-- Hide Table of Contents title if Table of Contents empty -- patch
- contributed by Alex Efros.
-- Various XHTML CSS tweaks.
-- Code cleanup:
- * Replaced `realpath()` with Python 2.2 `os.path.realpath()` library
- function.
- * Replaced old string library functions with string methods.
- * Use file generators instead of `readlines()`.
- * Renamed entities that shadowed builtins.
- * Standardized string quoting.
- * Dropped `readlines()` function.
-
-.Bug fixes
-- Fixed broken CSS for decimal ordered lists nested in alpha ordered
- list, thanks to Alex Efros.
-- A missing closing block delimiter now reports the opening delimiter
- line number instead of the end of file line number.
-- Fixed an error generated by the asciidoc `-e` option when there are
- no block definitions -- patch contributed by Alejandro Mery.
-- Handle both `\r\n` (as well as `\n`) line separators that may be
- returned by `{sys}` attribute evaluation.
-- Numbered attribute names no longer interfere with positional
- attribute list values.
-
-
-Version 8.2.5 (2007-11-18)
---------------------------
-.Additions and changes
-
-.Bug fixes
-- Fixed exception thrown by illegal command-line arguments.
-- Rolled back the 'with' warning bug fix introduced in 8.2.4 -- it was
- incompatible with Python <2.5.
-
-
-Version 8.2.4 (2007-11-10)
---------------------------
-.Additions and changes
-- You can now use the `lang` attribute to set the DocBook language
- attribute.
-- Attribute values can now contain attribute references.
-- If the `lang` attribute is defined then configuration files named
- like `lang-<lang>.conf` will be loaded automatically.
-- The help file name `help-<lang>.conf` is based on the AsciiDoc
- `lang` attribute, defaults to `help.conf` (English).
-- Admonition, figure and table captions have been factored into a
- predefined set of `caption_*` attributes. They only apply to
- directly generated (X)HTML outputs (DocBook stylesheets generate
- their own language specific captions based on the `lang` attribute).
-- Dropped platform dependent `doc/asciidoc.chm` file from
- distribution documentation formats.
-
-.Bug fixes
-- The spurious warning 'with will become a reserved keyword
- in Python 2.6' has been suppressed.
-
-
-Version 8.2.3 (2007-09-12)
---------------------------
-.Additions and changes
-- Added VMiklos's 'permalink' patch for auto-generated section IDs
- (enabled by default by the `sectids` attribute).
-- Added http://www.methods.co.nz/asciidoc/faq.html[FAQ] to website.
-- Changed format of \{localdate} attribute to ISO 8601 (`%Y-%m-%d`).
-- Added `abc2ly --beams=None` option to make `music2png.py` conform to
- ABC's notion of beams.
-- XHTML level 2 section headings are now styled with an underlining
- border.
-- XHTML links to AsciiDoc title elements are now implemented with
- title ID attributes (previously separate `<a>` element targets were
- generated.
-- Multi-word first, middle and last names can be entered in the header
- author line using the underscore as a word separator.
-- The nested inline macros restriction has now been lifted, for
- example you can now include links and inline images inside
- footnotes.
-- Help topic names can be shortened (so long as they are not
- ambiguous). For example `asciidoc -hm` will print the AsciiDoc man
- page.
-- Added `{two_colons}` and `{two_semicolons}` attributes for
- escaping labeled list ambiguity.
-- If quirks mode is disabled the XHTML Mime Type is set to the
- recommended `application/xhtml+xml` (rather than `text/html`).
-
-.Bug fixes
-- Author information is now correctly set when using attribute entries
- in the header instead of an author line (previously the 'author'
- attribute was not being calculated correctly and there were
- attribute substitution problems).
-
-
-Version 8.2.2 (2007-07-22)
---------------------------
-.Additions and changes
-- http://www.maths.nottingham.ac.uk/personal/drw/lm.html[LaTeXMathML]
- capability has been added for users who are more familiar with or
- prefer LaTeX math formulas to the
- http://www.methods.co.nz/asciidoc/asciimathml.html[ASCIIMathML]
- notation (thanks to Arthur Sakellariou for the patch).
-- The 'source highlight' and 'code' filters now process embedded
- callouts.
-- Added an `--attribute=ATTRIBUTE` option to `a2x(1)` for passing
- attribute values to asciidoc(1) (a shortcut for `--asciidoc-opts="-a
- ATTRIBUTE"`).
-- Image block and inline macros prepend optional `{imagesdir}`
- attribute to image link targets.
-
-
-.Bug fixes
-- Fixed an assertion error that occurred when a configuration file
- containing an `include::[]` macro was loaded using the
- `--conf-file` option and the configuration file name did not
- include an explicit directory path -- patch submitted by Dmitry
- Potapov.
-- Asciidoc titles are only converted to lower case if all characters
- are upper case otherwise case is left unchanged -- patch submitted
- by Dmitry Potapov.
-- Added a missing check that input is not stdin before loading
- configuration files from the document directory -- patch submitted
- by Dmitry Potapov.
-- Attribute list items must evaluate to strings, numbers or None
- (previously it was possible to evaluate to other object types which
- resulted in surprising attribute values).
-- If an AsciiDoc document has no title an empty XHTML 1.1 'title'
- element is created -- previously the 'title' element was dropped
- which resulted in invalid XHTML 1.1.
-- The Vim syntax file no longer highlights escaped callouts.
-- The Vim syntax highlighter now correctly highlights Double-dollar
- passthroughs when they enclose dollar delimited ASCIIMathML and
- LaTeXMathML formulas.
-
-
-Version 8.2.1 (2007-04-06)
---------------------------
-.Additions and changes
-- A number of improvements have been made to the Vim syntax
- highlighter, for example the word C++ is no longer mistaken for the
- start of an unconstrained monospace quote.
-- Labeled list definitions have been tightened -- a list label can no
- longer containing trailing spaces. The following example is no
- longer recognized as a valid list label:
-
- Lorum ipsum ::
-+
-This change implements the originally intended behavior (as per the
-AsciiDoc documentation and examples) so there should be very few
-compatibility issues.
-
-.Bug fixes
-
-
-Version 8.2.0 (2007-04-04)
---------------------------
-.Additions and changes
-- A Vim syntax file is now included in the AsciiDoc distribution
- (inspired by Felix Obenhuber's `asciidoc.vim` script). You can find
- it (along with a Vim filetype detection script in the distribution
- `./vim/` directory (the scripts are installed automatically by the
- AsciiDoc installer `./install.sh`). See 'Appendix J' of the
- 'AsciiDoc User Guide' for details.
-- Added 'toclevel' attribute (1..4) which sets the number of title
- levels reported in the table of contents. Defaults to 2 and must be
- used with the 'toc' attribute. Example usage:
-
- $ asciidoc -a toc -a toclevels=3 doc/asciidoc.txt
-
-- Added a `listindex` attribute which is the current list item index
- (1..). If this attribute appears outside a list its value is the
- number of items in the most recently closed list.
-- The single line titles syntax now accepts trailing suffixes -- this
- syntax matches the title line syntax of a number of popular Wiki
- markups.
-- If a QuoteBlock has no attribution or citetitle then the DocBook
- `<attribution>` element is not generated (previously generated empty
- `<attribution>` element).
-- If the text of a labeled list item is blank then no `texttag` is
- written.
-- An end of line backslash performs line continuation for horizontal
- labeled list items.
-- The Revision line now accommodates Subversion `$Id` markers (in
- addition to CVS and RCS markers). Thanks to Tiago Sturmer Daitx for
- this patch.
-- Implemented `a2x(1)` option `--skip-asciidoc` which allows `a2x(1)`
- to convert DocBook XML files not derived from AsciiDoc sources.
-- If `a2x(1) --doctype` option is not specified it defaults to
- `manpage` if `--format=manpage` else defaults to `article`
- (previously `--doctype` always defaulted to `article`).
-- Added an 'External Resources' section to the
- http://www.methods.co.nz/asciidoc/index.html[AsciiDoc home page].
-
-.Bug fixes
-
-
-Version 8.1.0 (2006-10-22)
---------------------------
-.Additions and changes
-- AsciiDoc generated XHTML documents now display a table of contents
- if the 'toc' attribute is defined (JavaScript needs to be enabled
- for this to work). Thanks to Troy Hanson who contributed this
- feature based on a JavaScript by Mihai Bazon. I've simplified things
- somewhat to match Docbook XSL Stylesheets style, see Troy's
- http://tpl.sourceforge.net/userguide.html[tpl User Guide] for a
- fancier layout. Use the `-a toc -a numbered` command-line options to
- produce a number table of contents.
-- A http://www.methods.co.nz/asciidoc/music-filter.html[music filter]
- is included in the distribution `./filters/` directory. It
- translates music in http://lilypond.org/[LilyPond] or
- http://abcnotation.org.uk/[ABC] notation to standard classical
- notation in the form of a trimmed PNG image which is inserted into
- the AsciiDoc output document.
-- Incorporated Paul Melis's Win32 filter patch. This workaround
- allows AsciiDoc to run filters under Windows.
-- Added `uninstall.sh` script.
-- Rather than proliferate a confusing number of filter block
- delimiters the following convention has been adopted: delimiters
- belonging to DelimitedBlock filters distributed with AsciiDoc will
- consist of a word (normally a noun identifying the block content)
- followed by four or more tilde characters. This has necessitated
- changing existing filter delimiters (the old delimiters still work
- but may be deprecated in future versions):
-
- * The example code filter block delimiter is now the word `code`
- followed by four or more tilde characters.
- * The source highlight filter block delimiter is now the word
- `source` followed by four or more tilde characters.
-
-- Conditionally redefined subscript and superscripting so they use the
- old replacements mechanism when asciidoc7compatible is defined
- rather than the asciidoc 8 default unconstrained quoting (patch for
- affected files attached).
-- Moved the source highlight filter from `./examples/` to `./filter/`.
-- Added `{verbose}` intrinsic attribute (useful for passing verbose
- flag to filters).
-- Added `{outdir}` intrinsic attribute.
-- Renamed `{docdir}` intrinsic attribute to unambiguous `{indir}`
- (`{docdir}` still works but may be removed in future release).
-- If `asciidoc(1)` outputs to stdout then intrinsic attribute
- `{docname}` is extracted from the input file name.
-
-
-Version 8.0.0 (2006-08-27)
---------------------------
-*********************************************************************
-This is a major release because changes to quoting and index entry
-handling may break existing documents (see 'Additions and changes'
-below and 'Appendix A: Migration Notes' in the AsciiDoc User Guide).
-
-Please report any problems you encounter.
-
-mailto:srackham@gmail.com['Stuart Rackham']
-*********************************************************************
-
-.Additions and changes
-- Quoting can can occur within words (based on patch submitted by
- Benjamin Klum). See the 'Unconstrained Quotes' sub-section in the
- User Guide.
-
-- The underline and plus characters can be used as alternatives to the
- existing apostrophe and backtick quote characters. They are arguably
- better choices than the apostrophe and backtick as they are not
- confused with punctuation.
-
-- The syntax for index entry macros have have been deprecated from
- `+...+` and `++...++` to `((...))` and `(((...)))` respectively.
- Rationale:
- * Bracketing is consistent other with `[[...]]` and `<<...>>`
- reference macros.
- * To easily confused with triple plus passthroughs.
- * To make way for the new monospace quoting.
-
-- Superscripts and subscripts are implemented as constrained quotes so
- they can now be escaped with a leading backslash and prefixed with
- with an attribute list.
-
-- An experimental LaTeX backend has been written by Benjamin Klum (a
- number additions in this release are to accommodate the LaTeX
- backend).
-- `include` macro file names now expand environment variables and
- tilde expansions.
-- A configuration file `[quotes]` entry can be undefined by setting to
- a blank value.
-- Added `callto` inline macro for Skype 'callto' links.
-- Added `colnumber` attribute for table data markup.
-- A leading comment block or comment lines are now skipped (previously
- a document had to start with either attribute entries or a document
- Title).
-- Experimental `rows` attribute (number of source lines in table)
- available in table markup templates (used by experimental LaTeX
- backend).
-- Included install shell script written by mailto:jlm@ofb.net[Jacob
- Mandelson] for installing the tarball distribution.
-- Added INSTALL documentation file.
-- Added 'replacements2' substitution options -- a second replacements
- section.
-- Added the ability to redefine 'normal' and 'verbatim' substitutions
- with `subsnormal` and `subsverbatim` entries in configuration file
- `[miscellaneous]` section.
-- By default `AttributeEntry` values are substituted for
- `specialcharacters` and `attributes`, if you want a different
- AttributeEntry substitution set the `attributeentry-subs` attribute.
-- The `name` in `name=value` configuration file entries can now end
- with a backslash, just escape the trailing backslash with a
- backslash. For example:
-
- abc\\=xyz
-+
-Results in `name=abc\` and `value=xyz` -- previously this would have
-escaped the `=` character.
-
-- A blank configuration file section deletes any preceding section
- with the same name (applies to non-markup template sections).
-- A command-line attribute value with a `@` suffix does not override
- existing document and configuration file attributes (normally
- command-line attributes have precedence over document and
- configuration file attributes).
-- `localtime` attribute is now encoded from the native system encoding
- to the output encoding. Patch submitted by
- mailto:m_pupil@yahoo.com.cn[FKtPp] -- here's his description of the
- problem:
-+
-``I am a Chinese user of AsciiDoc and I find that when I use UTF-8
-(the default encoding) to write asciidoc documents in Windows platform
-the resulting html footer line will get screwed. It was caused by a
-localized tzname that was always encoded in the windows native
-encoding, which in my case is 'cp936'.''
-
-- a2x(1) can generate Open Document Text files using
- http://open.comsultia.com/docbook2odf/[docbook2odf]. Currently
- `docbook2odf(1)` only processes a subset of DocBook, unimplemented
- elements are skipped.
-- The a2x(1) format option defaults to `xhtml` (previously a format
- had to be specified explicitly).
-- The `-d, \--doctype=DOCTYPE` option has been added to a2x(1) which
- is a shortcut for `--asciidoc-options="--doctype=DOCTYPE"`.
-- Replaced a2x(1) `--no-icons` and `--no-copy` options with their
- negated equivalents: `--icons` and `--copy` respectively. The
- default behavior has also changed: copying and use of icons is
- disabled by default. Rationale:
- * To make the default behavior more consistent since use of icons
- and CSS stylesheets does not apply to all formats.
- * To make the default behavior less surprising (the creation of icon
- and stylesheet output files must now be explicit).
-
-- a2x(1) has been bumped from version 0.1.1 to version 1.0.0.
-
-
-.Bug fixes
-- Removed duplicate `./doc/a2x.1.txt` from distribution tarball.
-- Documentation errata.
-- Attribute replacement is no longer performed twice in Titles and
- AttributeEntrys.
-- a2x(1) skipped asciidoc(1) execution when rerun with different
- `--asciidoc-options` options, it now always executes asciidoc(1).
- The problem was that previously asciidoc(1) was executed only if the
- output file was missing or older than the source file.
-
-
-Version 7.1.2 (2006-03-07)
---------------------------
-.Additions and changes
-- Support for
- http://www1.chapman.edu/~jipsen/mathml/asciimath.html[ASCIIMathML]
- has been added. See 'Appendix I: ASCIIMathML Support' in the User
- Guide and the examples at
- http://www.methods.co.nz/asciidoc/asciimath.html.
-- You can now prefix quoted text with inline attributes lists. You
- can use this to set font size and color (XHTML and HTML outputs).
-- Added `##...##` quoting -- it does nothing -- it's purpose is to
- allow inline attributes to be applied to normal text.
-- An 'inline passthrough' mechanism has been implemented.
-- Configuration file comment lines can be escaped with a backslash --
- this is to allows the inclusion of configuration lines that start
- with a hash character.
-- The `scriptsdir` attribute can be used to specify the name of the
- directory containing linked JavaScripts (see the
- link:userguide.html#X33[User Guide] for details.
-- The BackendBlock has been renamed PassthroughBlock for consistency
- with the new inline passthrough naming.
-- `a2x(1)` now works with the older `bash(1)` version 2.05b. Patch
- submitted by mailto:francis@daoine.org[Francis Daly].
-- Content included by the `include1::[]` system macro is no longer
- subject to attribute substitution so that ambiguities no longer
- arise when used to include CSS or JavaScript files.
-
-
-Version 7.1.1 (2006-02-24)
---------------------------
-.Additions and changes
-- The `caption` attribute can be used to customize admonition captions
- as well as image, table and example block element title prefixes
- (`xhtml11` and `html4` backends).
-- You can now override the default icon image using the `icon`
- attribute to specify the path of the linked image (xhtml11 and html4
- backends only).
-- The deprecated `imagesdir` attribute is no longer recognized (use
- `iconsdir` instead).
-- Added 'Appendix H: Using AsciiDoc with non-English Languages' to the
- AsciiDoc User Guide.
-- Added 'Admonition Icons and Captions' subsection to the User Guide
- explaining how to customize Admonition elements.
-
-.Bug fixes
-- `a2x(1)` failed when configuration files were installed in the
- global `/etc/asciidoc/` directory -- it was only searching the
- directory containing the asciidoc executable (thanks to Christian
- Wiese for finding and submitting a patch this bug).
-- The html4 backend admonition caption now correctly displays the
- admonition `caption` attribute (previously displayed the `style`
- attribute).
-
-
-Version 7.1.0 (2006-01-13)
---------------------------
-.Additions and changes
-- `a2x(1)` toolchain wrapper utility. This overcomes the biggest
- hurdle for new users which seems to be assembling and using a
- working DocBook XML toolchain. With `a2x(1)` you can generate XHTML
- (chunked and unchunked), PDF, man page, HTML Help and text file
- outputs from an AsciiDoc input file with a single command. All you
- need to install (in addition to AsciiDoc) is xsltproc(1), DocBook XSL
- Stylesheets and optionally FOP (if you want PDF) or lynx(1) (if you
- want text).
-- Block titles can now start with any non-space character (previously
- where not allowed to start with `.~-_` characters).
-- `./stylesheets/docbook.css` renamed to
- `./stylesheets/docbook-xsl.css` to clarify its function.
-- Renamed `./docbook-xsl/manpages.xsl` to `./docbook-xsl/manpage.xsl`
- for consistency.
-- Admonition and navigation icons moved to `./images/icons/` to
- clarify usage and conform with a2x(1) usage.
-- Renamed xhtml11 intrinsic attribute `imagesdir` to `iconsdir` to
- keep vocab consistent and changed default value to `./images/icons`
- (previously `./images`). `imagesdir` attribute still accepted but
- deprecated.
-- Unused image files have been weeded out of the distribution.
-- Packager notes (appendix B) have been updated to reflect the needs
- of `a2x(1)`.
-
-IMPORTANT: The renaming of the xhtml11 backend `imagesdir` intrinsic
-attribute and it's new default value introduces a backward
-compatibility issue: if you use the `icons` attribute you will need to
-either move your icons to the new default `./images/icons` location or
-include an `--attribute{nbsp}iconsdir="your_icons_path"` option in
-your asciidoc commands.
-
-.Bug fixes
-- Backslash line continuation is now observed in verbatim paragraphs.
-- Fixed errors generated by example
- `./examples/website/build-website.sh` script.
-
-
-Version 7.0.4 (2005-12-08)
---------------------------
-.Additions and changes
-- Added ternary conditional attributes
- `{<name>@<regexp>:<value1>[:<value2>]}` and
- `{<name>$<regexp>:<value1>[:<value2>]}`.
-- Safety violations now generate errors (they previously generated
- warnings).
-- asciidoc(1) now defaults to safe mode, consequently the
- `[miscellaneous]` safe mode entry and `--safe` command-line option
- are no longer necessary (though for backward compatibility
- asciidoc(1) still accepts the `--safe` option).
-- Backend Blocks are now flagged unsafe (they could be used to include
- arbitrary and hence potentially unsafe output content).
-- Filters are no longer considered unsafe. There's not much point in
- insisting on filter safety since the installation of an unsafe
- filter would require the introduction of new or modified
- configuration files -- if your application configurations can be
- compromised you're in all sorts of trouble (safe mode protects
- against unsafe input files not unsafe configuration). As with all
- filters, before installing, you should verify that they can't be
- coerced into generating malicious output or exposing sensitive
- information.
-
-.Bug fixes
-- Fixed a lot of glaring grammatical and factual errors in the User
- Guide.
-
-
-Version 7.0.3 (2005-12-01)
---------------------------
-.Additions and changes
-- Added `--safe` and `--unsafe` command-line options -- AsciiDoc can
- now be executed in a 'safe mode' which disallows the execution of
- arbitrary code or the inclusion of arbitrary files (see
- link:userguide.html#X39[Appendix C in the AsciiDoc User Guide]).
-- Included link:source-highlight-filter.html[source-highlight filter]
- in the distribution `./examples/source-highlight-filter/` directory
- (based on filter submitted by mailto:trolocsis@gmail.com[Ryan
- Phillips]).
-- Included the DocBook XSL Stylesheets 1.69.1 customizations used to
- generate the distributed AsciiDoc documentation (read the
- `asciidoc-docbook-xsl.txt` file in the distribution `./docbook-xsl/`
- directory).
-- AsciiDoc DocBook XSL Stylesheet drivers moved from `./doc/` to
- `./docbook-xsl/`.
-- Modified `./doc/manpages.xsl` so only URL content is displayed in
- manpages.
-
-.Bug fixes
-- Explicitly set table CSS border style (`xhtml11` backend) to `solid`
- because default border styles vary from browser to browser.
-
-
-Version 7.0.2 (2005-08-28)
---------------------------
-.Additions and changes
-- There are now long versions of all AsciiDoc options.
-- If the `--backend` is not specified it defaults to `xhtml11`.
-- Added CSS simulated frames layout to the examples website (see
- `./examples/website/layout2/README-website.txt`). This layout does
- not work with IE6 and the original tables based layout is still the
- default.
-- Support page added to AsciiDoc website.
-
-.Bug fixes
-- Invalid options are now trapped gracefully.
-- Documentation errata.
-
-
-Version 7.0.1 (2005-06-24)
---------------------------
-.Additions and changes
-- Reverted to use of `strong`, `em`, `tt` XHTML tags -- they're more
- obvious and no less correct than `span` tags, besides, the generated
- file sizes are smaller (the 'User Guide' was 11% smaller).
-- Table title rendered with `caption` tag rather than a separate
- `div`.
-- The AsciiDoc 'stylesdir' attribute (if specified) is now recognized
- when searching for embedded stylesheets (previously only searched
- default `./stylesheets` directory).
-- Default charset encoding changed from ISO-8859-1 to UTF-8 -- it's
- less language specific and displays most common languages.
-- `template::[]` macros now expand in all configuration file sections
- previously only in markup template sections.
-- Cleaned up example website layout CSS and configuration
- (presentation has not been changed).
-- Refactored `xhtml11.conf` configuration file.
-- Set consistent and sensible permissions on distributed files.
-- White space is now stripped from DSV formatted table cell data.
-- `class="tableblock"` attribute added to tables generated by
- `xhtml-deprecated-css.conf` to assist CSS.
-
-.Bug fixes
-- Illegal character set encoder (specified by the AsciiDoc `encoding`
- attribute) and character data are trapped gracefully.
-- AsciiDoc table 'format' attribute in table attribute lists were not
- recognized.
-- The nested horizontal labeled list example in the 'AsciiDoc User
- Guide' has been dropped -- it generated invalid DocBook markup.
-
-
-Version 7.0.0 (2005-06-06)
---------------------------
-***************************************************
-This is a major release with many code and
-documentation changes.
-Please report any problems you encounter.
-
-mailto:srackham@gmail.com['Stuart Rackham']
-***************************************************
-
-.Additions and changes
-- A new 'xhtml11' backend generates XHTML 1.1 with integrated CSS2
- replacing the previous 'xhtml', 'css', and 'css-embedded' backends.
-- The CSS stylesheets have finally been rewritten.
-- The asciidoc(1) command help now includes user
- link:userguide.html#X36[customizable help] topics. When asciidoc is
- invoked with the `--help` option the command argument is
- interpreted as a help topic.
-- The previous example website has been replaced by the actual
- AsciiDoc website (see `./examples/website/`.
-- XHTML generation options now controlled by the following attributes:
- 'badges', 'linkcss', 'icons', 'numbered', 'quirks', 'theme',
- 'stylesdir', 'imagesdir' (see the link:userguide.html#X33[User
- Guide] for details.
-- By default HTML and XHTML are output as stand-alone documents (no
- embedded CSS and no linked admonition icon images).
-- Documents encoded with the UTF-8 Unicode character set are now
- processed thanks to a patch supplied by
- mailto:viktor@rbg.informatik.tu-darmstadt.de[Viktor Vasilev].
-- The `-a ^name` command-line syntax to undefine an attribute has been
- deprecated in favor of the `-a name!` syntax.
-- AttributeEntry syntax addition: `:name!:` to undefine `name` attribute.
-- Added `template` system block macro to allow the inclusion of one
- configuration file template section within another.
-- A 'verse' style attribute can now be applied to literal paragraphs
- and blocks to reproduce line breaks and white space from the source
- document.
-- Replacements and Special Words can now be escaped with leading
- backslashes.
-- Replacements are now processed in configuration file order (previous
- ordering was indeterminate).
-- System macros can now be used in the base `asciidoc.conf`
- configuration file.
-- Deprecated features that emitted warnings in prior versions are no
- longer tolerated.
-- The `eval` system attribute expression evaluates to `False` the
- attribute is undefined, if it evaluates to `True` the result is an
- empty string.
-- The Paragraph and DelimitedBlock 'presubs' parameter can be aliased
- as 'subs'.
-- Added 'verbatim' substitutions option.
-- Renamed 'List Continuation Block' to 'List Block' and renamed the
- 'listcontinuation' option to 'list'.
-- Deprecated 'default' substitutions option (use 'normal' instead).
-- The 'section-numbers' section numbering attribute has be renamed
- 'numbered'.
-- Dropped the '\#UNDER CONSTRUCTION#' block macro.
-- Rewrote Paragraph and DelimitedBlock handlers adding a
- link:userguide.html#X23[styles] configuration entry.
-
-.Bug fixes
-- Included files are no longer read inside conditionally excluded
- content.
-- Manpage command names containing dashes (in the manpage NAME
- section) were misinterpreted as the spaced dash command name/purpose
- separator. Bug report and patch supplied by
- mailto:david@dgreaves.com[David Greaves].
-- Unexpected error following malformed author line error.
-
-
-Version 6.0.3 (2005-04-20)
---------------------------
-.Additions and changes
-- Special characters are now substituted in AttributeEntry element
- values.
-- Spaced and unspaced em dashes are now recognized (previously only
- spaced em dashes were recognized).
-- Replaced the table 'noborders' option with richer 'frame' and 'grid'
- attributes.
-- The `duplicate macro` warning message now only occurs when the
- verbose (`-v`) option is enabled.
-- Single lines starting with two forward slashes hard up against the
- left margin are treated as comments and are not processed.
-- Renamed 'section' delimited block option to 'sectionbody' to more
- accurately reflect it's role.
-- Added a List Continuation block -- a specialized delimited block
- that is functionally equivalent to the List Item Continuation
- feature except that the list contained within the block does not
- require explicit '+' list item continuation lines.
-- Dropped deprecated `<u>` tags from generated HTML.
-- Literal Block delimiters must now consist of at least four points
- (previously three) to avoid lone ellipsis ambiguity.
-
-.Bug fixes
-- Some system attribute evaluation failures caused unexpected
- exceptions to occur.
-
-
-Version 6.0.2 (2005-03-30)
---------------------------
-.Additions and changes
-- Three new 'system' block macros have been added -- `eval`, `sys` and
- `sys2` which are the block macro equivalents to the same named
- system attributes.
-- 'Intrinsic' macros have been renamed 'system' macros along with
- 'action' attributes which have been renamed 'system' attributes:
- * To reflect their common (though contextually different) behavior.
- * To avoid confusion with 'intrinsic attributes'.
-
-.Bug fixes
-- Asciidoc now searches in `/etc/asciidoc/filters` for filters.
-
-
-Version 6.0.1 (2005-03-06)
---------------------------
-.Additions and changes
-- A global configuration file location `/etc/asciidoc` has been added
- and is now processed before all other locations (patch supplied by
- mailto:stone@debian.org[Fredrik Steen]).
-- Recoded `tempfile.mktemp()` and other artifacts that are no longer
- necessary or desirable (patches supplied by
- mailto:stone@debian.org[Fredrik Steen]).
-- Added BUGS file to the distribution.
-
-.Bug fixes
-- Illegal comment syntax in `css-embedded-stylesheet.conf` resulted in
- illegal CSS in files generated by the `css-embedded` backend.
-
-
-Version 6.0.0 (2005-01-28)
---------------------------
-***************************************************
-This release has had some fairly major code and
-documentation changes. Please report any problems
-you encounter.
-
-mailto:srackham@gmail.com['Stuart Rackham']
-***************************************************
-
-A lot of new stuff. A new major version number -- some regression
-incompatibility (hopefully mitigated by 'deprecated' warnings).
-
-Went mad trying to rein in the current feature anarchy -- established
-a unified notion of document attributes. Attempted to introduce a
-consistent vocabulary -- renamed many poorly or inconsistently named
-entities.
-
-Actually, deprecated syntax is still processed correctly in almost all
-cases. One source of incompatibility that may arise if you have
-customized CSS stylesheets is the change of AsciiDoc CSS class names
-(see below). I guess the moral is if you've done a lot of
-configuration file customization and are happy with version 5 then you
-may want to stay put.
-
-NOTE: This version requires Python 2.3 or better to run.
-
-.Additions and changes
-- 'Glossary entries' have been renamed 'attributes'. This eliminates
- confusion with the accepted meaning of glossary.
-- An `AttributeEntry` block element has been added so that document
- attributes can be assigned from within an AsciiDoc document.
-- The `AttributeList` block element has been added which is a more
- general solution than the (now deprecated) DelimitedBlock arguments.
-- An BlockId element has been added for setting block element anchor
- (link target) IDs.
-- Quoted text can now span multiple lines (thanks to James Bowlin for
- this patch).
-- Inline macros can now span multiple lines.
-- \``double backtick / apostrophe'' quotes generate ``curly quotes''.
-- A warning is now emitted for out of order list item (applies to
- explicitly enumerated numbered list items).
-- Added `include` action attribute.
-- A line of three or more apostrophes generates an HTML horizontal
- ruler (`<hr/>` tag). You will get a warning if processed with
- non-HTML backend.
-- An `{imagesdir}` attribute specifies image file location for images
- referenced in configuration files when generating HTML (the default
- location is `images`).
-- An `{stylesdir}` attribute specifies the location of CSS
- stylesheets when generating styled HTML (the default location for
- configured markup is `.`).
-- The use of the (often inappropriately named) `{caption}` attribute
- list entry has been deprecated, use `{0}` instead.
-- New 'ExampleBlock' delimited block along with associated variants
- Note, Tip, Warning, Caution and Important.
-- The `docbook.conf` file now facilitates the optional inclusion of a
- DocBook revision history file.
-- To better reflect their purpose the following block elements have
- been renamed: `VerbatimBlock` to `ListingBlock`; `IndentedBlock` to
- `LiteralBlock`; `IndentedParagraph` to `LiteralParagraph`;
- `CustomBlock` to `BackendBlock`; `SimpleSection` to `SectionBody`.
- Any corresponding CSS class names have also been changed which could
- result in backward incompatibility in customized stylesheets.
-- Swapped plain DocBook admonition icons for Jimmac's DocBook icons
- (http://jimmac.musichall.cz/ikony.php3). The original plain icons
- have been moved to `./images/plain`.
-- Renamed `html` backend to `xhtml` to better reflect it's function
- (former `html-4` backend renamed to `html`).
-- A new inline anchor macro syntax `[[[<id>]]]` is available, it
- displays `[<id>]` at the anchor location and is for anchoring
- bibliography list entries.
-- An optional 'single-line titles' syntax can be used.
-- Tweaks to distributed CSS stylesheets and FOP `fo.xsl` customization
- file.
-- 'List Item Continuation' has been implemented which allows
- additional block elements to be included in list items by separating
- them from the preceding list item element with a line containing a
- single plus character.
-- A new 'Horizontal Labeled List' list type has been added. Generates
- two column list -- the first column contains the list element
- labels, the second contains the element text. Same syntax as
- `Vertical Labeled Lists` except the double colon label suffix is
- followed by the start of the list item text.
-
-.Bug fixes
-- Fixed broken backslash line continuation.
-- Labeled list end tags were not undergoing attribute substitution.
-- Documents without any author information now generate legitimate
- DocBook (previously if the author line was not included in the
- document header then an empty (illegal) DocBook `author` element was
- generated).
-- Multiple spaces in filter command arguments were replaced by a
- single space. The `./examples/asciidoc2text/asciidoc2text.sh` script
- now indents text correctly.
-
-
-Version 5.1.1 (2004-10-10)
---------------------------
-*15-December-2004: Interim update:* Updated `asciidoc.py` to fix
-broken `join_lines` function -- no other changes.
-
-- PDF documentation is now produced from DocBook XML using XSLTLib and
- FOP. Previously we processed DocBook SGML with `jw(1)` (which used
- Dvips to convert DVI files to PDF). FOP has come a long way in the
- last 12 months and produces very acceptable PDF under both Linux and
- Windows.
-- Sections detailing how to install and use the DocBook XSL
- Stylesheets, xsltproc, FOP toolchain and the AsciiDoc XSLT drivers
- have been added to the User Guide.
-- The PDF output from the he example article template has been
- included in the distribution (`./doc/article.pdf`).
-- Special characters are emitted using decimal Unicode character codes
- (previously used named character entities which cannot be assumed
- included in non-HTML documents).
-- Added registered trademark (R) to `[replacements]`.
-- CSS stylesheet tweaks.
-- Admonitions (Note, Tip, Important, Warning, Caution) include icons
- when generating css output.
-
-
-Version 5.1.0 (2004-09-18)
---------------------------
-- Callouts have been implemented (see the 'Callouts' section of the
- AsciiDoc User Guide for details).
-- Added XSL drivers for generating XHTML, chunked XHTML and HTML Help
- from DocBook XML using XSL stylesheets and xsltproc(1).
-- Added CSS stylesheet for HTML generated from DocBook XML using XSL
- stylesheets.
-- Distribution contains HTML Help formatted User Guide
- (`./doc/asciidoc.chm`), the User Guide tells you how it's generated.
-- Images referred to by distributed stylesheets are now located in the
- `./images` subdirectory (previously located in `.`).
-- Filters path names are now handled properly under Cygwin.
-- The usual documentation and examples additions, updates and
- polishing.
-
-
-Version 5.0.9 (2004-09-09)
---------------------------
-- The convention of using a `.asc` file extension for AsciiDoc files
- has been dropped in favor of the familiar `.txt` extension. It makes
- more sense in that AsciiDoc is a text presentation format and
- because `.asc` clashed with the same extension used by other
- applications. It's only a naming convention -- you don't have to
- switch if you don't want to.
-- Changed the subscript formatting character from underline to tilde
- since underscores in file names are reasonably common (especially in
- link and image macros).
-- An alternative syntax for the index term inline macro has been
- added: `++<primary>,<secondary>,<tertiary>++`.
-- Index terms that have secondary and tertiary entries now
- additionally generate separate index terms for the secondary and
- tertiary entries.
-- A `+<primary>+` index term inline macro has been added which
- displays the term in the primary text flow.
-- Added alternative variable list definition using double semi-colon
- terminator as opposed to the standard double colon terminator so
- variable lists can be nested to two levels.
-- Footnotes now appear on a separate line in HTML and Linuxdoc
- outputs.
-- Python version compatibility is checked at startup.
-- Preface and appendix section titles in multi-part Book documents are
- meant to be out of sequence -- warnings are no longer emitted when
- outputting HTML.
-- Empty section warnings have been replaced by error messages and are
- emitted only if invalid markup would result.
-- Missing macro sections or invalid macro name warnings are only
- generated at startup if the `-v` (verbose) option is set. Otherwise
- they are deferred until a matching macro is encountered in the input
- file.
-- Missing or invalid table definition warnings are only generated at
- startup if the `-v` (verbose) option is set. Otherwise they are
- deferred until a matching table is encountered in the input file.
-- AsciiDoc now makes more of an effort to continue in the face of
- errors.
-- Fixed broken `./examples/website/main.aap` script.
-- Converted distribution text files DOS text format as a sop to
- Windows users with challenged text editors.
-- Documentation additions and corrections.
-
-
-Version 5.0.8 (2004-05-15)
---------------------------
-- Spurious 'out of sequence' level 2 warnings no longer appear when
- processing 'book' document multi-part book top level Preface and
- Appendix sub-sections since they are (correctly) out of sequence.
-- A warning is no longer emitted for empty Index sections since this
- is normal when generating DocBook outputs.
-- Fixed: `[quotes]` configuration file entries where not being
- overridden by downstream configuration file entries.
-- Footnote text is now output enclosed in square brackets in HTML
- documents.
-- Added superscripts and subscripts to the standard PRS configuration
- files.
-- Adjusted CSS stylesheets so list titles don't have so much space
- between title and first list item (broken in IE6 due to poor CSS
- compliance). Lessened sidebar title top margin.
-
-
-Version 5.0.7 (2004-04-22)
---------------------------
-- The version 5.0.6 README incorrectly stated that AsciiDoc would run
- under Python 2.0, in fact it requires Python 2.1 or better. The
- README has been corrected.
-- Documented techniques for combining and splitting AsciiDoc documents
- and processing the combined and split parts (see the 'Tips and
- Tricks' section of the User Guide).
-- An example of marking up superscripts and subscripts is documented
- in the 'Tips and Tricks' section of the User Guide (the example
- configuration file is in the AsciiDoc `examples` directory).
-- Added ellipsis to shipped `[replacements]`; three periods output an
- ellipsis entity.
-- Removed unused 'SectionClose' class.
-- The AsciiDoc 'Preamble' element is output as a DocBook 'Preface'
- when processed as a 'book' document type (in older AsciiDoc versions
- a warning was issued and processing stopped).
-- Fixed a quoting anomaly: quoted text can no longer begin or end with
- with white space.
-
-
-Version 5.0.6 (2004-03-07)
---------------------------
-- New 'image' macro implements optional image scaling and linking and
- works in both inline and block contexts. The 'image' macro obsolesces
- the existing 'graphic' block macro and 'icon' inline macro.
-- Macro substitution section names now have `-inlinemacro` and
- `-blockmacro` suffixes to resolve context ambiguity, make their
- purpose clearer and relieve section namespace congestion.
-- Header derived glossary entries can now be overridden from the
- command-line.
-- Special character substitution is now performed on AuthorLine
- derived author names.
-- A macro or block argument called 'options' can be used as a shortcut
- for a list named arguments with zero length string values.
-- Tables can be output without borders using the `options="noborders"`
- argument.
-- Table data lines that do not immediately follow a table section
- underline can now be blank. This allows CSV data with embedded blank
- lines to be processed correctly.
-- Blank DSV format table data lines are silently skipped.
-- Tightened up on enforcement of configuration file section names to
- reduce the possibility of section content being seen as a section
- header line.
-- Section titles can be optionally suffixed with title arguments
- enclosed in double square brackets.
-- A replacement has been added to `asciidoc.conf` to replace inline
- double dashes with the `&mdash;` entity.
-- Changed the `.UNDER-CONSTRUCTION.` macro syntax to
- `#UNDER-CONSTRUCTION#` so it is not mistaken for a BlockTitle.
- Similarly changed the `.NEW.` replacement with
- `&#35;NEW&#35;`.
-- `&#35;NEW&#35;` and `#UNDER-CONSTRUCTION#` macros are now
- included in the DocBook backend.
-- Replaced shipped `smallnew.gif` with `smallnew.png`.
-- Documentation tidy ups.
-
-
-Version 5.0.5 (2004-02-25)
---------------------------
-- Fixed the disappearing paragraph titles problem that was caused by
- Inline macros (incorrectly) processing BlockTitles.
-- Tightened AuthorLine validation. Previously invalid email addresses
- and embedded special characters in the AuthorLine resulted in
- invalid output markup.
-
-
-Version 5.0.4 (2004-02-09)
---------------------------
-- Reinstated missing `infile`, `outfile`, `filetype` and
- `filetype-<filetype>` glossary entries.
-- As of version 5.0.3 asciidoc(1) now requires Python 2.0 or greater,
- this has now been documented.
-
-
-Version 5.0.3 (2004-01-23)
---------------------------
-- Fixed problem that caused any filters directory file containing
- `.conf` (not just those with the `.conf` extension) from being
- loaded.
-- All `[miscellaneous]` configuration file entries can now be
- referenced like glossary entries (they are now processed internally
- as glossary entries).
-- The output file line terminator (previously hardwired to `\r\n` is
- now set using the `newline` entry in the configuration file
- `[miscellaneous]` section.
-- The misspelt `blocktitles` configuration file entry name has been
- corrected (to `blocktitle`).
-- An `{empty}` glossary entry has been added to the default
- configuration which is useful for outputting trailing blank lines
- from configuration file substitution sections.
-
-
-Version 5.0.2 (2003-12-18)
---------------------------
-- New (alternative) 'anchor' and 'xref' macro syntax (old syntax still
- valid).
-- DocBook `mediaobject` and `inlinemediaobject` tags are generated in
- place of `graphic` and `inlinegraphic` tags by the AsciiDoc
- `graphic` and `icon` macros. If a macro argument is specified it is
- the alternative text output if the target document format does not
- support the specified graphic file format.
-- Dropped the LinuxDoc left and right square bracket special character
- substitutions as they interfered with macro substitution.
-- Documentation updates and corrections.
-
-
-Version 5.0.1 (2003-12-09)
---------------------------
-- Fixed problem with anchor tag when generating CSS styled HTML.
-
-
-Version 5.0 (2003-12-08)
-------------------------
-***************************************************
-This release has had some fairly major code and
-documentation changes. Please report any problems
-you encounter.
-
-mailto:srackham@gmail.com['Stuart Rackham']
-***************************************************
-
-- AsciiDoc can now produce a full-blown multi-part DocBook book
- including dedication, abstract, preface, colophon, glossary,
- appendix, bibliography and book part elements using the new
- `specialsections` configuration file section.
-- All Section element children (Paragraph, DelimitedBlock, List,
- Table, BlockMacro) can now be titled using the BlockTitle element.
- A BlockTitle element is a single line containing a title and
- beginning with a period.
-- The `index` and `backmatter` macros have been dropped, superseded by
- `specialsections`.
-- The AsciiDoc 'Preface' element has been renamed 'Preamble' (to avoid
- confusion with the DocBook book preface element).
-- Out of sequence titles are now tolerated with a warning. This allows
- book document level 0 sections to be processed.
-- An 'anchor' inline macro has been added for document link target
- creation.
-- 'Note', 'Tip', 'Important' and 'Warning' paragraph types have been
- added to support the corresponding DocBook elements.
-- Title substitution is now performed in SidebarBlock titles.
-- DocBook graphics now output as `figure` and `informalfigure`
- elements rather than `mediaobjects`. This ensures numbered figures
- and a lists of figures are produced by the DocBook toolchain.
-- You can now escape block argument lines by appending a backslash.
- Alternatively, if you embed arguments in the delimiter line AsciiDoc
- does not check for an arguments line.
-- The default DocBook backend file extension has been changed from
- `.docbook` to `.xml` (`.sgml` for the 'docbook-sgml' backend).
-- Warnings are output by default (previously they only printed when
- verbose option enabled).
-- A Question and Answer variable list definition has been added to the
- shipped configuration files, primarily to create DocBook `qanda`
- DocBook elements.
-- Fixed broken code-filter `-b linuxdoc` option. The asciidoc.asc User
- Guide can now be processed by linuxdoc(1) (although tables are
- dropped because LinuxDoc does not implement tables).
-
-.Compatibility issues:
-1. Table titles are no longer in the arguments line, use the new
- BlockTitles.
-2. Graphic titles are no longer in the 'graphic' block macro caption,
- use the new BlockTitles.
-3. The code-filter title must be placed in a preceding BlockTitle.
-4. SidebarBlock titles must be placed in a preceding BlockTitle.
-5. The DelimitedBlock option 'sidebar' has been renamed to 'section'.
-6. The default DocBook backend file extension has been changed from
-`.docbook` to `.xml` (`.sgml` for the 'docbook-sgml' backend).
-
-
-Version 4.2 (2003-11-26)
-------------------------
-- The default HTML output is now XHTML 1.0 markup. To output the
- former HTML 4 markup specify the `html-4` backend.
-- The default DocBook output is now DocBook XML. To output the former
- DocBook SGML specify the `docbook-sgml` backend. The associated
- `docbook-sgml.conf` file illustrates how to support minor DTD
- variations. Examples of using the `xmlto(1)` command for DocBook
- conversion have been added to the User Guide.
-- Glossary entries set using the command-line -g option can now be
- referenced in configuration files.
-- Configuration dumps (`-c` command-line option) no longer output
- redundant undefined glossary entries.
-- DelimitedBlock arguments can now be specified in a separate arguments
- line immediately following the leading delimiter line, This is in
- preference to the existing delimiter embedded arguments. Reasons:
- * The syntax is in keeping with the Tables arguments syntax.
- * It's easier to enter and implements line continuation.
-- A new QuoteBlock DelimitedBlock definition has been added to the
- distribution configuration files.
-- The table arguments lines can be continued using the backslash line
- continuation character.
-- Added new calculated glossary reference type `{<name>%<value>}`.
-- Double-quote characters can now appear in unquoted positional
- arguments.
-
-
-Version 4.1 (2003-11-13)
-------------------------
-- Added DSV (Delimiter Separated Values) tables format.
-- `{eval:<expr>}` glossary references drop the containing line if
- `<expr>` evaluates to `None`.
-- Block, Table and Macro arguments can now be positional (quoted or
- unquoted).
-- Vocabulary change: DelimitedBlock, Table and Macro 'attributes' are
- now referred to as 'arguments'. This makes more sense in light of the
- extended syntax and avoids confusion with backend markup tag
- attributes.
-- 'tablewidth' table ruler parameter can now be expressed in percent
- units (0..100). If between 0 and 1 then the original fractional unit
- measure is applied.
-- The use of quoting for generating footnotes and index entries has
- been dropped in favor of 'footnote' and 'indexterm' inline macros.
-- 'backmatter' inline macro included in distribution.
-- Fixed: CSS styled HTML tables are now fully XHTML 1.0 conformant.
-- Fixed: 'tablewidth' was processed incorrectly when passed as table
- argument.
-- Fixed: Glossary references like `{x=\{y}}` were one character off
- if \{x] was defined and `{y}` was not.
-
-
-Version 4.0 (2003-11-08)
-------------------------
-***************************************************
-This release has had some fairly major code and
-documentation changes. Please report any problems
-you encounter.
-
-'Stuart Rackham'
-***************************************************
-
-- Added tables to AsciiDoc.
-- Added two special 'subs' options: 'default' specifies the default
- substitution options and 'none' specifies no substitution. These
- options can only appear singly.
-- Line continuation using a trailing backslash character is available
- in Paragraphs, ListItems, Tables.
-- The left and right quotes for quoted text can now be specified
- separately.
-- Shipped configuration files implement footnotes (only useful for
- DocBook output) using \[[]] quoting.
-- Shipped configuration files implement index terms (only useful for
- DocBook and LinuxDoc output) using \(()) quoting.
-- The shipped 'html' backend configuration now emits valid 'HTML 4.01
- Transitional'.
-- Added new calculated glossary reference types `{<name>!<value>}`
- and `{<name>#<value>}`.
-- The DelimitedBlock 'params' option has been dropped in favor of the
- new 'block attributes' mechanism. If you have customized block
- params options you may need to adjust source files to use the
- 'block attributes' syntax. The example code filter has been updated
- to reflect these changes.
-- The code filter now has a `-t tabsize` option.
-- Replaced `-w` option with `-v` (verbose) option. The warnings option
- was just to confusing.
-- Named attributes can now be specified in macro calls.
-- The 'tabsize' attribute is recognized in the built-in `include`
- macros. A tabsize of zero suppresses tab expansion.
-- The configuration file `[options]` section has been split into
- `[miscellaneous]` and `[titles]`. If you have customized any of
- these settings you will need to adjust the affected configuration
- files.
-- Configuration file `[miscellaneous]` entries can now also be set
- using the command-line `-g` option.
-- Fixed: error that occurred when attempting to use zero length
- configuration and source files.
-- Fixed: blocking filter halt problem.
-- Fixed: inline macro escape prefix problem.
-- Fixed: missing macros from configuration dump problem.
-- Fixed: named macros were dumped incorrectly.
-- Many documentation changes/additions/corrections.
-
-
-Version 3.2.2 (2003-10-26)
---------------------------
-- Added `-n` option (synonym for `-g section-numbers`).
-- Dropped the processing commentary (hey, this is Unix).
-- Added new calculated glossary reference type `{<name>?<value>}`.
- `<name>` is the glossary entry name and `<value>` is the text
- substituted if the glossary entry is defined. `<value>` can only
- contain literal text (no glossary references allowed).
-- Added `asciidoc2text` to distribution `examples/asciidoc2text`
- directory (converts AsciiDoc source to text file with section
- numbering).
-- Fixed incorrect nesting of Simple lists inside Variable lists.
-- List definitions have been modified so that list items can be
- indented. This allows a more intuitive indentation of nested lists
- in AsciiDoc source.
-- Lists must be separated from preceding paragraphs by a blank line.
- This is to avoid paragraph lines being mistaken for list items.
-- Corrected asciidoc man page documentation error: the`-f` option does
- *not* search relative to source document directory for the
- configuration file.
-- Minor updates to various distribution `.conf` files.
-- Included `badges.conf` in `examples` directory.
-- `css-embedded-stylesheet.conf` now supports footer badges.
-- The default in-line element processing order has been changed:
- Glossary References are now processed before Inline Macros. This
- allows glossary expansions to occur inside macro references.
-- Glossary entries are now allowed in Author and Revision lines.
-- Default List `subs` options and Paragraph `presubs` options are
- assigned the following default value if not specified:
-
- specialcharacters,quotes,specialwords,replacements,glossary,macros
-
-- Documentation changes/additions/corrections.
-
-
-Version 3.2 (2003-05-26)
-------------------------
-- Added a `-s` command-line option to suppress the output of
- `[header]` and `[footer]` sections.
-- Article document headers are no longer mandatory: this allows
- AsciiDoc to process arbitrary chunks of text. When used in
- conjunction with the new `-s` command-line option corresponding
- chunks of backend markup can be generated.
-- AsciiDoc now emits a warning message and continues when an out of
- sequence section title is detected (previously it failed and
- halted). This allows document sections to be processed separately.
-- Optional 'presubs' and 'postsubs' entries have been added to
- 'DelimitedBlock' and 'Paragraph' definitions. As a consequence
- substitution options are no longer legal in 'options' entries.
-- 'presubs' and 'postsubs' substitutions are processed in the order
- the options are specified (rather than the fixed 'options' order of
- previous versions).
-- ./filters subdirectories are automatically searched for filter
- commands.
-- A 'title-subs' configuration option specifies the substitutions
- performed on document Header and Section titles.
-- A 'subs' entry in now included in List configuration file
- definitions that specified substitutions performed on list entry
- text.
-- Configuration files are auto-loaded from ./filters subdirectories.
-- Added example code filter (see ./examples/filters).
-- Bug fix: if section was empty you may have got erroneous 'missing
- tag "paragraph"' error.
-- Internal code tidy up.
-
-
-Version 3.1 (2003-05-18)
-------------------------
-- In version 3.0 a `[macros]` section entry of the form 'name' was
- equivalent to 'name='. An entry of the form 'name' now undefines the
- entry (to bring it in line with the behavior of other special
- sections).
-- Paragraphs have now been generalized (in the same way as Lists and
- DelimitedBlocks).
-- The 'indentsize' option has been dropped as as consequence of
- paragraph generalization.
-- Pipe | characters can be included in substituted tag and
- substitution section text using the \{brvbar} (broken vertical bar)
- glossary reference.
-- Removed the restriction requiring substitution section text
- placeholders | to be on a separate line.
-- Added an `-e` asciidoc(1) command option that excludes implicit
- configuration files (used in conjunction with `-c` generated
- configuration files).
-- Version 3.0 documentation has undergone a considerable cleanup.
-- The dumping of quoted section entries (see `-c` option) now works
- correctly.
-- The format of special section entries has been made consistent:
- `name` undefines the entry; `name=` sets the entry value to a blank
- string; `name=value` sets the entry value to `value`.
-- As a consequence of the previous change the caret prefix is no
- longer used in glossary configuration file entries (although it is
- still used when undefining an entry using the `-g` command-line
- option).
-
-
-Version 3.0 (2003-05-13)
-------------------------
-This version is the culmination of work begun in the 2.x releases
-whereby fixed policy has been replaced by extensible mechanisms.
-
-- Added `-c` command-line option to dump a composite asciidoc(1)
- configuration file to stdout.
-- Lists and Delimited Blocks are now defined by a set of configuration
- file parameter sections. The user can modify the default
- definitions or add new ones.
-- Block content can now be processed through external filters.
-- The default behavior for Custom Blocks is to perform glossary
- substitution (previously there was no substitution inside Custom
- Blocks).
-- The old 2.x style macros have been reimplemented; as with Lists and
- Delimited Blocks there syntax and behavior can be configured by the
- user. The default macro syntax remains the same but the semantics
- are now (hopefully) a bit more intelligible.
-- Block and Builtin macros use :: delimiter instead of the 2.x single
- colon delimit (to distinguish them from inline macros). The 2.x
- syntax is still supported for backward compatibility.
-- Nested lists are now supported and IndentedParagraphs can be
- included in list items.
-- Conditional source inclusion can be specified using built in `ifdef`,
- `ifndef` and `endif` macros.
-- The new conditional source inclusion feature has been used to reduce
- the number of default configuration files down to one per backend.
-- A change of name: 2.x 'Substitutions' are now called 'Replacements'
- and the 2.x `[substitutions]` configuration file section is now
- called `[replacements]` (the old name is still recognized for
- backward compatibility).
-- The line break is now implemented as a 'Replacements' substitution.
-- Inline 'icon' macro for inline images has been added to default
- configuration files.
-
-Version 2.2 (2003-04-07)
-------------------------
-- The `master.conf` configuration file name has been deprecated in
- favor of `asciidoc.conf`.
-- The standard configuration files set is now loaded from the
- `.asciidoc` folder in the users home directory (if it exists) and
- then from the source document directory. Configuration files that
- don't exist are silently skipped.
-- Configuration files named like the source file will be automatically
- loaded if they are found in the source file directory. For example
- if the source file is `mydoc.asc` and the `-b html` option is used
- then asciidoc(1) will look for `mydoc.conf` and `mydoc-html.conf` in
- that order.
-- The characters used to quote formatted text can be configured and
- extended by the user (see the master.conf [quotes] section).
-- Quoted text can now be escaped by prefixing a backslash character to
- the leading quote.
-- The double single-quote '' strong text quote has been deprecated in
- favor of an asterisk * character.
-- Added \{eval:expression}, \{sys:command} and \{sys2:command}
- glossary reference actions.
-- Trailing brace characters `}` are now allowed inside glossary
- references provided they are escaped with a backslash character.
-- Glossary entries can now be escaped by prefixing a backslash
- character to the leading brace character (use this in preference to
- placing the backslash inside the brace).
-- The output macro has been deprecated (use the new include1 macro
- inside a CustomBlock).
-- The default document type is `article` (asciidoc no longer attempts
- to guess).
-- Files included within DelimitedBlocks are not searched for block
- termination underlines. This ensures the entire file is part of the
- DelimitedBlock.
-- `include` macros can now be used in configuration files.
-- Corrected \{infile} and \{outfile} glossary entry documentation.
-- File inclusion is now limited to a depth of 5 to catch recursion
- loops.
-- Inline tags have been deprecated, they're not necessary and they
- immediately make the source document backend specific. Use
- CustomBlocks or Substitutions instead.
-
-Version 2.1 (2003-03-17)
-------------------------
-- Added section auto numbering `{sectnum}` glossary entry
- (auto-numbering function contributed by Ludovico Magnocavallo).
-- asciidoc(1) now correctly returns non-zero exit status if an error
- occurs.
-- An AsciiDoc example website has been included in the AsciiDoc
- distribution `examples/website` directory.
-- NOTE: The `asciidoc` wrapper script included in the 2.0 distribution
- has been dropped, if you've symlinked or aliased to `asciidoc` you'll
- need to change them to point directly to `asciidoc.py` instead.
-- An RCS $Id$ marker can be used as the document header revision line
- (based on a patch submitted by Ludovico Magnocavallo).
-- In addition to the `name=value` glossary entry format two new ones
- have been introduced: `name` (the default value is set to an empty
- string) and `^name` (the glossary entry is undefined).
-- The `-q` command-line option has been deprecated and the `-w level`
- command-line option added. +
- NOTE: By default skipped substitution warnings are now suppressed.
-- If a configuration file specified with the `-f` command-line option
- is not found relative to the current working directory then the
- search is repeated relative to the asciidoc(1) directory. This
- allows global configuration files to be used.
-- Added `{infile}`, `{outfile}` predefined glossary entries.
-- Added `under-construction` macro to HTML article configuration
- files.
-- Deprecated `{asciidoc_version}` glossary entry in favor of
- `{asciidoc-version}` (to it consistent with other entries).
-
-Version 2.0 (2003-02-24)
-------------------------
-- The emphasized, strong and monospaced words options have been
- generalized with the introduction of macro based 'special words'
- lists.
-- Glossary references can now appear in both the document and macro
- bodies.
-- All output files use `crlf` line termination (previously used UNIX
- `lf` (newline) termination).
-- Added [substitutions] section which implements arbitrary regular
- expression based substitutions.
-- An optional `master.conf` configuration file can be used for entries
- that are not backend or document type specific.
-- Special character definitions moved from the code to the new
- [special_characters] configuration file section.
-- Configuration file glossary added.
-- Command-line -g glossary entry added.
-- A new 'book' document type has been implemented for the 'docbook'
- backend. It outputs DocBook 'book' documents.
-- A major internal change has been the implementation of parametrized
- user definable 'macros'. Internally most document elements are now
- processed as macros.
-- Configuration file macro variables can be specified with default
- values (literals or other macro variables).
-- An attempt has been made to tighten up the vocabulary used to
- describe the AsciiDoc document syntax.
-- The term abstract has been replaced by the more general term
- 'preface' and a new preface section introduced into article
- configuration files (replacing the synopsis sections).
-- Any section elements can now be put in the document preface
- (previous versions only allowed paragraphs).
-- AsciiDoc Blocks have been unified and their behavior can be user
- defined and parametrized.
-- An 'output' inclusion allows an external file to be written directly
- to the backend output file.
-- A new CustomBlock has been added. Default behavior is to insert the
- enveloped AsciiDoc source lines directly into the output file.
-- A 'line break' tag can be inserted by terminating a line with a '+'
- character (only really useful for HTML backends).
-- An fourth section level has been introduced.
-- The SidebarBlock delimiter line characters have been changed. The
- deprecated underline is still accepted.
-- Levels 2 and 3 title underline characters have been changed. The
- deprecated underlines are still accepted.
-- Lines with backend specific inline tags can be inserted into
- AsciiDoc source files.
-- Single words enveloped by underscores are no longer emphasized. This
- feature was deprecated as it is redundant (use single quotes
- instead) and was being applied to file names with underscores.
-- A `-q` quiet option has been added to suppress warning messages.
-- Badge images sourced locally.
-- Added 'author' and 'author-mail' meta tags to HTML configuration
- files.
-
-Version 1.5 (2003-01-08)
-------------------------
-- Implemented sidebar document elements.
-- Explicit checks for user specified configuration files and input
- file (rather than throwing exception).
-
-Version 1.4 (2003-01-04)
-------------------------
-- New configuration file options 'emphasizedwords' and 'strongwords'.
- These allow the definition of words that will always be emphasized
- or rendered in a strong font without inline formatting.
-- Document and section titles are no long subject to inline
- formatting.
-- Multiple configuration files can be overlaid in a single command.
-- Configuration file tags and options entries can now be overridden on
- an entry by entry basis (previously the entire section was
- overloaded).
-- Configuration file tags and options entries are now cached this has
- resulted in around 37% performance improvement over version 1.3.
-- Variable lists can now contain multiple terms per list item.
-- Placeholder paragraph eliminated from empty sections that contain
- subsections.
-- Added \{asciidoc_version} substitution variable.
-- More documentation additions and tidy ups.
-
-Version 1.3 (2003-01-01)
-------------------------
-- A new 'strong' text formatting convention has been implemented:
- Word phrases enclosed in pairs of single quote characters (acute
- accents) are rendered in a strong font (usually bold).
-- Paragraphs can now be followed immediately by Simple lists and
- Ordered lists without an intervening blank line.
-- A user specified configuration file (`asciidoc(1)` -f option)
- overlays the default configuration file rather than replacing it.
- Custom configuration files need only contain those sections
- that have been customized.
-- Comment Block delimiters have been relaxed slightly. They must start
- with three forward slashes /// but the remainder can contain any
- characters, this allows comments to be embedded in the delimiter line.
-- Leading non-digit characters preceding revision number are now
- ignored.
-- Set default indentsize [option] from 2 to documented default value
- of zero in HTML backend html-article.conf and html-manpage.conf
- files.
-- Fixed error that occurred when taking input from stdin without
- explicitly specifying a document type.
-- Restored file name and line number error message information.
-- Changed deprecated -t option to -d in asciidoc --help and usage
- command output.
-- CSS styles tweaking.
-- Code, configuration file and documentation tidy ups.
-
-Version 1.2 (2002-12-28)
-------------------------
-- Implemented 'include' URL to allow file inclusion.
-- `fileextension` configuration file [option] renamed to more sensible
- `outfilesuffix` (`fileextension` still accepted by this version but
- will be dropped in future).
-- Improved error reporting.
-- CSS backends generate valid XHTML.
-- New `css-embedded` backend generates HTML with embedded stylesheets
- (use the `css` backend for linked stylesheets). The css-embedded
- backend output contains no linked images so the generated html files
- are completely self contained.
-- Bug fixes.
-
-Version 1.1 (2002-12-03)
-------------------------
-- Added css (cascading style sheets) backend
-- Implemented IndentedBlock document element.
-- Tabsize command-line option has been deprecated in
- favor of configuration file.
-- Default indent width changed to zero.
-- Added \{localdate} and \{localtime} substitution variables.
-- Added optional [options] configuration file section with
- fileextension, tabsize and indentsize options.
-- Implemented \{authorinitials} substitution variable.
-- Added https link type.
-- Corrected [graphic] substitution from \{title} to \{caption}
- in linuxdoc-article.conf configuration file.
-- Fixed error that occurred when '==' title underline was
- used.
-
-Version 1.0 (2002-11-25)
-------------------------
-First AsciiDoc public release along with AsciiDoc web site
-(http://www.methods.co.nz/asciidoc/) and SourceForge.net project registration
-(https://sourceforge.net/projects/asciidoc/[]).
-
-// vim: set syntax=asciidoc:
diff --git a/source-builder/sb/asciidoc/COPYING b/source-builder/sb/asciidoc/COPYING
deleted file mode 100644
index a43ea21..0000000
--- a/source-builder/sb/asciidoc/COPYING
+++ /dev/null
@@ -1,339 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 675 Mass Ave, Cambridge, MA 02139, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- Appendix: How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/source-builder/sb/asciidoc/COPYRIGHT b/source-builder/sb/asciidoc/COPYRIGHT
deleted file mode 100644
index 13273f3..0000000
--- a/source-builder/sb/asciidoc/COPYRIGHT
+++ /dev/null
@@ -1,18 +0,0 @@
-Copyright (C) 2000-2007 Stuart Rackham
-
-Email: srackham@gmail.com
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at
-your option) any later version.
-
-This program is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-USA.
diff --git a/source-builder/sb/asciidoc/INSTALL b/source-builder/sb/asciidoc/INSTALL
deleted file mode 100644
index cfca794..0000000
--- a/source-builder/sb/asciidoc/INSTALL
+++ /dev/null
@@ -1,235 +0,0 @@
- AsciiDoc Installation
-
- version 8.6.8, 17 July 2012
-
- Note
- The current version of AsciiDoc requires Python 2.4 or newer to run. If
- you don’t already have an up-to-date version of Python installed it can
- be downloaded from the official Python website
- [1]http://www.python.org/.
- __________________________________________________________________
-
-1. Prerequisites
-
- See the [2]README page.
- __________________________________________________________________
-
-2. Installing from the Mercurial repository
-
- The AsciiDoc [3]Mercurial repository is hosted by [4]Google Code. To
- browse the repository go to
- [5]http://code.google.com/p/asciidoc/source/browse/. You can install
- AsciiDoc from the repository if you don’t have an up to date packaged
- version or want to get the latest version from the trunk:
- * Make sure you have [6]Mercurial installed, you can check with:
- $ hg --version
- * Go to the directory you want to install AsciiDoc into and download
- the repository. This example gets the 8.6.8 tagged release:
- $ cd ~/bin
- $ hg clone -r 8.6.8 https://asciidoc.googlecode.com/hg/ asciidoc-8.6.8
-
- You now have two choices: you can run asciidoc locally from your
- repository or you can use autoconf(1) and make(1) to perform a
- system-wide install.
-
- 2.1. Running asciidoc from your local copy
-
- Create a symlink to the AsciiDoc script in a search PATH directory so
- it’s easy to execute asciidoc from the command-line, for example:
- $ ln -s ~/bin/asciidoc-8.6.8/asciidoc.py ~/bin/asciidoc
- $ ln -s ~/bin/asciidoc-8.6.8/a2x.py ~/bin/a2x
-
- Use the Mercurial pull command to update your local AsciiDoc
- repository.
-
- 2.2. Installing asciidoc for all users
-
- Create configure using autoconf(1); use configure to create the
- Makefile; run make(1); build the man pages; install:
-
- $ autoconf
- $ ./configure
- $ make
- $ sudo make install
-
- To uninstall:
-
- $ sudo make uninstall
- __________________________________________________________________
-
-3. Distribution tarball installation
-
- The distribution source tarballs can be downloaded from the SourceForge
- [7]http://sourceforge.net/projects/asciidoc/.
-
- Note
- Unless you are [8]installing on Microsoft Windows you should use the
- tarball and not the zip file to install the the distribution (the
- tarball contains symlinks).
-
- If your flavor or UNIX or Linux does not have a packaged AsciiDoc
- distribution or if you prefer to install the latest AsciiDoc version
- from source use the configure shell script in the tarball root
- directory.
-
- The autoconf(1) generated configure script creates a make file that is
- tailored for your system. To install:
- $ tar -xzf asciidoc-8.6.8.tar.gz
- $ cd asciidoc-8.6.8
- $ ./configure
- $ sudo make install
-
- To install the documentation:
- $ sudo make docs
-
- To uninstall AsciiDoc:
- $ sudo make uninstall
-
- If Vim is installed on your system the AsciiDoc Vim syntax highlighter
- and filetype detection scripts will be install in the global Vim
- configuration file directory (asciidoc.vim in the syntax directory and
- asciidoc_filetype.vim in the ftdetect directory).
- __________________________________________________________________
-
-4. Microsoft Windows installation
-
- AsciiDoc is developed and tested on Linux but there seem to be quite a
- few people using it on Windows. To install AsciiDoc on Windows unzip
- the distribution Zip file contents:
- $ unzip asciidoc-8.6.8.zip
-
- This will create the folder asciidoc-8.6.8 containing the asciidoc.py
- and a2x.py executables along with configuration files and
- documentation.
-
- To generate DocBook based outputs (e.g. PDFs) you will also need a
- working DocBook toolchain. Installing and configuring a DocBook
- toolchain on Windows can be a challenge — this blog post explains
- [9]How to Create Handsome PDF Documents Without Frustration using
- [10]Cygwin, [11]dblatex and AsciiDoc.
- __________________________________________________________________
-
-5. Testing your installation
-
- Test out asciidoc by changing to the AsciiDoc application directory and
- convert the User Guide document (./doc/asciidoc.txt) to XHTML
- (./doc/asciidoc.html):
- $ python asciidoc.py doc/asciidoc.txt
-
- [12]testasciidoc offers a more extensive set of conformance tests,
- though you do need to create the test data before running the tests
- (this in itself is a good post-install test):
- $ python ./tests/testasciidoc.py update
-
- Now you can run the tests by executing this command:
- $ python ./tests/testasciidoc.py run
-
- A full battery of tests can be run from the main.aap script in the
- distribution root directory:
- $ aap test
- __________________________________________________________________
-
-6. Building the distribution
-
- The AsciiDoc distribution is built using [13]A-A-P (a software build
- system written by Bram Moolenaar). The AsciiDoc A-A-P scripts are:
-
- ./main.aap
- Builds the distribution tarball and zip files, documentation and
- example website.
-
- ./doc/main.aap
- Builds distribution documentation.
-
- ./examples/website/main.aap
- Builds AsciiDoc website.
-
- ./common.aap
- Included in all scripts.
-
- To build the distribution tarball and zip files, documentation and
- example website run A-A-P from the distribution root directory:
- $ aap
- __________________________________________________________________
-
-7. Prepackaged AsciiDoc installation
-
- The following platform specific AsciiDoc packages are available:
-
- Debian GNU/Linux
- If you use Debian or a Debian based distribution there’s an
- [14]AsciiDoc Debian package available. Thanks to [15]Fredrik
- Steen who built and maintains the Debian AsciiDoc package.
-
- Gentoo Linux
- If you use Gentoo Linux there’s a [16]Gentoo AsciiDoc package
- available. Thanks to [17]Brandon Philips for writing the ebuild.
-
- Fedora Linux
- With help from Terje Røsten, Chris Wright added asciidoc to
- Fedora Extras which is available in the default installation. To
- install asciidoc execute the following command:
-
- $ yum install asciidoc
-
- Slackware Linux
- John Calixto has created a Slackware package for AsciiDoc which
- can be downloaded from [18]http://linuxpackages.net/.
-
- Ark Linux
- [19]Bernhard Rosenkraenzer added AsciiDoc to Ark Linux — the
- package is available from the Ark Linux repository at
- [20]http://arklinux.osuosl.org/dockyard-devel/, so Ark Linux
- users should just run apt-get install asciidoc.
-
- T2 Linux
- [21]Christian Wiese added AsciiDoc to the [22]T2 Linux
- repository at
- [23]http://svn.exactcode.de/t2/trunk/package/textproc/asciidoc/.
- To build and install the package on a T2 system, run
- ./scripts/Emerge-Pkg asciidoc from within your T2 source
- directory (default: /usr/src/t2-src).
-
- Red Hat Enterprise Linux, Fedora and CentOS packages
- Dag Wieers has built AsciiDoc RPMs for a number of Red Hat based
- distributions, they can be downloaded from
- [24]http://dag.wieers.com/rpm/packages/asciidoc/.
-
- CSW Package for Sun Solaris
- Ben Walton has created a CSW package for AsciiDoc, you can find
- it here: [25]http://opencsw.org/packages/asciidoc.
-
- See also [26]Packager Notes in the AsciiDoc User Guide.
- __________________________________________________________________
-
- Version 8.6.8
- Last updated 2010-11-15 08:44:54 NZDT
-
-References
-
- 1. http://www.python.org/
- 2. file://localhost/tmp/lynxXXXXr4pa6e/README.html
- 3. http://www.selenic.com/mercurial/
- 4. http://code.google.com/
- 5. http://code.google.com/p/asciidoc/source/browse/
- 6. http://www.selenic.com/mercurial/
- 7. http://sourceforge.net/projects/asciidoc/
- 8. file://localhost/tmp/lynxXXXXr4pa6e/L12440-2561TMP.html#X3
- 9. http://blog.rainwebs.net/2010/02/25/how-to-create-handsome-pdf-documents-without-frustration/
- 10. http://www.cygwin.com/
- 11. http://dblatex.sourceforge.net/
- 12. file://localhost/tmp/lynxXXXXr4pa6e/testasciidoc.html
- 13. http://www.a-a-p.org/
- 14. http://packages.debian.org/asciidoc
- 15. mailto:stone@debian.org
- 16. http://packages.gentoo.org/package/app-text/asciidoc
- 17. mailto:brandon@ifup.org
- 18. http://linuxpackages.net/
- 19. mailto:bero@arklinux.org
- 20. http://arklinux.osuosl.org/dockyard-devel/
- 21. mailto:cw@ixplanet.de
- 22. http://www.t2-project.org/
- 23. http://svn.exactcode.de/t2/trunk/package/textproc/asciidoc/
- 24. http://dag.wieers.com/rpm/packages/asciidoc/
- 25. http://opencsw.org/packages/asciidoc
- 26. file://localhost/tmp/lynxXXXXr4pa6e/userguide.html#X38
diff --git a/source-builder/sb/asciidoc/INSTALL.txt b/source-builder/sb/asciidoc/INSTALL.txt
deleted file mode 100644
index eb07ddd..0000000
--- a/source-builder/sb/asciidoc/INSTALL.txt
+++ /dev/null
@@ -1,227 +0,0 @@
-AsciiDoc Installation
-=====================
-
-NOTE: The current version of AsciiDoc requires *Python 2.4 or newer*
-to run. If you don't already have an up-to-date version of Python
-installed it can be downloaded from the official Python website
-http://www.python.org/.
-
-
-Prerequisites
--------------
-See the link:README.html[README] page.
-
-
-Installing from the Mercurial repository
-----------------------------------------
-The AsciiDoc http://www.selenic.com/mercurial/[Mercurial] repository
-is hosted by http://code.google.com/[Google Code].
-To browse the repository go to
-http://code.google.com/p/asciidoc/source/browse/.
-You can install AsciiDoc from the repository if you don't have an up to
-date packaged version or want to get the latest version from the trunk:
-
-- Make sure you have http://www.selenic.com/mercurial/[Mercurial]
- installed, you can check with:
-
- $ hg --version
-
-- Go to the directory you want to install AsciiDoc into and download
- the repository. This example gets the {revnumber} tagged release:
-
-[subs="attributes"]
- $ cd ~/bin
- $ hg clone -r {revnumber} https://asciidoc.googlecode.com/hg/ asciidoc-{revnumber}
-
-You now have two choices: you can run asciidoc locally from your
-repository or you can use 'autoconf(1)' and 'make(1)' to perform a
-system-wide install.
-
-Running asciidoc from your local copy
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Create a symlink to the AsciiDoc script in a search `PATH` directory
-so it's easy to execute `asciidoc` from the command-line, for example:
-
-[subs="attributes"]
- $ ln -s ~/bin/asciidoc-{revnumber}/asciidoc.py ~/bin/asciidoc
- $ ln -s ~/bin/asciidoc-{revnumber}/a2x.py ~/bin/a2x
-
-Use the Mercurial `pull` command to update your local AsciiDoc repository.
-
-Installing asciidoc for all users
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Create `configure` using 'autoconf(1)'; use `configure` to create the
-`Makefile`; run 'make(1)'; build the man pages; install:
-
----------------------------------------------
-$ autoconf
-$ ./configure
-$ make
-$ sudo make install
----------------------------------------------
-
-To uninstall:
-
----------------------------------------------
-$ sudo make uninstall
----------------------------------------------
-
-
-[[X1]]
-Distribution tarball installation
----------------------------------
-The distribution source tarballs can be downloaded from the
-SourceForge http://sourceforge.net/projects/asciidoc/.
-
-NOTE: Unless you are <<X3,installing on Microsoft Windows>> you should
-use the tarball and not the zip file to install the the distribution
-(the tarball contains symlinks).
-
-If your flavor or UNIX or Linux does not have a packaged AsciiDoc
-distribution or if you prefer to install the latest AsciiDoc version
-from source use the `configure` shell script in the tarball root
-directory.
-
-The `autoconf(1)` generated `configure` script creates a make file
-that is tailored for your system. To install:
-
-[subs="attributes"]
- $ tar -xzf asciidoc-{revnumber}.tar.gz
- $ cd asciidoc-{revnumber}
- $ ./configure
- $ sudo make install
-
-To install the documentation:
-
- $ sudo make docs
-
-To uninstall AsciiDoc:
-
- $ sudo make uninstall
-
-If Vim is installed on your system the AsciiDoc Vim syntax highlighter
-and filetype detection scripts will be install in the global Vim
-configuration file directory (`asciidoc.vim` in the `syntax` directory
-and `asciidoc_filetype.vim` in the `ftdetect` directory).
-
-
-[[X3]]
-Microsoft Windows installation
-------------------------------
-AsciiDoc is developed and tested on Linux but there seem to be quite a
-few people using it on Windows. To install AsciiDoc on Windows unzip
-the distribution Zip file contents:
-
-[subs="attributes"]
- $ unzip asciidoc-{revnumber}.zip
-
-This will create the folder +asciidoc-{revnumber}+ containing the
-`asciidoc.py` and `a2x.py` executables along with configuration files
-and documentation.
-
-To generate DocBook based outputs (e.g. PDFs) you will also need a
-working DocBook toolchain. Installing and configuring a DocBook
-toolchain on Windows can be a challenge -- this blog post explains
-http://blog.rainwebs.net/2010/02/25/how-to-create-handsome-pdf-documents-without-frustration/[How
-to Create Handsome PDF Documents Without Frustration] using
-http://www.cygwin.com/[Cygwin],
-http://dblatex.sourceforge.net/[dblatex] and AsciiDoc.
-
-
-Testing your installation
--------------------------
-Test out asciidoc by changing to the AsciiDoc application directory
-and convert the User Guide document (`./doc/asciidoc.txt`) to XHTML
-(`./doc/asciidoc.html`):
-
- $ python asciidoc.py doc/asciidoc.txt
-
-link:testasciidoc.html[testasciidoc] offers a more extensive set of
-conformance tests, though you do need to create the test data before
-running the tests (this in itself is a good post-install test):
-
- $ python ./tests/testasciidoc.py update
-
-Now you can run the tests by executing this command:
-
- $ python ./tests/testasciidoc.py run
-
-A full battery of tests can be run from the `main.aap` script in the
-distribution root directory:
-
- $ aap test
-
-
-Building the distribution
--------------------------
-The AsciiDoc distribution is built using http://www.a-a-p.org/[A-A-P]
-(a software build system written by Bram Moolenaar). The AsciiDoc
-A-A-P scripts are:
-
-`./main.aap`:: Builds the distribution tarball and zip files,
-documentation and example website.
-`./doc/main.aap`:: Builds distribution documentation.
-`./examples/website/main.aap`:: Builds AsciiDoc website.
-`./common.aap`:: Included in all scripts.
-
-To build the distribution tarball and zip files, documentation and
-example website run A-A-P from the distribution root directory:
-
- $ aap
-
-
-[[X2]]
-Prepackaged AsciiDoc installation
----------------------------------
-The following platform specific AsciiDoc packages are available:
-
-*Debian GNU/Linux*::
- If you use Debian or a Debian based distribution there's an
- http://packages.debian.org/asciidoc[AsciiDoc Debian package]
- available. Thanks to mailto:stone@debian.org[Fredrik Steen] who
- built and maintains the Debian AsciiDoc package.
-
-*Gentoo Linux*::
- If you use Gentoo Linux there's a
- http://packages.gentoo.org/package/app-text/asciidoc[Gentoo AsciiDoc
- package] available. Thanks to mailto:brandon@ifup.org[Brandon
- Philips] for writing the ebuild.
-
-*Fedora Linux*::
- With help from Terje Røsten, Chris Wright added asciidoc to Fedora
- Extras which is available in the default installation. To install
- asciidoc execute the following command:
-
- $ yum install asciidoc
-
-*Slackware Linux*::
- John Calixto has created a Slackware package for AsciiDoc which can
- be downloaded from http://linuxpackages.net/.
-
-*Ark Linux*::
- mailto:bero@arklinux.org[Bernhard Rosenkraenzer] added AsciiDoc to
- Ark Linux -- the package is available from the Ark Linux repository
- at http://arklinux.osuosl.org/dockyard-devel/, so Ark Linux users
- should just run `apt-get install asciidoc`.
-
-*T2 Linux*::
- mailto:cw@ixplanet.de[Christian Wiese] added AsciiDoc to the
- http://www.t2-project.org/[T2 Linux] repository at
- http://svn.exactcode.de/t2/trunk/package/textproc/asciidoc/. To
- build and install the package on a T2 system, run
- `./scripts/Emerge-Pkg asciidoc` from within your T2 source directory
- (default: `/usr/src/t2-src`).
-
-*Red Hat Enterprise Linux, Fedora and CentOS packages*::
- Dag Wieers has built AsciiDoc RPMs for a number of Red Hat based
- distributions, they can be downloaded from
- http://dag.wieers.com/rpm/packages/asciidoc/.
-
-*CSW Package for Sun Solaris*::
- Ben Walton has created a CSW package for AsciiDoc, you can find it
- here: http://opencsw.org/packages/asciidoc.
-
-See also link:userguide.html#X38[Packager Notes] in the 'AsciiDoc User
-Guide'.
-
-
diff --git a/source-builder/sb/asciidoc/MANIFEST b/source-builder/sb/asciidoc/MANIFEST
deleted file mode 100644
index 68eebb4..0000000
--- a/source-builder/sb/asciidoc/MANIFEST
+++ /dev/null
@@ -1,90 +0,0 @@
-a2x.py
-asciidoc.py
-asciidocapi.py
-BUGS
-BUGS.txt
-MANIFEST
-main.aap
-common.aap
-CHANGELOG
-CHANGELOG.txt
-asciidoc.conf
-docbook45.conf
-help.conf
-html4.conf
-html5.conf
-lang-*.conf
-latex.conf
-slidy.conf
-text.conf
-wordpress.conf
-xhtml11.conf
-xhtml11-quirks.conf
-COPYING
-COPYRIGHT
-dblatex/asciidoc-dblatex.sty
-dblatex/asciidoc-dblatex.xsl
-dblatex/dblatex-readme.txt
-doc/a2x.1
-doc/book.epub
-doc/asciidoc.1
-doc/asciidoc.conf
-doc/article-docinfo.xml
-doc/customers.csv
-doc/images/
-doc/main.aap
-doc/article.pdf
-doc/latex-filter.pdf
-doc/music-filter.pdf
-doc/source-highlight-filter.pdf
-doc/*.txt
-doc/asciidoc.dict
-docbook-xsl/*.txt
-docbook-xsl/*.xsl
-examples/website/main.aap
-examples/website/build-website.sh
-examples/website/*.css
-examples/website/*.js
-examples/website/customers.csv
-examples/website/images/
-examples/website/layout?.conf
-examples/website/*.txt
-filters/code/code-filter.conf
-filters/code/code-filter.py
-filters/code/code-filter-readme.txt
-filters/code/code-filter-test.txt
-filters/latex/latex2png.py
-filters/latex/latex-filter.conf
-filters/music/music-filter.conf
-filters/music/music2png.py
-filters/music/music-filter-test.txt
-filters/source/source-highlight-filter.conf
-filters/source/source-highlight-filter-test.txt
-filters/graphviz/graphviz-filter.conf
-filters/graphviz/graphviz2png.py
-filters/graphviz/asciidoc-graphviz-sample.txt
-images/icons/callouts/*.png
-images/icons/*.png
-images/icons/README
-images/smallnew.png
-images/tiger.png
-images/highlighter.png
-INSTALL
-INSTALL.txt
-configure
-configure.ac
-Makefile.in
-install-sh
-javascripts/*.js
-README
-README.txt
-stylesheets/*.css
-tests/testasciidoc.py
-tests/testasciidoc.conf
-tests/asciidocapi.py
-tests/data/*.conf
-tests/data/*.txt
-themes/flask/*.css
-themes/volnitsky/*.css
-vim/syntax/asciidoc.vim
-vim/ftdetect/asciidoc_filetype.vim
diff --git a/source-builder/sb/asciidoc/Makefile.in b/source-builder/sb/asciidoc/Makefile.in
deleted file mode 100644
index d8672c3..0000000
--- a/source-builder/sb/asciidoc/Makefile.in
+++ /dev/null
@@ -1,185 +0,0 @@
-#
-# Make file to install/uninstall AsciiDoc
-#
-
-.NOTPARALLEL:
-
-INSTALL = @INSTALL@
-INSTALL_PROG = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-SED = @SED@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-bindir = @bindir@
-datadir = @datadir@
-docdir = @docdir@
-sysconfdir = @sysconfdir@
-datarootdir = @datarootdir@
-mandir=@mandir@
-srcdir = @srcdir@
-
-VPATH = @srcdir@
-
-ASCIIDOCCONF = $(sysconfdir)/asciidoc
-
-prog = asciidoc.py a2x.py
-progdir = $(bindir)
-
-vimdir = @sysconfdir@/vim
-
-manp = $(patsubst %1.txt,%1,$(wildcard doc/*.1.txt))
-manpdir = $(mandir)/man1
-
-conf = $(wildcard *.conf)
-confdir = $(ASCIIDOCCONF)
-
-filtersdir = $(ASCIIDOCCONF)/filters
-
-codefilter = filters/code/code-filter.py
-codefilterdir = $(filtersdir)/code
-codefilterconf = filters/code/code-filter.conf
-codefilterconfdir = $(filtersdir)/code
-
-graphvizfilter = filters/graphviz/graphviz2png.py
-graphvizfilterdir = $(filtersdir)/graphviz
-graphvizfilterconf = filters/graphviz/graphviz-filter.conf
-graphvizfilterconfdir = $(filtersdir)/graphviz
-
-musicfilter = filters/music/music2png.py
-musicfilterdir = $(filtersdir)/music
-musicfilterconf = filters/music/music-filter.conf
-musicfilterconfdir = $(filtersdir)/music
-
-sourcefilterconf = filters/source/source-highlight-filter.conf
-sourcefilterconfdir = $(filtersdir)/source
-
-latexfilter = filters/latex/latex2png.py
-latexfilterdir = $(filtersdir)/latex
-latexfilterconf = filters/latex/latex-filter.conf
-latexfilterconfdir = $(filtersdir)/latex
-
-themesdir = $(ASCIIDOCCONF)/themes
-
-flasktheme = themes/flask/flask.css
-flaskthemedir = $(themesdir)/flask
-
-volnitskytheme = themes/volnitsky/volnitsky.css
-volnitskythemedir = $(themesdir)/volnitsky
-
-docbook = $(wildcard docbook-xsl/*.xsl)
-docbookdir = $(ASCIIDOCCONF)/docbook-xsl
-
-dblatex = $(wildcard dblatex/*.xsl) $(wildcard dblatex/*.sty)
-dblatexdir = $(ASCIIDOCCONF)/dblatex
-
-css = $(wildcard stylesheets/*.css)
-cssdir = $(ASCIIDOCCONF)/stylesheets
-
-js = $(wildcard javascripts/*.js)
-jsdir = $(ASCIIDOCCONF)/javascripts
-
-callouts = $(wildcard images/icons/callouts/*)
-calloutsdir = $(ASCIIDOCCONF)/images/icons/callouts
-
-icons = $(wildcard images/icons/*.png) images/icons/README
-iconsdir = $(ASCIIDOCCONF)/images/icons
-
-doc = $(wildcard README*) $(wildcard BUGS*) $(wildcard INSTALL*) $(wildcard CHANGELOG*)
-
-DATATARGETS = manp conf docbook dblatex css js callouts icons codefilterconf musicfilterconf sourcefilterconf graphvizfilterconf latexfilterconf flasktheme volnitskytheme
-PROGTARGETS = prog codefilter musicfilter graphvizfilter latexfilter
-TARGETS = $(DATATARGETS) $(PROGTARGETS) doc
-
-INSTDIRS = $(TARGETS:%=%dir)
-
-.PHONY: $(TARGETS)
-
-all: build
-
-# create directories used during the install
-$(INSTDIRS):
- $(INSTALL) -d $(DESTDIR)/$($@)
-
-$(PROGTARGETS): % : %dir
- $(INSTALL_PROG) $($@) $(DESTDIR)/$($<)/
-
-$(DATATARGETS): % : %dir
- $(INSTALL_DATA) $($@) $(DESTDIR)/$($<)/
-
-$(manp): %.1 : %.1.txt
- python a2x.py -f manpage $<
-
-docs:
- $(INSTALL) -d $(DESTDIR)/$(docdir)
- $(INSTALL_DATA) $(doc) $(DESTDIR)/$(docdir)
- $(INSTALL) -d $(DESTDIR)/$(docdir)/docbook-xsl
- $(INSTALL_DATA) docbook-xsl/asciidoc-docbook-xsl.txt $(DESTDIR)/$(docdir)/docbook-xsl
- $(INSTALL) -d $(DESTDIR)/$(docdir)/dblatex
- $(INSTALL_DATA) dblatex/dblatex-readme.txt $(DESTDIR)/$(docdir)/dblatex
- $(INSTALL) -d $(DESTDIR)/$(docdir)/stylesheets
- $(INSTALL_DATA) $(css) $(DESTDIR)/$(docdir)/stylesheets
- $(INSTALL) -d $(DESTDIR)/$(docdir)/javascripts
- $(INSTALL_DATA) $(js) $(DESTDIR)/$(docdir)/javascripts
- $(INSTALL) -d $(DESTDIR)/$(docdir)/images
- ( cd images && \
- cp -R * $(DESTDIR)/$(docdir)/images )
- $(INSTALL) -d $(DESTDIR)/$(docdir)/doc
- ( cd doc && \
- cp -R * $(DESTDIR)/$(docdir)/doc )
- $(INSTALL) -d $(DESTDIR)/$(docdir)/examples/website
- ( cd examples/website && \
- cp -R * $(DESTDIR)/$(docdir)/examples/website )
-
-progsymlink:
- (cd $(DESTDIR)/$(progdir); ln -sf asciidoc.py asciidoc)
- (cd $(DESTDIR)/$(progdir); ln -sf a2x.py a2x)
-
-fixconfpath:
- @for f in $(prog); do \
- echo "Fixing CONF_DIR in $$f"; \
- $(SED) "s#^CONF_DIR = '.*'#CONF_DIR = '$(ASCIIDOCCONF)'#" $$f > $$f.out; \
- mv $$f.out $$f; \
- chmod +x $$f; \
- done
-
-install-vim:
- @for d in $(DESTDIR)/$(vimdir) /etc/vim; do \
- if ! test -d $$d; then continue; fi ; \
- echo "installing Vim files in $$d" ; \
- $(INSTALL) -d $$d/syntax ; \
- $(INSTALL_DATA) vim/syntax/asciidoc.vim $$d/syntax ; \
- $(INSTALL) -d $$d/ftdetect ; \
- $(INSTALL_DATA) vim/ftdetect/asciidoc_filetype.vim $$d/ftdetect ; \
- done
-
-uninstall-vim:
- @for d in $(DESTDIR)/$(vimdir) /etc/vim; do \
- if ! test -d $$d; then continue; fi ; \
- echo "uninstalling Vim files in $$d" ; \
- rm -f $$d/syntax/asciidoc.vim ; \
- rm -f $$d/ftdetect/asciidoc_filetype.vim ; \
- done
-
-
-build: fixconfpath $(manp)
-
-
-install: all $(PROGTARGETS) $(DATATARGETS) progsymlink install-vim
-
-uninstall: uninstall-vim
- rm -f $(DESTDIR)/$(progdir)/asciidoc
- rm -f $(DESTDIR)/$(progdir)/asciidoc.py
- rm -f $(DESTDIR)/$(progdir)/a2x
- rm -f $(DESTDIR)/$(progdir)/a2x.py
- rm -f $(DESTDIR)/$(manpdir)/asciidoc.1
- rm -f $(DESTDIR)/$(manpdir)/a2x.1
- rm -rf $(DESTDIR)/$(confdir)
- rm -rf $(DESTDIR)/$(docdir)
-
-clean:
- rm -f $(manp)
-
-test:
- @echo "Nothing to see here...Move along."
diff --git a/source-builder/sb/asciidoc/README b/source-builder/sb/asciidoc/README
deleted file mode 100644
index 9e5857b..0000000
--- a/source-builder/sb/asciidoc/README
+++ /dev/null
@@ -1,45 +0,0 @@
- AsciiDoc README File
-
- version 8.6.8, 17 July 2012
- __________________________________________________________________
-
-1. Prerequisites
-
- AsciiDoc is written in Python so you need a Python interpreter (version
- 2.4 or later) to execute asciidoc(1). Python is installed by default in
- most Linux distributions. You can download Python from the official
- Python website [1]http://www.python.org.
- __________________________________________________________________
-
-2. Obtaining AsciiDoc
-
- Documentation and installation instructions are on the AsciiDoc website
- [2]http://www.methods.co.nz/asciidoc/
- __________________________________________________________________
-
-3. Tools
-
- Current AsciiDoc version tested on Xubuntu Linux 10.04 with:
- * Python 2.6.5
- * DocBook XSL Stylesheets 1.76.1
- * xsltproc (libxml 20706, libxslt 10126 and libexslt 815).
- * w3m 0.5.2
- * dblatex 0.3
- * FOP 0.95
- * A-A-P 1.091
- __________________________________________________________________
-
-4. Copying
-
- Copyright © 2002-2011 Stuart Rackham. Free use of this software is
- granted under the terms of the GNU General Public License version 2
- (GPLv2).
- __________________________________________________________________
-
- Version 8.6.8
- Last updated 2011-05-04 18:47:58 NZST
-
-References
-
- 1. http://www.python.org/
- 2. http://www.methods.co.nz/asciidoc/
diff --git a/source-builder/sb/asciidoc/README.txt b/source-builder/sb/asciidoc/README.txt
deleted file mode 100644
index b53c714..0000000
--- a/source-builder/sb/asciidoc/README.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-AsciiDoc README File
-====================
-
-Prerequisites
--------------
-AsciiDoc is written in Python so you need a Python interpreter
-(version 2.4 or later) to execute asciidoc(1). Python is installed by
-default in most Linux distributions. You can download Python from the
-official Python website http://www.python.org.
-
-
-Obtaining AsciiDoc
-------------------
-Documentation and installation instructions are on the AsciiDoc
-website http://www.methods.co.nz/asciidoc/
-
-
-Tools
------
-Current AsciiDoc version tested on Xubuntu Linux 10.04 with:
-
-- Python 2.6.5
-- DocBook XSL Stylesheets 1.76.1
-- xsltproc (libxml 20706, libxslt 10126 and libexslt 815).
-- w3m 0.5.2
-- dblatex 0.3
-- FOP 0.95
-- A-A-P 1.091
-
-
-Copying
--------
-Copyright (C) 2002-2011 Stuart Rackham. Free use of this software is
-granted under the terms of the GNU General Public License version 2
-(GPLv2).
diff --git a/source-builder/sb/asciidoc/a2x.py b/source-builder/sb/asciidoc/a2x.py
deleted file mode 100755
index 1b192a2..0000000
--- a/source-builder/sb/asciidoc/a2x.py
+++ /dev/null
@@ -1,960 +0,0 @@
-#!/usr/bin/env python
-'''
-a2x - A toolchain manager for AsciiDoc (converts Asciidoc text files to other
- file formats)
-
-Copyright: Stuart Rackham (c) 2009
-License: MIT
-Email: srackham@gmail.com
-
-'''
-
-import os
-import fnmatch
-import HTMLParser
-import re
-import shutil
-import subprocess
-import sys
-import traceback
-import urlparse
-import zipfile
-import xml.dom.minidom
-import mimetypes
-
-PROG = os.path.basename(os.path.splitext(__file__)[0])
-VERSION = '8.6.8'
-
-# AsciiDoc global configuration file directory.
-# NOTE: CONF_DIR is "fixed up" by Makefile -- don't rename or change syntax.
-CONF_DIR = '/etc/asciidoc'
-
-
-######################################################################
-# Default configuration file parameters.
-######################################################################
-
-# Optional environment variable dictionary passed to
-# executing programs. If set to None the existing
-# environment is used.
-ENV = None
-
-# External executables.
-ASCIIDOC = 'asciidoc'
-XSLTPROC = 'xsltproc'
-DBLATEX = 'dblatex' # pdf generation.
-FOP = 'fop' # pdf generation (--fop option).
-W3M = 'w3m' # text generation.
-LYNX = 'lynx' # text generation (if no w3m).
-XMLLINT = 'xmllint' # Set to '' to disable.
-EPUBCHECK = 'epubcheck' # Set to '' to disable.
-# External executable default options.
-ASCIIDOC_OPTS = ''
-DBLATEX_OPTS = ''
-FOP_OPTS = ''
-XSLTPROC_OPTS = ''
-BACKEND_OPTS = ''
-
-######################################################################
-# End of configuration file parameters.
-######################################################################
-
-
-#####################################################################
-# Utility functions
-#####################################################################
-
-OPTIONS = None # These functions read verbose and dry_run command options.
-
-def errmsg(msg):
- sys.stderr.write('%s: %s\n' % (PROG,msg))
-
-def warning(msg):
- errmsg('WARNING: %s' % msg)
-
-def infomsg(msg):
- print '%s: %s' % (PROG,msg)
-
-def die(msg, exit_code=1):
- errmsg('ERROR: %s' % msg)
- sys.exit(exit_code)
-
-def trace():
- """Print traceback to stderr."""
- errmsg('-'*60)
- traceback.print_exc(file=sys.stderr)
- errmsg('-'*60)
-
-def verbose(msg):
- if OPTIONS.verbose or OPTIONS.dry_run:
- infomsg(msg)
-
-class AttrDict(dict):
- """
- Like a dictionary except values can be accessed as attributes i.e. obj.foo
- can be used in addition to obj['foo'].
- If self._default has been set then it will be returned if a non-existant
- attribute is accessed (instead of raising an AttributeError).
- """
- def __getattr__(self, key):
- try:
- return self[key]
- except KeyError, k:
- if self.has_key('_default'):
- return self['_default']
- else:
- raise AttributeError, k
- def __setattr__(self, key, value):
- self[key] = value
- def __delattr__(self, key):
- try: del self[key]
- except KeyError, k: raise AttributeError, k
- def __repr__(self):
- return '<AttrDict ' + dict.__repr__(self) + '>'
- def __getstate__(self):
- return dict(self)
- def __setstate__(self,value):
- for k,v in value.items(): self[k]=v
-
-def isexecutable(file_name):
- return os.path.isfile(file_name) and os.access(file_name, os.X_OK)
-
-def find_executable(file_name):
- '''
- Search for executable file_name in the system PATH.
- Return full path name or None if not found.
- '''
- def _find_executable(file_name):
- if os.path.split(file_name)[0] != '':
- # file_name includes directory so don't search path.
- if not isexecutable(file_name):
- return None
- else:
- return file_name
- for p in os.environ.get('PATH', os.defpath).split(os.pathsep):
- f = os.path.join(p, file_name)
- if isexecutable(f):
- return os.path.realpath(f)
- return None
- if os.name == 'nt' and os.path.splitext(file_name)[1] == '':
- for ext in ('.cmd','.bat','.exe'):
- result = _find_executable(file_name + ext)
- if result: break
- else:
- result = _find_executable(file_name)
- return result
-
-def write_file(filename, data, mode='w'):
- f = open(filename, mode)
- try:
- f.write(data)
- finally:
- f.close()
-
-def read_file(filename, mode='r'):
- f = open(filename, mode)
- try:
- return f.read()
- finally:
- f.close()
-
-def shell_cd(path):
- verbose('chdir %s' % path)
- if not OPTIONS.dry_run:
- os.chdir(path)
-
-def shell_makedirs(path):
- if os.path.isdir(path):
- return
- verbose('creating %s' % path)
- if not OPTIONS.dry_run:
- os.makedirs(path)
-
-def shell_copy(src, dst):
- verbose('copying "%s" to "%s"' % (src,dst))
- if not OPTIONS.dry_run:
- shutil.copy(src, dst)
-
-def shell_rm(path):
- if not os.path.exists(path):
- return
- verbose('deleting %s' % path)
- if not OPTIONS.dry_run:
- os.unlink(path)
-
-def shell_rmtree(path):
- if not os.path.isdir(path):
- return
- verbose('deleting %s' % path)
- if not OPTIONS.dry_run:
- shutil.rmtree(path)
-
-def shell(cmd, raise_error=True):
- '''
- Execute command cmd in shell and return tuple
- (stdoutdata, stderrdata, returncode).
- If raise_error is True then a non-zero return terminates the application.
- '''
- if os.name == 'nt':
- # TODO: this is probably unnecessary, see:
- # http://groups.google.com/group/asciidoc/browse_frm/thread/9442ee0c419f1242
- # Windows doesn't like running scripts directly so explicitly
- # specify python interpreter.
- # Extract first (quoted or unquoted) argument.
- mo = re.match(r'^\s*"\s*(?P<arg0>[^"]+)\s*"', cmd)
- if not mo:
- mo = re.match(r'^\s*(?P<arg0>[^ ]+)', cmd)
- if mo.group('arg0').endswith('.py'):
- cmd = 'python ' + cmd
- # Remove redundant quoting -- this is not just cosmetic,
- # quoting seems to dramatically decrease the allowed command
- # length in Windows XP.
- cmd = re.sub(r'"([^ ]+?)"', r'\1', cmd)
- verbose('executing: %s' % cmd)
- if OPTIONS.dry_run:
- return
- stdout = stderr = subprocess.PIPE
- try:
- popen = subprocess.Popen(cmd, stdout=stdout, stderr=stderr,
- shell=True, env=ENV)
- except OSError, e:
- die('failed: %s: %s' % (cmd, e))
- stdoutdata, stderrdata = popen.communicate()
- if OPTIONS.verbose:
- print stdoutdata
- print stderrdata
- if popen.returncode != 0 and raise_error:
- die('%s returned non-zero exit status %d' % (cmd, popen.returncode))
- return (stdoutdata, stderrdata, popen.returncode)
-
-def find_resources(files, tagname, attrname, filter=None):
- '''
- Search all files and return a list of local URIs from attrname attribute
- values in tagname tags.
- Handles HTML open and XHTML closed tags.
- Non-local URIs are skipped.
- files can be a file name or a list of file names.
- The filter function takes a dictionary of tag attributes and returns True if
- the URI is to be included.
- '''
- class FindResources(HTMLParser.HTMLParser):
- # Nested parser class shares locals with enclosing function.
- def handle_startendtag(self, tag, attrs):
- self.handle_starttag(tag, attrs)
- def handle_starttag(self, tag, attrs):
- attrs = dict(attrs)
- if tag == tagname and (filter is None or filter(attrs)):
- # Accept only local URIs.
- uri = urlparse.urlparse(attrs[attrname])
- if uri[0] in ('','file') and not uri[1] and uri[2]:
- result.append(uri[2])
- if isinstance(files, str):
- files = [files]
- result = []
- for filename in files:
- verbose('finding resources in: %s' % filename)
- if OPTIONS.dry_run:
- continue
- parser = FindResources()
- # HTMLParser has problems with non-ASCII strings.
- # See http://bugs.python.org/issue3932
- contents = read_file(filename)
- mo = re.search(r'\A<\?xml.* encoding="(.*?)"', contents)
- if mo:
- encoding = mo.group(1)
- parser.feed(contents.decode(encoding))
- else:
- parser.feed(contents)
- parser.close()
- result = list(set(result)) # Drop duplicate values.
- result.sort()
- return result
-
-# NOT USED.
-def copy_files(files, src_dir, dst_dir):
- '''
- Copy list of relative file names from src_dir to dst_dir.
- '''
- for filename in files:
- filename = os.path.normpath(filename)
- if os.path.isabs(filename):
- continue
- src = os.path.join(src_dir, filename)
- dst = os.path.join(dst_dir, filename)
- if not os.path.exists(dst):
- if not os.path.isfile(src):
- warning('missing file: %s' % src)
- continue
- dstdir = os.path.dirname(dst)
- shell_makedirs(dstdir)
- shell_copy(src, dst)
-
-def find_files(path, pattern):
- '''
- Return list of file names matching pattern in directory path.
- '''
- result = []
- for (p,dirs,files) in os.walk(path):
- for f in files:
- if fnmatch.fnmatch(f, pattern):
- result.append(os.path.normpath(os.path.join(p,f)))
- return result
-
-def exec_xsltproc(xsl_file, xml_file, dst_dir, opts = ''):
- cwd = os.getcwd()
- shell_cd(dst_dir)
- try:
- shell('"%s" %s "%s" "%s"' % (XSLTPROC, opts, xsl_file, xml_file))
- finally:
- shell_cd(cwd)
-
-def get_source_options(asciidoc_file):
- '''
- Look for a2x command options in AsciiDoc source file.
- Limitation: options cannot contain double-quote characters.
- '''
- def parse_options():
- # Parse options to result sequence.
- inquotes = False
- opt = ''
- for c in options:
- if c == '"':
- if inquotes:
- result.append(opt)
- opt = ''
- inquotes = False
- else:
- inquotes = True
- elif c == ' ':
- if inquotes:
- opt += c
- elif opt:
- result.append(opt)
- opt = ''
- else:
- opt += c
- if opt:
- result.append(opt)
-
- result = []
- if os.path.isfile(asciidoc_file):
- options = ''
- f = open(asciidoc_file)
- try:
- for line in f:
- mo = re.search(r'^//\s*a2x:', line)
- if mo:
- options += ' ' + line[mo.end():].strip()
- finally:
- f.close()
- parse_options()
- return result
-
-
-#####################################################################
-# Application class
-#####################################################################
-
-class A2X(AttrDict):
- '''
- a2x options and conversion functions.
- '''
-
- def execute(self):
- '''
- Process a2x command.
- '''
- self.process_options()
- # Append configuration file options.
- self.asciidoc_opts += ' ' + ASCIIDOC_OPTS
- self.dblatex_opts += ' ' + DBLATEX_OPTS
- self.fop_opts += ' ' + FOP_OPTS
- self.xsltproc_opts += ' ' + XSLTPROC_OPTS
- self.backend_opts += ' ' + BACKEND_OPTS
- # Execute to_* functions.
- if self.backend:
- self.to_backend()
- else:
- self.__getattribute__('to_'+self.format)()
- if not (self.keep_artifacts or self.format == 'docbook' or self.skip_asciidoc):
- shell_rm(self.dst_path('.xml'))
-
- def load_conf(self):
- '''
- Load a2x configuration file from default locations and --conf-file
- option.
- '''
- global ASCIIDOC
- CONF_FILE = 'a2x.conf'
- a2xdir = os.path.dirname(os.path.realpath(__file__))
- conf_files = []
- # From a2x.py directory.
- conf_files.append(os.path.join(a2xdir, CONF_FILE))
- # If the asciidoc executable and conf files are in the a2x directory
- # then use the local copy of asciidoc and skip the global a2x conf.
- asciidoc = os.path.join(a2xdir, 'asciidoc.py')
- asciidoc_conf = os.path.join(a2xdir, 'asciidoc.conf')
- if os.path.isfile(asciidoc) and os.path.isfile(asciidoc_conf):
- self.asciidoc = asciidoc
- else:
- self.asciidoc = None
- # From global conf directory.
- conf_files.append(os.path.join(CONF_DIR, CONF_FILE))
- # From $HOME directory.
- home_dir = os.environ.get('HOME')
- if home_dir is not None:
- conf_files.append(os.path.join(home_dir, '.asciidoc', CONF_FILE))
- # If asciidoc is not local to a2x then search the PATH.
- if not self.asciidoc:
- self.asciidoc = find_executable(ASCIIDOC)
- if not self.asciidoc:
- die('unable to find asciidoc: %s' % ASCIIDOC)
- # From backend plugin directory.
- if self.backend is not None:
- stdout = shell(self.asciidoc + ' --backend list')[0]
- backends = [(i, os.path.split(i)[1]) for i in stdout.splitlines()]
- backend_dir = [i[0] for i in backends if i[1] == self.backend]
- if len(backend_dir) == 0:
- die('missing %s backend' % self.backend)
- if len(backend_dir) > 1:
- die('more than one %s backend' % self.backend)
- verbose('found %s backend directory: %s' %
- (self.backend, backend_dir[0]))
- conf_files.append(os.path.join(backend_dir[0], 'a2x-backend.py'))
- # From --conf-file option.
- if self.conf_file is not None:
- if not os.path.isfile(self.conf_file):
- die('missing configuration file: %s' % self.conf_file)
- conf_files.append(self.conf_file)
- # From --xsl-file option.
- if self.xsl_file is not None:
- if not os.path.isfile(self.xsl_file):
- die('missing XSL file: %s' % self.xsl_file)
- self.xsl_file = os.path.abspath(self.xsl_file)
- # Load ordered files.
- for f in conf_files:
- if os.path.isfile(f):
- verbose('loading configuration file: %s' % f)
- execfile(f, globals())
-
- def process_options(self):
- '''
- Validate and command options and set defaults.
- '''
- if not os.path.isfile(self.asciidoc_file):
- die('missing SOURCE_FILE: %s' % self.asciidoc_file)
- self.asciidoc_file = os.path.abspath(self.asciidoc_file)
- if not self.destination_dir:
- self.destination_dir = os.path.dirname(self.asciidoc_file)
- else:
- if not os.path.isdir(self.destination_dir):
- die('missing --destination-dir: %s' % self.destination_dir)
- self.destination_dir = os.path.abspath(self.destination_dir)
- self.resource_dirs = []
- self.resource_files = []
- if self.resource_manifest:
- if not os.path.isfile(self.resource_manifest):
- die('missing --resource-manifest: %s' % self.resource_manifest)
- f = open(self.resource_manifest)
- try:
- for r in f:
- self.resources.append(r.strip())
- finally:
- f.close()
- for r in self.resources:
- r = os.path.expanduser(r)
- r = os.path.expandvars(r)
- if r.endswith('/') or r.endswith('\\'):
- if os.path.isdir(r):
- self.resource_dirs.append(r)
- else:
- die('missing resource directory: %s' % r)
- elif os.path.isdir(r):
- self.resource_dirs.append(r)
- elif r.startswith('.') and '=' in r:
- ext, mimetype = r.split('=')
- mimetypes.add_type(mimetype, ext)
- else:
- self.resource_files.append(r)
- for p in (os.path.dirname(self.asciidoc), CONF_DIR):
- for d in ('images','stylesheets'):
- d = os.path.join(p,d)
- if os.path.isdir(d):
- self.resource_dirs.append(d)
- verbose('resource files: %s' % self.resource_files)
- verbose('resource directories: %s' % self.resource_dirs)
- if not self.doctype and self.format == 'manpage':
- self.doctype = 'manpage'
- if self.doctype:
- self.asciidoc_opts += ' --doctype %s' % self.doctype
- for attr in self.attributes:
- self.asciidoc_opts += ' --attribute "%s"' % attr
-# self.xsltproc_opts += ' --nonet'
- if self.verbose:
- self.asciidoc_opts += ' --verbose'
- self.dblatex_opts += ' -V'
- if self.icons or self.icons_dir:
- params = [
- 'callout.graphics 1',
- 'navig.graphics 1',
- 'admon.textlabel 0',
- 'admon.graphics 1',
- ]
- if self.icons_dir:
- params += [
- 'admon.graphics.path "%s/"' % self.icons_dir,
- 'callout.graphics.path "%s/callouts/"' % self.icons_dir,
- 'navig.graphics.path "%s/"' % self.icons_dir,
- ]
- else:
- params = [
- 'callout.graphics 0',
- 'navig.graphics 0',
- 'admon.textlabel 1',
- 'admon.graphics 0',
- ]
- if self.stylesheet:
- params += ['html.stylesheet "%s"' % self.stylesheet]
- if self.format == 'htmlhelp':
- params += ['htmlhelp.chm "%s"' % self.basename('.chm'),
- 'htmlhelp.hhp "%s"' % self.basename('.hhp'),
- 'htmlhelp.hhk "%s"' % self.basename('.hhk'),
- 'htmlhelp.hhc "%s"' % self.basename('.hhc')]
- if self.doctype == 'book':
- params += ['toc.section.depth 1']
- # Books are chunked at chapter level.
- params += ['chunk.section.depth 0']
- for o in params:
- if o.split()[0]+' ' not in self.xsltproc_opts:
- self.xsltproc_opts += ' --stringparam ' + o
- if self.fop_opts:
- self.fop = True
- if os.path.splitext(self.asciidoc_file)[1].lower() == '.xml':
- self.skip_asciidoc = True
- else:
- self.skip_asciidoc = False
-
- def dst_path(self, ext):
- '''
- Return name of file or directory in the destination directory with
- the same name as the asciidoc source file but with extension ext.
- '''
- return os.path.join(self.destination_dir, self.basename(ext))
-
- def basename(self, ext):
- '''
- Return the base name of the asciidoc source file but with extension
- ext.
- '''
- return os.path.basename(os.path.splitext(self.asciidoc_file)[0]) + ext
-
- def asciidoc_conf_file(self, path):
- '''
- Return full path name of file in asciidoc configuration files directory.
- Search first the directory containing the asciidoc executable then
- the global configuration file directory.
- '''
- f = os.path.join(os.path.dirname(self.asciidoc), path)
- if not os.path.isfile(f):
- f = os.path.join(CONF_DIR, path)
- if not os.path.isfile(f):
- die('missing configuration file: %s' % f)
- return os.path.normpath(f)
-
- def xsl_stylesheet(self, file_name=None):
- '''
- Return full path name of file in asciidoc docbook-xsl configuration
- directory.
- If an XSL file was specified with the --xsl-file option then it is
- returned.
- '''
- if self.xsl_file is not None:
- return self.xsl_file
- if not file_name:
- file_name = self.format + '.xsl'
- return self.asciidoc_conf_file(os.path.join('docbook-xsl', file_name))
-
- def copy_resources(self, html_files, src_dir, dst_dir, resources=[]):
- '''
- Search html_files for images and CSS resource URIs (html_files can be a
- list of file names or a single file name).
- Copy them from the src_dir to the dst_dir.
- If not found in src_dir then recursively search all specified
- resource directories.
- Optional additional resources files can be passed in the resources list.
- '''
- resources = resources[:]
- resources += find_resources(html_files, 'link', 'href',
- lambda attrs: attrs.get('type') == 'text/css')
- resources += find_resources(html_files, 'img', 'src')
- resources += self.resource_files
- resources = list(set(resources)) # Drop duplicates.
- resources.sort()
- for f in resources:
- if '=' in f:
- src, dst = f.split('=')
- if not dst:
- dst = src
- else:
- src = dst = f
- src = os.path.normpath(src)
- dst = os.path.normpath(dst)
- if os.path.isabs(dst):
- die('absolute resource file name: %s' % dst)
- if dst.startswith(os.pardir):
- die('resource file outside destination directory: %s' % dst)
- src = os.path.join(src_dir, src)
- dst = os.path.join(dst_dir, dst)
- if not os.path.isfile(src):
- for d in self.resource_dirs:
- d = os.path.join(src_dir, d)
- found = find_files(d, os.path.basename(src))
- if found:
- src = found[0]
- break
- else:
- if not os.path.isfile(dst):
- die('missing resource: %s' % src)
- continue
- # Arrive here if resource file has been found.
- if os.path.normpath(src) != os.path.normpath(dst):
- dstdir = os.path.dirname(dst)
- shell_makedirs(dstdir)
- shell_copy(src, dst)
-
- def to_backend(self):
- '''
- Convert AsciiDoc source file to a backend output file using the global
- 'to_<backend name>' function (loaded from backend plugin a2x-backend.py
- file).
- Executes the global function in an A2X class instance context.
- '''
- eval('to_%s(self)' % self.backend)
-
- def to_docbook(self):
- '''
- Use asciidoc to convert asciidoc_file to DocBook.
- args is a string containing additional asciidoc arguments.
- '''
- docbook_file = self.dst_path('.xml')
- if self.skip_asciidoc:
- if not os.path.isfile(docbook_file):
- die('missing docbook file: %s' % docbook_file)
- return
- shell('"%s" --backend docbook -a "a2x-format=%s" %s --out-file "%s" "%s"' %
- (self.asciidoc, self.format, self.asciidoc_opts, docbook_file, self.asciidoc_file))
- if not self.no_xmllint and XMLLINT:
- shell('"%s" --nonet --noout --valid "%s"' % (XMLLINT, docbook_file))
-
- def to_xhtml(self):
- self.to_docbook()
- docbook_file = self.dst_path('.xml')
- xhtml_file = self.dst_path('.html')
- opts = '%s --output "%s"' % (self.xsltproc_opts, xhtml_file)
- exec_xsltproc(self.xsl_stylesheet(), docbook_file, self.destination_dir, opts)
- src_dir = os.path.dirname(self.asciidoc_file)
- self.copy_resources(xhtml_file, src_dir, self.destination_dir)
-
- def to_manpage(self):
- self.to_docbook()
- docbook_file = self.dst_path('.xml')
- opts = self.xsltproc_opts
- exec_xsltproc(self.xsl_stylesheet(), docbook_file, self.destination_dir, opts)
-
- def to_pdf(self):
- if self.fop:
- self.exec_fop()
- else:
- self.exec_dblatex()
-
- def exec_fop(self):
- self.to_docbook()
- docbook_file = self.dst_path('.xml')
- xsl = self.xsl_stylesheet('fo.xsl')
- fo = self.dst_path('.fo')
- pdf = self.dst_path('.pdf')
- opts = '%s --output "%s"' % (self.xsltproc_opts, fo)
- exec_xsltproc(xsl, docbook_file, self.destination_dir, opts)
- shell('"%s" %s -fo "%s" -pdf "%s"' % (FOP, self.fop_opts, fo, pdf))
- if not self.keep_artifacts:
- shell_rm(fo)
-
- def exec_dblatex(self):
- self.to_docbook()
- docbook_file = self.dst_path('.xml')
- xsl = self.asciidoc_conf_file(os.path.join('dblatex','asciidoc-dblatex.xsl'))
- sty = self.asciidoc_conf_file(os.path.join('dblatex','asciidoc-dblatex.sty'))
- shell('"%s" -t %s -p "%s" -s "%s" %s "%s"' %
- (DBLATEX, self.format, xsl, sty, self.dblatex_opts, docbook_file))
-
- def to_dvi(self):
- self.exec_dblatex()
-
- def to_ps(self):
- self.exec_dblatex()
-
- def to_tex(self):
- self.exec_dblatex()
-
- def to_htmlhelp(self):
- self.to_chunked()
-
- def to_chunked(self):
- self.to_docbook()
- docbook_file = self.dst_path('.xml')
- opts = self.xsltproc_opts
- xsl_file = self.xsl_stylesheet()
- if self.format == 'chunked':
- dst_dir = self.dst_path('.chunked')
- elif self.format == 'htmlhelp':
- dst_dir = self.dst_path('.htmlhelp')
- if not 'base.dir ' in opts:
- opts += ' --stringparam base.dir "%s/"' % os.path.basename(dst_dir)
- # Create content.
- shell_rmtree(dst_dir)
- shell_makedirs(dst_dir)
- exec_xsltproc(xsl_file, docbook_file, self.destination_dir, opts)
- html_files = find_files(dst_dir, '*.html')
- src_dir = os.path.dirname(self.asciidoc_file)
- self.copy_resources(html_files, src_dir, dst_dir)
-
- def update_epub_manifest(self, opf_file):
- '''
- Scan the OEBPS directory for any files that have not been registered in
- the OPF manifest then add them to the manifest.
- '''
- opf_dir = os.path.dirname(opf_file)
- resource_files = []
- for (p,dirs,files) in os.walk(os.path.dirname(opf_file)):
- for f in files:
- f = os.path.join(p,f)
- if os.path.isfile(f):
- assert f.startswith(opf_dir)
- f = '.' + f[len(opf_dir):]
- f = os.path.normpath(f)
- if f not in ['content.opf']:
- resource_files.append(f)
- opf = xml.dom.minidom.parseString(read_file(opf_file))
- manifest_files = []
- manifest = opf.getElementsByTagName('manifest')[0]
- for el in manifest.getElementsByTagName('item'):
- f = el.getAttribute('href')
- f = os.path.normpath(f)
- manifest_files.append(f)
- count = 0
- for f in resource_files:
- if f not in manifest_files:
- count += 1
- verbose('adding to manifest: %s' % f)
- item = opf.createElement('item')
- item.setAttribute('href', f.replace(os.path.sep, '/'))
- item.setAttribute('id', 'a2x-%d' % count)
- mimetype = mimetypes.guess_type(f)[0]
- if mimetype is None:
- die('unknown mimetype: %s' % f)
- item.setAttribute('media-type', mimetype)
- manifest.appendChild(item)
- if count > 0:
- write_file(opf_file, opf.toxml())
-
- def to_epub(self):
- self.to_docbook()
- xsl_file = self.xsl_stylesheet()
- docbook_file = self.dst_path('.xml')
- epub_file = self.dst_path('.epub')
- build_dir = epub_file + '.d'
- shell_rmtree(build_dir)
- shell_makedirs(build_dir)
- # Create content.
- exec_xsltproc(xsl_file, docbook_file, build_dir, self.xsltproc_opts)
- # Copy resources referenced in the OPF and resources referenced by the
- # generated HTML (in theory DocBook XSL should ensure they are
- # identical but this is not always the case).
- src_dir = os.path.dirname(self.asciidoc_file)
- dst_dir = os.path.join(build_dir, 'OEBPS')
- opf_file = os.path.join(dst_dir, 'content.opf')
- opf_resources = find_resources(opf_file, 'item', 'href')
- html_files = find_files(dst_dir, '*.html')
- self.copy_resources(html_files, src_dir, dst_dir, opf_resources)
- # Register any unregistered resources.
- self.update_epub_manifest(opf_file)
- # Build epub archive.
- cwd = os.getcwd()
- shell_cd(build_dir)
- try:
- if not self.dry_run:
- zip = zipfile.ZipFile(epub_file, 'w')
- try:
- # Create and add uncompressed mimetype file.
- verbose('archiving: mimetype')
- write_file('mimetype', 'application/epub+zip')
- zip.write('mimetype', compress_type=zipfile.ZIP_STORED)
- # Compress all remaining files.
- for (p,dirs,files) in os.walk('.'):
- for f in files:
- f = os.path.normpath(os.path.join(p,f))
- if f != 'mimetype':
- verbose('archiving: %s' % f)
- zip.write(f, compress_type=zipfile.ZIP_DEFLATED)
- finally:
- zip.close()
- verbose('created archive: %s' % epub_file)
- finally:
- shell_cd(cwd)
- if not self.keep_artifacts:
- shell_rmtree(build_dir)
- if self.epubcheck and EPUBCHECK:
- if not find_executable(EPUBCHECK):
- warning('epubcheck skipped: unable to find executable: %s' % EPUBCHECK)
- else:
- shell('"%s" "%s"' % (EPUBCHECK, epub_file))
-
- def to_text(self):
- text_file = self.dst_path('.text')
- html_file = self.dst_path('.text.html')
- if self.lynx:
- shell('"%s" %s --conf-file "%s" -b html4 -a "a2x-format=%s" -o "%s" "%s"' %
- (self.asciidoc, self.asciidoc_opts, self.asciidoc_conf_file('text.conf'),
- self.format, html_file, self.asciidoc_file))
- shell('"%s" -dump "%s" > "%s"' %
- (LYNX, html_file, text_file))
- else:
- # Use w3m(1).
- self.to_docbook()
- docbook_file = self.dst_path('.xml')
- opts = '%s --output "%s"' % (self.xsltproc_opts, html_file)
- exec_xsltproc(self.xsl_stylesheet(), docbook_file,
- self.destination_dir, opts)
- shell('"%s" -cols 70 -dump -T text/html -no-graph "%s" > "%s"' %
- (W3M, html_file, text_file))
- if not self.keep_artifacts:
- shell_rm(html_file)
-
-
-#####################################################################
-# Script main line.
-#####################################################################
-
-if __name__ == '__main__':
- description = '''A toolchain manager for AsciiDoc (converts Asciidoc text files to other file formats)'''
- from optparse import OptionParser
- parser = OptionParser(usage='usage: %prog [OPTIONS] SOURCE_FILE',
- version='%s %s' % (PROG,VERSION),
- description=description)
- parser.add_option('-a', '--attribute',
- action='append', dest='attributes', default=[], metavar='ATTRIBUTE',
- help='set asciidoc attribute value')
- parser.add_option('--asciidoc-opts',
- action='append', dest='asciidoc_opts', default=[],
- metavar='ASCIIDOC_OPTS', help='asciidoc options')
- #DEPRECATED
- parser.add_option('--copy',
- action='store_true', dest='copy', default=False,
- help='DEPRECATED: does nothing')
- parser.add_option('--conf-file',
- dest='conf_file', default=None, metavar='CONF_FILE',
- help='configuration file')
- parser.add_option('-D', '--destination-dir',
- action='store', dest='destination_dir', default=None, metavar='PATH',
- help='output directory (defaults to SOURCE_FILE directory)')
- parser.add_option('-d','--doctype',
- action='store', dest='doctype', metavar='DOCTYPE',
- choices=('article','manpage','book'),
- help='article, manpage, book')
- parser.add_option('-b','--backend',
- action='store', dest='backend', metavar='BACKEND',
- help='name of backend plugin')
- parser.add_option('--epubcheck',
- action='store_true', dest='epubcheck', default=False,
- help='check EPUB output with epubcheck')
- parser.add_option('-f','--format',
- action='store', dest='format', metavar='FORMAT', default = 'pdf',
- choices=('chunked','epub','htmlhelp','manpage','pdf', 'text',
- 'xhtml','dvi','ps','tex','docbook'),
- help='chunked, epub, htmlhelp, manpage, pdf, text, xhtml, dvi, ps, tex, docbook')
- parser.add_option('--icons',
- action='store_true', dest='icons', default=False,
- help='use admonition, callout and navigation icons')
- parser.add_option('--icons-dir',
- action='store', dest='icons_dir',
- default=None, metavar='PATH',
- help='admonition and navigation icon directory')
- parser.add_option('-k', '--keep-artifacts',
- action='store_true', dest='keep_artifacts', default=False,
- help='do not delete temporary build files')
- parser.add_option('--lynx',
- action='store_true', dest='lynx', default=False,
- help='use lynx to generate text files')
- parser.add_option('-L', '--no-xmllint',
- action='store_true', dest='no_xmllint', default=False,
- help='do not check asciidoc output with xmllint')
- parser.add_option('-n','--dry-run',
- action='store_true', dest='dry_run', default=False,
- help='just print the commands that would have been executed')
- parser.add_option('-r','--resource',
- action='append', dest='resources', default=[],
- metavar='PATH',
- help='resource file or directory containing resource files')
- parser.add_option('-m', '--resource-manifest',
- action='store', dest='resource_manifest', default=None, metavar='FILE',
- help='read resources from FILE')
- #DEPRECATED
- parser.add_option('--resource-dir',
- action='append', dest='resources', default=[],
- metavar='PATH',
- help='DEPRECATED: use --resource')
- #DEPRECATED
- parser.add_option('-s','--skip-asciidoc',
- action='store_true', dest='skip_asciidoc', default=False,
- help='DEPRECATED: redundant')
- parser.add_option('--stylesheet',
- action='store', dest='stylesheet', default=None,
- metavar='STYLESHEET',
- help='HTML CSS stylesheet file name')
- #DEPRECATED
- parser.add_option('--safe',
- action='store_true', dest='safe', default=False,
- help='DEPRECATED: does nothing')
- parser.add_option('--dblatex-opts',
- action='append', dest='dblatex_opts', default=[],
- metavar='DBLATEX_OPTS', help='dblatex options')
- parser.add_option('--backend-opts',
- action='append', dest='backend_opts', default=[],
- metavar='BACKEND_OPTS', help='backend plugin options')
- parser.add_option('--fop',
- action='store_true', dest='fop', default=False,
- help='use FOP to generate PDF files')
- parser.add_option('--fop-opts',
- action='append', dest='fop_opts', default=[],
- metavar='FOP_OPTS', help='options for FOP pdf generation')
- parser.add_option('--xsltproc-opts',
- action='append', dest='xsltproc_opts', default=[],
- metavar='XSLTPROC_OPTS', help='xsltproc options for XSL stylesheets')
- parser.add_option('--xsl-file',
- action='store', dest='xsl_file', metavar='XSL_FILE',
- help='custom XSL stylesheet')
- parser.add_option('-v', '--verbose',
- action='count', dest='verbose', default=0,
- help='increase verbosity')
- if len(sys.argv) == 1:
- parser.parse_args(['--help'])
- source_options = get_source_options(sys.argv[-1])
- argv = source_options + sys.argv[1:]
- opts, args = parser.parse_args(argv)
- if len(args) != 1:
- parser.error('incorrect number of arguments')
- opts.asciidoc_opts = ' '.join(opts.asciidoc_opts)
- opts.dblatex_opts = ' '.join(opts.dblatex_opts)
- opts.fop_opts = ' '.join(opts.fop_opts)
- opts.xsltproc_opts = ' '.join(opts.xsltproc_opts)
- opts.backend_opts = ' '.join(opts.backend_opts)
- opts = eval(str(opts)) # Convert optparse.Values to dict.
- a2x = A2X(opts)
- OPTIONS = a2x # verbose and dry_run used by utility functions.
- verbose('args: %r' % argv)
- a2x.asciidoc_file = args[0]
- try:
- a2x.load_conf()
- a2x.execute()
- except KeyboardInterrupt:
- exit(1)
diff --git a/source-builder/sb/asciidoc/asciidoc.conf b/source-builder/sb/asciidoc/asciidoc.conf
deleted file mode 100644
index fab1a22..0000000
--- a/source-builder/sb/asciidoc/asciidoc.conf
+++ /dev/null
@@ -1,647 +0,0 @@
-#
-# asciidoc.conf
-#
-# Asciidoc global configuration file.
-# Contains backend independent configuration settings that are applied to all
-# AsciiDoc documents.
-#
-
-[miscellaneous]
-tabsize=8
-textwidth=70
-newline=\r\n
-
-[attributes]
-backend-alias-html=xhtml11
-backend-alias-docbook=docbook45
-toclevels=2
-toc-placement=auto
-sectids=
-iconsdir=./images/icons
-encoding=UTF-8
-# Uncomment to use xhtml11 quirks mode CSS.
-#quirks=
-# HTML source code highlighter (source-highlight, pygments or highlight).
-source-highlighter=source-highlight
-# Uncomment to use deprecated quote attributes.
-#deprecated-quotes=
-empty=
-sp=" "
-# Attribute and AttributeList element patterns.
-attributeentry-pattern=^:(?P<attrname>\w[^.]*?)(\.(?P<attrname2>.*?))?:(\s+(?P<attrvalue>.*))?$
-attributelist-pattern=(?u)(^\[\[(?P<id>[\w_:][\w_:.-]*)(,(?P<reftext>.*?))?\]\]$)|(^\[(?P<attrlist>.*)\]$)
-# Substitution attributes for escaping AsciiDoc processing.
-amp=&
-lt=<
-gt=>
-brvbar=|
-nbsp=&#160;
-zwsp=&#8203;
-wj=&#8288;
-deg=&#176;
-backslash=\
-two-colons=::
-two-semicolons=;;
-# DEPRECATED: underscore attribute names.
-two_colons=::
-two_semicolons=;;
-# Left and right single and double quote characters.
-# See http://en.wikipedia.org/wiki/Non-English_usage_of_quotation_marks
-lsquo=&#8216;
-rsquo=&#8217;
-ldquo=&#8220;
-rdquo=&#8221;
-
-[titles]
-subs=specialcharacters,quotes,replacements,macros,attributes,replacements2
-# Double-line title pattern and underlines.
-sectiontitle=^(?P<title>.*?)$
-underlines="==","--","~~","^^","++"
-# Single-line title patterns.
-sect0=^= +(?P<title>[\S].*?)( +=)?$
-sect1=^== +(?P<title>[\S].*?)( +==)?$
-sect2=^=== +(?P<title>[\S].*?)( +===)?$
-sect3=^==== +(?P<title>[\S].*?)( +====)?$
-sect4=^===== +(?P<title>[\S].*?)( +=====)?$
-blocktitle=^\.(?P<title>([^.\s].*)|(\.[^.\s].*))$
-
-[specialcharacters]
-&=&amp;
-<=&lt;
->=&gt;
-
-[quotes]
-# The order is important, quotes are processed in conf file order.
-**=#strong
-*=strong
-``|''=doublequoted
-'=emphasis
-`|'=singlequoted
-ifdef::no-inline-literal[]
-`=monospaced
-endif::no-inline-literal[]
-# +++ and $$ quoting is applied to the +++ and $$ inline passthrough
-# macros to allow quoted attributes to be used.
-# This trick only works with inline passthrough macros.
-+++=#unquoted
-$$=#unquoted
-++=#monospaced
-+=monospaced
-__=#emphasis
-_=emphasis
-\##=#unquoted
-\#=unquoted
-^=#superscript
-~=#subscript
-
-[specialwords]
-emphasizedwords=
-strongwords=
-monospacedwords=
-
-[replacements]
-# Replacements performed in order of configuration file entry. The first entry
-# of each replacement pair performs the (non-escaped) replacement, the second
-# strips the backslash from the escaped replacement.
-
-# (C) Copyright (entity reference &copy;)
-(?<!\\)\(C\)=&#169;
-\\\(C\)=(C)
-
-# (R) registered trade mark (entity reference &reg;
-(?<!\\)\(R\)=&#174;
-\\\(R\)=(R)
-
-# (TM) Trademark (entity reference &trade;)
-(?<!\\)\(TM\)=&#8482;
-\\\(TM\)=(TM)
-
-# -- Spaced and unspaced em dashes (entity reference &mdash;).
-# Space on both sides is translated to thin space characters.
-(^-- )=&#8212;&#8201;
-(\n-- )|( -- )|( --\n)=&#8201;&#8212;&#8201;
-(\w)--(\w)=\1&#8212;\2
-\\--(?!-)=--
-
-# Replace vertical typewriter apostrophe with punctuation apostrophe.
-(\w)'(\w)=\1&#8217;\2
-(\w)\\'(\w)=\1'\2
-
-# ... Ellipsis (entity reference &hellip;)
-(?<!\\)\.\.\.=&#8230;
-\\\.\.\.=...
-
-# Arrows from the Arrows block of Unicode.
-# -> right arrow
-(?<!\\)-&gt;=&#8594;
-\\-&gt;=-&gt;
-# => right double arrow
-(?<!\\)\=&gt;=&#8658;
-\\\=&gt;==&gt;
-# <- left arrow
-(?<!\\)&lt;-=&#8592;
-\\&lt;-=&lt;-
-# <= left double arrow
-(?<!\\)&lt;\==&#8656;
-\\&lt;\==&lt;=
-
-# Arbitrary entity references.
-(?<!\\)&amp;([:_#a-zA-Z][:_.\-\w]*?;)=&\1
-\\(&amp;[:_#a-zA-Z][:_.\-\w]*?;)=\1
-
-#-----------
-# Paragraphs
-#-----------
-[paradef-default]
-delimiter=(?s)(?P<text>\S.*)
-posattrs=style
-style=normal
-template::[paragraph-styles]
-
-[paradef-literal]
-delimiter=(?s)(?P<text>\s+.*)
-options=listelement
-posattrs=style
-style=literal
-template::[paragraph-styles]
-
-[paradef-admonition]
-delimiter=(?s)^\s*(?P<style>NOTE|TIP|IMPORTANT|WARNING|CAUTION):\s+(?P<text>.+)
-template::[paragraph-styles]
-
-[paragraph-styles]
-normal-style=template="paragraph"
-comment-style=template="paragraph",options=('skip',)
-verse-style=template="verseparagraph",posattrs=("style","attribution","citetitle")
-quote-style=template="quoteparagraph",posattrs=("style","attribution","citetitle")
-literal-style=template="literalparagraph",subs=("verbatim",)
-listing-style=template="listingparagraph",subs=("verbatim",)
-example-style=template="exampleparagraph"
-sidebar-style=template="sidebarparagraph"
-abstract-style=template="abstractparagraph"
-partintro-style=template="partintroparagraph"
-NOTE-style=template="admonitionparagraph",name="note",caption="{note-caption}"
-TIP-style=template="admonitionparagraph",name="tip",caption="{tip-caption}"
-IMPORTANT-style=template="admonitionparagraph",name="important",caption="{important-caption}"
-WARNING-style=template="admonitionparagraph",name="warning",caption="{warning-caption}"
-CAUTION-style=template="admonitionparagraph",name="caution",caption="{caution-caption}"
-
-[literalparagraph]
-template::[literalblock]
-
-[verseparagraph]
-template::[verseblock]
-
-[quoteparagraph]
-template::[quoteblock]
-
-[listingparagraph]
-template::[listingblock]
-
-[exampleparagraph]
-template::[exampleblock]
-
-[sidebarparagraph]
-template::[sidebarblock]
-
-[abstractparagraph]
-template::[abstractblock]
-
-[partintroparagraph]
-template::[partintroblock]
-
-
-[macros]
-#--------------
-# Inline macros
-#--------------
-# Backslash prefix required for escape processing.
-# (?s) re flag for line spanning.
-
-# Macros using default syntax.
-(?su)(?<!\w)[\\]?(?P<name>http|https|ftp|file|irc|mailto|callto|image|link|anchor|xref|indexterm):(?P<target>\S*?)\[(?P<attrlist>.*?)(?<!\\)\]=
-
-# These URL types don't require any special attribute list formatting.
-(?su)(?<!\S)[\\]?(?P<name>http|https|ftp|file|irc):(?P<target>//[^\s<>]*[\w/])=
-# Allow a leading parenthesis and square bracket.
-(?su)(?<\=[([])[\\]?(?P<name>http|https|ftp|file|irc):(?P<target>//[^\s<>]*[\w/])=
-# Allow <> brackets.
-(?su)[\\]?&lt;(?P<name>http|https|ftp|file|irc):(?P<target>//[^\s<>]*[\w/])&gt;=
-
-# Email addresses don't require special attribute list formatting.
-# The before ">: and after "< character exclusions stop multiple substitution.
-(?su)(?<![">:\w._/-])[\\]?(?P<target>\w[\w._-]*@[\w._-]*\w)(?!["<\w_-])=mailto
-
-# Allow footnote macros hard up against the preceding word so the footnote mark
-# can be placed against the noted text without an intervening space
-# (http://groups.google.com/group/asciidoc/browse_frm/thread/e1dcb7ee0efc17b5).
-(?su)[\\]?(?P<name>footnote|footnoteref):(?P<target>\S*?)\[(?P<attrlist>.*?)(?<!\\)\]=
-
-# Anchor: [[[id]]]. Bibliographic anchor.
-(?su)[\\]?\[\[\[(?P<attrlist>[\w_:][\w_:.-]*?)\]\]\]=anchor3
-# Anchor: [[id,xreflabel]]
-(?su)[\\]?\[\[(?P<attrlist>[\w"_:].*?)\]\]=anchor2
-# Link: <<id,text>>
-(?su)[\\]?&lt;&lt;(?P<attrlist>[\w"_:].*?)&gt;&gt;=xref2
-
-ifdef::asciidoc7compatible[]
-# Index term: ++primary,secondary,tertiary++
-(?su)(?<!\S)[\\]?\+\+(?P<attrlist>[^+].*?)\+\+(?!\+)=indexterm
-# Index term: +primary+
-# Follows ++...++ macro otherwise it will match them.
-(?<!\S)[\\]?\+(?P<attrlist>[^\s\+][^+].*?)\+(?!\+)=indexterm2
-endif::asciidoc7compatible[]
-
-ifndef::asciidoc7compatible[]
-# Index term: (((primary,secondary,tertiary)))
-(?su)(?<!\()[\\]?\(\(\((?P<attrlist>[^(].*?)\)\)\)(?!\))=indexterm
-# Index term: ((primary))
-# Follows (((...))) macro otherwise it will match them.
-(?<!\()[\\]?\(\((?P<attrlist>[^\s\(][^(].*?)\)\)(?!\))=indexterm2
-endif::asciidoc7compatible[]
-
-# Callout
-[\\]?&lt;(?P<index>\d+)&gt;=callout
-
-# Passthrough macros.
-(?su)[\\]?(?P<name>pass):(?P<subslist>\S*?)\[(?P<passtext>.*?)(?<!\\)\]=[]
-
-# Triple-plus and double-dollar inline passthroughs.
-(?su)[\\]?\+\+\+(?P<passtext>.*?)\+\+\+=pass[]
-(?su)[\\]?\$\$(?P<passtext>.*?)\$\$=pass[specialcharacters]
-
-# Inline literal.
-ifndef::no-inline-literal[]
-(?su)(?<![`\w])([\\]?`(?P<passtext>[^`\s]|[^`\s].*?\S)`)(?![`\w])=literal[specialcharacters]
-endif::no-inline-literal[]
-
-# Inline comment.
-(?mu)^[\\]?//(?P<passtext>[^/].*|)$=comment[specialcharacters]
-
-# Default (catchall) inline macro is not implemented so there is no ambiguity
-# with previous definition that could result in double substitution of escaped
-# references.
-#(?su)[\\]?(?P<name>\w(\w|-)*?):(?P<target>\S*?)\[(?P<passtext>.*?)(?<!\\)\]=
-
-#-------------
-# Block macros
-#-------------
-# Macros using default syntax.
-(?u)^(?P<name>image|unfloat|toc)::(?P<target>\S*?)(\[(?P<attrlist>.*?)\])$=#
-
-# Passthrough macros.
-(?u)^(?P<name>pass)::(?P<subslist>\S*?)(\[(?P<passtext>.*?)\])$=#
-
-^'{3,}$=#ruler
-^<{3,}$=#pagebreak
-^//(?P<passtext>[^/].*|)$=#comment[specialcharacters]
-
-# Implemented in HTML backends.
-[unfloat-blockmacro]
-[toc-blockmacro]
-
-#-----------------
-# Delimited blocks
-#-----------------
-[blockdef-comment]
-delimiter=^/{4,}$
-options=skip
-posattrs=style
-
-[blockdef-sidebar]
-delimiter=^\*{4,}$
-template=sidebarblock
-options=sectionbody
-posattrs=style
-# DEPRECATED: Use Openblock instead.
-abstract-style=template="abstractblock"
-
-[blockdef-open]
-# A block without opening or closing tags.
-delimiter=^--$
-posattrs=style
-style=default
-default-style=template="openblock",options=("sectionbody",)
-comment-style=template="openblock",options=("skip",)
-abstract-style=template="abstractblock",options=("sectionbody",)
-partintro-style=template="partintroblock",options=("sectionbody",)
-example-style=template="exampleblock",options=("sectionbody",)
-sidebar-style=template="sidebarblock",options=("sectionbody",)
-verse-style=template="verseblock",posattrs=("style","attribution","citetitle")
-quote-style=template="quoteblock",posattrs=("style","attribution","citetitle"),options=("sectionbody",)
-literal-style=template="literalparagraph",subs=("verbatim",)
-listing-style=template="listingparagraph",subs=("verbatim",)
-NOTE-style=template="admonitionblock",name="note",caption="{note-caption}",options=("sectionbody",)
-TIP-style=template="admonitionblock",name="tip",caption="{tip-caption}",options=("sectionbody",)
-IMPORTANT-style=template="admonitionblock",name="important",caption="{important-caption}",options=("sectionbody",)
-WARNING-style=template="admonitionblock",name="warning",caption="{warning-caption}",options=("sectionbody",)
-CAUTION-style=template="admonitionblock",name="caution",caption="{caution-caption}",options=("sectionbody",)
-
-[blockdef-pass]
-delimiter=^\+{4,}$
-template=passblock
-# Default subs choosen for backward compatibility.
-subs=attributes,macros
-posattrs=style
-pass-style=template="passblock",subs=()
-
-[blockdef-listing]
-delimiter=^-{4,}$
-template=listingblock
-subs=verbatim
-posattrs=style
-
-[blockdef-literal]
-delimiter=^\.{4,}$
-template=literalblock
-subs=verbatim
-posattrs=style
-listing-style=template="listingblock"
-# DEPRECATED: Use verse style on quote blocks instead.
-verse-style=template="verseblock",subs="normal"
-
-[blockdef-quote]
-delimiter=^_{4,}$
-subs=normal
-style=quote
-posattrs=style,attribution,citetitle
-quote-style=template="quoteblock",options=("sectionbody",)
-verse-style=template="verseblock"
-
-[blockdef-example]
-delimiter=^={4,}$
-template=exampleblock
-options=sectionbody
-posattrs=style
-NOTE-style=template="admonitionblock",name="note",caption="{note-caption}"
-TIP-style=template="admonitionblock",name="tip",caption="{tip-caption}"
-IMPORTANT-style=template="admonitionblock",name="important",caption="{important-caption}"
-WARNING-style=template="admonitionblock",name="warning",caption="{warning-caption}"
-CAUTION-style=template="admonitionblock",name="caution",caption="{caution-caption}"
-
-# For use by custom filters.
-# DEPRECATED: No longer used, a styled listing block (blockdef-listing) is preferable.
-[blockdef-filter]
-delimiter=^~{4,}$
-template=listingblock
-subs=none
-posattrs=style
-
-#-------
-# Lists
-#-------
-[listdef-bulleted]
-# - bullets.
-delimiter=^\s*- +(?P<text>.+)$
-posattrs=style
-type=bulleted
-tags=bulleted
-callout-style=tags="callout"
-bibliography-style=tags="bibliography"
-
-[listdef-bulleted1]
-# * bullets.
-template::[listdef-bulleted]
-delimiter=^\s*\* +(?P<text>.+)$
-
-[listdef-bulleted2]
-# ** bullets.
-template::[listdef-bulleted]
-delimiter=^\s*\*{2} +(?P<text>.+)$
-
-[listdef-bulleted3]
-# *** bullets.
-template::[listdef-bulleted]
-delimiter=^\s*\*{3} +(?P<text>.+)$
-
-[listdef-bulleted4]
-# **** bullets.
-template::[listdef-bulleted]
-delimiter=^\s*\*{4} +(?P<text>.+)$
-
-[listdef-bulleted5]
-# ***** bullets.
-template::[listdef-bulleted]
-delimiter=^\s*\*{5} +(?P<text>.+)$
-
-[listdef-arabic]
-# Arabic numbering.
-delimiter=^\s*(?P<index>\d+\.) +(?P<text>.+)$
-posattrs=style
-type=numbered
-tags=numbered
-style=arabic
-
-[listdef-loweralpha]
-# Lower alpha numbering.
-template::[listdef-arabic]
-delimiter=^\s*(?P<index>[a-z]\.) +(?P<text>.+)$
-style=loweralpha
-
-[listdef-upperalpha]
-# Upper alpha numbering.
-template::[listdef-arabic]
-delimiter=^\s*(?P<index>[A-Z]\.) +(?P<text>.+)$
-style=upperalpha
-
-[listdef-lowerroman]
-# Lower roman numbering.
-template::[listdef-arabic]
-delimiter=^\s*(?P<index>[ivx]+\)) +(?P<text>.+)$
-style=lowerroman
-
-[listdef-upperroman]
-# Upper roman numbering.
-template::[listdef-arabic]
-delimiter=^\s*(?P<index>[IVX]+\)) +(?P<text>.+)$
-style=upperroman
-
-[listdef-numbered1]
-# . numbering.
-template::[listdef-arabic]
-delimiter=^\s*\. +(?P<text>.+)$
-
-[listdef-numbered2]
-# .. numbering.
-template::[listdef-loweralpha]
-delimiter=^\s*\.{2} +(?P<text>.+)$
-
-[listdef-numbered3]
-# ... numbering.
-template::[listdef-lowerroman]
-delimiter=^\s*\.{3} +(?P<text>.+)$
-
-[listdef-numbered4]
-# .... numbering.
-template::[listdef-upperalpha]
-delimiter=^\s*\.{4} +(?P<text>.+)$
-
-[listdef-numbered5]
-# ..... numbering.
-template::[listdef-upperroman]
-delimiter=^\s*\.{5} +(?P<text>.+)$
-
-[listdef-labeled]
-# label:: item.
-delimiter=^\s*(?P<label>.*[^:])::(\s+(?P<text>.+))?$
-posattrs=style
-type=labeled
-tags=labeled
-vertical-style=tags="labeled"
-horizontal-style=tags="horizontal"
-glossary-style=tags="glossary"
-qanda-style=tags="qanda"
-
-[listdef-labeled2]
-# label;; item.
-template::[listdef-labeled]
-delimiter=^\s*(?P<label>.*[^;]);;(\s+(?P<text>.+))?$
-
-[listdef-labeled3]
-# label::: item.
-template::[listdef-labeled]
-delimiter=^\s*(?P<label>.*[^:]):{3}(\s+(?P<text>.+))?$
-
-[listdef-labeled4]
-# label:::: item.
-template::[listdef-labeled]
-delimiter=^\s*(?P<label>.*[^:]):{4}(\s+(?P<text>.+))?$
-
-[listdef-callout]
-posattrs=style
-delimiter=^<?(?P<index>\d*>) +(?P<text>.+)$
-type=callout
-tags=callout
-style=arabic
-
-# DEPRECATED: Old list syntax.
-[listdef-qanda]
-posattrs=style
-delimiter=^\s*(?P<label>.*\S)\?\?$
-type=labeled
-tags=qanda
-
-# DEPRECATED: Old list syntax.
-[listdef-bibliography]
-posattrs=style
-delimiter=^\+ +(?P<text>.+)$
-type=bulleted
-tags=bibliography
-
-# DEPRECATED: Old list syntax.
-[listdef-glossary]
-delimiter=^(?P<label>.*\S):-$
-posattrs=style
-type=labeled
-tags=glossary
-
-#-------
-# Tables
-#-------
-[tabledef-default]
-delimiter=^\|={3,}$
-posattrs=style
-template=table
-default-style=tags="default"
-verse-style=tags="verse"
-literal-style=tags="literal",subs=("specialcharacters",)
-emphasis-style=tags="emphasis"
-strong-style=tags="strong"
-monospaced-style=tags="monospaced"
-header-style=tags="header"
-asciidoc-style=tags="asciidoc",subs=(),filter='"{python}" "{asciidoc-file}" -b {backend} {asciidoc-args}{lang? -a "lang={lang}@"}{icons? -a icons -a "iconsdir={iconsdir}"}{imagesdir? -a "imagesdir={imagesdir}"}{data-uri? -a data-uri} -a "indir={indir}"{trace? -a "trace={trace}"}{blockname? -a "blockname={blockname}"} -s -'
-
-[tabledef-nested]
-# Same as [tabledef-default] but with different delimiter and separator.
-delimiter=^!={3,}$
-separator=((?<!\S)((?P<span>[\d.]+)(?P<op>[*+]))?(?P<align>[<\^>.]{,3})?(?P<style>[a-z])?)?!
-posattrs=style
-template=table
-verse-style=tags="verse"
-literal-style=tags="literal",subs=("specialcharacters",)
-emphasis-style=tags="emphasis"
-strong-style=tags="strong"
-monospaced-style=tags="monospaced"
-header-style=tags="header"
-asciidoc-style=tags="asciidoc",subs=(),filter='"{python}" "{asciidoc-file}" -b {backend} {asciidoc-args}{lang? -a "lang={lang}@"}{icons? -a icons -a "iconsdir={iconsdir}"}{imagesdir? -a "imagesdir={imagesdir}"}{data-uri? -a data-uri} -a "indir={indir}"{trace? -a "trace={trace}"}{blockname? -a "blockname={blockname}"} -s -'
-
-#----------------------------------------
-# Common block and macro markup templates
-#----------------------------------------
-[comment-inlinemacro]
-# Outputs nothing.
-
-[comment-blockmacro]
-# Outputs nothing.
-
-[pass-blockmacro]
-{passtext}
-
-[pass-inlinemacro]
-template::[pass-blockmacro]
-
-[passblock]
-|
-
-[filter-image-blockmacro]
-# Synthesize missing target attribute for filter generated file names.
-# The tag split | ensures missing target file names are auto-generated
-# before the filter is executed, the remainder (the [image-blockmacro])
-# is excuted after the filter to ensure data URI encoding comes after
-# the image is created.
-{target%}{counter2:target-number}
-{target%}{set2:target:{docname}__{target-number}.png}
-|
-template::[image-blockmacro]
-
-[+docinfo]
-# Blank section to suppress missing template warning.
-
-#----------------------------------
-# Default special section templates
-#----------------------------------
-[abstract]
-template::[sect1]
-
-[colophon]
-template::[sect1]
-
-[dedication]
-template::[sect1]
-
-[preface]
-template::[sect1]
-
-[appendix]
-template::[sect1]
-
-[glossary]
-template::[sect1]
-
-[bibliography]
-template::[sect1]
-
-[index]
-template::[sect1]
-
-[synopsis]
-template::[sect1]
-
-#--------------------------------------------------------------------
-# Deprecated old table definitions.
-#
-
-[old_tabledef-default]
-fillchar=-
-format=fixed
-
-[old_tabledef-csv]
-fillchar=~
-format=csv
-
-[old_tabledef-dsv]
-fillchar=_
-format=dsv
-
-# End of deprecated old table definitions.
-#--------------------------------------------------------------------
diff --git a/source-builder/sb/asciidoc/asciidoc.py b/source-builder/sb/asciidoc/asciidoc.py
deleted file mode 100755
index 8c68895..0000000
--- a/source-builder/sb/asciidoc/asciidoc.py
+++ /dev/null
@@ -1,6260 +0,0 @@
-#!/usr/bin/env python
-"""
-asciidoc - converts an AsciiDoc text file to HTML or DocBook
-
-Copyright (C) 2002-2010 Stuart Rackham. Free use of this software is granted
-under the terms of the GNU General Public License (GPL).
-"""
-
-import sys, os, re, time, traceback, tempfile, subprocess, codecs, locale, unicodedata, copy
-
-### Used by asciidocapi.py ###
-VERSION = '8.6.8' # See CHANGLOG file for version history.
-
-MIN_PYTHON_VERSION = '2.4' # Require this version of Python or better.
-
-#---------------------------------------------------------------------------
-# Program constants.
-#---------------------------------------------------------------------------
-DEFAULT_BACKEND = 'html'
-DEFAULT_DOCTYPE = 'article'
-# Allowed substitution options for List, Paragraph and DelimitedBlock
-# definition subs entry.
-SUBS_OPTIONS = ('specialcharacters','quotes','specialwords',
- 'replacements', 'attributes','macros','callouts','normal','verbatim',
- 'none','replacements2','replacements3')
-# Default value for unspecified subs and presubs configuration file entries.
-SUBS_NORMAL = ('specialcharacters','quotes','attributes',
- 'specialwords','replacements','macros','replacements2')
-SUBS_VERBATIM = ('specialcharacters','callouts')
-
-NAME_RE = r'(?u)[^\W\d][-\w]*' # Valid section or attribute name.
-OR, AND = ',', '+' # Attribute list separators.
-
-
-#---------------------------------------------------------------------------
-# Utility functions and classes.
-#---------------------------------------------------------------------------
-
-class EAsciiDoc(Exception): pass
-
-class OrderedDict(dict):
- """
- Dictionary ordered by insertion order.
- Python Cookbook: Ordered Dictionary, Submitter: David Benjamin.
- http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/107747
- """
- def __init__(self, d=None, **kwargs):
- self._keys = []
- if d is None: d = kwargs
- dict.__init__(self, d)
- def __delitem__(self, key):
- dict.__delitem__(self, key)
- self._keys.remove(key)
- def __setitem__(self, key, item):
- dict.__setitem__(self, key, item)
- if key not in self._keys: self._keys.append(key)
- def clear(self):
- dict.clear(self)
- self._keys = []
- def copy(self):
- d = dict.copy(self)
- d._keys = self._keys[:]
- return d
- def items(self):
- return zip(self._keys, self.values())
- def keys(self):
- return self._keys
- def popitem(self):
- try:
- key = self._keys[-1]
- except IndexError:
- raise KeyError('dictionary is empty')
- val = self[key]
- del self[key]
- return (key, val)
- def setdefault(self, key, failobj = None):
- dict.setdefault(self, key, failobj)
- if key not in self._keys: self._keys.append(key)
- def update(self, d=None, **kwargs):
- if d is None:
- d = kwargs
- dict.update(self, d)
- for key in d.keys():
- if key not in self._keys: self._keys.append(key)
- def values(self):
- return map(self.get, self._keys)
-
-class AttrDict(dict):
- """
- Like a dictionary except values can be accessed as attributes i.e. obj.foo
- can be used in addition to obj['foo'].
- If an item is not present None is returned.
- """
- def __getattr__(self, key):
- try: return self[key]
- except KeyError: return None
- def __setattr__(self, key, value):
- self[key] = value
- def __delattr__(self, key):
- try: del self[key]
- except KeyError, k: raise AttributeError, k
- def __repr__(self):
- return '<AttrDict ' + dict.__repr__(self) + '>'
- def __getstate__(self):
- return dict(self)
- def __setstate__(self,value):
- for k,v in value.items(): self[k]=v
-
-class InsensitiveDict(dict):
- """
- Like a dictionary except key access is case insensitive.
- Keys are stored in lower case.
- """
- def __getitem__(self, key):
- return dict.__getitem__(self, key.lower())
- def __setitem__(self, key, value):
- dict.__setitem__(self, key.lower(), value)
- def has_key(self, key):
- return dict.has_key(self,key.lower())
- def get(self, key, default=None):
- return dict.get(self, key.lower(), default)
- def update(self, dict):
- for k,v in dict.items():
- self[k] = v
- def setdefault(self, key, default = None):
- return dict.setdefault(self, key.lower(), default)
-
-
-class Trace(object):
- """
- Used in conjunction with the 'trace' attribute to generate diagnostic
- output. There is a single global instance of this class named trace.
- """
- SUBS_NAMES = ('specialcharacters','quotes','specialwords',
- 'replacements', 'attributes','macros','callouts',
- 'replacements2','replacements3')
- def __init__(self):
- self.name_re = '' # Regexp pattern to match trace names.
- self.linenos = True
- self.offset = 0
- def __call__(self, name, before, after=None):
- """
- Print trace message if tracing is on and the trace 'name' matches the
- document 'trace' attribute (treated as a regexp).
- 'before' is the source text before substitution; 'after' text is the
- source text after substitutuion.
- The 'before' and 'after' messages are only printed if they differ.
- """
- name_re = document.attributes.get('trace')
- if name_re == 'subs': # Alias for all the inline substitutions.
- name_re = '|'.join(self.SUBS_NAMES)
- self.name_re = name_re
- if self.name_re is not None:
- msg = message.format(name, 'TRACE: ', self.linenos, offset=self.offset)
- if before != after and re.match(self.name_re,name):
- if is_array(before):
- before = '\n'.join(before)
- if after is None:
- msg += '\n%s\n' % before
- else:
- if is_array(after):
- after = '\n'.join(after)
- msg += '\n<<<\n%s\n>>>\n%s\n' % (before,after)
- message.stderr(msg)
-
-class Message:
- """
- Message functions.
- """
- PROG = os.path.basename(os.path.splitext(__file__)[0])
-
- def __init__(self):
- # Set to True or False to globally override line numbers method
- # argument. Has no effect when set to None.
- self.linenos = None
- self.messages = []
- self.prev_msg = ''
-
- def stdout(self,msg):
- print msg
-
- def stderr(self,msg=''):
- if msg == self.prev_msg: # Suppress repeated messages.
- return
- self.messages.append(msg)
- if __name__ == '__main__':
- sys.stderr.write('%s: %s%s' % (self.PROG, msg, os.linesep))
- self.prev_msg = msg
-
- def verbose(self, msg,linenos=True):
- if config.verbose:
- msg = self.format(msg,linenos=linenos)
- self.stderr(msg)
-
- def warning(self, msg,linenos=True,offset=0):
- msg = self.format(msg,'WARNING: ',linenos,offset=offset)
- document.has_warnings = True
- self.stderr(msg)
-
- def deprecated(self, msg, linenos=True):
- msg = self.format(msg, 'DEPRECATED: ', linenos)
- self.stderr(msg)
-
- def format(self, msg, prefix='', linenos=True, cursor=None, offset=0):
- """Return formatted message string."""
- if self.linenos is not False and ((linenos or self.linenos) and reader.cursor):
- if cursor is None:
- cursor = reader.cursor
- prefix += '%s: line %d: ' % (os.path.basename(cursor[0]),cursor[1]+offset)
- return prefix + msg
-
- def error(self, msg, cursor=None, halt=False):
- """
- Report fatal error.
- If halt=True raise EAsciiDoc exception.
- If halt=False don't exit application, continue in the hope of reporting
- all fatal errors finishing with a non-zero exit code.
- """
- if halt:
- raise EAsciiDoc, self.format(msg,linenos=False,cursor=cursor)
- else:
- msg = self.format(msg,'ERROR: ',cursor=cursor)
- self.stderr(msg)
- document.has_errors = True
-
- def unsafe(self, msg):
- self.error('unsafe: '+msg)
-
-
-def userdir():
- """
- Return user's home directory or None if it is not defined.
- """
- result = os.path.expanduser('~')
- if result == '~':
- result = None
- return result
-
-def localapp():
- """
- Return True if we are not executing the system wide version
- i.e. the configuration is in the executable's directory.
- """
- return os.path.isfile(os.path.join(APP_DIR, 'asciidoc.conf'))
-
-def file_in(fname, directory):
- """Return True if file fname resides inside directory."""
- assert os.path.isfile(fname)
- # Empty directory (not to be confused with None) is the current directory.
- if directory == '':
- directory = os.getcwd()
- else:
- assert os.path.isdir(directory)
- directory = os.path.realpath(directory)
- fname = os.path.realpath(fname)
- return os.path.commonprefix((directory, fname)) == directory
-
-def safe():
- return document.safe
-
-def is_safe_file(fname, directory=None):
- # A safe file must reside in 'directory' (defaults to the source
- # file directory).
- if directory is None:
- if document.infile == '<stdin>':
- return not safe()
- directory = os.path.dirname(document.infile)
- elif directory == '':
- directory = '.'
- return (
- not safe()
- or file_in(fname, directory)
- or file_in(fname, APP_DIR)
- or file_in(fname, CONF_DIR)
- )
-
-def safe_filename(fname, parentdir):
- """
- Return file name which must reside in the parent file directory.
- Return None if file is not safe.
- """
- if not os.path.isabs(fname):
- # Include files are relative to parent document
- # directory.
- fname = os.path.normpath(os.path.join(parentdir,fname))
- if not is_safe_file(fname, parentdir):
- message.unsafe('include file: %s' % fname)
- return None
- return fname
-
-def assign(dst,src):
- """Assign all attributes from 'src' object to 'dst' object."""
- for a,v in src.__dict__.items():
- setattr(dst,a,v)
-
-def strip_quotes(s):
- """Trim white space and, if necessary, quote characters from s."""
- s = s.strip()
- # Strip quotation mark characters from quoted strings.
- if len(s) >= 3 and s[0] == '"' and s[-1] == '"':
- s = s[1:-1]
- return s
-
-def is_re(s):
- """Return True if s is a valid regular expression else return False."""
- try: re.compile(s)
- except: return False
- else: return True
-
-def re_join(relist):
- """Join list of regular expressions re1,re2,... to single regular
- expression (re1)|(re2)|..."""
- if len(relist) == 0:
- return None
- result = []
- # Delete named groups to avoid ambiguity.
- for s in relist:
- result.append(re.sub(r'\?P<\S+?>','',s))
- result = ')|('.join(result)
- result = '('+result+')'
- return result
-
-def lstrip_list(s):
- """
- Return list with empty items from start of list removed.
- """
- for i in range(len(s)):
- if s[i]: break
- else:
- return []
- return s[i:]
-
-def rstrip_list(s):
- """
- Return list with empty items from end of list removed.
- """
- for i in range(len(s)-1,-1,-1):
- if s[i]: break
- else:
- return []
- return s[:i+1]
-
-def strip_list(s):
- """
- Return list with empty items from start and end of list removed.
- """
- s = lstrip_list(s)
- s = rstrip_list(s)
- return s
-
-def is_array(obj):
- """
- Return True if object is list or tuple type.
- """
- return isinstance(obj,list) or isinstance(obj,tuple)
-
-def dovetail(lines1, lines2):
- """
- Append list or tuple of strings 'lines2' to list 'lines1'. Join the last
- non-blank item in 'lines1' with the first non-blank item in 'lines2' into a
- single string.
- """
- assert is_array(lines1)
- assert is_array(lines2)
- lines1 = strip_list(lines1)
- lines2 = strip_list(lines2)
- if not lines1 or not lines2:
- return list(lines1) + list(lines2)
- result = list(lines1[:-1])
- result.append(lines1[-1] + lines2[0])
- result += list(lines2[1:])
- return result
-
-def dovetail_tags(stag,content,etag):
- """Merge the end tag with the first content line and the last
- content line with the end tag. This ensures verbatim elements don't
- include extraneous opening and closing line breaks."""
- return dovetail(dovetail(stag,content), etag)
-
-# The following functions are so we don't have to use the dangerous
-# built-in eval() function.
-if float(sys.version[:3]) >= 2.6 or sys.platform[:4] == 'java':
- # Use AST module if CPython >= 2.6 or Jython.
- import ast
- from ast import literal_eval
-
- def get_args(val):
- d = {}
- args = ast.parse("d(" + val + ")", mode='eval').body.args
- i = 1
- for arg in args:
- if isinstance(arg, ast.Name):
- d[str(i)] = literal_eval(arg.id)
- else:
- d[str(i)] = literal_eval(arg)
- i += 1
- return d
-
- def get_kwargs(val):
- d = {}
- args = ast.parse("d(" + val + ")", mode='eval').body.keywords
- for arg in args:
- d[arg.arg] = literal_eval(arg.value)
- return d
-
- def parse_to_list(val):
- values = ast.parse("[" + val + "]", mode='eval').body.elts
- return [literal_eval(v) for v in values]
-
-else: # Use deprecated CPython compiler module.
- import compiler
- from compiler.ast import Const, Dict, Expression, Name, Tuple, UnarySub, Keyword
-
- # Code from:
- # http://mail.python.org/pipermail/python-list/2009-September/1219992.html
- # Modified to use compiler.ast.List as this module has a List
- def literal_eval(node_or_string):
- """
- Safely evaluate an expression node or a string containing a Python
- expression. The string or node provided may only consist of the
- following Python literal structures: strings, numbers, tuples,
- lists, dicts, booleans, and None.
- """
- _safe_names = {'None': None, 'True': True, 'False': False}
- if isinstance(node_or_string, basestring):
- node_or_string = compiler.parse(node_or_string, mode='eval')
- if isinstance(node_or_string, Expression):
- node_or_string = node_or_string.node
- def _convert(node):
- if isinstance(node, Const) and isinstance(node.value,
- (basestring, int, float, long, complex)):
- return node.value
- elif isinstance(node, Tuple):
- return tuple(map(_convert, node.nodes))
- elif isinstance(node, compiler.ast.List):
- return list(map(_convert, node.nodes))
- elif isinstance(node, Dict):
- return dict((_convert(k), _convert(v)) for k, v
- in node.items)
- elif isinstance(node, Name):
- if node.name in _safe_names:
- return _safe_names[node.name]
- elif isinstance(node, UnarySub):
- return -_convert(node.expr)
- raise ValueError('malformed string')
- return _convert(node_or_string)
-
- def get_args(val):
- d = {}
- args = compiler.parse("d(" + val + ")", mode='eval').node.args
- i = 1
- for arg in args:
- if isinstance(arg, Keyword):
- break
- d[str(i)] = literal_eval(arg)
- i = i + 1
- return d
-
- def get_kwargs(val):
- d = {}
- args = compiler.parse("d(" + val + ")", mode='eval').node.args
- i = 0
- for arg in args:
- if isinstance(arg, Keyword):
- break
- i += 1
- args = args[i:]
- for arg in args:
- d[str(arg.name)] = literal_eval(arg.expr)
- return d
-
- def parse_to_list(val):
- values = compiler.parse("[" + val + "]", mode='eval').node.asList()
- return [literal_eval(v) for v in values]
-
-def parse_attributes(attrs,dict):
- """Update a dictionary with name/value attributes from the attrs string.
- The attrs string is a comma separated list of values and keyword name=value
- pairs. Values must preceed keywords and are named '1','2'... The entire
- attributes list is named '0'. If keywords are specified string values must
- be quoted. Examples:
-
- attrs: ''
- dict: {}
-
- attrs: 'hello,world'
- dict: {'2': 'world', '0': 'hello,world', '1': 'hello'}
-
- attrs: '"hello", planet="earth"'
- dict: {'planet': 'earth', '0': '"hello",planet="earth"', '1': 'hello'}
- """
- def f(*args,**keywords):
- # Name and add aguments '1','2'... to keywords.
- for i in range(len(args)):
- if not str(i+1) in keywords:
- keywords[str(i+1)] = args[i]
- return keywords
-
- if not attrs:
- return
- dict['0'] = attrs
- # Replace line separators with spaces so line spanning works.
- s = re.sub(r'\s', ' ', attrs)
- d = {}
- try:
- d.update(get_args(s))
- d.update(get_kwargs(s))
- for v in d.values():
- if not (isinstance(v,str) or isinstance(v,int) or isinstance(v,float) or v is None):
- raise Exception
- except Exception:
- s = s.replace('"','\\"')
- s = s.split(',')
- s = map(lambda x: '"' + x.strip() + '"', s)
- s = ','.join(s)
- try:
- d = {}
- d.update(get_args(s))
- d.update(get_kwargs(s))
- except Exception:
- return # If there's a syntax error leave with {0}=attrs.
- for k in d.keys(): # Drop any empty positional arguments.
- if d[k] == '': del d[k]
- dict.update(d)
- assert len(d) > 0
-
-def parse_named_attributes(s,attrs):
- """Update a attrs dictionary with name="value" attributes from the s string.
- Returns False if invalid syntax.
- Example:
- attrs: 'star="sun",planet="earth"'
- dict: {'planet':'earth', 'star':'sun'}
- """
- def f(**keywords): return keywords
-
- try:
- d = {}
- d = get_kwargs(s)
- attrs.update(d)
- return True
- except Exception:
- return False
-
-def parse_list(s):
- """Parse comma separated string of Python literals. Return a tuple of of
- parsed values."""
- try:
- result = tuple(parse_to_list(s))
- except Exception:
- raise EAsciiDoc,'malformed list: '+s
- return result
-
-def parse_options(options,allowed,errmsg):
- """Parse comma separated string of unquoted option names and return as a
- tuple of valid options. 'allowed' is a list of allowed option values.
- If allowed=() then all legitimate names are allowed.
- 'errmsg' is an error message prefix if an illegal option error is thrown."""
- result = []
- if options:
- for s in re.split(r'\s*,\s*',options):
- if (allowed and s not in allowed) or not is_name(s):
- raise EAsciiDoc,'%s: %s' % (errmsg,s)
- result.append(s)
- return tuple(result)
-
-def symbolize(s):
- """Drop non-symbol characters and convert to lowercase."""
- return re.sub(r'(?u)[^\w\-_]', '', s).lower()
-
-def is_name(s):
- """Return True if s is valid attribute, macro or tag name
- (starts with alpha containing alphanumeric and dashes only)."""
- return re.match(r'^'+NAME_RE+r'$',s) is not None
-
-def subs_quotes(text):
- """Quoted text is marked up and the resulting text is
- returned."""
- keys = config.quotes.keys()
- for q in keys:
- i = q.find('|')
- if i != -1 and q != '|' and q != '||':
- lq = q[:i] # Left quote.
- rq = q[i+1:] # Right quote.
- else:
- lq = rq = q
- tag = config.quotes[q]
- if not tag: continue
- # Unconstrained quotes prefix the tag name with a hash.
- if tag[0] == '#':
- tag = tag[1:]
- # Unconstrained quotes can appear anywhere.
- reo = re.compile(r'(?msu)(^|.)(\[(?P<attrlist>[^[\]]+?)\])?' \
- + r'(?:' + re.escape(lq) + r')' \
- + r'(?P<content>.+?)(?:'+re.escape(rq)+r')')
- else:
- # The text within constrained quotes must be bounded by white space.
- # Non-word (\W) characters are allowed at boundaries to accomodate
- # enveloping quotes and punctuation e.g. a='x', ('x'), 'x', ['x'].
- reo = re.compile(r'(?msu)(^|[^\w;:}])(\[(?P<attrlist>[^[\]]+?)\])?' \
- + r'(?:' + re.escape(lq) + r')' \
- + r'(?P<content>\S|\S.*?\S)(?:'+re.escape(rq)+r')(?=\W|$)')
- pos = 0
- while True:
- mo = reo.search(text,pos)
- if not mo: break
- if text[mo.start()] == '\\':
- # Delete leading backslash.
- text = text[:mo.start()] + text[mo.start()+1:]
- # Skip past start of match.
- pos = mo.start() + 1
- else:
- attrlist = {}
- parse_attributes(mo.group('attrlist'), attrlist)
- stag,etag = config.tag(tag, attrlist)
- s = mo.group(1) + stag + mo.group('content') + etag
- text = text[:mo.start()] + s + text[mo.end():]
- pos = mo.start() + len(s)
- return text
-
-def subs_tag(tag,dict={}):
- """Perform attribute substitution and split tag string returning start, end
- tag tuple (c.f. Config.tag())."""
- if not tag:
- return [None,None]
- s = subs_attrs(tag,dict)
- if not s:
- message.warning('tag \'%s\' dropped: contains undefined attribute' % tag)
- return [None,None]
- result = s.split('|')
- if len(result) == 1:
- return result+[None]
- elif len(result) == 2:
- return result
- else:
- raise EAsciiDoc,'malformed tag: %s' % tag
-
-def parse_entry(entry, dict=None, unquote=False, unique_values=False,
- allow_name_only=False, escape_delimiter=True):
- """Parse name=value entry to dictionary 'dict'. Return tuple (name,value)
- or None if illegal entry.
- If name= then value is set to ''.
- If name and allow_name_only=True then value is set to ''.
- If name! and allow_name_only=True then value is set to None.
- Leading and trailing white space is striped from 'name' and 'value'.
- 'name' can contain any printable characters.
- If the '=' delimiter character is allowed in the 'name' then
- it must be escaped with a backslash and escape_delimiter must be True.
- If 'unquote' is True leading and trailing double-quotes are stripped from
- 'name' and 'value'.
- If unique_values' is True then dictionary entries with the same value are
- removed before the parsed entry is added."""
- if escape_delimiter:
- mo = re.search(r'(?:[^\\](=))',entry)
- else:
- mo = re.search(r'(=)',entry)
- if mo: # name=value entry.
- if mo.group(1):
- name = entry[:mo.start(1)]
- if escape_delimiter:
- name = name.replace(r'\=','=') # Unescape \= in name.
- value = entry[mo.end(1):]
- elif allow_name_only and entry: # name or name! entry.
- name = entry
- if name[-1] == '!':
- name = name[:-1]
- value = None
- else:
- value = ''
- else:
- return None
- if unquote:
- name = strip_quotes(name)
- if value is not None:
- value = strip_quotes(value)
- else:
- name = name.strip()
- if value is not None:
- value = value.strip()
- if not name:
- return None
- if dict is not None:
- if unique_values:
- for k,v in dict.items():
- if v == value: del dict[k]
- dict[name] = value
- return name,value
-
-def parse_entries(entries, dict, unquote=False, unique_values=False,
- allow_name_only=False,escape_delimiter=True):
- """Parse name=value entries from from lines of text in 'entries' into
- dictionary 'dict'. Blank lines are skipped."""
- entries = config.expand_templates(entries)
- for entry in entries:
- if entry and not parse_entry(entry, dict, unquote, unique_values,
- allow_name_only, escape_delimiter):
- raise EAsciiDoc,'malformed section entry: %s' % entry
-
-def dump_section(name,dict,f=sys.stdout):
- """Write parameters in 'dict' as in configuration file section format with
- section 'name'."""
- f.write('[%s]%s' % (name,writer.newline))
- for k,v in dict.items():
- k = str(k)
- k = k.replace('=',r'\=') # Escape = in name.
- # Quote if necessary.
- if len(k) != len(k.strip()):
- k = '"'+k+'"'
- if v and len(v) != len(v.strip()):
- v = '"'+v+'"'
- if v is None:
- # Don't dump undefined attributes.
- continue
- else:
- s = k+'='+v
- if s[0] == '#':
- s = '\\' + s # Escape so not treated as comment lines.
- f.write('%s%s' % (s,writer.newline))
- f.write(writer.newline)
-
-def update_attrs(attrs,dict):
- """Update 'attrs' dictionary with parsed attributes in dictionary 'dict'."""
- for k,v in dict.items():
- if not is_name(k):
- raise EAsciiDoc,'illegal attribute name: %s' % k
- attrs[k] = v
-
-def is_attr_defined(attrs,dic):
- """
- Check if the sequence of attributes is defined in dictionary 'dic'.
- Valid 'attrs' sequence syntax:
- <attr> Return True if single attrbiute is defined.
- <attr1>,<attr2>,... Return True if one or more attributes are defined.
- <attr1>+<attr2>+... Return True if all the attributes are defined.
- """
- if OR in attrs:
- for a in attrs.split(OR):
- if dic.get(a.strip()) is not None:
- return True
- else: return False
- elif AND in attrs:
- for a in attrs.split(AND):
- if dic.get(a.strip()) is None:
- return False
- else: return True
- else:
- return dic.get(attrs.strip()) is not None
-
-def filter_lines(filter_cmd, lines, attrs={}):
- """
- Run 'lines' through the 'filter_cmd' shell command and return the result.
- The 'attrs' dictionary contains additional filter attributes.
- """
- def findfilter(name,dir,filter):
- """Find filter file 'fname' with style name 'name' in directory
- 'dir'. Return found file path or None if not found."""
- if name:
- result = os.path.join(dir,'filters',name,filter)
- if os.path.isfile(result):
- return result
- result = os.path.join(dir,'filters',filter)
- if os.path.isfile(result):
- return result
- return None
-
- # Return input lines if there's not filter.
- if not filter_cmd or not filter_cmd.strip():
- return lines
- # Perform attributes substitution on the filter command.
- s = subs_attrs(filter_cmd, attrs)
- if not s:
- message.error('undefined filter attribute in command: %s' % filter_cmd)
- return []
- filter_cmd = s.strip()
- # Parse for quoted and unquoted command and command tail.
- # Double quoted.
- mo = re.match(r'^"(?P<cmd>[^"]+)"(?P<tail>.*)$', filter_cmd)
- if not mo:
- # Single quoted.
- mo = re.match(r"^'(?P<cmd>[^']+)'(?P<tail>.*)$", filter_cmd)
- if not mo:
- # Unquoted catch all.
- mo = re.match(r'^(?P<cmd>\S+)(?P<tail>.*)$', filter_cmd)
- cmd = mo.group('cmd').strip()
- found = None
- if not os.path.dirname(cmd):
- # Filter command has no directory path so search filter directories.
- filtername = attrs.get('style')
- d = document.attributes.get('docdir')
- if d:
- found = findfilter(filtername, d, cmd)
- if not found:
- if USER_DIR:
- found = findfilter(filtername, USER_DIR, cmd)
- if not found:
- if localapp():
- found = findfilter(filtername, APP_DIR, cmd)
- else:
- found = findfilter(filtername, CONF_DIR, cmd)
- else:
- if os.path.isfile(cmd):
- found = cmd
- else:
- message.warning('filter not found: %s' % cmd)
- if found:
- filter_cmd = '"' + found + '"' + mo.group('tail')
- if found:
- if cmd.endswith('.py'):
- filter_cmd = '"%s" %s' % (document.attributes['python'],
- filter_cmd)
- elif cmd.endswith('.rb'):
- filter_cmd = 'ruby ' + filter_cmd
-
- message.verbose('filtering: ' + filter_cmd)
- if os.name == 'nt':
- # Remove redundant quoting -- this is not just
- # cosmetic, unnecessary quoting appears to cause
- # command line truncation.
- filter_cmd = re.sub(r'"([^ ]+?)"', r'\1', filter_cmd)
- try:
- p = subprocess.Popen(filter_cmd, shell=True,
- stdin=subprocess.PIPE, stdout=subprocess.PIPE)
- output = p.communicate(os.linesep.join(lines))[0]
- except Exception:
- raise EAsciiDoc,'filter error: %s: %s' % (filter_cmd, sys.exc_info()[1])
- if output:
- result = [s.rstrip() for s in output.split(os.linesep)]
- else:
- result = []
- filter_status = p.wait()
- if filter_status:
- message.warning('filter non-zero exit code: %s: returned %d' %
- (filter_cmd, filter_status))
- if lines and not result:
- message.warning('no output from filter: %s' % filter_cmd)
- return result
-
-def system(name, args, is_macro=False, attrs=None):
- """
- Evaluate a system attribute ({name:args}) or system block macro
- (name::[args]).
- If is_macro is True then we are processing a system block macro otherwise
- it's a system attribute.
- The attrs dictionary is updated by the counter and set system attributes.
- NOTE: The include1 attribute is used internally by the include1::[] macro
- and is not for public use.
- """
- if is_macro:
- syntax = '%s::[%s]' % (name,args)
- separator = '\n'
- else:
- syntax = '{%s:%s}' % (name,args)
- separator = writer.newline
- if name not in ('eval','eval3','sys','sys2','sys3','include','include1','counter','counter2','set','set2','template'):
- if is_macro:
- msg = 'illegal system macro name: %s' % name
- else:
- msg = 'illegal system attribute name: %s' % name
- message.warning(msg)
- return None
- if is_macro:
- s = subs_attrs(args)
- if s is None:
- message.warning('skipped %s: undefined attribute in: %s' % (name,args))
- return None
- args = s
- if name != 'include1':
- message.verbose('evaluating: %s' % syntax)
- if safe() and name not in ('include','include1'):
- message.unsafe(syntax)
- return None
- result = None
- if name in ('eval','eval3'):
- try:
- result = eval(args)
- if result is True:
- result = ''
- elif result is False:
- result = None
- elif result is not None:
- result = str(result)
- except Exception:
- message.warning('%s: evaluation error' % syntax)
- elif name in ('sys','sys2','sys3'):
- result = ''
- fd,tmp = tempfile.mkstemp()
- os.close(fd)
- try:
- cmd = args
- cmd = cmd + (' > "%s"' % tmp)
- if name == 'sys2':
- cmd = cmd + ' 2>&1'
- if os.name == 'nt':
- # Remove redundant quoting -- this is not just
- # cosmetic, unnecessary quoting appears to cause
- # command line truncation.
- cmd = re.sub(r'"([^ ]+?)"', r'\1', cmd)
- message.verbose('shelling: %s' % cmd)
- if os.system(cmd):
- message.warning('%s: non-zero exit status' % syntax)
- try:
- if os.path.isfile(tmp):
- f = open(tmp)
- try:
- lines = [s.rstrip() for s in f]
- finally:
- f.close()
- else:
- lines = []
- except Exception:
- raise EAsciiDoc,'%s: temp file read error' % syntax
- result = separator.join(lines)
- finally:
- if os.path.isfile(tmp):
- os.remove(tmp)
- elif name in ('counter','counter2'):
- mo = re.match(r'^(?P<attr>[^:]*?)(:(?P<seed>.*))?$', args)
- attr = mo.group('attr')
- seed = mo.group('seed')
- if seed and (not re.match(r'^\d+$', seed) and len(seed) > 1):
- message.warning('%s: illegal counter seed: %s' % (syntax,seed))
- return None
- if not is_name(attr):
- message.warning('%s: illegal attribute name' % syntax)
- return None
- value = document.attributes.get(attr)
- if value:
- if not re.match(r'^\d+$', value) and len(value) > 1:
- message.warning('%s: illegal counter value: %s'
- % (syntax,value))
- return None
- if re.match(r'^\d+$', value):
- expr = value + '+1'
- else:
- expr = 'chr(ord("%s")+1)' % value
- try:
- result = str(eval(expr))
- except Exception:
- message.warning('%s: evaluation error: %s' % (syntax, expr))
- else:
- if seed:
- result = seed
- else:
- result = '1'
- document.attributes[attr] = result
- if attrs is not None:
- attrs[attr] = result
- if name == 'counter2':
- result = ''
- elif name in ('set','set2'):
- mo = re.match(r'^(?P<attr>[^:]*?)(:(?P<value>.*))?$', args)
- attr = mo.group('attr')
- value = mo.group('value')
- if value is None:
- value = ''
- if attr.endswith('!'):
- attr = attr[:-1]
- value = None
- if not is_name(attr):
- message.warning('%s: illegal attribute name' % syntax)
- else:
- if attrs is not None:
- attrs[attr] = value
- if name != 'set2': # set2 only updates local attributes.
- document.attributes[attr] = value
- if value is None:
- result = None
- else:
- result = ''
- elif name == 'include':
- if not os.path.exists(args):
- message.warning('%s: file does not exist' % syntax)
- elif not is_safe_file(args):
- message.unsafe(syntax)
- else:
- f = open(args)
- try:
- result = [s.rstrip() for s in f]
- finally:
- f.close()
- if result:
- result = subs_attrs(result)
- result = separator.join(result)
- result = result.expandtabs(reader.tabsize)
- else:
- result = ''
- elif name == 'include1':
- result = separator.join(config.include1[args])
- elif name == 'template':
- if not args in config.sections:
- message.warning('%s: template does not exist' % syntax)
- else:
- result = []
- for line in config.sections[args]:
- line = subs_attrs(line)
- if line is not None:
- result.append(line)
- result = '\n'.join(result)
- else:
- assert False
- if result and name in ('eval3','sys3'):
- macros.passthroughs.append(result)
- result = '\x07' + str(len(macros.passthroughs)-1) + '\x07'
- return result
-
-def subs_attrs(lines, dictionary=None):
- """Substitute 'lines' of text with attributes from the global
- document.attributes dictionary and from 'dictionary' ('dictionary'
- entries take precedence). Return a tuple of the substituted lines. 'lines'
- containing undefined attributes are deleted. If 'lines' is a string then
- return a string.
-
- - Attribute references are substituted in the following order: simple,
- conditional, system.
- - Attribute references inside 'dictionary' entry values are substituted.
- """
-
- def end_brace(text,start):
- """Return index following end brace that matches brace at start in
- text."""
- assert text[start] == '{'
- n = 0
- result = start
- for c in text[start:]:
- # Skip braces that are followed by a backslash.
- if result == len(text)-1 or text[result+1] != '\\':
- if c == '{': n = n + 1
- elif c == '}': n = n - 1
- result = result + 1
- if n == 0: break
- return result
-
- if type(lines) == str:
- string_result = True
- lines = [lines]
- else:
- string_result = False
- if dictionary is None:
- attrs = document.attributes
- else:
- # Remove numbered document attributes so they don't clash with
- # attribute list positional attributes.
- attrs = {}
- for k,v in document.attributes.items():
- if not re.match(r'^\d+$', k):
- attrs[k] = v
- # Substitute attribute references inside dictionary values.
- for k,v in dictionary.items():
- if v is None:
- del dictionary[k]
- else:
- v = subs_attrs(str(v))
- if v is None:
- del dictionary[k]
- else:
- dictionary[k] = v
- attrs.update(dictionary)
- # Substitute all attributes in all lines.
- result = []
- for line in lines:
- # Make it easier for regular expressions.
- line = line.replace('\\{','{\\')
- line = line.replace('\\}','}\\')
- # Expand simple attributes ({name}).
- # Nested attributes not allowed.
- reo = re.compile(r'(?su)\{(?P<name>[^\\\W][-\w]*?)\}(?!\\)')
- pos = 0
- while True:
- mo = reo.search(line,pos)
- if not mo: break
- s = attrs.get(mo.group('name'))
- if s is None:
- pos = mo.end()
- else:
- s = str(s)
- line = line[:mo.start()] + s + line[mo.end():]
- pos = mo.start() + len(s)
- # Expand conditional attributes.
- # Single name -- higher precedence.
- reo1 = re.compile(r'(?su)\{(?P<name>[^\\\W][-\w]*?)' \
- r'(?P<op>\=|\?|!|#|%|@|\$)' \
- r'(?P<value>.*?)\}(?!\\)')
- # Multiple names (n1,n2,... or n1+n2+...) -- lower precedence.
- reo2 = re.compile(r'(?su)\{(?P<name>[^\\\W][-\w'+OR+AND+r']*?)' \
- r'(?P<op>\=|\?|!|#|%|@|\$)' \
- r'(?P<value>.*?)\}(?!\\)')
- for reo in [reo1,reo2]:
- pos = 0
- while True:
- mo = reo.search(line,pos)
- if not mo: break
- attr = mo.group()
- name = mo.group('name')
- if reo == reo2:
- if OR in name:
- sep = OR
- else:
- sep = AND
- names = [s.strip() for s in name.split(sep) if s.strip() ]
- for n in names:
- if not re.match(r'^[^\\\W][-\w]*$',n):
- message.error('illegal attribute syntax: %s' % attr)
- if sep == OR:
- # Process OR name expression: n1,n2,...
- for n in names:
- if attrs.get(n) is not None:
- lval = ''
- break
- else:
- lval = None
- else:
- # Process AND name expression: n1+n2+...
- for n in names:
- if attrs.get(n) is None:
- lval = None
- break
- else:
- lval = ''
- else:
- lval = attrs.get(name)
- op = mo.group('op')
- # mo.end() not good enough because '{x={y}}' matches '{x={y}'.
- end = end_brace(line,mo.start())
- rval = line[mo.start('value'):end-1]
- UNDEFINED = '{zzzzz}'
- if lval is None:
- if op == '=': s = rval
- elif op == '?': s = ''
- elif op == '!': s = rval
- elif op == '#': s = UNDEFINED # So the line is dropped.
- elif op == '%': s = rval
- elif op in ('@','$'):
- s = UNDEFINED # So the line is dropped.
- else:
- assert False, 'illegal attribute: %s' % attr
- else:
- if op == '=': s = lval
- elif op == '?': s = rval
- elif op == '!': s = ''
- elif op == '#': s = rval
- elif op == '%': s = UNDEFINED # So the line is dropped.
- elif op in ('@','$'):
- v = re.split(r'(?<!\\):',rval)
- if len(v) not in (2,3):
- message.error('illegal attribute syntax: %s' % attr)
- s = ''
- elif not is_re('^'+v[0]+'$'):
- message.error('illegal attribute regexp: %s' % attr)
- s = ''
- else:
- v = [s.replace('\\:',':') for s in v]
- re_mo = re.match('^'+v[0]+'$',lval)
- if op == '@':
- if re_mo:
- s = v[1] # {<name>@<re>:<v1>[:<v2>]}
- else:
- if len(v) == 3: # {<name>@<re>:<v1>:<v2>}
- s = v[2]
- else: # {<name>@<re>:<v1>}
- s = ''
- else:
- if re_mo:
- if len(v) == 2: # {<name>$<re>:<v1>}
- s = v[1]
- elif v[1] == '': # {<name>$<re>::<v2>}
- s = UNDEFINED # So the line is dropped.
- else: # {<name>$<re>:<v1>:<v2>}
- s = v[1]
- else:
- if len(v) == 2: # {<name>$<re>:<v1>}
- s = UNDEFINED # So the line is dropped.
- else: # {<name>$<re>:<v1>:<v2>}
- s = v[2]
- else:
- assert False, 'illegal attribute: %s' % attr
- s = str(s)
- line = line[:mo.start()] + s + line[end:]
- pos = mo.start() + len(s)
- # Drop line if it contains unsubstituted {name} references.
- skipped = re.search(r'(?su)\{[^\\\W][-\w]*?\}(?!\\)', line)
- if skipped:
- trace('dropped line', line)
- continue;
- # Expand system attributes (eval has precedence).
- reos = [
- re.compile(r'(?su)\{(?P<action>eval):(?P<expr>.*?)\}(?!\\)'),
- re.compile(r'(?su)\{(?P<action>[^\\\W][-\w]*?):(?P<expr>.*?)\}(?!\\)'),
- ]
- skipped = False
- for reo in reos:
- pos = 0
- while True:
- mo = reo.search(line,pos)
- if not mo: break
- expr = mo.group('expr')
- action = mo.group('action')
- expr = expr.replace('{\\','{')
- expr = expr.replace('}\\','}')
- s = system(action, expr, attrs=dictionary)
- if dictionary is not None and action in ('counter','counter2','set','set2'):
- # These actions create and update attributes.
- attrs.update(dictionary)
- if s is None:
- # Drop line if the action returns None.
- skipped = True
- break
- line = line[:mo.start()] + s + line[mo.end():]
- pos = mo.start() + len(s)
- if skipped:
- break
- if not skipped:
- # Remove backslash from escaped entries.
- line = line.replace('{\\','{')
- line = line.replace('}\\','}')
- result.append(line)
- if string_result:
- if result:
- return '\n'.join(result)
- else:
- return None
- else:
- return tuple(result)
-
-def char_encoding():
- encoding = document.attributes.get('encoding')
- if encoding:
- try:
- codecs.lookup(encoding)
- except LookupError,e:
- raise EAsciiDoc,str(e)
- return encoding
-
-def char_len(s):
- return len(char_decode(s))
-
-east_asian_widths = {'W': 2, # Wide
- 'F': 2, # Full-width (wide)
- 'Na': 1, # Narrow
- 'H': 1, # Half-width (narrow)
- 'N': 1, # Neutral (not East Asian, treated as narrow)
- 'A': 1} # Ambiguous (s/b wide in East Asian context,
- # narrow otherwise, but that doesn't work)
-"""Mapping of result codes from `unicodedata.east_asian_width()` to character
-column widths."""
-
-def column_width(s):
- text = char_decode(s)
- if isinstance(text, unicode):
- width = 0
- for c in text:
- width += east_asian_widths[unicodedata.east_asian_width(c)]
- return width
- else:
- return len(text)
-
-def char_decode(s):
- if char_encoding():
- try:
- return s.decode(char_encoding())
- except Exception:
- raise EAsciiDoc, \
- "'%s' codec can't decode \"%s\"" % (char_encoding(), s)
- else:
- return s
-
-def char_encode(s):
- if char_encoding():
- return s.encode(char_encoding())
- else:
- return s
-
-def time_str(t):
- """Convert seconds since the Epoch to formatted local time string."""
- t = time.localtime(t)
- s = time.strftime('%H:%M:%S',t)
- if time.daylight and t.tm_isdst == 1:
- result = s + ' ' + time.tzname[1]
- else:
- result = s + ' ' + time.tzname[0]
- # Attempt to convert the localtime to the output encoding.
- try:
- result = char_encode(result.decode(locale.getdefaultlocale()[1]))
- except Exception:
- pass
- return result
-
-def date_str(t):
- """Convert seconds since the Epoch to formatted local date string."""
- t = time.localtime(t)
- return time.strftime('%Y-%m-%d',t)
-
-
-class Lex:
- """Lexical analysis routines. Static methods and attributes only."""
- prev_element = None
- prev_cursor = None
- def __init__(self):
- raise AssertionError,'no class instances allowed'
- @staticmethod
- def next():
- """Returns class of next element on the input (None if EOF). The
- reader is assumed to be at the first line following a previous element,
- end of file or line one. Exits with the reader pointing to the first
- line of the next element or EOF (leading blank lines are skipped)."""
- reader.skip_blank_lines()
- if reader.eof(): return None
- # Optimization: If we've already checked for an element at this
- # position return the element.
- if Lex.prev_element and Lex.prev_cursor == reader.cursor:
- return Lex.prev_element
- if AttributeEntry.isnext():
- result = AttributeEntry
- elif AttributeList.isnext():
- result = AttributeList
- elif BlockTitle.isnext() and not tables_OLD.isnext():
- result = BlockTitle
- elif Title.isnext():
- if AttributeList.style() == 'float':
- result = FloatingTitle
- else:
- result = Title
- elif macros.isnext():
- result = macros.current
- elif lists.isnext():
- result = lists.current
- elif blocks.isnext():
- result = blocks.current
- elif tables_OLD.isnext():
- result = tables_OLD.current
- elif tables.isnext():
- result = tables.current
- else:
- if not paragraphs.isnext():
- raise EAsciiDoc,'paragraph expected'
- result = paragraphs.current
- # Optimization: Cache answer.
- Lex.prev_cursor = reader.cursor
- Lex.prev_element = result
- return result
-
- @staticmethod
- def canonical_subs(options):
- """Translate composite subs values."""
- if len(options) == 1:
- if options[0] == 'none':
- options = ()
- elif options[0] == 'normal':
- options = config.subsnormal
- elif options[0] == 'verbatim':
- options = config.subsverbatim
- return options
-
- @staticmethod
- def subs_1(s,options):
- """Perform substitution specified in 'options' (in 'options' order)."""
- if not s:
- return s
- if document.attributes.get('plaintext') is not None:
- options = ('specialcharacters',)
- result = s
- options = Lex.canonical_subs(options)
- for o in options:
- if o == 'specialcharacters':
- result = config.subs_specialchars(result)
- elif o == 'attributes':
- result = subs_attrs(result)
- elif o == 'quotes':
- result = subs_quotes(result)
- elif o == 'specialwords':
- result = config.subs_specialwords(result)
- elif o in ('replacements','replacements2','replacements3'):
- result = config.subs_replacements(result,o)
- elif o == 'macros':
- result = macros.subs(result)
- elif o == 'callouts':
- result = macros.subs(result,callouts=True)
- else:
- raise EAsciiDoc,'illegal substitution option: %s' % o
- trace(o, s, result)
- if not result:
- break
- return result
-
- @staticmethod
- def subs(lines,options):
- """Perform inline processing specified by 'options' (in 'options'
- order) on sequence of 'lines'."""
- if not lines or not options:
- return lines
- options = Lex.canonical_subs(options)
- # Join lines so quoting can span multiple lines.
- para = '\n'.join(lines)
- if 'macros' in options:
- para = macros.extract_passthroughs(para)
- for o in options:
- if o == 'attributes':
- # If we don't substitute attributes line-by-line then a single
- # undefined attribute will drop the entire paragraph.
- lines = subs_attrs(para.split('\n'))
- para = '\n'.join(lines)
- else:
- para = Lex.subs_1(para,(o,))
- if 'macros' in options:
- para = macros.restore_passthroughs(para)
- return para.splitlines()
-
- @staticmethod
- def set_margin(lines, margin=0):
- """Utility routine that sets the left margin to 'margin' space in a
- block of non-blank lines."""
- # Calculate width of block margin.
- lines = list(lines)
- width = len(lines[0])
- for s in lines:
- i = re.search(r'\S',s).start()
- if i < width: width = i
- # Strip margin width from all lines.
- for i in range(len(lines)):
- lines[i] = ' '*margin + lines[i][width:]
- return lines
-
-#---------------------------------------------------------------------------
-# Document element classes parse AsciiDoc reader input and write DocBook writer
-# output.
-#---------------------------------------------------------------------------
-class Document(object):
-
- # doctype property.
- def getdoctype(self):
- return self.attributes.get('doctype')
- def setdoctype(self,doctype):
- self.attributes['doctype'] = doctype
- doctype = property(getdoctype,setdoctype)
-
- # backend property.
- def getbackend(self):
- return self.attributes.get('backend')
- def setbackend(self,backend):
- if backend:
- backend = self.attributes.get('backend-alias-' + backend, backend)
- self.attributes['backend'] = backend
- backend = property(getbackend,setbackend)
-
- def __init__(self):
- self.infile = None # Source file name.
- self.outfile = None # Output file name.
- self.attributes = InsensitiveDict()
- self.level = 0 # 0 => front matter. 1,2,3 => sect1,2,3.
- self.has_errors = False # Set true if processing errors were flagged.
- self.has_warnings = False # Set true if warnings were flagged.
- self.safe = False # Default safe mode.
- def update_attributes(self,attrs=None):
- """
- Set implicit attributes and attributes in 'attrs'.
- """
- t = time.time()
- self.attributes['localtime'] = time_str(t)
- self.attributes['localdate'] = date_str(t)
- self.attributes['asciidoc-version'] = VERSION
- self.attributes['asciidoc-file'] = APP_FILE
- self.attributes['asciidoc-dir'] = APP_DIR
- if localapp():
- self.attributes['asciidoc-confdir'] = APP_DIR
- else:
- self.attributes['asciidoc-confdir'] = CONF_DIR
- self.attributes['user-dir'] = USER_DIR
- if config.verbose:
- self.attributes['verbose'] = ''
- # Update with configuration file attributes.
- if attrs:
- self.attributes.update(attrs)
- # Update with command-line attributes.
- self.attributes.update(config.cmd_attrs)
- # Extract miscellaneous configuration section entries from attributes.
- if attrs:
- config.load_miscellaneous(attrs)
- config.load_miscellaneous(config.cmd_attrs)
- self.attributes['newline'] = config.newline
- # File name related attributes can't be overridden.
- if self.infile is not None:
- if self.infile and os.path.exists(self.infile):
- t = os.path.getmtime(self.infile)
- elif self.infile == '<stdin>':
- t = time.time()
- else:
- t = None
- if t:
- self.attributes['doctime'] = time_str(t)
- self.attributes['docdate'] = date_str(t)
- if self.infile != '<stdin>':
- self.attributes['infile'] = self.infile
- self.attributes['indir'] = os.path.dirname(self.infile)
- self.attributes['docfile'] = self.infile
- self.attributes['docdir'] = os.path.dirname(self.infile)
- self.attributes['docname'] = os.path.splitext(
- os.path.basename(self.infile))[0]
- if self.outfile:
- if self.outfile != '<stdout>':
- self.attributes['outfile'] = self.outfile
- self.attributes['outdir'] = os.path.dirname(self.outfile)
- if self.infile == '<stdin>':
- self.attributes['docname'] = os.path.splitext(
- os.path.basename(self.outfile))[0]
- ext = os.path.splitext(self.outfile)[1][1:]
- elif config.outfilesuffix:
- ext = config.outfilesuffix[1:]
- else:
- ext = ''
- if ext:
- self.attributes['filetype'] = ext
- self.attributes['filetype-'+ext] = ''
- def load_lang(self):
- """
- Load language configuration file.
- """
- lang = self.attributes.get('lang')
- if lang is None:
- filename = 'lang-en.conf' # Default language file.
- else:
- filename = 'lang-' + lang + '.conf'
- if config.load_from_dirs(filename):
- self.attributes['lang'] = lang # Reinstate new lang attribute.
- else:
- if lang is None:
- # The default language file must exist.
- message.error('missing conf file: %s' % filename, halt=True)
- else:
- message.warning('missing language conf file: %s' % filename)
- def set_deprecated_attribute(self,old,new):
- """
- Ensures the 'old' name of an attribute that was renamed to 'new' is
- still honored.
- """
- if self.attributes.get(new) is None:
- if self.attributes.get(old) is not None:
- self.attributes[new] = self.attributes[old]
- else:
- self.attributes[old] = self.attributes[new]
- def consume_attributes_and_comments(self,comments_only=False,noblanks=False):
- """
- Returns True if one or more attributes or comments were consumed.
- If 'noblanks' is True then consumation halts if a blank line is
- encountered.
- """
- result = False
- finished = False
- while not finished:
- finished = True
- if noblanks and not reader.read_next(): return result
- if blocks.isnext() and 'skip' in blocks.current.options:
- result = True
- finished = False
- blocks.current.translate()
- if noblanks and not reader.read_next(): return result
- if macros.isnext() and macros.current.name == 'comment':
- result = True
- finished = False
- macros.current.translate()
- if not comments_only:
- if AttributeEntry.isnext():
- result = True
- finished = False
- AttributeEntry.translate()
- if AttributeList.isnext():
- result = True
- finished = False
- AttributeList.translate()
- return result
- def parse_header(self,doctype,backend):
- """
- Parses header, sets corresponding document attributes and finalizes
- document doctype and backend properties.
- Returns False if the document does not have a header.
- 'doctype' and 'backend' are the doctype and backend option values
- passed on the command-line, None if no command-line option was not
- specified.
- """
- assert self.level == 0
- # Skip comments and attribute entries that preceed the header.
- self.consume_attributes_and_comments()
- if doctype is not None:
- # Command-line overrides header.
- self.doctype = doctype
- elif self.doctype is None:
- # Was not set on command-line or in document header.
- self.doctype = DEFAULT_DOCTYPE
- # Process document header.
- has_header = (Title.isnext() and Title.level == 0
- and AttributeList.style() != 'float')
- if self.doctype == 'manpage' and not has_header:
- message.error('manpage document title is mandatory',halt=True)
- if has_header:
- Header.parse()
- # Command-line entries override header derived entries.
- self.attributes.update(config.cmd_attrs)
- # DEPRECATED: revision renamed to revnumber.
- self.set_deprecated_attribute('revision','revnumber')
- # DEPRECATED: date renamed to revdate.
- self.set_deprecated_attribute('date','revdate')
- if doctype is not None:
- # Command-line overrides header.
- self.doctype = doctype
- if backend is not None:
- # Command-line overrides header.
- self.backend = backend
- elif self.backend is None:
- # Was not set on command-line or in document header.
- self.backend = DEFAULT_BACKEND
- else:
- # Has been set in document header.
- self.backend = self.backend # Translate alias in header.
- assert self.doctype in ('article','manpage','book'), 'illegal document type'
- return has_header
- def translate(self,has_header):
- if self.doctype == 'manpage':
- # Translate mandatory NAME section.
- if Lex.next() is not Title:
- message.error('name section expected')
- else:
- Title.translate()
- if Title.level != 1:
- message.error('name section title must be at level 1')
- if not isinstance(Lex.next(),Paragraph):
- message.error('malformed name section body')
- lines = reader.read_until(r'^$')
- s = ' '.join(lines)
- mo = re.match(r'^(?P<manname>.*?)\s+-\s+(?P<manpurpose>.*)$',s)
- if not mo:
- message.error('malformed name section body')
- self.attributes['manname'] = mo.group('manname').strip()
- self.attributes['manpurpose'] = mo.group('manpurpose').strip()
- names = [s.strip() for s in self.attributes['manname'].split(',')]
- if len(names) > 9:
- message.warning('too many manpage names')
- for i,name in enumerate(names):
- self.attributes['manname%d' % (i+1)] = name
- if has_header:
- # Do postponed substitutions (backend confs have been loaded).
- self.attributes['doctitle'] = Title.dosubs(self.attributes['doctitle'])
- if config.header_footer:
- hdr = config.subs_section('header',{})
- writer.write(hdr,trace='header')
- if 'title' in self.attributes:
- del self.attributes['title']
- self.consume_attributes_and_comments()
- if self.doctype in ('article','book'):
- # Translate 'preamble' (untitled elements between header
- # and first section title).
- if Lex.next() is not Title:
- stag,etag = config.section2tags('preamble')
- writer.write(stag,trace='preamble open')
- Section.translate_body()
- writer.write(etag,trace='preamble close')
- elif self.doctype == 'manpage' and 'name' in config.sections:
- writer.write(config.subs_section('name',{}), trace='name')
- else:
- self.process_author_names()
- if config.header_footer:
- hdr = config.subs_section('header',{})
- writer.write(hdr,trace='header')
- if Lex.next() is not Title:
- Section.translate_body()
- # Process remaining sections.
- while not reader.eof():
- if Lex.next() is not Title:
- raise EAsciiDoc,'section title expected'
- Section.translate()
- Section.setlevel(0) # Write remaining unwritten section close tags.
- # Substitute document parameters and write document footer.
- if config.header_footer:
- ftr = config.subs_section('footer',{})
- writer.write(ftr,trace='footer')
- def parse_author(self,s):
- """ Return False if the author is malformed."""
- attrs = self.attributes # Alias for readability.
- s = s.strip()
- mo = re.match(r'^(?P<name1>[^<>\s]+)'
- '(\s+(?P<name2>[^<>\s]+))?'
- '(\s+(?P<name3>[^<>\s]+))?'
- '(\s+<(?P<email>\S+)>)?$',s)
- if not mo:
- # Names that don't match the formal specification.
- if s:
- attrs['firstname'] = s
- return
- firstname = mo.group('name1')
- if mo.group('name3'):
- middlename = mo.group('name2')
- lastname = mo.group('name3')
- else:
- middlename = None
- lastname = mo.group('name2')
- firstname = firstname.replace('_',' ')
- if middlename:
- middlename = middlename.replace('_',' ')
- if lastname:
- lastname = lastname.replace('_',' ')
- email = mo.group('email')
- if firstname:
- attrs['firstname'] = firstname
- if middlename:
- attrs['middlename'] = middlename
- if lastname:
- attrs['lastname'] = lastname
- if email:
- attrs['email'] = email
- return
- def process_author_names(self):
- """ Calculate any missing author related attributes."""
- attrs = self.attributes # Alias for readability.
- firstname = attrs.get('firstname','')
- middlename = attrs.get('middlename','')
- lastname = attrs.get('lastname','')
- author = attrs.get('author')
- initials = attrs.get('authorinitials')
- if author and not (firstname or middlename or lastname):
- self.parse_author(author)
- attrs['author'] = author.replace('_',' ')
- self.process_author_names()
- return
- if not author:
- author = '%s %s %s' % (firstname, middlename, lastname)
- author = author.strip()
- author = re.sub(r'\s+',' ', author)
- if not initials:
- initials = (char_decode(firstname)[:1] +
- char_decode(middlename)[:1] + char_decode(lastname)[:1])
- initials = char_encode(initials).upper()
- names = [firstname,middlename,lastname,author,initials]
- for i,v in enumerate(names):
- v = config.subs_specialchars(v)
- v = subs_attrs(v)
- names[i] = v
- firstname,middlename,lastname,author,initials = names
- if firstname:
- attrs['firstname'] = firstname
- if middlename:
- attrs['middlename'] = middlename
- if lastname:
- attrs['lastname'] = lastname
- if author:
- attrs['author'] = author
- if initials:
- attrs['authorinitials'] = initials
- if author:
- attrs['authored'] = ''
-
-
-class Header:
- """Static methods and attributes only."""
- REV_LINE_RE = r'^(\D*(?P<revnumber>.*?),)?(?P<revdate>.*?)(:\s*(?P<revremark>.*))?$'
- RCS_ID_RE = r'^\$Id: \S+ (?P<revnumber>\S+) (?P<revdate>\S+) \S+ (?P<author>\S+) (\S+ )?\$$'
- def __init__(self):
- raise AssertionError,'no class instances allowed'
- @staticmethod
- def parse():
- assert Lex.next() is Title and Title.level == 0
- attrs = document.attributes # Alias for readability.
- # Postpone title subs until backend conf files have been loaded.
- Title.translate(skipsubs=True)
- attrs['doctitle'] = Title.attributes['title']
- document.consume_attributes_and_comments(noblanks=True)
- s = reader.read_next()
- mo = None
- if s:
- # Process first header line after the title that is not a comment
- # or an attribute entry.
- s = reader.read()
- mo = re.match(Header.RCS_ID_RE,s)
- if not mo:
- document.parse_author(s)
- document.consume_attributes_and_comments(noblanks=True)
- if reader.read_next():
- # Process second header line after the title that is not a
- # comment or an attribute entry.
- s = reader.read()
- s = subs_attrs(s)
- if s:
- mo = re.match(Header.RCS_ID_RE,s)
- if not mo:
- mo = re.match(Header.REV_LINE_RE,s)
- document.consume_attributes_and_comments(noblanks=True)
- s = attrs.get('revnumber')
- if s:
- mo = re.match(Header.RCS_ID_RE,s)
- if mo:
- revnumber = mo.group('revnumber')
- if revnumber:
- attrs['revnumber'] = revnumber.strip()
- author = mo.groupdict().get('author')
- if author and 'firstname' not in attrs:
- document.parse_author(author)
- revremark = mo.groupdict().get('revremark')
- if revremark is not None:
- revremark = [revremark]
- # Revision remarks can continue on following lines.
- while reader.read_next():
- if document.consume_attributes_and_comments(noblanks=True):
- break
- revremark.append(reader.read())
- revremark = Lex.subs(revremark,['normal'])
- revremark = '\n'.join(revremark).strip()
- attrs['revremark'] = revremark
- revdate = mo.group('revdate')
- if revdate:
- attrs['revdate'] = revdate.strip()
- elif revnumber or revremark:
- # Set revision date to ensure valid DocBook revision.
- attrs['revdate'] = attrs['docdate']
- document.process_author_names()
- if document.doctype == 'manpage':
- # manpage title formatted like mantitle(manvolnum).
- mo = re.match(r'^(?P<mantitle>.*)\((?P<manvolnum>.*)\)$',
- attrs['doctitle'])
- if not mo:
- message.error('malformed manpage title')
- else:
- mantitle = mo.group('mantitle').strip()
- mantitle = subs_attrs(mantitle)
- if mantitle is None:
- message.error('undefined attribute in manpage title')
- # mantitle is lowered only if in ALL CAPS
- if mantitle == mantitle.upper():
- mantitle = mantitle.lower()
- attrs['mantitle'] = mantitle;
- attrs['manvolnum'] = mo.group('manvolnum').strip()
-
-class AttributeEntry:
- """Static methods and attributes only."""
- pattern = None
- subs = None
- name = None
- name2 = None
- value = None
- attributes = {} # Accumulates all the parsed attribute entries.
- def __init__(self):
- raise AssertionError,'no class instances allowed'
- @staticmethod
- def isnext():
- result = False # Assume not next.
- if not AttributeEntry.pattern:
- pat = document.attributes.get('attributeentry-pattern')
- if not pat:
- message.error("[attributes] missing 'attributeentry-pattern' entry")
- AttributeEntry.pattern = pat
- line = reader.read_next()
- if line:
- # Attribute entry formatted like :<name>[.<name2>]:[ <value>]
- mo = re.match(AttributeEntry.pattern,line)
- if mo:
- AttributeEntry.name = mo.group('attrname')
- AttributeEntry.name2 = mo.group('attrname2')
- AttributeEntry.value = mo.group('attrvalue') or ''
- AttributeEntry.value = AttributeEntry.value.strip()
- result = True
- return result
- @staticmethod
- def translate():
- assert Lex.next() is AttributeEntry
- attr = AttributeEntry # Alias for brevity.
- reader.read() # Discard attribute entry from reader.
- while attr.value.endswith(' +'):
- if not reader.read_next(): break
- attr.value = attr.value[:-1] + reader.read().strip()
- if attr.name2 is not None:
- # Configuration file attribute.
- if attr.name2 != '':
- # Section entry attribute.
- section = {}
- # Some sections can have name! syntax.
- if attr.name in ('attributes','miscellaneous') and attr.name2[-1] == '!':
- section[attr.name] = [attr.name2]
- else:
- section[attr.name] = ['%s=%s' % (attr.name2,attr.value)]
- config.load_sections(section)
- config.load_miscellaneous(config.conf_attrs)
- else:
- # Markup template section attribute.
- config.sections[attr.name] = [attr.value]
- else:
- # Normal attribute.
- if attr.name[-1] == '!':
- # Names like name! undefine the attribute.
- attr.name = attr.name[:-1]
- attr.value = None
- # Strip white space and illegal name chars.
- attr.name = re.sub(r'(?u)[^\w\-_]', '', attr.name).lower()
- # Don't override most command-line attributes.
- if attr.name in config.cmd_attrs \
- and attr.name not in ('trace','numbered'):
- return
- # Update document attributes with attribute value.
- if attr.value is not None:
- mo = re.match(r'^pass:(?P<attrs>.*)\[(?P<value>.*)\]$', attr.value)
- if mo:
- # Inline passthrough syntax.
- attr.subs = mo.group('attrs')
- attr.value = mo.group('value') # Passthrough.
- else:
- # Default substitution.
- # DEPRECATED: attributeentry-subs
- attr.subs = document.attributes.get('attributeentry-subs',
- 'specialcharacters,attributes')
- attr.subs = parse_options(attr.subs, SUBS_OPTIONS,
- 'illegal substitution option')
- attr.value = Lex.subs((attr.value,), attr.subs)
- attr.value = writer.newline.join(attr.value)
- document.attributes[attr.name] = attr.value
- elif attr.name in document.attributes:
- del document.attributes[attr.name]
- attr.attributes[attr.name] = attr.value
-
-class AttributeList:
- """Static methods and attributes only."""
- pattern = None
- match = None
- attrs = {}
- def __init__(self):
- raise AssertionError,'no class instances allowed'
- @staticmethod
- def initialize():
- if not 'attributelist-pattern' in document.attributes:
- message.error("[attributes] missing 'attributelist-pattern' entry")
- AttributeList.pattern = document.attributes['attributelist-pattern']
- @staticmethod
- def isnext():
- result = False # Assume not next.
- line = reader.read_next()
- if line:
- mo = re.match(AttributeList.pattern, line)
- if mo:
- AttributeList.match = mo
- result = True
- return result
- @staticmethod
- def translate():
- assert Lex.next() is AttributeList
- reader.read() # Discard attribute list from reader.
- attrs = {}
- d = AttributeList.match.groupdict()
- for k,v in d.items():
- if v is not None:
- if k == 'attrlist':
- v = subs_attrs(v)
- if v:
- parse_attributes(v, attrs)
- else:
- AttributeList.attrs[k] = v
- AttributeList.subs(attrs)
- AttributeList.attrs.update(attrs)
- @staticmethod
- def subs(attrs):
- '''Substitute single quoted attribute values normally.'''
- reo = re.compile(r"^'.*'$")
- for k,v in attrs.items():
- if reo.match(str(v)):
- attrs[k] = Lex.subs_1(v[1:-1], config.subsnormal)
- @staticmethod
- def style():
- return AttributeList.attrs.get('style') or AttributeList.attrs.get('1')
- @staticmethod
- def consume(d={}):
- """Add attribute list to the dictionary 'd' and reset the list."""
- if AttributeList.attrs:
- d.update(AttributeList.attrs)
- AttributeList.attrs = {}
- # Generate option attributes.
- if 'options' in d:
- options = parse_options(d['options'], (), 'illegal option name')
- for option in options:
- d[option+'-option'] = ''
-
-class BlockTitle:
- """Static methods and attributes only."""
- title = None
- pattern = None
- def __init__(self):
- raise AssertionError,'no class instances allowed'
- @staticmethod
- def isnext():
- result = False # Assume not next.
- line = reader.read_next()
- if line:
- mo = re.match(BlockTitle.pattern,line)
- if mo:
- BlockTitle.title = mo.group('title')
- result = True
- return result
- @staticmethod
- def translate():
- assert Lex.next() is BlockTitle
- reader.read() # Discard title from reader.
- # Perform title substitutions.
- if not Title.subs:
- Title.subs = config.subsnormal
- s = Lex.subs((BlockTitle.title,), Title.subs)
- s = writer.newline.join(s)
- if not s:
- message.warning('blank block title')
- BlockTitle.title = s
- @staticmethod
- def consume(d={}):
- """If there is a title add it to dictionary 'd' then reset title."""
- if BlockTitle.title:
- d['title'] = BlockTitle.title
- BlockTitle.title = None
-
-class Title:
- """Processes Header and Section titles. Static methods and attributes
- only."""
- # Class variables
- underlines = ('==','--','~~','^^','++') # Levels 0,1,2,3,4.
- subs = ()
- pattern = None
- level = 0
- attributes = {}
- sectname = None
- section_numbers = [0]*len(underlines)
- dump_dict = {}
- linecount = None # Number of lines in title (1 or 2).
- def __init__(self):
- raise AssertionError,'no class instances allowed'
- @staticmethod
- def translate(skipsubs=False):
- """Parse the Title.attributes and Title.level from the reader. The
- real work has already been done by parse()."""
- assert Lex.next() in (Title,FloatingTitle)
- # Discard title from reader.
- for i in range(Title.linecount):
- reader.read()
- Title.setsectname()
- if not skipsubs:
- Title.attributes['title'] = Title.dosubs(Title.attributes['title'])
- @staticmethod
- def dosubs(title):
- """
- Perform title substitutions.
- """
- if not Title.subs:
- Title.subs = config.subsnormal
- title = Lex.subs((title,), Title.subs)
- title = writer.newline.join(title)
- if not title:
- message.warning('blank section title')
- return title
- @staticmethod
- def isnext():
- lines = reader.read_ahead(2)
- return Title.parse(lines)
- @staticmethod
- def parse(lines):
- """Parse title at start of lines tuple."""
- if len(lines) == 0: return False
- if len(lines[0]) == 0: return False # Title can't be blank.
- # Check for single-line titles.
- result = False
- for level in range(len(Title.underlines)):
- k = 'sect%s' % level
- if k in Title.dump_dict:
- mo = re.match(Title.dump_dict[k], lines[0])
- if mo:
- Title.attributes = mo.groupdict()
- Title.level = level
- Title.linecount = 1
- result = True
- break
- if not result:
- # Check for double-line titles.
- if not Title.pattern: return False # Single-line titles only.
- if len(lines) < 2: return False
- title,ul = lines[:2]
- title_len = column_width(title)
- ul_len = char_len(ul)
- if ul_len < 2: return False
- # Fast elimination check.
- if ul[:2] not in Title.underlines: return False
- # Length of underline must be within +-3 of title.
- if not ((ul_len-3 < title_len < ul_len+3)
- # Next test for backward compatibility.
- or (ul_len-3 < char_len(title) < ul_len+3)):
- return False
- # Check for valid repetition of underline character pairs.
- s = ul[:2]*((ul_len+1)/2)
- if ul != s[:ul_len]: return False
- # Don't be fooled by back-to-back delimited blocks, require at
- # least one alphanumeric character in title.
- if not re.search(r'(?u)\w',title): return False
- mo = re.match(Title.pattern, title)
- if mo:
- Title.attributes = mo.groupdict()
- Title.level = list(Title.underlines).index(ul[:2])
- Title.linecount = 2
- result = True
- # Check for expected pattern match groups.
- if result:
- if not 'title' in Title.attributes:
- message.warning('[titles] entry has no <title> group')
- Title.attributes['title'] = lines[0]
- for k,v in Title.attributes.items():
- if v is None: del Title.attributes[k]
- try:
- Title.level += int(document.attributes.get('leveloffset','0'))
- except:
- pass
- Title.attributes['level'] = str(Title.level)
- return result
- @staticmethod
- def load(entries):
- """Load and validate [titles] section entries dictionary."""
- if 'underlines' in entries:
- errmsg = 'malformed [titles] underlines entry'
- try:
- underlines = parse_list(entries['underlines'])
- except Exception:
- raise EAsciiDoc,errmsg
- if len(underlines) != len(Title.underlines):
- raise EAsciiDoc,errmsg
- for s in underlines:
- if len(s) !=2:
- raise EAsciiDoc,errmsg
- Title.underlines = tuple(underlines)
- Title.dump_dict['underlines'] = entries['underlines']
- if 'subs' in entries:
- Title.subs = parse_options(entries['subs'], SUBS_OPTIONS,
- 'illegal [titles] subs entry')
- Title.dump_dict['subs'] = entries['subs']
- if 'sectiontitle' in entries:
- pat = entries['sectiontitle']
- if not pat or not is_re(pat):
- raise EAsciiDoc,'malformed [titles] sectiontitle entry'
- Title.pattern = pat
- Title.dump_dict['sectiontitle'] = pat
- if 'blocktitle' in entries:
- pat = entries['blocktitle']
- if not pat or not is_re(pat):
- raise EAsciiDoc,'malformed [titles] blocktitle entry'
- BlockTitle.pattern = pat
- Title.dump_dict['blocktitle'] = pat
- # Load single-line title patterns.
- for k in ('sect0','sect1','sect2','sect3','sect4'):
- if k in entries:
- pat = entries[k]
- if not pat or not is_re(pat):
- raise EAsciiDoc,'malformed [titles] %s entry' % k
- Title.dump_dict[k] = pat
- # TODO: Check we have either a Title.pattern or at least one
- # single-line title pattern -- can this be done here or do we need
- # check routine like the other block checkers?
- @staticmethod
- def dump():
- dump_section('titles',Title.dump_dict)
- @staticmethod
- def setsectname():
- """
- Set Title section name:
- If the first positional or 'template' attribute is set use it,
- next search for section title in [specialsections],
- if not found use default 'sect<level>' name.
- """
- sectname = AttributeList.attrs.get('1')
- if sectname and sectname != 'float':
- Title.sectname = sectname
- elif 'template' in AttributeList.attrs:
- Title.sectname = AttributeList.attrs['template']
- else:
- for pat,sect in config.specialsections.items():
- mo = re.match(pat,Title.attributes['title'])
- if mo:
- title = mo.groupdict().get('title')
- if title is not None:
- Title.attributes['title'] = title.strip()
- else:
- Title.attributes['title'] = mo.group().strip()
- Title.sectname = sect
- break
- else:
- Title.sectname = 'sect%d' % Title.level
- @staticmethod
- def getnumber(level):
- """Return next section number at section 'level' formatted like
- 1.2.3.4."""
- number = ''
- for l in range(len(Title.section_numbers)):
- n = Title.section_numbers[l]
- if l == 0:
- continue
- elif l < level:
- number = '%s%d.' % (number, n)
- elif l == level:
- number = '%s%d.' % (number, n + 1)
- Title.section_numbers[l] = n + 1
- elif l > level:
- # Reset unprocessed section levels.
- Title.section_numbers[l] = 0
- return number
-
-
-class FloatingTitle(Title):
- '''Floated titles are translated differently.'''
- @staticmethod
- def isnext():
- return Title.isnext() and AttributeList.style() == 'float'
- @staticmethod
- def translate():
- assert Lex.next() is FloatingTitle
- Title.translate()
- Section.set_id()
- AttributeList.consume(Title.attributes)
- template = 'floatingtitle'
- if template in config.sections:
- stag,etag = config.section2tags(template,Title.attributes)
- writer.write(stag,trace='floating title')
- else:
- message.warning('missing template section: [%s]' % template)
-
-
-class Section:
- """Static methods and attributes only."""
- endtags = [] # Stack of currently open section (level,endtag) tuples.
- ids = [] # List of already used ids.
- def __init__(self):
- raise AssertionError,'no class instances allowed'
- @staticmethod
- def savetag(level,etag):
- """Save section end."""
- Section.endtags.append((level,etag))
- @staticmethod
- def setlevel(level):
- """Set document level and write open section close tags up to level."""
- while Section.endtags and Section.endtags[-1][0] >= level:
- writer.write(Section.endtags.pop()[1],trace='section close')
- document.level = level
- @staticmethod
- def gen_id(title):
- """
- The normalized value of the id attribute is an NCName according to
- the 'Namespaces in XML' Recommendation:
- NCName ::= NCNameStartChar NCNameChar*
- NCNameChar ::= NameChar - ':'
- NCNameStartChar ::= Letter | '_'
- NameChar ::= Letter | Digit | '.' | '-' | '_' | ':'
- """
- # Replace non-alpha numeric characters in title with underscores and
- # convert to lower case.
- base_id = re.sub(r'(?u)\W+', '_', char_decode(title)).strip('_').lower()
- if 'ascii-ids' in document.attributes:
- # Replace non-ASCII characters with ASCII equivalents.
- import unicodedata
- base_id = unicodedata.normalize('NFKD', base_id).encode('ascii','ignore')
- base_id = char_encode(base_id)
- # Prefix the ID name with idprefix attribute or underscore if not
- # defined. Prefix ensures the ID does not clash with existing IDs.
- idprefix = document.attributes.get('idprefix','_')
- base_id = idprefix + base_id
- i = 1
- while True:
- if i == 1:
- id = base_id
- else:
- id = '%s_%d' % (base_id, i)
- if id not in Section.ids:
- Section.ids.append(id)
- return id
- else:
- id = base_id
- i += 1
- @staticmethod
- def set_id():
- if not document.attributes.get('sectids') is None \
- and 'id' not in AttributeList.attrs:
- # Generate ids for sections.
- AttributeList.attrs['id'] = Section.gen_id(Title.attributes['title'])
- @staticmethod
- def translate():
- assert Lex.next() is Title
- prev_sectname = Title.sectname
- Title.translate()
- if Title.level == 0 and document.doctype != 'book':
- message.error('only book doctypes can contain level 0 sections')
- if Title.level > document.level \
- and 'basebackend-docbook' in document.attributes \
- and prev_sectname in ('colophon','abstract', \
- 'dedication','glossary','bibliography'):
- message.error('%s section cannot contain sub-sections' % prev_sectname)
- if Title.level > document.level+1:
- # Sub-sections of multi-part book level zero Preface and Appendices
- # are meant to be out of sequence.
- if document.doctype == 'book' \
- and document.level == 0 \
- and Title.level == 2 \
- and prev_sectname in ('preface','appendix'):
- pass
- else:
- message.warning('section title out of sequence: '
- 'expected level %d, got level %d'
- % (document.level+1, Title.level))
- Section.set_id()
- Section.setlevel(Title.level)
- if 'numbered' in document.attributes:
- Title.attributes['sectnum'] = Title.getnumber(document.level)
- else:
- Title.attributes['sectnum'] = ''
- AttributeList.consume(Title.attributes)
- stag,etag = config.section2tags(Title.sectname,Title.attributes)
- Section.savetag(Title.level,etag)
- writer.write(stag,trace='section open: level %d: %s' %
- (Title.level, Title.attributes['title']))
- Section.translate_body()
- @staticmethod
- def translate_body(terminator=Title):
- isempty = True
- next = Lex.next()
- while next and next is not terminator:
- if isinstance(terminator,DelimitedBlock) and next is Title:
- message.error('section title not permitted in delimited block')
- next.translate()
- next = Lex.next()
- isempty = False
- # The section is not empty if contains a subsection.
- if next and isempty and Title.level > document.level:
- isempty = False
- # Report empty sections if invalid markup will result.
- if isempty:
- if document.backend == 'docbook' and Title.sectname != 'index':
- message.error('empty section is not valid')
-
-class AbstractBlock:
-
- blocknames = [] # Global stack of names for push_blockname() and pop_blockname().
-
- def __init__(self):
- # Configuration parameter names common to all blocks.
- self.CONF_ENTRIES = ('delimiter','options','subs','presubs','postsubs',
- 'posattrs','style','.*-style','template','filter')
- self.start = None # File reader cursor at start delimiter.
- self.defname=None # Configuration file block definition section name.
- # Configuration parameters.
- self.delimiter=None # Regular expression matching block delimiter.
- self.delimiter_reo=None # Compiled delimiter.
- self.template=None # template section entry.
- self.options=() # options entry list.
- self.presubs=None # presubs/subs entry list.
- self.postsubs=() # postsubs entry list.
- self.filter=None # filter entry.
- self.posattrs=() # posattrs entry list.
- self.style=None # Default style.
- self.styles=OrderedDict() # Each entry is a styles dictionary.
- # Before a block is processed it's attributes (from it's
- # attributes list) are merged with the block configuration parameters
- # (by self.merge_attributes()) resulting in the template substitution
- # dictionary (self.attributes) and the block's processing parameters
- # (self.parameters).
- self.attributes={}
- # The names of block parameters.
- self.PARAM_NAMES=('template','options','presubs','postsubs','filter')
- self.parameters=None
- # Leading delimiter match object.
- self.mo=None
- def short_name(self):
- """ Return the text following the first dash in the section name."""
- i = self.defname.find('-')
- if i == -1:
- return self.defname
- else:
- return self.defname[i+1:]
- def error(self, msg, cursor=None, halt=False):
- message.error('[%s] %s' % (self.defname,msg), cursor, halt)
- def is_conf_entry(self,param):
- """Return True if param matches an allowed configuration file entry
- name."""
- for s in self.CONF_ENTRIES:
- if re.match('^'+s+'$',param):
- return True
- return False
- def load(self,defname,entries):
- """Update block definition from section 'entries' dictionary."""
- self.defname = defname
- self.update_parameters(entries, self, all=True)
- def update_parameters(self, src, dst=None, all=False):
- """
- Parse processing parameters from src dictionary to dst object.
- dst defaults to self.parameters.
- If all is True then copy src entries that aren't parameter names.
- """
- dst = dst or self.parameters
- msg = '[%s] malformed entry %%s: %%s' % self.defname
- def copy(obj,k,v):
- if isinstance(obj,dict):
- obj[k] = v
- else:
- setattr(obj,k,v)
- for k,v in src.items():
- if not re.match(r'\d+',k) and not is_name(k):
- raise EAsciiDoc, msg % (k,v)
- if k == 'template':
- if not is_name(v):
- raise EAsciiDoc, msg % (k,v)
- copy(dst,k,v)
- elif k == 'filter':
- copy(dst,k,v)
- elif k == 'options':
- if isinstance(v,str):
- v = parse_options(v, (), msg % (k,v))
- # Merge with existing options.
- v = tuple(set(dst.options).union(set(v)))
- copy(dst,k,v)
- elif k in ('subs','presubs','postsubs'):
- # Subs is an alias for presubs.
- if k == 'subs': k = 'presubs'
- if isinstance(v,str):
- v = parse_options(v, SUBS_OPTIONS, msg % (k,v))
- copy(dst,k,v)
- elif k == 'delimiter':
- if v and is_re(v):
- copy(dst,k,v)
- else:
- raise EAsciiDoc, msg % (k,v)
- elif k == 'style':
- if is_name(v):
- copy(dst,k,v)
- else:
- raise EAsciiDoc, msg % (k,v)
- elif k == 'posattrs':
- v = parse_options(v, (), msg % (k,v))
- copy(dst,k,v)
- else:
- mo = re.match(r'^(?P<style>.*)-style$',k)
- if mo:
- if not v:
- raise EAsciiDoc, msg % (k,v)
- style = mo.group('style')
- if not is_name(style):
- raise EAsciiDoc, msg % (k,v)
- d = {}
- if not parse_named_attributes(v,d):
- raise EAsciiDoc, msg % (k,v)
- if 'subs' in d:
- # Subs is an alias for presubs.
- d['presubs'] = d['subs']
- del d['subs']
- self.styles[style] = d
- elif all or k in self.PARAM_NAMES:
- copy(dst,k,v) # Derived class specific entries.
- def get_param(self,name,params=None):
- """
- Return named processing parameter from params dictionary.
- If the parameter is not in params look in self.parameters.
- """
- if params and name in params:
- return params[name]
- elif name in self.parameters:
- return self.parameters[name]
- else:
- return None
- def get_subs(self,params=None):
- """
- Return (presubs,postsubs) tuple.
- """
- presubs = self.get_param('presubs',params)
- postsubs = self.get_param('postsubs',params)
- return (presubs,postsubs)
- def dump(self):
- """Write block definition to stdout."""
- write = lambda s: sys.stdout.write('%s%s' % (s,writer.newline))
- write('['+self.defname+']')
- if self.is_conf_entry('delimiter'):
- write('delimiter='+self.delimiter)
- if self.template:
- write('template='+self.template)
- if self.options:
- write('options='+','.join(self.options))
- if self.presubs:
- if self.postsubs:
- write('presubs='+','.join(self.presubs))
- else:
- write('subs='+','.join(self.presubs))
- if self.postsubs:
- write('postsubs='+','.join(self.postsubs))
- if self.filter:
- write('filter='+self.filter)
- if self.posattrs:
- write('posattrs='+','.join(self.posattrs))
- if self.style:
- write('style='+self.style)
- if self.styles:
- for style,d in self.styles.items():
- s = ''
- for k,v in d.items(): s += '%s=%r,' % (k,v)
- write('%s-style=%s' % (style,s[:-1]))
- def validate(self):
- """Validate block after the complete configuration has been loaded."""
- if self.is_conf_entry('delimiter') and not self.delimiter:
- raise EAsciiDoc,'[%s] missing delimiter' % self.defname
- if self.style:
- if not is_name(self.style):
- raise EAsciiDoc, 'illegal style name: %s' % self.style
- if not self.style in self.styles:
- if not isinstance(self,List): # Lists don't have templates.
- message.warning('[%s] \'%s\' style not in %s' % (
- self.defname,self.style,self.styles.keys()))
- # Check all styles for missing templates.
- all_styles_have_template = True
- for k,v in self.styles.items():
- t = v.get('template')
- if t and not t in config.sections:
- # Defer check if template name contains attributes.
- if not re.search(r'{.+}',t):
- message.warning('missing template section: [%s]' % t)
- if not t:
- all_styles_have_template = False
- # Check we have a valid template entry or alternatively that all the
- # styles have templates.
- if self.is_conf_entry('template') and not 'skip' in self.options:
- if self.template:
- if not self.template in config.sections:
- # Defer check if template name contains attributes.
- if not re.search(r'{.+}',self.template):
- message.warning('missing template section: [%s]'
- % self.template)
- elif not all_styles_have_template:
- if not isinstance(self,List): # Lists don't have templates.
- message.warning('missing styles templates: [%s]' % self.defname)
- def isnext(self):
- """Check if this block is next in document reader."""
- result = False
- reader.skip_blank_lines()
- if reader.read_next():
- if not self.delimiter_reo:
- # Cache compiled delimiter optimization.
- self.delimiter_reo = re.compile(self.delimiter)
- mo = self.delimiter_reo.match(reader.read_next())
- if mo:
- self.mo = mo
- result = True
- return result
- def translate(self):
- """Translate block from document reader."""
- if not self.presubs:
- self.presubs = config.subsnormal
- if reader.cursor:
- self.start = reader.cursor[:]
- def push_blockname(self, blockname=None):
- '''
- On block entry set the 'blockname' attribute.
- Only applies to delimited blocks, lists and tables.
- '''
- if blockname is None:
- blockname = self.attributes.get('style', self.short_name()).lower()
- trace('push blockname', blockname)
- self.blocknames.append(blockname)
- document.attributes['blockname'] = blockname
- def pop_blockname(self):
- '''
- On block exits restore previous (parent) 'blockname' attribute or
- undefine it if we're no longer inside a block.
- '''
- assert len(self.blocknames) > 0
- blockname = self.blocknames.pop()
- trace('pop blockname', blockname)
- if len(self.blocknames) == 0:
- document.attributes['blockname'] = None
- else:
- document.attributes['blockname'] = self.blocknames[-1]
- def merge_attributes(self,attrs,params=[]):
- """
- Use the current block's attribute list (attrs dictionary) to build a
- dictionary of block processing parameters (self.parameters) and tag
- substitution attributes (self.attributes).
-
- 1. Copy the default parameters (self.*) to self.parameters.
- self.parameters are used internally to render the current block.
- Optional params array of additional parameters.
-
- 2. Copy attrs to self.attributes. self.attributes are used for template
- and tag substitution in the current block.
-
- 3. If a style attribute was specified update self.parameters with the
- corresponding style parameters; if there are any style parameters
- remaining add them to self.attributes (existing attribute list entries
- take precedence).
-
- 4. Set named positional attributes in self.attributes if self.posattrs
- was specified.
-
- 5. Finally self.parameters is updated with any corresponding parameters
- specified in attrs.
-
- """
-
- def check_array_parameter(param):
- # Check the parameter is a sequence type.
- if not is_array(self.parameters[param]):
- message.error('malformed %s parameter: %s' %
- (param, self.parameters[param]))
- # Revert to default value.
- self.parameters[param] = getattr(self,param)
-
- params = list(self.PARAM_NAMES) + params
- self.attributes = {}
- if self.style:
- # If a default style is defined make it available in the template.
- self.attributes['style'] = self.style
- self.attributes.update(attrs)
- # Calculate dynamic block parameters.
- # Start with configuration file defaults.
- self.parameters = AttrDict()
- for name in params:
- self.parameters[name] = getattr(self,name)
- # Load the selected style attributes.
- posattrs = self.posattrs
- if posattrs and posattrs[0] == 'style':
- # Positional attribute style has highest precedence.
- style = self.attributes.get('1')
- else:
- style = None
- if not style:
- # Use explicit style attribute, fall back to default style.
- style = self.attributes.get('style',self.style)
- if style:
- if not is_name(style):
- message.error('illegal style name: %s' % style)
- style = self.style
- # Lists have implicit styles and do their own style checks.
- elif style not in self.styles and not isinstance(self,List):
- message.warning('missing style: [%s]: %s' % (self.defname,style))
- style = self.style
- if style in self.styles:
- self.attributes['style'] = style
- for k,v in self.styles[style].items():
- if k == 'posattrs':
- posattrs = v
- elif k in params:
- self.parameters[k] = v
- elif not k in self.attributes:
- # Style attributes don't take precedence over explicit.
- self.attributes[k] = v
- # Set named positional attributes.
- for i,v in enumerate(posattrs):
- if str(i+1) in self.attributes:
- self.attributes[v] = self.attributes[str(i+1)]
- # Override config and style attributes with attribute list attributes.
- self.update_parameters(attrs)
- check_array_parameter('options')
- check_array_parameter('presubs')
- check_array_parameter('postsubs')
-
-class AbstractBlocks:
- """List of block definitions."""
- PREFIX = '' # Conf file section name prefix set in derived classes.
- BLOCK_TYPE = None # Block type set in derived classes.
- def __init__(self):
- self.current=None
- self.blocks = [] # List of Block objects.
- self.default = None # Default Block.
- self.delimiters = None # Combined delimiters regular expression.
- def load(self,sections):
- """Load block definition from 'sections' dictionary."""
- for k in sections.keys():
- if re.match(r'^'+ self.PREFIX + r'.+$',k):
- d = {}
- parse_entries(sections.get(k,()),d)
- for b in self.blocks:
- if b.defname == k:
- break
- else:
- b = self.BLOCK_TYPE()
- self.blocks.append(b)
- try:
- b.load(k,d)
- except EAsciiDoc,e:
- raise EAsciiDoc,'[%s] %s' % (k,str(e))
- def dump(self):
- for b in self.blocks:
- b.dump()
- def isnext(self):
- for b in self.blocks:
- if b.isnext():
- self.current = b
- return True;
- return False
- def validate(self):
- """Validate the block definitions."""
- # Validate delimiters and build combined lists delimiter pattern.
- delimiters = []
- for b in self.blocks:
- assert b.__class__ is self.BLOCK_TYPE
- b.validate()
- if b.delimiter:
- delimiters.append(b.delimiter)
- self.delimiters = re_join(delimiters)
-
-class Paragraph(AbstractBlock):
- def __init__(self):
- AbstractBlock.__init__(self)
- self.text=None # Text in first line of paragraph.
- def load(self,name,entries):
- AbstractBlock.load(self,name,entries)
- def dump(self):
- AbstractBlock.dump(self)
- write = lambda s: sys.stdout.write('%s%s' % (s,writer.newline))
- write('')
- def isnext(self):
- result = AbstractBlock.isnext(self)
- if result:
- self.text = self.mo.groupdict().get('text')
- return result
- def translate(self):
- AbstractBlock.translate(self)
- attrs = self.mo.groupdict().copy()
- if 'text' in attrs: del attrs['text']
- BlockTitle.consume(attrs)
- AttributeList.consume(attrs)
- self.merge_attributes(attrs)
- reader.read() # Discard (already parsed item first line).
- body = reader.read_until(paragraphs.terminators)
- if 'skip' in self.parameters.options:
- return
- body = [self.text] + list(body)
- presubs = self.parameters.presubs
- postsubs = self.parameters.postsubs
- if document.attributes.get('plaintext') is None:
- body = Lex.set_margin(body) # Move body to left margin.
- body = Lex.subs(body,presubs)
- template = self.parameters.template
- template = subs_attrs(template,attrs)
- stag = config.section2tags(template, self.attributes,skipend=True)[0]
- if self.parameters.filter:
- body = filter_lines(self.parameters.filter,body,self.attributes)
- body = Lex.subs(body,postsubs)
- etag = config.section2tags(template, self.attributes,skipstart=True)[1]
- # Write start tag, content, end tag.
- writer.write(dovetail_tags(stag,body,etag),trace='paragraph')
-
-class Paragraphs(AbstractBlocks):
- """List of paragraph definitions."""
- BLOCK_TYPE = Paragraph
- PREFIX = 'paradef-'
- def __init__(self):
- AbstractBlocks.__init__(self)
- self.terminators=None # List of compiled re's.
- def initialize(self):
- self.terminators = [
- re.compile(r'^\+$|^$'),
- re.compile(AttributeList.pattern),
- re.compile(blocks.delimiters),
- re.compile(tables.delimiters),
- re.compile(tables_OLD.delimiters),
- ]
- def load(self,sections):
- AbstractBlocks.load(self,sections)
- def validate(self):
- AbstractBlocks.validate(self)
- # Check we have a default paragraph definition, put it last in list.
- for b in self.blocks:
- if b.defname == 'paradef-default':
- self.blocks.append(b)
- self.default = b
- self.blocks.remove(b)
- break
- else:
- raise EAsciiDoc,'missing section: [paradef-default]'
-
-class List(AbstractBlock):
- NUMBER_STYLES= ('arabic','loweralpha','upperalpha','lowerroman',
- 'upperroman')
- def __init__(self):
- AbstractBlock.__init__(self)
- self.CONF_ENTRIES += ('type','tags')
- self.PARAM_NAMES += ('tags',)
- # listdef conf file parameters.
- self.type=None
- self.tags=None # Name of listtags-<tags> conf section.
- # Calculated parameters.
- self.tag=None # Current tags AttrDict.
- self.label=None # List item label (labeled lists).
- self.text=None # Text in first line of list item.
- self.index=None # Matched delimiter 'index' group (numbered lists).
- self.type=None # List type ('numbered','bulleted','labeled').
- self.ordinal=None # Current list item ordinal number (1..)
- self.number_style=None # Current numbered list style ('arabic'..)
- def load(self,name,entries):
- AbstractBlock.load(self,name,entries)
- def dump(self):
- AbstractBlock.dump(self)
- write = lambda s: sys.stdout.write('%s%s' % (s,writer.newline))
- write('type='+self.type)
- write('tags='+self.tags)
- write('')
- def validate(self):
- AbstractBlock.validate(self)
- tags = [self.tags]
- tags += [s['tags'] for s in self.styles.values() if 'tags' in s]
- for t in tags:
- if t not in lists.tags:
- self.error('missing section: [listtags-%s]' % t,halt=True)
- def isnext(self):
- result = AbstractBlock.isnext(self)
- if result:
- self.label = self.mo.groupdict().get('label')
- self.text = self.mo.groupdict().get('text')
- self.index = self.mo.groupdict().get('index')
- return result
- def translate_entry(self):
- assert self.type == 'labeled'
- entrytag = subs_tag(self.tag.entry, self.attributes)
- labeltag = subs_tag(self.tag.label, self.attributes)
- writer.write(entrytag[0],trace='list entry open')
- writer.write(labeltag[0],trace='list label open')
- # Write labels.
- while Lex.next() is self:
- reader.read() # Discard (already parsed item first line).
- writer.write_tag(self.tag.term, [self.label],
- self.presubs, self.attributes,trace='list term')
- if self.text: break
- writer.write(labeltag[1],trace='list label close')
- # Write item text.
- self.translate_item()
- writer.write(entrytag[1],trace='list entry close')
- def translate_item(self):
- if self.type == 'callout':
- self.attributes['coids'] = calloutmap.calloutids(self.ordinal)
- itemtag = subs_tag(self.tag.item, self.attributes)
- writer.write(itemtag[0],trace='list item open')
- # Write ItemText.
- text = reader.read_until(lists.terminators)
- if self.text:
- text = [self.text] + list(text)
- if text:
- writer.write_tag(self.tag.text, text, self.presubs, self.attributes,trace='list text')
- # Process explicit and implicit list item continuations.
- while True:
- continuation = reader.read_next() == '+'
- if continuation: reader.read() # Discard continuation line.
- while Lex.next() in (BlockTitle,AttributeList):
- # Consume continued element title and attributes.
- Lex.next().translate()
- if not continuation and BlockTitle.title:
- # Titled elements terminate the list.
- break
- next = Lex.next()
- if next in lists.open:
- break
- elif isinstance(next,List):
- next.translate()
- elif isinstance(next,Paragraph) and 'listelement' in next.options:
- next.translate()
- elif continuation:
- # This is where continued elements are processed.
- if next is Title:
- message.error('section title not allowed in list item',halt=True)
- next.translate()
- else:
- break
- writer.write(itemtag[1],trace='list item close')
-
- @staticmethod
- def calc_style(index):
- """Return the numbered list style ('arabic'...) of the list item index.
- Return None if unrecognized style."""
- if re.match(r'^\d+[\.>]$', index):
- style = 'arabic'
- elif re.match(r'^[ivx]+\)$', index):
- style = 'lowerroman'
- elif re.match(r'^[IVX]+\)$', index):
- style = 'upperroman'
- elif re.match(r'^[a-z]\.$', index):
- style = 'loweralpha'
- elif re.match(r'^[A-Z]\.$', index):
- style = 'upperalpha'
- else:
- assert False
- return style
-
- @staticmethod
- def calc_index(index,style):
- """Return the ordinal number of (1...) of the list item index
- for the given list style."""
- def roman_to_int(roman):
- roman = roman.lower()
- digits = {'i':1,'v':5,'x':10}
- result = 0
- for i in range(len(roman)):
- digit = digits[roman[i]]
- # If next digit is larger this digit is negative.
- if i+1 < len(roman) and digits[roman[i+1]] > digit:
- result -= digit
- else:
- result += digit
- return result
- index = index[:-1]
- if style == 'arabic':
- ordinal = int(index)
- elif style == 'lowerroman':
- ordinal = roman_to_int(index)
- elif style == 'upperroman':
- ordinal = roman_to_int(index)
- elif style == 'loweralpha':
- ordinal = ord(index) - ord('a') + 1
- elif style == 'upperalpha':
- ordinal = ord(index) - ord('A') + 1
- else:
- assert False
- return ordinal
-
- def check_index(self):
- """Check calculated self.ordinal (1,2,...) against the item number
- in the document (self.index) and check the number style is the same as
- the first item (self.number_style)."""
- assert self.type in ('numbered','callout')
- if self.index:
- style = self.calc_style(self.index)
- if style != self.number_style:
- message.warning('list item style: expected %s got %s' %
- (self.number_style,style), offset=1)
- ordinal = self.calc_index(self.index,style)
- if ordinal != self.ordinal:
- message.warning('list item index: expected %s got %s' %
- (self.ordinal,ordinal), offset=1)
-
- def check_tags(self):
- """ Check that all necessary tags are present. """
- tags = set(Lists.TAGS)
- if self.type != 'labeled':
- tags = tags.difference(['entry','label','term'])
- missing = tags.difference(self.tag.keys())
- if missing:
- self.error('missing tag(s): %s' % ','.join(missing), halt=True)
- def translate(self):
- AbstractBlock.translate(self)
- if self.short_name() in ('bibliography','glossary','qanda'):
- message.deprecated('old %s list syntax' % self.short_name())
- lists.open.append(self)
- attrs = self.mo.groupdict().copy()
- for k in ('label','text','index'):
- if k in attrs: del attrs[k]
- if self.index:
- # Set the numbering style from first list item.
- attrs['style'] = self.calc_style(self.index)
- BlockTitle.consume(attrs)
- AttributeList.consume(attrs)
- self.merge_attributes(attrs,['tags'])
- self.push_blockname()
- if self.type in ('numbered','callout'):
- self.number_style = self.attributes.get('style')
- if self.number_style not in self.NUMBER_STYLES:
- message.error('illegal numbered list style: %s' % self.number_style)
- # Fall back to default style.
- self.attributes['style'] = self.number_style = self.style
- self.tag = lists.tags[self.parameters.tags]
- self.check_tags()
- if 'width' in self.attributes:
- # Set horizontal list 'labelwidth' and 'itemwidth' attributes.
- v = str(self.attributes['width'])
- mo = re.match(r'^(\d{1,2})%?$',v)
- if mo:
- labelwidth = int(mo.group(1))
- self.attributes['labelwidth'] = str(labelwidth)
- self.attributes['itemwidth'] = str(100-labelwidth)
- else:
- self.error('illegal attribute value: width="%s"' % v)
- stag,etag = subs_tag(self.tag.list, self.attributes)
- if stag:
- writer.write(stag,trace='list open')
- self.ordinal = 0
- # Process list till list syntax changes or there is a new title.
- while Lex.next() is self and not BlockTitle.title:
- self.ordinal += 1
- document.attributes['listindex'] = str(self.ordinal)
- if self.type in ('numbered','callout'):
- self.check_index()
- if self.type in ('bulleted','numbered','callout'):
- reader.read() # Discard (already parsed item first line).
- self.translate_item()
- elif self.type == 'labeled':
- self.translate_entry()
- else:
- raise AssertionError,'illegal [%s] list type' % self.defname
- if etag:
- writer.write(etag,trace='list close')
- if self.type == 'callout':
- calloutmap.validate(self.ordinal)
- calloutmap.listclose()
- lists.open.pop()
- if len(lists.open):
- document.attributes['listindex'] = str(lists.open[-1].ordinal)
- self.pop_blockname()
-
-class Lists(AbstractBlocks):
- """List of List objects."""
- BLOCK_TYPE = List
- PREFIX = 'listdef-'
- TYPES = ('bulleted','numbered','labeled','callout')
- TAGS = ('list', 'entry','item','text', 'label','term')
- def __init__(self):
- AbstractBlocks.__init__(self)
- self.open = [] # A stack of the current and parent lists.
- self.tags={} # List tags dictionary. Each entry is a tags AttrDict.
- self.terminators=None # List of compiled re's.
- def initialize(self):
- self.terminators = [
- re.compile(r'^\+$|^$'),
- re.compile(AttributeList.pattern),
- re.compile(lists.delimiters),
- re.compile(blocks.delimiters),
- re.compile(tables.delimiters),
- re.compile(tables_OLD.delimiters),
- ]
- def load(self,sections):
- AbstractBlocks.load(self,sections)
- self.load_tags(sections)
- def load_tags(self,sections):
- """
- Load listtags-* conf file sections to self.tags.
- """
- for section in sections.keys():
- mo = re.match(r'^listtags-(?P<name>\w+)$',section)
- if mo:
- name = mo.group('name')
- if name in self.tags:
- d = self.tags[name]
- else:
- d = AttrDict()
- parse_entries(sections.get(section,()),d)
- for k in d.keys():
- if k not in self.TAGS:
- message.warning('[%s] contains illegal list tag: %s' %
- (section,k))
- self.tags[name] = d
- def validate(self):
- AbstractBlocks.validate(self)
- for b in self.blocks:
- # Check list has valid type.
- if not b.type in Lists.TYPES:
- raise EAsciiDoc,'[%s] illegal type' % b.defname
- b.validate()
- def dump(self):
- AbstractBlocks.dump(self)
- for k,v in self.tags.items():
- dump_section('listtags-'+k, v)
-
-
-class DelimitedBlock(AbstractBlock):
- def __init__(self):
- AbstractBlock.__init__(self)
- def load(self,name,entries):
- AbstractBlock.load(self,name,entries)
- def dump(self):
- AbstractBlock.dump(self)
- write = lambda s: sys.stdout.write('%s%s' % (s,writer.newline))
- write('')
- def isnext(self):
- return AbstractBlock.isnext(self)
- def translate(self):
- AbstractBlock.translate(self)
- reader.read() # Discard delimiter.
- self.merge_attributes(AttributeList.attrs)
- if not 'skip' in self.parameters.options:
- BlockTitle.consume(self.attributes)
- AttributeList.consume()
- self.push_blockname()
- options = self.parameters.options
- if 'skip' in options:
- reader.read_until(self.delimiter,same_file=True)
- elif safe() and self.defname == 'blockdef-backend':
- message.unsafe('Backend Block')
- reader.read_until(self.delimiter,same_file=True)
- else:
- template = self.parameters.template
- template = subs_attrs(template,self.attributes)
- name = self.short_name()+' block'
- if 'sectionbody' in options:
- # The body is treated like a section body.
- stag,etag = config.section2tags(template,self.attributes)
- writer.write(stag,trace=name+' open')
- Section.translate_body(self)
- writer.write(etag,trace=name+' close')
- else:
- stag = config.section2tags(template,self.attributes,skipend=True)[0]
- body = reader.read_until(self.delimiter,same_file=True)
- presubs = self.parameters.presubs
- postsubs = self.parameters.postsubs
- body = Lex.subs(body,presubs)
- if self.parameters.filter:
- body = filter_lines(self.parameters.filter,body,self.attributes)
- body = Lex.subs(body,postsubs)
- # Write start tag, content, end tag.
- etag = config.section2tags(template,self.attributes,skipstart=True)[1]
- writer.write(dovetail_tags(stag,body,etag),trace=name)
- trace(self.short_name()+' block close',etag)
- if reader.eof():
- self.error('missing closing delimiter',self.start)
- else:
- delimiter = reader.read() # Discard delimiter line.
- assert re.match(self.delimiter,delimiter)
- self.pop_blockname()
-
-class DelimitedBlocks(AbstractBlocks):
- """List of delimited blocks."""
- BLOCK_TYPE = DelimitedBlock
- PREFIX = 'blockdef-'
- def __init__(self):
- AbstractBlocks.__init__(self)
- def load(self,sections):
- """Update blocks defined in 'sections' dictionary."""
- AbstractBlocks.load(self,sections)
- def validate(self):
- AbstractBlocks.validate(self)
-
-class Column:
- """Table column."""
- def __init__(self, width=None, align_spec=None, style=None):
- self.width = width or '1'
- self.halign, self.valign = Table.parse_align_spec(align_spec)
- self.style = style # Style name or None.
- # Calculated attribute values.
- self.abswidth = None # 1.. (page units).
- self.pcwidth = None # 1..99 (percentage).
-
-class Cell:
- def __init__(self, data, span_spec=None, align_spec=None, style=None):
- self.data = data
- self.span, self.vspan = Table.parse_span_spec(span_spec)
- self.halign, self.valign = Table.parse_align_spec(align_spec)
- self.style = style
- self.reserved = False
- def __repr__(self):
- return '<Cell: %d.%d %s.%s %s "%s">' % (
- self.span, self.vspan,
- self.halign, self.valign,
- self.style or '',
- self.data)
- def clone_reserve(self):
- """Return a clone of self to reserve vertically spanned cell."""
- result = copy.copy(self)
- result.vspan = 1
- result.reserved = True
- return result
-
-class Table(AbstractBlock):
- ALIGN = {'<':'left', '>':'right', '^':'center'}
- VALIGN = {'<':'top', '>':'bottom', '^':'middle'}
- FORMATS = ('psv','csv','dsv')
- SEPARATORS = dict(
- csv=',',
- dsv=r':|\n',
- # The count and align group matches are not exact.
- psv=r'((?<!\S)((?P<span>[\d.]+)(?P<op>[*+]))?(?P<align>[<\^>.]{,3})?(?P<style>[a-z])?)?\|'
- )
- def __init__(self):
- AbstractBlock.__init__(self)
- self.CONF_ENTRIES += ('format','tags','separator')
- # tabledef conf file parameters.
- self.format='psv'
- self.separator=None
- self.tags=None # Name of tabletags-<tags> conf section.
- # Calculated parameters.
- self.abswidth=None # 1.. (page units).
- self.pcwidth = None # 1..99 (percentage).
- self.rows=[] # Parsed rows, each row is a list of Cells.
- self.columns=[] # List of Columns.
- @staticmethod
- def parse_align_spec(align_spec):
- """
- Parse AsciiDoc cell alignment specifier and return 2-tuple with
- horizonatal and vertical alignment names. Unspecified alignments
- set to None.
- """
- result = (None, None)
- if align_spec:
- mo = re.match(r'^([<\^>])?(\.([<\^>]))?$', align_spec)
- if mo:
- result = (Table.ALIGN.get(mo.group(1)),
- Table.VALIGN.get(mo.group(3)))
- return result
- @staticmethod
- def parse_span_spec(span_spec):
- """
- Parse AsciiDoc cell span specifier and return 2-tuple with horizonatal
- and vertical span counts. Set default values (1,1) if not
- specified.
- """
- result = (None, None)
- if span_spec:
- mo = re.match(r'^(\d+)?(\.(\d+))?$', span_spec)
- if mo:
- result = (mo.group(1) and int(mo.group(1)),
- mo.group(3) and int(mo.group(3)))
- return (result[0] or 1, result[1] or 1)
- def load(self,name,entries):
- AbstractBlock.load(self,name,entries)
- def dump(self):
- AbstractBlock.dump(self)
- write = lambda s: sys.stdout.write('%s%s' % (s,writer.newline))
- write('format='+self.format)
- write('')
- def validate(self):
- AbstractBlock.validate(self)
- if self.format not in Table.FORMATS:
- self.error('illegal format=%s' % self.format,halt=True)
- self.tags = self.tags or 'default'
- tags = [self.tags]
- tags += [s['tags'] for s in self.styles.values() if 'tags' in s]
- for t in tags:
- if t not in tables.tags:
- self.error('missing section: [tabletags-%s]' % t,halt=True)
- if self.separator:
- # Evaluate escape characters.
- self.separator = literal_eval('"'+self.separator+'"')
- #TODO: Move to class Tables
- # Check global table parameters.
- elif config.pagewidth is None:
- self.error('missing [miscellaneous] entry: pagewidth')
- elif config.pageunits is None:
- self.error('missing [miscellaneous] entry: pageunits')
- def validate_attributes(self):
- """Validate and parse table attributes."""
- # Set defaults.
- format = self.format
- tags = self.tags
- separator = self.separator
- abswidth = float(config.pagewidth)
- pcwidth = 100.0
- for k,v in self.attributes.items():
- if k == 'format':
- if v not in self.FORMATS:
- self.error('illegal %s=%s' % (k,v))
- else:
- format = v
- elif k == 'tags':
- if v not in tables.tags:
- self.error('illegal %s=%s' % (k,v))
- else:
- tags = v
- elif k == 'separator':
- separator = v
- elif k == 'width':
- if not re.match(r'^\d{1,3}%$',v) or int(v[:-1]) > 100:
- self.error('illegal %s=%s' % (k,v))
- else:
- abswidth = float(v[:-1])/100 * config.pagewidth
- pcwidth = float(v[:-1])
- # Calculate separator if it has not been specified.
- if not separator:
- separator = Table.SEPARATORS[format]
- if format == 'csv':
- if len(separator) > 1:
- self.error('illegal csv separator=%s' % separator)
- separator = ','
- else:
- if not is_re(separator):
- self.error('illegal regular expression: separator=%s' %
- separator)
- self.parameters.format = format
- self.parameters.tags = tags
- self.parameters.separator = separator
- self.abswidth = abswidth
- self.pcwidth = pcwidth
- def get_tags(self,params):
- tags = self.get_param('tags',params)
- assert(tags and tags in tables.tags)
- return tables.tags[tags]
- def get_style(self,prefix):
- """
- Return the style dictionary whose name starts with 'prefix'.
- """
- if prefix is None:
- return None
- names = self.styles.keys()
- names.sort()
- for name in names:
- if name.startswith(prefix):
- return self.styles[name]
- else:
- self.error('missing style: %s*' % prefix)
- return None
- def parse_cols(self, cols, halign, valign):
- """
- Build list of column objects from table 'cols', 'halign' and 'valign'
- attributes.
- """
- # [<multiplier>*][<align>][<width>][<style>]
- COLS_RE1 = r'^((?P<count>\d+)\*)?(?P<align>[<\^>.]{,3})?(?P<width>\d+%?)?(?P<style>[a-z]\w*)?$'
- # [<multiplier>*][<width>][<align>][<style>]
- COLS_RE2 = r'^((?P<count>\d+)\*)?(?P<width>\d+%?)?(?P<align>[<\^>.]{,3})?(?P<style>[a-z]\w*)?$'
- reo1 = re.compile(COLS_RE1)
- reo2 = re.compile(COLS_RE2)
- cols = str(cols)
- if re.match(r'^\d+$',cols):
- for i in range(int(cols)):
- self.columns.append(Column())
- else:
- for col in re.split(r'\s*,\s*',cols):
- mo = reo1.match(col)
- if not mo:
- mo = reo2.match(col)
- if mo:
- count = int(mo.groupdict().get('count') or 1)
- for i in range(count):
- self.columns.append(
- Column(mo.group('width'), mo.group('align'),
- self.get_style(mo.group('style')))
- )
- else:
- self.error('illegal column spec: %s' % col,self.start)
- # Set column (and indirectly cell) default alignments.
- for col in self.columns:
- col.halign = col.halign or halign or document.attributes.get('halign') or 'left'
- col.valign = col.valign or valign or document.attributes.get('valign') or 'top'
- # Validate widths and calculate missing widths.
- n = 0; percents = 0; props = 0
- for col in self.columns:
- if col.width:
- if col.width[-1] == '%': percents += int(col.width[:-1])
- else: props += int(col.width)
- n += 1
- if percents > 0 and props > 0:
- self.error('mixed percent and proportional widths: %s'
- % cols,self.start)
- pcunits = percents > 0
- # Fill in missing widths.
- if n < len(self.columns) and percents < 100:
- if pcunits:
- width = float(100 - percents)/float(len(self.columns) - n)
- else:
- width = 1
- for col in self.columns:
- if not col.width:
- if pcunits:
- col.width = str(int(width))+'%'
- percents += width
- else:
- col.width = str(width)
- props += width
- # Calculate column alignment and absolute and percent width values.
- percents = 0
- for col in self.columns:
- if pcunits:
- col.pcwidth = float(col.width[:-1])
- else:
- col.pcwidth = (float(col.width)/props)*100
- col.abswidth = self.abswidth * (col.pcwidth/100)
- if config.pageunits in ('cm','mm','in','em'):
- col.abswidth = '%.2f' % round(col.abswidth,2)
- else:
- col.abswidth = '%d' % round(col.abswidth)
- percents += col.pcwidth
- col.pcwidth = int(col.pcwidth)
- if round(percents) > 100:
- self.error('total width exceeds 100%%: %s' % cols,self.start)
- elif round(percents) < 100:
- self.error('total width less than 100%%: %s' % cols,self.start)
- def build_colspecs(self):
- """
- Generate column related substitution attributes.
- """
- cols = []
- i = 1
- for col in self.columns:
- colspec = self.get_tags(col.style).colspec
- if colspec:
- self.attributes['halign'] = col.halign
- self.attributes['valign'] = col.valign
- self.attributes['colabswidth'] = col.abswidth
- self.attributes['colpcwidth'] = col.pcwidth
- self.attributes['colnumber'] = str(i)
- s = subs_attrs(colspec, self.attributes)
- if not s:
- message.warning('colspec dropped: contains undefined attribute')
- else:
- cols.append(s)
- i += 1
- if cols:
- self.attributes['colspecs'] = writer.newline.join(cols)
- def parse_rows(self, text):
- """
- Parse the table source text into self.rows (a list of rows, each row
- is a list of Cells.
- """
- reserved = {} # Reserved cells generated by rowspans.
- if self.parameters.format in ('psv','dsv'):
- colcount = len(self.columns)
- parsed_cells = self.parse_psv_dsv(text)
- ri = 0 # Current row index 0..
- ci = 0 # Column counter 0..colcount
- row = []
- i = 0
- while True:
- resv = reserved.get(ri) and reserved[ri].get(ci)
- if resv:
- # We have a cell generated by a previous row span so
- # process it before continuing with the current parsed
- # cell.
- cell = resv
- else:
- if i >= len(parsed_cells):
- break # No more parsed or reserved cells.
- cell = parsed_cells[i]
- i += 1
- if cell.vspan > 1:
- # Generate ensuing reserved cells spanned vertically by
- # the current cell.
- for j in range(1, cell.vspan):
- if not ri+j in reserved:
- reserved[ri+j] = {}
- reserved[ri+j][ci] = cell.clone_reserve()
- ci += cell.span
- if ci <= colcount:
- row.append(cell)
- if ci >= colcount:
- self.rows.append(row)
- ri += 1
- row = []
- ci = 0
- elif self.parameters.format == 'csv':
- self.rows = self.parse_csv(text)
- else:
- assert True,'illegal table format'
- # Check for empty rows containing only reserved (spanned) cells.
- for ri,row in enumerate(self.rows):
- empty = True
- for cell in row:
- if not cell.reserved:
- empty = False
- break
- if empty:
- message.warning('table row %d: empty spanned row' % (ri+1))
- # Check that all row spans match.
- for ri,row in enumerate(self.rows):
- row_span = 0
- for cell in row:
- row_span += cell.span
- if ri == 0:
- header_span = row_span
- if row_span < header_span:
- message.warning('table row %d: does not span all columns' % (ri+1))
- if row_span > header_span:
- message.warning('table row %d: exceeds columns span' % (ri+1))
- def subs_rows(self, rows, rowtype='body'):
- """
- Return a string of output markup from a list of rows, each row
- is a list of raw data text.
- """
- tags = tables.tags[self.parameters.tags]
- if rowtype == 'header':
- rtag = tags.headrow
- elif rowtype == 'footer':
- rtag = tags.footrow
- else:
- rtag = tags.bodyrow
- result = []
- stag,etag = subs_tag(rtag,self.attributes)
- for row in rows:
- result.append(stag)
- result += self.subs_row(row,rowtype)
- result.append(etag)
- return writer.newline.join(result)
- def subs_row(self, row, rowtype):
- """
- Substitute the list of Cells using the data tag.
- Returns a list of marked up table cell elements.
- """
- result = []
- i = 0
- for cell in row:
- if cell.reserved:
- # Skip vertically spanned placeholders.
- i += cell.span
- continue
- if i >= len(self.columns):
- break # Skip cells outside the header width.
- col = self.columns[i]
- self.attributes['halign'] = cell.halign or col.halign
- self.attributes['valign'] = cell.valign or col.valign
- self.attributes['colabswidth'] = col.abswidth
- self.attributes['colpcwidth'] = col.pcwidth
- self.attributes['colnumber'] = str(i+1)
- self.attributes['colspan'] = str(cell.span)
- self.attributes['colstart'] = self.attributes['colnumber']
- self.attributes['colend'] = str(i+cell.span)
- self.attributes['rowspan'] = str(cell.vspan)
- self.attributes['morerows'] = str(cell.vspan-1)
- # Fill missing column data with blanks.
- if i > len(self.columns) - 1:
- data = ''
- else:
- data = cell.data
- if rowtype == 'header':
- # Use table style unless overriden by cell style.
- colstyle = cell.style
- else:
- # If the cell style is not defined use the column style.
- colstyle = cell.style or col.style
- tags = self.get_tags(colstyle)
- presubs,postsubs = self.get_subs(colstyle)
- data = [data]
- data = Lex.subs(data, presubs)
- data = filter_lines(self.get_param('filter',colstyle),
- data, self.attributes)
- data = Lex.subs(data, postsubs)
- if rowtype != 'header':
- ptag = tags.paragraph
- if ptag:
- stag,etag = subs_tag(ptag,self.attributes)
- text = '\n'.join(data).strip()
- data = []
- for para in re.split(r'\n{2,}',text):
- data += dovetail_tags([stag],para.split('\n'),[etag])
- if rowtype == 'header':
- dtag = tags.headdata
- elif rowtype == 'footer':
- dtag = tags.footdata
- else:
- dtag = tags.bodydata
- stag,etag = subs_tag(dtag,self.attributes)
- result = result + dovetail_tags([stag],data,[etag])
- i += cell.span
- return result
- def parse_csv(self,text):
- """
- Parse the table source text and return a list of rows, each row
- is a list of Cells.
- """
- import StringIO
- import csv
- rows = []
- rdr = csv.reader(StringIO.StringIO('\r\n'.join(text)),
- delimiter=self.parameters.separator, skipinitialspace=True)
- try:
- for row in rdr:
- rows.append([Cell(data) for data in row])
- except Exception:
- self.error('csv parse error: %s' % row)
- return rows
- def parse_psv_dsv(self,text):
- """
- Parse list of PSV or DSV table source text lines and return a list of
- Cells.
- """
- def append_cell(data, span_spec, op, align_spec, style):
- op = op or '+'
- if op == '*': # Cell multiplier.
- span = Table.parse_span_spec(span_spec)[0]
- for i in range(span):
- cells.append(Cell(data, '1', align_spec, style))
- elif op == '+': # Column spanner.
- cells.append(Cell(data, span_spec, align_spec, style))
- else:
- self.error('illegal table cell operator')
- text = '\n'.join(text)
- separator = '(?msu)'+self.parameters.separator
- format = self.parameters.format
- start = 0
- span = None
- op = None
- align = None
- style = None
- cells = []
- data = ''
- for mo in re.finditer(separator,text):
- data += text[start:mo.start()]
- if data.endswith('\\'):
- data = data[:-1]+mo.group() # Reinstate escaped separators.
- else:
- append_cell(data, span, op, align, style)
- span = mo.groupdict().get('span')
- op = mo.groupdict().get('op')
- align = mo.groupdict().get('align')
- style = mo.groupdict().get('style')
- if style:
- style = self.get_style(style)
- data = ''
- start = mo.end()
- # Last cell follows final separator.
- data += text[start:]
- append_cell(data, span, op, align, style)
- # We expect a dummy blank item preceeding first PSV cell.
- if format == 'psv':
- if cells[0].data.strip() != '':
- self.error('missing leading separator: %s' % separator,
- self.start)
- else:
- cells.pop(0)
- return cells
- def translate(self):
- AbstractBlock.translate(self)
- reader.read() # Discard delimiter.
- # Reset instance specific properties.
- self.columns = []
- self.rows = []
- attrs = {}
- BlockTitle.consume(attrs)
- # Mix in document attribute list.
- AttributeList.consume(attrs)
- self.merge_attributes(attrs)
- self.validate_attributes()
- # Add global and calculated configuration parameters.
- self.attributes['pagewidth'] = config.pagewidth
- self.attributes['pageunits'] = config.pageunits
- self.attributes['tableabswidth'] = int(self.abswidth)
- self.attributes['tablepcwidth'] = int(self.pcwidth)
- # Read the entire table.
- text = reader.read_until(self.delimiter)
- if reader.eof():
- self.error('missing closing delimiter',self.start)
- else:
- delimiter = reader.read() # Discard closing delimiter.
- assert re.match(self.delimiter,delimiter)
- if len(text) == 0:
- message.warning('[%s] table is empty' % self.defname)
- return
- self.push_blockname('table')
- cols = attrs.get('cols')
- if not cols:
- # Calculate column count from number of items in first line.
- if self.parameters.format == 'csv':
- cols = text[0].count(self.parameters.separator) + 1
- else:
- cols = 0
- for cell in self.parse_psv_dsv(text[:1]):
- cols += cell.span
- self.parse_cols(cols, attrs.get('halign'), attrs.get('valign'))
- # Set calculated attributes.
- self.attributes['colcount'] = len(self.columns)
- self.build_colspecs()
- self.parse_rows(text)
- # The 'rowcount' attribute is used by the experimental LaTeX backend.
- self.attributes['rowcount'] = str(len(self.rows))
- # Generate headrows, footrows, bodyrows.
- # Headrow, footrow and bodyrow data replaces same named attributes in
- # the table markup template. In order to ensure this data does not get
- # a second attribute substitution (which would interfere with any
- # already substituted inline passthroughs) unique placeholders are used
- # (the tab character does not appear elsewhere since it is expanded on
- # input) which are replaced after template attribute substitution.
- headrows = footrows = bodyrows = None
- if self.rows and 'header' in self.parameters.options:
- headrows = self.subs_rows(self.rows[0:1],'header')
- self.attributes['headrows'] = '\x07headrows\x07'
- self.rows = self.rows[1:]
- if self.rows and 'footer' in self.parameters.options:
- footrows = self.subs_rows( self.rows[-1:], 'footer')
- self.attributes['footrows'] = '\x07footrows\x07'
- self.rows = self.rows[:-1]
- if self.rows:
- bodyrows = self.subs_rows(self.rows)
- self.attributes['bodyrows'] = '\x07bodyrows\x07'
- table = subs_attrs(config.sections[self.parameters.template],
- self.attributes)
- table = writer.newline.join(table)
- # Before we finish replace the table head, foot and body place holders
- # with the real data.
- if headrows:
- table = table.replace('\x07headrows\x07', headrows, 1)
- if footrows:
- table = table.replace('\x07footrows\x07', footrows, 1)
- if bodyrows:
- table = table.replace('\x07bodyrows\x07', bodyrows, 1)
- writer.write(table,trace='table')
- self.pop_blockname()
-
-class Tables(AbstractBlocks):
- """List of tables."""
- BLOCK_TYPE = Table
- PREFIX = 'tabledef-'
- TAGS = ('colspec', 'headrow','footrow','bodyrow',
- 'headdata','footdata', 'bodydata','paragraph')
- def __init__(self):
- AbstractBlocks.__init__(self)
- # Table tags dictionary. Each entry is a tags dictionary.
- self.tags={}
- def load(self,sections):
- AbstractBlocks.load(self,sections)
- self.load_tags(sections)
- def load_tags(self,sections):
- """
- Load tabletags-* conf file sections to self.tags.
- """
- for section in sections.keys():
- mo = re.match(r'^tabletags-(?P<name>\w+)$',section)
- if mo:
- name = mo.group('name')
- if name in self.tags:
- d = self.tags[name]
- else:
- d = AttrDict()
- parse_entries(sections.get(section,()),d)
- for k in d.keys():
- if k not in self.TAGS:
- message.warning('[%s] contains illegal table tag: %s' %
- (section,k))
- self.tags[name] = d
- def validate(self):
- AbstractBlocks.validate(self)
- # Check we have a default table definition,
- for i in range(len(self.blocks)):
- if self.blocks[i].defname == 'tabledef-default':
- default = self.blocks[i]
- break
- else:
- raise EAsciiDoc,'missing section: [tabledef-default]'
- # Propagate defaults to unspecified table parameters.
- for b in self.blocks:
- if b is not default:
- if b.format is None: b.format = default.format
- if b.template is None: b.template = default.template
- # Check tags and propagate default tags.
- if not 'default' in self.tags:
- raise EAsciiDoc,'missing section: [tabletags-default]'
- default = self.tags['default']
- for tag in ('bodyrow','bodydata','paragraph'): # Mandatory default tags.
- if tag not in default:
- raise EAsciiDoc,'missing [tabletags-default] entry: %s' % tag
- for t in self.tags.values():
- if t is not default:
- if t.colspec is None: t.colspec = default.colspec
- if t.headrow is None: t.headrow = default.headrow
- if t.footrow is None: t.footrow = default.footrow
- if t.bodyrow is None: t.bodyrow = default.bodyrow
- if t.headdata is None: t.headdata = default.headdata
- if t.footdata is None: t.footdata = default.footdata
- if t.bodydata is None: t.bodydata = default.bodydata
- if t.paragraph is None: t.paragraph = default.paragraph
- # Use body tags if header and footer tags are not specified.
- for t in self.tags.values():
- if not t.headrow: t.headrow = t.bodyrow
- if not t.footrow: t.footrow = t.bodyrow
- if not t.headdata: t.headdata = t.bodydata
- if not t.footdata: t.footdata = t.bodydata
- # Check table definitions are valid.
- for b in self.blocks:
- b.validate()
- def dump(self):
- AbstractBlocks.dump(self)
- for k,v in self.tags.items():
- dump_section('tabletags-'+k, v)
-
-class Macros:
- # Default system macro syntax.
- SYS_RE = r'(?u)^(?P<name>[\\]?\w(\w|-)*?)::(?P<target>\S*?)' + \
- r'(\[(?P<attrlist>.*?)\])$'
- def __init__(self):
- self.macros = [] # List of Macros.
- self.current = None # The last matched block macro.
- self.passthroughs = []
- # Initialize default system macro.
- m = Macro()
- m.pattern = self.SYS_RE
- m.prefix = '+'
- m.reo = re.compile(m.pattern)
- self.macros.append(m)
- def load(self,entries):
- for entry in entries:
- m = Macro()
- m.load(entry)
- if m.name is None:
- # Delete undefined macro.
- for i,m2 in enumerate(self.macros):
- if m2.pattern == m.pattern:
- del self.macros[i]
- break
- else:
- message.warning('unable to delete missing macro: %s' % m.pattern)
- else:
- # Check for duplicates.
- for m2 in self.macros:
- if m2.pattern == m.pattern:
- message.verbose('macro redefinition: %s%s' % (m.prefix,m.name))
- break
- else:
- self.macros.append(m)
- def dump(self):
- write = lambda s: sys.stdout.write('%s%s' % (s,writer.newline))
- write('[macros]')
- # Dump all macros except the first (built-in system) macro.
- for m in self.macros[1:]:
- # Escape = in pattern.
- macro = '%s=%s%s' % (m.pattern.replace('=',r'\='), m.prefix, m.name)
- if m.subslist is not None:
- macro += '[' + ','.join(m.subslist) + ']'
- write(macro)
- write('')
- def validate(self):
- # Check all named sections exist.
- if config.verbose:
- for m in self.macros:
- if m.name and m.prefix != '+':
- m.section_name()
- def subs(self,text,prefix='',callouts=False):
- # If callouts is True then only callout macros are processed, if False
- # then all non-callout macros are processed.
- result = text
- for m in self.macros:
- if m.prefix == prefix:
- if callouts ^ (m.name != 'callout'):
- result = m.subs(result)
- return result
- def isnext(self):
- """Return matching macro if block macro is next on reader."""
- reader.skip_blank_lines()
- line = reader.read_next()
- if line:
- for m in self.macros:
- if m.prefix == '#':
- if m.reo.match(line):
- self.current = m
- return m
- return False
- def match(self,prefix,name,text):
- """Return re match object matching 'text' with macro type 'prefix',
- macro name 'name'."""
- for m in self.macros:
- if m.prefix == prefix:
- mo = m.reo.match(text)
- if mo:
- if m.name == name:
- return mo
- if re.match(name, mo.group('name')):
- return mo
- return None
- def extract_passthroughs(self,text,prefix=''):
- """ Extract the passthrough text and replace with temporary
- placeholders."""
- self.passthroughs = []
- for m in self.macros:
- if m.has_passthrough() and m.prefix == prefix:
- text = m.subs_passthroughs(text, self.passthroughs)
- return text
- def restore_passthroughs(self,text):
- """ Replace passthough placeholders with the original passthrough
- text."""
- for i,v in enumerate(self.passthroughs):
- text = text.replace('\x07'+str(i)+'\x07', self.passthroughs[i])
- return text
-
-class Macro:
- def __init__(self):
- self.pattern = None # Matching regular expression.
- self.name = '' # Conf file macro name (None if implicit).
- self.prefix = '' # '' if inline, '+' if system, '#' if block.
- self.reo = None # Compiled pattern re object.
- self.subslist = [] # Default subs for macros passtext group.
- def has_passthrough(self):
- return self.pattern.find(r'(?P<passtext>') >= 0
- def section_name(self,name=None):
- """Return macro markup template section name based on macro name and
- prefix. Return None section not found."""
- assert self.prefix != '+'
- if not name:
- assert self.name
- name = self.name
- if self.prefix == '#':
- suffix = '-blockmacro'
- else:
- suffix = '-inlinemacro'
- if name+suffix in config.sections:
- return name+suffix
- else:
- message.warning('missing macro section: [%s]' % (name+suffix))
- return None
- def load(self,entry):
- e = parse_entry(entry)
- if e is None:
- # Only the macro pattern was specified, mark for deletion.
- self.name = None
- self.pattern = entry
- return
- if not is_re(e[0]):
- raise EAsciiDoc,'illegal macro regular expression: %s' % e[0]
- pattern, name = e
- if name and name[0] in ('+','#'):
- prefix, name = name[0], name[1:]
- else:
- prefix = ''
- # Parse passthrough subslist.
- mo = re.match(r'^(?P<name>[^[]*)(\[(?P<subslist>.*)\])?$', name)
- name = mo.group('name')
- if name and not is_name(name):
- raise EAsciiDoc,'illegal section name in macro entry: %s' % entry
- subslist = mo.group('subslist')
- if subslist is not None:
- # Parse and validate passthrough subs.
- subslist = parse_options(subslist, SUBS_OPTIONS,
- 'illegal subs in macro entry: %s' % entry)
- self.pattern = pattern
- self.reo = re.compile(pattern)
- self.prefix = prefix
- self.name = name
- self.subslist = subslist or []
-
- def subs(self,text):
- def subs_func(mo):
- """Function called to perform macro substitution.
- Uses matched macro regular expression object and returns string
- containing the substituted macro body."""
- # Check if macro reference is escaped.
- if mo.group()[0] == '\\':
- return mo.group()[1:] # Strip leading backslash.
- d = mo.groupdict()
- # Delete groups that didn't participate in match.
- for k,v in d.items():
- if v is None: del d[k]
- if self.name:
- name = self.name
- else:
- if not 'name' in d:
- message.warning('missing macro name group: %s' % mo.re.pattern)
- return ''
- name = d['name']
- section_name = self.section_name(name)
- if not section_name:
- return ''
- # If we're dealing with a block macro get optional block ID and
- # block title.
- if self.prefix == '#' and self.name != 'comment':
- AttributeList.consume(d)
- BlockTitle.consume(d)
- # Parse macro attributes.
- if 'attrlist' in d:
- if d['attrlist'] in (None,''):
- del d['attrlist']
- else:
- if self.prefix == '':
- # Unescape ] characters in inline macros.
- d['attrlist'] = d['attrlist'].replace('\\]',']')
- parse_attributes(d['attrlist'],d)
- # Generate option attributes.
- if 'options' in d:
- options = parse_options(d['options'], (),
- '%s: illegal option name' % name)
- for option in options:
- d[option+'-option'] = ''
- # Substitute single quoted attribute values in block macros.
- if self.prefix == '#':
- AttributeList.subs(d)
- if name == 'callout':
- listindex =int(d['index'])
- d['coid'] = calloutmap.add(listindex)
- # The alt attribute is the first image macro positional attribute.
- if name == 'image' and '1' in d:
- d['alt'] = d['1']
- # Unescape special characters in LaTeX target file names.
- if document.backend == 'latex' and 'target' in d and d['target']:
- if not '0' in d:
- d['0'] = d['target']
- d['target']= config.subs_specialchars_reverse(d['target'])
- # BUG: We've already done attribute substitution on the macro which
- # means that any escaped attribute references are now unescaped and
- # will be substituted by config.subs_section() below. As a partial
- # fix have withheld {0} from substitution but this kludge doesn't
- # fix it for other attributes containing unescaped references.
- # Passthrough macros don't have this problem.
- a0 = d.get('0')
- if a0:
- d['0'] = chr(0) # Replace temporarily with unused character.
- body = config.subs_section(section_name,d)
- if len(body) == 0:
- result = ''
- elif len(body) == 1:
- result = body[0]
- else:
- if self.prefix == '#':
- result = writer.newline.join(body)
- else:
- # Internally processed inline macros use UNIX line
- # separator.
- result = '\n'.join(body)
- if a0:
- result = result.replace(chr(0), a0)
- return result
-
- return self.reo.sub(subs_func, text)
-
- def translate(self):
- """ Block macro translation."""
- assert self.prefix == '#'
- s = reader.read()
- before = s
- if self.has_passthrough():
- s = macros.extract_passthroughs(s,'#')
- s = subs_attrs(s)
- if s:
- s = self.subs(s)
- if self.has_passthrough():
- s = macros.restore_passthroughs(s)
- if s:
- trace('macro block',before,s)
- writer.write(s)
-
- def subs_passthroughs(self, text, passthroughs):
- """ Replace macro attribute lists in text with placeholders.
- Substitute and append the passthrough attribute lists to the
- passthroughs list."""
- def subs_func(mo):
- """Function called to perform inline macro substitution.
- Uses matched macro regular expression object and returns string
- containing the substituted macro body."""
- # Don't process escaped macro references.
- if mo.group()[0] == '\\':
- return mo.group()
- d = mo.groupdict()
- if not 'passtext' in d:
- message.warning('passthrough macro %s: missing passtext group' %
- d.get('name',''))
- return mo.group()
- passtext = d['passtext']
- if re.search('\x07\\d+\x07', passtext):
- message.warning('nested inline passthrough')
- return mo.group()
- if d.get('subslist'):
- if d['subslist'].startswith(':'):
- message.error('block macro cannot occur here: %s' % mo.group(),
- halt=True)
- subslist = parse_options(d['subslist'], SUBS_OPTIONS,
- 'illegal passthrough macro subs option')
- else:
- subslist = self.subslist
- passtext = Lex.subs_1(passtext,subslist)
- if passtext is None: passtext = ''
- if self.prefix == '':
- # Unescape ] characters in inline macros.
- passtext = passtext.replace('\\]',']')
- passthroughs.append(passtext)
- # Tabs guarantee the placeholders are unambiguous.
- result = (
- text[mo.start():mo.start('passtext')] +
- '\x07' + str(len(passthroughs)-1) + '\x07' +
- text[mo.end('passtext'):mo.end()]
- )
- return result
-
- return self.reo.sub(subs_func, text)
-
-
-class CalloutMap:
- def __init__(self):
- self.comap = {} # key = list index, value = callouts list.
- self.calloutindex = 0 # Current callout index number.
- self.listnumber = 1 # Current callout list number.
- def listclose(self):
- # Called when callout list is closed.
- self.listnumber += 1
- self.calloutindex = 0
- self.comap = {}
- def add(self,listindex):
- # Add next callout index to listindex map entry. Return the callout id.
- self.calloutindex += 1
- # Append the coindex to a list in the comap dictionary.
- if not listindex in self.comap:
- self.comap[listindex] = [self.calloutindex]
- else:
- self.comap[listindex].append(self.calloutindex)
- return self.calloutid(self.listnumber, self.calloutindex)
- @staticmethod
- def calloutid(listnumber,calloutindex):
- return 'CO%d-%d' % (listnumber,calloutindex)
- def calloutids(self,listindex):
- # Retieve list of callout indexes that refer to listindex.
- if listindex in self.comap:
- result = ''
- for coindex in self.comap[listindex]:
- result += ' ' + self.calloutid(self.listnumber,coindex)
- return result.strip()
- else:
- message.warning('no callouts refer to list item '+str(listindex))
- return ''
- def validate(self,maxlistindex):
- # Check that all list indexes referenced by callouts exist.
- for listindex in self.comap.keys():
- if listindex > maxlistindex:
- message.warning('callout refers to non-existent list item '
- + str(listindex))
-
-#---------------------------------------------------------------------------
-# Input stream Reader and output stream writer classes.
-#---------------------------------------------------------------------------
-
-UTF8_BOM = '\xef\xbb\xbf'
-
-class Reader1:
- """Line oriented AsciiDoc input file reader. Processes include and
- conditional inclusion system macros. Tabs are expanded and lines are right
- trimmed."""
- # This class is not used directly, use Reader class instead.
- READ_BUFFER_MIN = 10 # Read buffer low level.
- def __init__(self):
- self.f = None # Input file object.
- self.fname = None # Input file name.
- self.next = [] # Read ahead buffer containing