diff options
Diffstat (limited to 'source-builder/sb/asciidoc/filters')
14 files changed, 0 insertions, 1405 deletions
diff --git a/source-builder/sb/asciidoc/filters/code/code-filter-readme.txt b/source-builder/sb/asciidoc/filters/code/code-filter-readme.txt deleted file mode 100644 index 2a35f86..0000000 --- a/source-builder/sb/asciidoc/filters/code/code-filter-readme.txt +++ /dev/null @@ -1,37 +0,0 @@ -AsciiDoc Code Filter -==================== - -This simple minded filter highlights source code keywords and -comments. - -NOTE: The filter is to demonstrate how to write a filter -- it's much -to simplistic to be passed off as a code syntax highlighter. If you -want a full featured highlighter use the 'source highlighter filter. - - -Files ------ -code-filter.py:: - The filter Python script. -code-filter.conf:: - The AsciiDoc filter configuration file. -code-filter-test.txt:: - Short AsciiDoc document to test the filter. - - -Installation ------------- -The code filter is installed in the distribution `filters` directory -as part of the standard AsciiDoc install. - -Test it on the `code-filter-test.txt` file: - - $ asciidoc -v code-filter-test.txt - $ firefox code-filter-test.txt & - - -Help ----- -Execute the filter with the help option: - - $ ./code-filter.py --help diff --git a/source-builder/sb/asciidoc/filters/code/code-filter-test.txt b/source-builder/sb/asciidoc/filters/code/code-filter-test.txt deleted file mode 100644 index c9e8192..0000000 --- a/source-builder/sb/asciidoc/filters/code/code-filter-test.txt +++ /dev/null @@ -1,15 +0,0 @@ -Code Filter Test -================ - -[python] -code~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -''' A multi-line - comment.''' -def sub_word(mo): - ''' Single line comment.''' - word = mo.group('word') # Inline comment - if word in keywords[language]: - return quote + word + quote - else: - return word -code~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/source-builder/sb/asciidoc/filters/code/code-filter.conf b/source-builder/sb/asciidoc/filters/code/code-filter.conf deleted file mode 100644 index 5cdab96..0000000 --- a/source-builder/sb/asciidoc/filters/code/code-filter.conf +++ /dev/null @@ -1,8 +0,0 @@ -# -# AsciiDoc code filter configuration file. -# -# Documented in code-filter-readme.txt -# - -[blockdef-listing] -code-style=template="listingblock",presubs=(),postsubs=("callouts",),posattrs=("style","language"),filter="code-filter.py -b {basebackend} -l {language}" diff --git a/source-builder/sb/asciidoc/filters/code/code-filter.py b/source-builder/sb/asciidoc/filters/code/code-filter.py deleted file mode 100755 index 473fd6e..0000000 --- a/source-builder/sb/asciidoc/filters/code/code-filter.py +++ /dev/null @@ -1,239 +0,0 @@ -#!/usr/bin/env python -''' -NAME - code-filter - AsciiDoc filter to highlight language keywords - -SYNOPSIS - code-filter -b backend -l language [ -t tabsize ] - [ --help | -h ] [ --version | -v ] - -DESCRIPTION - This filter reads source code from the standard input, highlights language - keywords and comments and writes to the standard output. - - The purpose of this program is to demonstrate how to write an AsciiDoc - filter -- it's much to simplistic to be passed off as a code syntax - highlighter. Use the 'source-highlight-filter' instead. - - -OPTIONS - --help, -h - Print this documentation. - - -b - Backend output file format: 'docbook', 'linuxdoc', 'html', 'css'. - - -l - The name of the source code language: 'python', 'ruby', 'c++', 'c'. - - -t tabsize - Expand source tabs to tabsize spaces. - - --version, -v - Print program version number. - -BUGS - - Code on the same line as a block comment is treated as comment. - Keywords inside literal strings are highlighted. - - There doesn't appear to be an easy way to accomodate linuxdoc so - just pass it through without markup. - -AUTHOR - Written by Stuart Rackham, <srackham@gmail.com> - -URLS - http://sourceforge.net/projects/asciidoc/ - http://www.methods.co.nz/asciidoc/ - -COPYING - Copyright (C) 2002-2006 Stuart Rackham. Free use of this software is - granted under the terms of the GNU General Public License (GPL). -''' - -import os, sys, re, string - -VERSION = '1.1.2' - -# Globals. -language = None -backend = None -tabsize = 8 -keywordtags = { - 'html': - ('<strong>','</strong>'), - 'css': - ('<strong>','</strong>'), - 'docbook': - ('<emphasis role="strong">','</emphasis>'), - 'linuxdoc': - ('','') -} -commenttags = { - 'html': - ('<i>','</i>'), - 'css': - ('<i>','</i>'), - 'docbook': - ('<emphasis>','</emphasis>'), - 'linuxdoc': - ('','') -} -keywords = { - 'python': - ('and', 'del', 'for', 'is', 'raise', 'assert', 'elif', 'from', - 'lambda', 'return', 'break', 'else', 'global', 'not', 'try', 'class', - 'except', 'if', 'or', 'while', 'continue', 'exec', 'import', 'pass', - 'yield', 'def', 'finally', 'in', 'print'), - 'ruby': - ('__FILE__', 'and', 'def', 'end', 'in', 'or', 'self', 'unless', - '__LINE__', 'begin', 'defined?' 'ensure', 'module', 'redo', 'super', - 'until', 'BEGIN', 'break', 'do', 'false', 'next', 'rescue', 'then', - 'when', 'END', 'case', 'else', 'for', 'nil', 'retry', 'true', 'while', - 'alias', 'class', 'elsif', 'if', 'not', 'return', 'undef', 'yield'), - 'c++': - ('asm', 'auto', 'bool', 'break', 'case', 'catch', 'char', 'class', - 'const', 'const_cast', 'continue', 'default', 'delete', 'do', 'double', - 'dynamic_cast', 'else', 'enum', 'explicit', 'export', 'extern', - 'false', 'float', 'for', 'friend', 'goto', 'if', 'inline', 'int', - 'long', 'mutable', 'namespace', 'new', 'operator', 'private', - 'protected', 'public', 'register', 'reinterpret_cast', 'return', - 'short', 'signed', 'sizeof', 'static', 'static_cast', 'struct', - 'switch', 'template', 'this', 'throw', 'true', 'try', 'typedef', - 'typeid', 'typename', 'union', 'unsigned', 'using', 'virtual', 'void', - 'volatile', 'wchar_t', 'while') -} -block_comments = { - 'python': ("'''","'''"), - 'ruby': None, - 'c++': ('/*','*/') -} -inline_comments = { - 'python': '#', - 'ruby': '#', - 'c++': '//' -} - -def print_stderr(line): - sys.stderr.write(line+os.linesep) - -def sub_keyword(mo): - '''re.subs() argument to tag keywords.''' - word = mo.group('word') - if word in keywords[language]: - stag,etag = keywordtags[backend] - return stag+word+etag - else: - return word - -def code_filter(): - '''This function does all the work.''' - global language, backend - inline_comment = inline_comments[language] - blk_comment = block_comments[language] - if blk_comment: - blk_comment = (re.escape(block_comments[language][0]), - re.escape(block_comments[language][1])) - stag,etag = commenttags[backend] - in_comment = 0 # True if we're inside a multi-line block comment. - tag_comment = 0 # True if we should tag the current line as a comment. - line = sys.stdin.readline() - while line: - line = string.rstrip(line) - line = string.expandtabs(line,tabsize) - # Escape special characters. - line = string.replace(line,'&','&') - line = string.replace(line,'<','<') - line = string.replace(line,'>','>') - # Process block comment. - if blk_comment: - if in_comment: - if re.match(r'.*'+blk_comment[1]+r'$',line): - in_comment = 0 - else: - if re.match(r'^\s*'+blk_comment[0]+r'.*'+blk_comment[1],line): - # Single line block comment. - tag_comment = 1 - elif re.match(r'^\s*'+blk_comment[0],line): - # Start of multi-line block comment. - tag_comment = 1 - in_comment = 1 - else: - tag_comment = 0 - if tag_comment: - if line: line = stag+line+etag - else: - if inline_comment: - pos = string.find(line,inline_comment) - else: - pos = -1 - if pos >= 0: - # Process inline comment. - line = re.sub(r'\b(?P<word>\w+)\b',sub_keyword,line[:pos]) \ - + stag + line[pos:] + etag - else: - line = re.sub(r'\b(?P<word>\w+)\b',sub_keyword,line) - sys.stdout.write(line + os.linesep) - line = sys.stdin.readline() - -def usage(msg=''): - if msg: - print_stderr(msg) - print_stderr('Usage: code-filter -b backend -l language [ -t tabsize ]') - print_stderr(' [ --help | -h ] [ --version | -v ]') - -def main(): - global language, backend, tabsize - # Process command line options. - import getopt - opts,args = getopt.getopt(sys.argv[1:], - 'b:l:ht:v', - ['help','version']) - if len(args) > 0: - usage() - sys.exit(1) - for o,v in opts: - if o in ('--help','-h'): - print __doc__ - sys.exit(0) - if o in ('--version','-v'): - print('code-filter version %s' % (VERSION,)) - sys.exit(0) - if o == '-b': backend = v - if o == '-l': - v = string.lower(v) - if v == 'c': v = 'c++' - language = v - if o == '-t': - try: - tabsize = int(v) - except: - usage('illegal tabsize') - sys.exit(1) - if tabsize <= 0: - usage('illegal tabsize') - sys.exit(1) - if backend is None: - usage('backend option is mandatory') - sys.exit(1) - if not keywordtags.has_key(backend): - usage('illegal backend option') - sys.exit(1) - if language is None: - usage('language option is mandatory') - sys.exit(1) - if not keywords.has_key(language): - usage('illegal language option') - sys.exit(1) - # Do the work. - code_filter() - -if __name__ == "__main__": - try: - main() - except (KeyboardInterrupt, SystemExit): - pass - except: - print_stderr("%s: unexpected exit status: %s" % - (os.path.basename(sys.argv[0]), sys.exc_info()[1])) - # Exit with previous sys.exit() status or zero if no sys.exit(). - sys.exit(sys.exc_info()[1]) diff --git a/source-builder/sb/asciidoc/filters/graphviz/asciidoc-graphviz-sample.txt b/source-builder/sb/asciidoc/filters/graphviz/asciidoc-graphviz-sample.txt deleted file mode 100644 index 4be6ba9..0000000 --- a/source-builder/sb/asciidoc/filters/graphviz/asciidoc-graphviz-sample.txt +++ /dev/null @@ -1,170 +0,0 @@ -= Graphviz filter for AsciiDoc = - -Author: Gouichi Iisaka - -Version: 1.1.3 - -== Introduction == - -The Graphviz(link:http://www.graphviz.org[]) is a way of representing structural information -as diagrams of abstract graphs and networks. - - -Automatic graph drawing has many important applications -in software engineering, database and web design, networking, -and in visual interfaces for many other domains. - -Graphviz take descriptions of graphs in a simple text language, -And has many useful features for concrete diagrams, -such as options for colors, fonts, tabular node layouts, -line styles, hyperlinks, and custom shapes. - -AsciiDoc can external shell commands used to process Paragraph and -DelimitedBlock content by Filter. - -So now, AsciiDoc can draw graphs via graphviz filter. - -== Examples == - -=== Simple === -..................................................................... -[graphviz] ---------------------------------------------------------------------- -digraph G { rankdir=LR; Graphviz->AsciiDoc->HTML} ---------------------------------------------------------------------- -..................................................................... - -[graphviz] ---------------------------------------------------------------------- -digraph G { rankdir=LR; Graphviz->AsciiDoc->HTML} ---------------------------------------------------------------------- - -=== Using options === -..................................................................... -["graphviz", "sample2.png"] ---------------------------------------------------------------------- -digraph automata_0 { - size ="8.5, 11"; - node [shape = circle]; - 0 [ style = filled, color=lightgrey ]; - 2 [ shape = doublecircle ]; - 0 -> 2 [ label = "a " ]; - 0 -> 1 [ label = "other " ]; - 1 -> 2 [ label = "a " ]; - 1 -> 1 [ label = "other " ]; - 2 -> 2 [ label = "a " ]; - 2 -> 1 [ label = "other " ]; - "Machine: a" [ shape = plaintext ]; -} ---------------------------------------------------------------------- -..................................................................... - -["graphviz", "sample2.png"] ---------------------------------------------------------------------- -digraph automata_0 { - size ="8.5, 11"; - node [shape = circle]; - 0 [ style = filled, color=lightgrey ]; - 2 [ shape = doublecircle ]; - 0 -> 2 [ label = "a " ]; - 0 -> 1 [ label = "other " ]; - 1 -> 2 [ label = "a " ]; - 1 -> 1 [ label = "other " ]; - 2 -> 2 [ label = "a " ]; - 2 -> 1 [ label = "other " ]; - "Machine: a" [ shape = plaintext ]; -} ---------------------------------------------------------------------- - -=== Using Layout === - -..................................................................... -["graphviz", "sample3.png", "dot"] ---------------------------------------------------------------------- -digraph finite_state_machine { - rankdir=LR; - size="8,5" - node [shape = doublecircle]; LR_0 LR_3 LR_4 LR_8; - node [shape = circle]; - LR_0 -> LR_2 [ label = "SS(B)" ]; - LR_0 -> LR_1 [ label = "SS(S)" ]; - LR_1 -> LR_3 [ label = "S($end)" ]; - LR_2 -> LR_6 [ label = "SS(b)" ]; - LR_2 -> LR_5 [ label = "SS(a)" ]; - LR_2 -> LR_4 [ label = "S(A)" ]; - LR_5 -> LR_7 [ label = "S(b)" ]; - LR_5 -> LR_5 [ label = "S(a)" ]; - LR_6 -> LR_6 [ label = "S(b)" ]; - LR_6 -> LR_5 [ label = "S(a)" ]; - LR_7 -> LR_8 [ label = "S(b)" ]; - LR_7 -> LR_5 [ label = "S(a)" ]; - LR_8 -> LR_6 [ label = "S(b)" ]; - LR_8 -> LR_5 [ label = "S(a)" ]; -} ---------------------------------------------------------------------- -..................................................................... - -["graphviz", "sample3.png", "dot"] ---------------------------------------------------------------------- -digraph finite_state_machine { - rankdir=LR; - size="8,5" - node [shape = doublecircle]; LR_0 LR_3 LR_4 LR_8; - node [shape = circle]; - LR_0 -> LR_2 [ label = "SS(B)" ]; - LR_0 -> LR_1 [ label = "SS(S)" ]; - LR_1 -> LR_3 [ label = "S($end)" ]; - LR_2 -> LR_6 [ label = "SS(b)" ]; - LR_2 -> LR_5 [ label = "SS(a)" ]; - LR_2 -> LR_4 [ label = "S(A)" ]; - LR_5 -> LR_7 [ label = "S(b)" ]; - LR_5 -> LR_5 [ label = "S(a)" ]; - LR_6 -> LR_6 [ label = "S(b)" ]; - LR_6 -> LR_5 [ label = "S(a)" ]; - LR_7 -> LR_8 [ label = "S(b)" ]; - LR_7 -> LR_5 [ label = "S(a)" ]; - LR_8 -> LR_6 [ label = "S(b)" ]; - LR_8 -> LR_5 [ label = "S(a)" ]; - } ---------------------------------------------------------------------- - - -== Layout == - -Layout for graphviz as follows. The default is `dot'. - - *dot;; - 'dot' draws directed graphs. - It works well on DAGs and other graphs that can be drawn as hierarchies. - It reads attributed graph files and writes drawings. - - *neato;; - 'neato' draws undirected graphs using ‘‘spring'' models (see Kamada and - Kawai, Information Processing Letters 31:1, April 1989). - Input files must be formatted in the dot attributed graph language. - - *twopi;; - 'twopi' draws graphs using a radial layout (see G. Wills, Symposium on - Graph Drawing GD'97, September, 1997). - Basically, one node is chosen as the center and put at the origin. - The remaining nodes are placed on a sequence of concentric circles - centered about the origin, each a fixed radial distance from - the previous circle. - - *circro;; - 'circo' draws graphs using a circular layout (see Six and Tollis, GD '99 - and ALENEX '99, and Kaufmann and Wiese, GD '02.) - The tool identifies biconnected components and draws the nodes - of the component on a circle. - The block‐cutpoint tree is then laid out using a recursive radial - algorithm. - Edge crossings within a circle are minimized by placing as - many edges on the circle's perimeter as possible. - In particular, if the component is outerplanar, - the component will have a planar layout. - - *fdp;; - 'fdp' draws undirected graphs using a ‘‘spring'' model. - It relies on a force‐directed approach in the spirit of Fruchterman - and Reingold - (cf. Software‐Practice & Experience 21(11), 1991, pp. 1129‐1164). diff --git a/source-builder/sb/asciidoc/filters/graphviz/graphviz-filter.conf b/source-builder/sb/asciidoc/filters/graphviz/graphviz-filter.conf deleted file mode 100644 index f1ca264..0000000 --- a/source-builder/sb/asciidoc/filters/graphviz/graphviz-filter.conf +++ /dev/null @@ -1,53 +0,0 @@ -# -# AsciiDoc Graphviz filter configuration file. -# -# Version: 1.0 -# Gouici Iisaka <iisaka51 at gmail dot com> - -[graphviz-filter-style] -# When the filter output image is data-uri encoded write it to the indir -# (instead of the outdir) so that encoder can find it. -ifndef::data-uri[] -graphviz-style=template="graphviz{format?-{format}}-block",subs=(),posattrs=("style","target","layout","format"),filter='graphviz2png.py {verbose?-v} -o "{outdir={indir}}/{imagesdir=}{imagesdir?/}{target}" -L {layout=dot} -F {format=png} -' -endif::data-uri[] -ifdef::data-uri[] -graphviz-style=template="graphviz{format?-{format}}-block",subs=(),posattrs=("style","target","layout","format"),filter='graphviz2png.py {verbose?-v} -o "{indir={outdir}}/{imagesdir=}{imagesdir?/}{target}" -L {layout=dot} -F {format=png} -' -endif::data-uri[] - -[blockdef-open] -template::[graphviz-filter-style] - -[blockdef-listing] -template::[graphviz-filter-style] - -[paradef-default] -template::[graphviz-filter-style] - -[graphviz-block] -template::[filter-image-blockmacro] - -# EXPERIMENTAL: xhtml11 backend SVG image block. -ifdef::basebackend-xhtml11[] -[graphviz-svg-block] -<div class="imageblock"{id? id="{id}"}{align? style="text-align:{align};"}{float? style="float:{float};"}> -<div class="content"> -<a class="image" href="{link}"> -<object data="{imagesdir=}{imagesdir?/}{target}" type="image/svg+xml" /> -{link#}</a> -</div> -<div class="title">{caption={figure-caption} {counter:figure-number}. }{title}</div> -</div> -endif::basebackend-xhtml11[] - -# -# DEPRECATED: Pre 8.2.7 filter definition. -# -[blockdef-graphviz] -delimiter=^graphviz~{4,}$ -template=graphviz-block -presubs=none -filter=graphviz2png.py {verbose?-v} -o "{outdir={indir}}/{target}" -L {layout=dot} - -posattrs=target,format -# -# DEPRECATED: End -# diff --git a/source-builder/sb/asciidoc/filters/graphviz/graphviz2png.py b/source-builder/sb/asciidoc/filters/graphviz/graphviz2png.py deleted file mode 100755 index a3d43f5..0000000 --- a/source-builder/sb/asciidoc/filters/graphviz/graphviz2png.py +++ /dev/null @@ -1,169 +0,0 @@ -#!/usr/bin/env python - -import os, sys, subprocess -from optparse import * - -__AUTHOR__ = "Gouichi Iisaka <iisaka51@gmail.com>" -__VERSION__ = '1.1.4' - -class EApp(Exception): - '''Application specific exception.''' - pass - -class Application(): - ''' -NAME - graphviz2png - Converts textual graphviz notation to PNG file - -SYNOPSIS - graphviz2png [options] INFILE - -DESCRIPTION - This filter reads Graphviz notation text from the input file - INFILE (or stdin if INFILE is -), converts it to a PNG image file. - - -OPTIONS - -o OUTFILE, --outfile=OUTFILE - The file name of the output file. If not specified the output file is - named like INFILE but with a .png file name extension. - - -L LAYOUT, --layout=LAYOUT - Graphviz layout: dot, neato, twopi, circo, fdp - Default is 'dot'. - - -F FORMAT, --format=FORMAT - Graphviz output format: png, svg, or any other format Graphviz - supports. Run dot -T? to get the full list. - Default is 'png'. - - -v, --verbose - Verbosely print processing information to stderr. - - -h, --help - Print this documentation. - - -V, --version - Print program version number. - -SEE ALSO - graphviz(1) - -AUTHOR - Written by Gouichi Iisaka, <iisaka51@gmail.com> - Format support added by Elmo Todurov, <todurov@gmail.com> - -THANKS - Stuart Rackham, <srackham@gmail.com> - This script was inspired by his music2png.py and AsciiDoc - -LICENSE - Copyright (C) 2008-2009 Gouichi Iisaka. - Free use of this software is granted under the terms of - the GNU General Public License (GPL). - ''' - - def __init__(self, argv=None): - # Run dot, get the list of supported formats. It's prefixed by some junk. - format_output = subprocess.Popen(["dot", "-T?"], stderr=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[1] - # The junk contains : and ends with :. So we split it, then strip the final endline, then split the list for future usage. - supported_formats = format_output.split(": ")[2][:-1].split(" ") - - if not argv: - argv = sys.argv - - self.usage = '%prog [options] inputfile' - self.version = 'Version: %s\n' % __VERSION__ - self.version += 'Copyright(c) 2008-2009: %s\n' % __AUTHOR__ - - self.option_list = [ - Option("-o", "--outfile", action="store", - dest="outfile", - help="Output file"), - Option("-L", "--layout", action="store", - dest="layout", default="dot", type="choice", - choices=['dot','neato','twopi','circo','fdp'], - help="Layout type. LAYOUT=<dot|neato|twopi|circo|fdp>"), - Option("-F", "--format", action="store", - dest="format", default="png", type="choice", - choices=supported_formats, - help="Format type. FORMAT=<" + "|".join(supported_formats) + ">"), - Option("--debug", action="store_true", - dest="do_debug", - help=SUPPRESS_HELP), - Option("-v", "--verbose", action="store_true", - dest="do_verbose", default=False, - help="verbose output"), - ] - - self.parser = OptionParser( usage=self.usage, version=self.version, - option_list=self.option_list) - (self.options, self.args) = self.parser.parse_args() - - if len(self.args) != 1: - self.parser.print_help() - sys.exit(1) - - self.options.infile = self.args[0] - - def systemcmd(self, cmd): - if self.options.do_verbose: - msg = 'Execute: %s' % cmd - sys.stderr.write(msg + os.linesep) - else: - cmd += ' 2>%s' % os.devnull - if os.system(cmd): - raise EApp, 'failed command: %s' % cmd - - def graphviz2png(self, infile, outfile): - '''Convert Graphviz notation in file infile to - PNG file named outfile.''' - - outfile = os.path.abspath(outfile) - outdir = os.path.dirname(outfile) - - if not os.path.isdir(outdir): - raise EApp, 'directory does not exist: %s' % outdir - - basefile = os.path.splitext(outfile)[0] - saved_cwd = os.getcwd() - os.chdir(outdir) - try: - cmd = '%s -T%s "%s" > "%s"' % ( - self.options.layout, self.options.format, infile, outfile) - self.systemcmd(cmd) - finally: - os.chdir(saved_cwd) - - if not self.options.do_debug: - os.unlink(infile) - - def run(self): - if self.options.format == '': - self.options.format = 'png' - - if self.options.infile == '-': - if self.options.outfile is None: - sys.stderr.write('OUTFILE must be specified') - sys.exit(1) - infile = os.path.splitext(self.options.outfile)[0] + '.txt' - lines = sys.stdin.readlines() - open(infile, 'w').writelines(lines) - - if not os.path.isfile(infile): - raise EApp, 'input file does not exist: %s' % infile - - if self.options.outfile is None: - outfile = os.path.splitext(infile)[0] + '.png' - else: - outfile = self.options.outfile - - self.graphviz2png(infile, outfile) - - # To suppress asciidoc 'no output from filter' warnings. - if self.options.infile == '-': - sys.stdout.write(' ') - -if __name__ == "__main__": - app = Application() - app.run() diff --git a/source-builder/sb/asciidoc/filters/latex/latex-filter.conf b/source-builder/sb/asciidoc/filters/latex/latex-filter.conf deleted file mode 100644 index 93c09e4..0000000 --- a/source-builder/sb/asciidoc/filters/latex/latex-filter.conf +++ /dev/null @@ -1,28 +0,0 @@ -# -# AsciiDoc latex filter configuration file. -# -# Documented in latex-filter.txt in AsciiDoc distribution -# ./examples/website/ directory. -# - -[latex-filter-style] -# When the filter output image is data-uri encoded write it to the indir -# (instead of the outdir) so that encoder can find it. -ifndef::data-uri[] -latex-style=template="latex-block",subs=(),posattrs=("style","target","dpi"),filter='latex2png.py -m{verbose? -v}{dpi? -D {dpi}} -o "{outdir={indir}}/{imagesdir=}{imagesdir?/}{target}" -' -endif::data-uri[] -ifdef::data-uri[] -latex-style=template="latex-block",subs=(),posattrs=("style","target","dpi"),filter='latex2png.py -m{verbose? -v}{dpi? -D {dpi}} -o "{indir={outdir}}/{imagesdir=}{imagesdir?/}{target}" -' -endif::data-uri[] - -[blockdef-open] -template::[latex-filter-style] - -[blockdef-listing] -template::[latex-filter-style] - -[paradef-default] -template::[latex-filter-style] - -[latex-block] -template::[filter-image-blockmacro] diff --git a/source-builder/sb/asciidoc/filters/latex/latex2png.py b/source-builder/sb/asciidoc/filters/latex/latex2png.py deleted file mode 100755 index 3cae7c9..0000000 --- a/source-builder/sb/asciidoc/filters/latex/latex2png.py +++ /dev/null @@ -1,232 +0,0 @@ -#!/usr/bin/env python -''' -NAME - latex2png - Converts LaTeX source to PNG file - -SYNOPSIS - latex2png [options] INFILE - -DESCRIPTION - This filter reads LaTeX source text from the input file - INFILE (or stdin if INFILE is -) and renders it to PNG image file. - Typically used to render math equations. - - Requires latex(1), dvipng(1) commands and LaTeX math packages. - -OPTIONS - -D DPI - Set the output resolution to DPI dots per inch. Use this option to - scale the output image size. - - -o OUTFILE - The file name of the output file. If not specified the output file is - named like INFILE but with a .png file name extension. - - -m - Skip if the PNG output file is newer that than the INFILE. - Compares timestamps on INFILE and OUTFILE. If - INFILE is - (stdin) then compares MD5 checksum stored in file - named like OUTFILE but with a .md5 file name extension. - The .md5 file is created if the -m option is used and the - INFILE is - (stdin). - - -v - Verbosely print processing information to stderr. - - --help, -h - Print this documentation. - - --version - Print program version number. - -SEE ALSO - latex(1), dvipng(1) - -AUTHOR - Written by Stuart Rackham, <srackham@gmail.com> - The code was inspired by Kjell Magne Fauske's code: - http://fauskes.net/nb/htmleqII/ - - See also: - http://www.amk.ca/python/code/mt-math - http://code.google.com/p/latexmath2png/ - -COPYING - Copyright (C) 2010 Stuart Rackham. Free use of this software is - granted under the terms of the MIT License. -''' - -# Suppress warning: "the md5 module is deprecated; use hashlib instead" -import warnings -warnings.simplefilter('ignore',DeprecationWarning) - -import os, sys, tempfile, md5 - -VERSION = '0.1.0' - -# Include LaTeX packages and commands here. -TEX_HEADER = r'''\documentclass{article} -\usepackage{amsmath} -\usepackage{amsthm} -\usepackage{amssymb} -\usepackage{bm} -\newcommand{\mx}[1]{\mathbf{\bm{#1}}} % Matrix command -\newcommand{\vc}[1]{\mathbf{\bm{#1}}} % Vector command -\newcommand{\T}{\text{T}} % Transpose -\pagestyle{empty} -\begin{document}''' - -TEX_FOOTER = r'''\end{document}''' - -# Globals. -verbose = False - -class EApp(Exception): pass # Application specific exception. - -def print_stderr(line): - sys.stderr.write(line + os.linesep) - -def print_verbose(line): - if verbose: - print_stderr(line) - -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 run(cmd): - global verbose - if verbose: - cmd += ' 1>&2' - else: - cmd += ' 2>%s 1>&2' % os.devnull - print_verbose('executing: %s' % cmd) - if os.system(cmd): - raise EApp, 'failed command: %s' % cmd - -def latex2png(infile, outfile, dpi, modified): - '''Convert LaTeX input file infile to PNG file named outfile.''' - outfile = os.path.abspath(outfile) - outdir = os.path.dirname(outfile) - if not os.path.isdir(outdir): - raise EApp, 'directory does not exist: %s' % outdir - texfile = tempfile.mktemp(suffix='.tex', dir=os.path.dirname(outfile)) - basefile = os.path.splitext(texfile)[0] - dvifile = basefile + '.dvi' - temps = [basefile + ext for ext in ('.tex','.dvi', '.aux', '.log')] - skip = False - if infile == '-': - tex = sys.stdin.read() - if modified: - checksum = md5.new(tex).digest() - md5_file = os.path.splitext(outfile)[0] + '.md5' - if os.path.isfile(md5_file) and os.path.isfile(outfile) and \ - checksum == read_file(md5_file,'rb'): - skip = True - else: - if not os.path.isfile(infile): - raise EApp, 'input file does not exist: %s' % infile - tex = read_file(infile) - if modified and os.path.isfile(outfile) and \ - os.path.getmtime(infile) <= os.path.getmtime(outfile): - skip = True - if skip: - print_verbose('skipped: no change: %s' % outfile) - return - tex = '%s\n%s\n%s\n' % (TEX_HEADER, tex.strip(), TEX_FOOTER) - print_verbose('tex:\n%s' % tex) - write_file(texfile, tex) - saved_pwd = os.getcwd() - os.chdir(outdir) - try: - # Compile LaTeX document to DVI file. - run('latex %s' % texfile) - # Convert DVI file to PNG. - cmd = 'dvipng' - if dpi: - cmd += ' -D %s' % dpi - cmd += ' -T tight -x 1000 -z 9 -bg Transparent --truecolor -o "%s" "%s" ' \ - % (outfile,dvifile) - run(cmd) - finally: - os.chdir(saved_pwd) - for f in temps: - if os.path.isfile(f): - print_verbose('deleting: %s' % f) - os.remove(f) - if 'md5_file' in locals(): - print_verbose('writing: %s' % md5_file) - write_file(md5_file, checksum, 'wb') - -def usage(msg=''): - if msg: - print_stderr(msg) - print_stderr('\n' - 'usage:\n' - ' latex2png [options] INFILE\n' - '\n' - 'options:\n' - ' -D DPI\n' - ' -o OUTFILE\n' - ' -m\n' - ' -v\n' - ' --help\n' - ' --version') - -def main(): - # Process command line options. - global verbose - dpi = None - outfile = None - modified = False - import getopt - opts,args = getopt.getopt(sys.argv[1:], 'D:o:mhv', ['help','version']) - for o,v in opts: - if o in ('--help','-h'): - print __doc__ - sys.exit(0) - if o =='--version': - print('latex2png version %s' % (VERSION,)) - sys.exit(0) - if o == '-D': dpi = v - if o == '-o': outfile = v - if o == '-m': modified = True - if o == '-v': verbose = True - if len(args) != 1: - usage() - sys.exit(1) - infile = args[0] - if dpi and not dpi.isdigit(): - usage('invalid DPI') - sys.exit(1) - if outfile is None: - if infile == '-': - usage('OUTFILE must be specified') - sys.exit(1) - outfile = os.path.splitext(infile)[0] + '.png' - # Do the work. - latex2png(infile, outfile, dpi, modified) - # Print something to suppress asciidoc 'no output from filter' warnings. - if infile == '-': - sys.stdout.write(' ') - -if __name__ == "__main__": - try: - main() - except SystemExit: - raise - except KeyboardInterrupt: - sys.exit(1) - except Exception, e: - print_stderr("%s: %s" % (os.path.basename(sys.argv[0]), str(e))) - sys.exit(1) diff --git a/source-builder/sb/asciidoc/filters/music/music-filter-test.txt b/source-builder/sb/asciidoc/filters/music/music-filter-test.txt deleted file mode 100644 index c1886bd..0000000 --- a/source-builder/sb/asciidoc/filters/music/music-filter-test.txt +++ /dev/null @@ -1,40 +0,0 @@ -Music Filter Test -================= - -Details of the filter can be found in `./doc/music-filter.txt`. - - -A tune generated from ABC notation ----------------------------------- - -[music,music1.png] ---------------------------------------------------------------------- -T:The Butterfly -R:slip jig -C:Tommy Potts -H:Fiddle player Tommy Potts made this tune from two older slip jigs, -H:one of which is called "Skin the Peelers" in Roche's collection. -D:Bothy Band: 1975. -M:9/8 -K:Em -vB2(E G2)(E F3)|B2(E G2)(E F)ED|vB2(E G2)(E F3)|(B2d) d2(uB A)FD:| -|:(vB2c) (e2f) g3|(uB2d) (g2e) (dBA)|(B2c) (e2f) g2(ua|b2a) (g2e) (dBA):| -|:~B3 (B2A) G2A|~B3 BA(uB d)BA|~B3 (B2A) G2(A|B2d) (g2e) (dBA):| ---------------------------------------------------------------------- - - -A fragment generated from LilyPond source ------------------------------------------- - -["music", "music2.png", "ly", link="music2.ly"] ---------------------------------------------------------------------- -\version "2.10.0" -\paper { - ragged-right = ##t -} -{ - \time 3/4 - \clef bass - c2 e4 g2. f4 e d c2 r4 -} ---------------------------------------------------------------------- diff --git a/source-builder/sb/asciidoc/filters/music/music-filter.conf b/source-builder/sb/asciidoc/filters/music/music-filter.conf deleted file mode 100644 index eaafe97..0000000 --- a/source-builder/sb/asciidoc/filters/music/music-filter.conf +++ /dev/null @@ -1,42 +0,0 @@ -# -# AsciiDoc music filter configuration file. -# -# Documented in music-filter.txt in AsciiDoc distribution -# ./examples/website/ directory. -# - -[music-filter-style] - -# When the filter output image is data-uri encoded write it to the indir -# (instead of the outdir) so that encoder can find it. -ifndef::data-uri[] -music-style=template="music-block",subs=(),posattrs=("style","target","format"),filter='music2png.py -m{verbose? -v}{format? -f {format}} -o "{outdir={indir}}/{imagesdir=}{imagesdir?/}{target}" -' -endif::data-uri[] -ifdef::data-uri[] -music-style=template="music-block",subs=(),posattrs=("style","target","format"),filter='music2png.py -m{verbose? -v}{format? -f {format}} -o "{indir={outdir}}/{imagesdir=}{imagesdir?/}{target}" -' -endif::data-uri[] - -[blockdef-open] -template::[music-filter-style] - -[blockdef-listing] -template::[music-filter-style] - -[paradef-default] -template::[music-filter-style] - -[music-block] -template::[filter-image-blockmacro] - -# -# DEPRECATED: Pre 8.2.7 filter definition. -# -[blockdef-music] -delimiter=^music~{4,}$ -template=music-block -presubs=none -filter=music2png.py{verbose? -v} -f {format=abc} -o "{outdir={indir}}/{imagesdir=}{imagesdir?/}{target}" - -posattrs=target,format -# -# DEPRECATED: End -# diff --git a/source-builder/sb/asciidoc/filters/music/music2png.py b/source-builder/sb/asciidoc/filters/music/music2png.py deleted file mode 100755 index a0224df..0000000 --- a/source-builder/sb/asciidoc/filters/music/music2png.py +++ /dev/null @@ -1,213 +0,0 @@ -#!/usr/bin/env python -''' -NAME - music2png - Converts textual music notation to classically notated PNG file - -SYNOPSIS - music2png [options] INFILE - -DESCRIPTION - This filter reads LilyPond or ABC music notation text from the input file - INFILE (or stdin if INFILE is -), converts it to classical music notation - and writes it to a trimmed PNG image file. - - This script is a wrapper for LilyPond and ImageMagick commands. - -OPTIONS - -f FORMAT - The INFILE music format. 'abc' for ABC notation, 'ly' for LilyPond - notation. Defaults to 'abc' unless source starts with backslash. - - -o OUTFILE - The file name of the output file. If not specified the output file is - named like INFILE but with a .png file name extension. - - -m - Skip if the PNG output file is newer that than the INFILE. - Compares timestamps on INFILE and OUTFILE. If - INFILE is - (stdin) then compares MD5 checksum stored in file - named like OUTFILE but with a .md5 file name extension. - The .md5 file is created if the -m option is used and the - INFILE is - (stdin). - - -v - Verbosely print processing information to stderr. - - --help, -h - Print this documentation. - - --version - Print program version number. - -SEE ALSO - lilypond(1), abc2ly(1), convert(1) - -AUTHOR - Written by Stuart Rackham, <srackham@gmail.com> - -COPYING - Copyright (C) 2006 Stuart Rackham. Free use of this software is - granted under the terms of the GNU General Public License (GPL). -''' - -# Suppress warning: "the md5 module is deprecated; use hashlib instead" -import warnings -warnings.simplefilter('ignore',DeprecationWarning) - -import os, sys, tempfile, md5 - -VERSION = '0.1.2' - -# Globals. -verbose = False - -class EApp(Exception): pass # Application specific exception. - -def print_stderr(line): - sys.stderr.write(line + os.linesep) - -def print_verbose(line): - if verbose: - print_stderr(line) - -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 run(cmd): - global verbose - if not verbose: - cmd += ' 2>%s' % os.devnull - print_verbose('executing: %s' % cmd) - if os.system(cmd): - raise EApp, 'failed command: %s' % cmd - -def music2png(format, infile, outfile, modified): - '''Convert ABC notation in file infile to cropped PNG file named outfile.''' - outfile = os.path.abspath(outfile) - outdir = os.path.dirname(outfile) - if not os.path.isdir(outdir): - raise EApp, 'directory does not exist: %s' % outdir - basefile = tempfile.mktemp(dir=os.path.dirname(outfile)) - temps = [basefile + ext for ext in ('.abc', '.ly', '.ps', '.midi')] - skip = False - if infile == '-': - source = sys.stdin.read() - checksum = md5.new(source).digest() - filename = os.path.splitext(outfile)[0] + '.md5' - if modified: - if os.path.isfile(filename) and os.path.isfile(outfile) and \ - checksum == read_file(filename,'rb'): - skip = True - else: - write_file(filename, checksum, 'wb') - else: - if not os.path.isfile(infile): - raise EApp, 'input file does not exist: %s' % infile - if modified and os.path.isfile(outfile) and \ - os.path.getmtime(infile) <= os.path.getmtime(outfile): - skip = True - source = read_file(infile) - if skip: - print_verbose('skipped: no change: %s' % outfile) - return - if format is None: - if source and source.startswith('\\'): # Guess input format. - format = 'ly' - else: - format = 'abc' - # Write temporary source file. - write_file('%s.%s' % (basefile,format), source) - abc = basefile + '.abc' - ly = basefile + '.ly' - png = basefile + '.png' - saved_pwd = os.getcwd() - os.chdir(outdir) - try: - if format == 'abc': - run('abc2ly -o "%s" "%s"' % (ly,abc)) - run('lilypond --png -o "%s" "%s"' % (basefile,ly)) - os.rename(png, outfile) - finally: - os.chdir(saved_pwd) - # Chop the bottom 75 pixels off to get rid of the page footer then crop the - # music image. The -strip option necessary because FOP does not like the - # custom PNG color profile used by Lilypond. - run('convert "%s" -strip -gravity South -chop 0x75 -trim "%s"' % (outfile, outfile)) - for f in temps: - if os.path.isfile(f): - print_verbose('deleting: %s' % f) - os.remove(f) - -def usage(msg=''): - if msg: - print_stderr(msg) - print_stderr('\n' - 'usage:\n' - ' music2png [options] INFILE\n' - '\n' - 'options:\n' - ' -f FORMAT\n' - ' -o OUTFILE\n' - ' -m\n' - ' -v\n' - ' --help\n' - ' --version') - -def main(): - # Process command line options. - global verbose - format = None - outfile = None - modified = False - import getopt - opts,args = getopt.getopt(sys.argv[1:], 'f:o:mhv', ['help','version']) - for o,v in opts: - if o in ('--help','-h'): - print __doc__ - sys.exit(0) - if o =='--version': - print('music2png version %s' % (VERSION,)) - sys.exit(0) - if o == '-f': format = v - if o == '-o': outfile = v - if o == '-m': modified = True - if o == '-v': verbose = True - if len(args) != 1: - usage() - sys.exit(1) - infile = args[0] - if format not in (None, 'abc', 'ly'): - usage('invalid FORMAT') - sys.exit(1) - if outfile is None: - if infile == '-': - usage('OUTFILE must be specified') - sys.exit(1) - outfile = os.path.splitext(infile)[0] + '.png' - # Do the work. - music2png(format, infile, outfile, modified) - # Print something to suppress asciidoc 'no output from filter' warnings. - if infile == '-': - sys.stdout.write(' ') - -if __name__ == "__main__": - try: - main() - except SystemExit: - raise - except KeyboardInterrupt: - sys.exit(1) - except Exception, e: - print_stderr("%s: %s" % (os.path.basename(sys.argv[0]), str(e))) - sys.exit(1) diff --git a/source-builder/sb/asciidoc/filters/source/source-highlight-filter-test.txt b/source-builder/sb/asciidoc/filters/source/source-highlight-filter-test.txt deleted file mode 100644 index cd2390c..0000000 --- a/source-builder/sb/asciidoc/filters/source/source-highlight-filter-test.txt +++ /dev/null @@ -1,19 +0,0 @@ -Source Hightlight Filter Test -============================= - -Details of the filter can be found in -`./doc/source-highlight-filter.txt`. - -[source,python] ---------------------------------------------------------------------- -''' A multi-line - comment.''' -def sub_word(mo): - ''' Single line comment.''' - word = mo.group('word') # Inline comment - if word in keywords[language]: - return quote + word + quote - else: - return word ---------------------------------------------------------------------- - diff --git a/source-builder/sb/asciidoc/filters/source/source-highlight-filter.conf b/source-builder/sb/asciidoc/filters/source/source-highlight-filter.conf deleted file mode 100644 index efe4dbe..0000000 --- a/source-builder/sb/asciidoc/filters/source/source-highlight-filter.conf +++ /dev/null @@ -1,140 +0,0 @@ -# -# AsciiDoc source code highlight filter configuration file. -# -# Documented in source-hightlight-filter.txt in AsciiDoc distribution -# ./examples/website/ directory. -# -# HTML outputs require GNU source-highlight (xhtml11, html4 outputs) -# http://www.gnu.org/software/src-highlite/source-highlight.html -# -# or Pygments (xhtml11 outputs): -# http://pygments.org/ -# -# GNU source-hightlight is default, define the 'pygments' attribute to use -# Pygments. -# - -######################## -# Source block templates -######################## -[source-highlight-block] -template::[listingblock] - -ifdef::basebackend-html[] -[source-highlight-block] -<a name="{id}"></a> -<p><b>{title}</b></p> -<table{role? class="{role}"} border="0" bgcolor="#e8e8e8" width="100%" cellpadding="10"><tr><td> -{source-highlighter$highlight:}<pre><code> -| -{source-highlighter$highlight:}</code></pre> -</td></tr></table> -endif::basebackend-html[] - -ifdef::basebackend-xhtml11,basebackend-html5[] -[source-highlight-block] -<div class="listingblock{role? {role}}"> -<a id="{id}"></a> -<div class="title">{caption=}{title}</div> -<div class="content"> -{source-highlighter$highlight:}<pre><code> -| -{source-highlighter$highlight:}</code></pre> -</div></div> -endif::basebackend-xhtml11,basebackend-html5[] - -# Use DocBook programlisting element. -ifdef::basebackend-docbook[] -[source-highlight-block] -<formalpara{id? id="{id}"}{role? role="{role}"}{reftext? xreflabel="{reftext}"}><title>{title}</title><para> -{title#}<programlisting language="{language}" linenumbering="{src_numbered=unnumbered}"{args? {args}}> -{title%}<programlisting language="{language}"{role? role="{role}"} linenumbering="{src_numbered=unnumbered}"{args? {args}}> -| -</programlisting> -{title#}</para></formalpara> -endif::basebackend-docbook[] - -# Source styles template. -ifdef::basebackend-html[] -[source-filter-style] -ifeval::["{source-highlighter}"=="source-highlight"] -source-style=template="source-highlight-block",presubs=(),postsubs=("callouts",),posattrs=("style","language","src_numbered","src_tab"),filter="source-highlight -f xhtml -s {language} {src_numbered?--line-number=' '} {src_tab?--tab={src_tab}} {args=}" -endif::[] -ifeval::["{source-highlighter}"=="highlight"] -source-style=template="source-highlight-block",presubs=(),postsubs=("callouts",),posattrs=("style","language","src_numbered","src_tab"),filter="highlight --no-doc --inline-css --out-format=xhtml --syntax={language@python:py:{language}} {src_numbered?--line-number} {src_tab?--tab={src_tab}} --encoding={encoding} {args=}" -endif::[] -ifeval::["{source-highlighter}"=="pygments"] -source-style=template="source-highlight-block",presubs=(),postsubs=("callouts",),posattrs=("style","language","src_numbered"),filter="pygmentize -f html -l {language} {src_numbered?-O linenos=table} {encoding?-O encoding={encoding}} {args=}" -endif::[] -# DEPRECATED: 'pygments' attribute. -ifdef::pygments[] -source-style=template="source-highlight-block",presubs=(),postsubs=("callouts",),posattrs=("style","language","src_numbered"),filter="pygmentize -f html -l {language} {src_numbered?-O linenos=table} {encoding?-O encoding={encoding}} {args=}" -endif::[] -endif::basebackend-html[] - -ifdef::basebackend-html4[] -[source-filter-style] -# html4 does not use pygments. -ifeval::["{source-highlighter}"=="source-highlight"] -source-style=template="source-highlight-block",presubs=(),postsubs=("callouts",),posattrs=("style","language","src_numbered","src_tab"),filter="source-highlight -f html -s {language} {src_numbered?--line-number=' '} {src_tab?--tab={src_tab}} {args=}" -endif::[] -ifeval::["{source-highlighter}"=="highlight"] -source-style=template="source-highlight-block",presubs=(),postsubs=("callouts",),posattrs=("style","language","src_numbered","src_tab"),filter="highlight --no-doc --inline-css --out-format=html --syntax={language@python:py:{language}} {src_numbered?--line-number} {src_tab?--tab={src_tab}} {args=}" -endif::[] -endif::basebackend-html4[] - -ifdef::basebackend-docbook[] -[source-filter-style] -source-style=template="source-highlight-block",presubs=(),postsubs=("specialcharacters","callouts"),posattrs=("style","language","src_numbered","src_tab") -endif::basebackend-docbook[] - -######################### -# Source paragraph styles -######################### -[paradef-default] -template::[source-filter-style] - -[paradef-literal] -template::[source-filter-style] - -######################### -# Source block styles -######################### -[blockdef-open] -template::[source-filter-style] - -[blockdef-listing] -template::[source-filter-style] - - -# -# DEPRECATED: Pre 8.2.7 filter definition. -# - -######################### -# Source block definition -######################### -[blockdef-source-highlight] -# The old ^ delimiter is for backward compatibility, may be removed from -# in future versions. -delimiter=(^source~{4,}$)|(^\^{4,}$) -template=source-highlight-block -presubs=none -posattrs=language,src_numbered,src_tab - -ifndef::basebackend-docbook[] -postsubs=callouts -# GNU Source Highlight filter. -filter=source-highlight -f {basebackend-xhtml11?xhtml}{basebackend-html4?html} -s {language} {src_numbered?--line-number} {src_tab?--tab={src_tab}} -endif::basebackend-docbook[] - -ifdef::basebackend-docbook[] -postsubs=specialcharacters,callouts -# In the case of DocBook just pass the listing through and let the DocBook -# toolchain handle it. -filter= -endif::basebackend-docbook[] - -# -# DEPRECATED: End -# |