summaryrefslogtreecommitdiff
path: root/sandbox/code-block-directive/docs/pygments_code_block_directive.py.html
diff options
context:
space:
mode:
authormilde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2007-06-13 10:20:42 +0000
committermilde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2007-06-13 10:20:42 +0000
commit37aec3754971395f373c48f5ca2a2aca4caaed96 (patch)
tree1f892c2dc24ccfe834071bebdda9d512c5497d18 /sandbox/code-block-directive/docs/pygments_code_block_directive.py.html
parent2e5900fc8a1de5348802b8069ed65bb05e424263 (diff)
downloaddocutils-37aec3754971395f373c48f5ca2a2aca4caaed96.tar.gz
Added links to the README file.
self-documenting feature: literal code with syntax highlight Moved the front-end to the base dir. This way it works without installing. git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@5234 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'sandbox/code-block-directive/docs/pygments_code_block_directive.py.html')
-rw-r--r--sandbox/code-block-directive/docs/pygments_code_block_directive.py.html232
1 files changed, 179 insertions, 53 deletions
diff --git a/sandbox/code-block-directive/docs/pygments_code_block_directive.py.html b/sandbox/code-block-directive/docs/pygments_code_block_directive.py.html
index 15af90a8c..ba7364dbe 100644
--- a/sandbox/code-block-directive/docs/pygments_code_block_directive.py.html
+++ b/sandbox/code-block-directive/docs/pygments_code_block_directive.py.html
@@ -6,9 +6,9 @@
<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" />
<title></title>
<meta name="author" content="a Pygments author|contributor; Felix Wiemann; Guenter Milde" />
-<meta name="date" content="$Date$" />
+<meta name="date" content="2007-06-08" />
<meta name="copyright" content="This module has been placed in the public domain." />
-<link rel="stylesheet" href="/usr/lib/python2.4/site-packages/docutils/writers/html4css1/html4css1.css" type="text/css" />
+<link rel="stylesheet" href="../../../../lib/python2.4/site-packages/docutils/writers/html4css1/html4css1.css" type="text/css" />
</head>
<body>
<div class="document">
@@ -19,7 +19,7 @@
<tr><th class="docinfo-name">Author:</th>
<td>a Pygments author|contributor; Felix Wiemann; Guenter Milde</td></tr>
<tr><th class="docinfo-name">Date:</th>
-<td>$Date$</td></tr>
+<td>2007-06-08</td></tr>
<tr><th class="docinfo-name">Copyright:</th>
<td>This module has been placed in the public domain.</td></tr>
</tbody>
@@ -45,92 +45,218 @@ documentation, and a <a class="reference" href="http://article.gmane.org/gmane.t
Use pygments' CSS class names (like the html formatter)
allowing the use of pygments-produced style sheets.</td>
</tr>
+<tr><td>2007-06-07</td>
+<td>Merge in the formatting of the parsed tokens
+(misnamed as docutils_formatter) as class DocutilsInterface</td>
+</tr>
+<tr><td>2007-06-08</td>
+<td>Failsave implementation (fallback to a standard literal block
+if pygments not found)</td>
+</tr>
</tbody>
</table>
+<div class="system-message">
+<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">/usr/src/docutils-svn/sandbox/code-block-directive/pygments_code_block_directive.py.txt</tt>, line 23)</p>
+<p>Unknown directive type &quot;code-block&quot;.</p>
<pre class="literal-block">
-&quot;&quot;&quot;Define and register a code-block directive using pygments
-&quot;&quot;&quot;
+.. code-block::
+
+ &quot;&quot;&quot;Define and register a code-block directive using pygments
+ &quot;&quot;&quot;
+
</pre>
+</div>
<div class="section">
<h1><a id="requirements" name="requirements">Requirements</a></h1>
+<div class="system-message">
+<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">/usr/src/docutils-svn/sandbox/code-block-directive/pygments_code_block_directive.py.txt</tt>, line 31)</p>
+<p>Unknown directive type &quot;code-block&quot;.</p>
<pre class="literal-block">
-from docutils import nodes
-from docutils.parsers.rst import directives
-import pygments
-from pygments.lexers import get_lexer_by_name
-from pygments_docutils_formatter import DocutilsFormatter
+.. code-block::
+
+ from docutils import nodes
+ from docutils.parsers.rst import directives
+ try:
+ import pygments
+ from pygments.lexers import get_lexer_by_name
+ from pygments.formatters.html import _get_ttype_class
+ except ImportError:
+ pass
+
+
+
</pre>
</div>
+</div>
<div class="section">
<h1><a id="customisation" name="customisation">Customisation</a></h1>
<p>Do not insert inline nodes for the following tokens.
(You could add e.g. Token.Punctuation like <tt class="docutils literal"><span class="pre">['',</span> <span class="pre">'p']</span></tt>.)</p>
+<div class="system-message">
+<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">/usr/src/docutils-svn/sandbox/code-block-directive/pygments_code_block_directive.py.txt</tt>, line 50)</p>
+<p>Unknown directive type &quot;code-block&quot;.</p>
<pre class="literal-block">
-unstyled_tokens = ['']
+.. code-block::
+
+ unstyled_tokens = ['']
+
</pre>
</div>
+</div>
+<div class="section">
+<h1><a id="docutilsinterface" name="docutilsinterface">DocutilsInterface</a></h1>
+<p>This interface class combines code from
+pygments.formatters.html and pygments.formatters.others.</p>
+<p>It does not require anything of docutils and could also become a part of
+pygments</p>
+<div class="system-message">
+<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">/usr/src/docutils-svn/sandbox/code-block-directive/pygments_code_block_directive.py.txt</tt>, line 63)</p>
+<p>Unknown directive type &quot;code-block&quot;.</p>
+<pre class="literal-block">
+.. code-block::
+
+ class DocutilsInterface(object):
+ &quot;&quot;&quot;Parse `code` string and yield &quot;classified&quot; tokens.
+
+ Arguments
+
+ code -- string of source code to parse
+ language -- formal language the code is written in.
+
+ Merge subsequent tokens of the same token-type.
+
+ Yields the tokens as ``(ttype_class, value)`` tuples,
+ where ttype_class is taken from pygments.token.STANDARD_TYPES and
+ corresponds to the class argument used in pygments html output.
+
+ &quot;&quot;&quot;
+
+ def __init__(self, code, language):
+ self.code = code
+ self.language = language
+
+ def lex(self):
+ # Get lexer for language (use text as fallback)
+ try:
+ lexer = get_lexer_by_name(self.language)
+ except ValueError:
+ # info: &quot;no pygments lexer for %s, using 'text'&quot;%self.language
+ lexer = get_lexer_by_name('text')
+ return pygments.lex(self.code, lexer)
+
+
+ def join(self, tokens):
+ &quot;&quot;&quot;join subsequent tokens of same token-type
+ &quot;&quot;&quot;
+ tokens = iter(tokens)
+ (lasttype, lastval) = tokens.next()
+ for ttype, value in tokens:
+ if ttype is lasttype:
+ lastval += value
+ else:
+ yield(lasttype, lastval)
+ (lasttype, lastval) = (ttype, value)
+ yield(lasttype, lastval)
+
+ def __iter__(self):
+ &quot;&quot;&quot;parse code string and yield &quot;clasified&quot; tokens
+ &quot;&quot;&quot;
+ try:
+ tokens = self.lex()
+ except IOError:
+ print &quot;INFO: Pygments lexer not found, using fallback&quot;
+ # TODO: write message to INFO
+ yield ('', self.code)
+ return
+
+ for ttype, value in self.join(tokens):
+ yield (_get_ttype_class(ttype), value)
+
+
+
+</pre>
+</div>
+</div>
<div class="section">
<h1><a id="code-block-directive" name="code-block-directive">code_block_directive</a></h1>
+<div class="system-message">
+<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">/usr/src/docutils-svn/sandbox/code-block-directive/pygments_code_block_directive.py.txt</tt>, line 127)</p>
+<p>Unknown directive type &quot;code-block&quot;.</p>
<pre class="literal-block">
-def code_block_directive(name, arguments, options, content, lineno,
- content_offset, block_text, state, state_machine):
- language = arguments[0]
- # create a literal block element and set class argument
- code_block = nodes.literal_block(raw_content=content,
- classes=[&quot;code-block&quot;, language])
- # Get lexer for language (use text as fallback)
- try:
- lexer = get_lexer_by_name(language)
- except ValueError:
- lexer = get_lexer_by_name('text')
-
- # parse content with pygments
- tokens = list(pygments.lex(u'\n'.join(content), lexer))
-
- for cls, value in DocutilsFormatter(tokens):
- if cls in unstyled_tokens:
- # insert as Text to decrease the verbosity of the output.
- code_block += nodes.Text(value, value)
- else:
- code_block += nodes.inline(value, value, classes=[cls])
-
- return [code_block]
+.. code-block::
+
+ def code_block_directive(name, arguments, options, content, lineno,
+ content_offset, block_text, state, state_machine):
+ &quot;&quot;&quot;parse and classify content of a code_block
+ &quot;&quot;&quot;
+ language = arguments[0]
+ # create a literal block element and set class argument
+ code_block = nodes.literal_block(classes=[&quot;code-block&quot;, language])
+
+ # parse content with pygments and add to code_block element
+ for cls, value in DocutilsInterface(u'\n'.join(content), language):
+ if cls in unstyled_tokens:
+ # insert as Text to decrease the verbosity of the output.
+ code_block += nodes.Text(value, value)
+ else:
+ code_block += nodes.inline(value, value, classes=[cls])
+
+ return [code_block]
+
+
</pre>
</div>
+</div>
<div class="section">
<h1><a id="register-directive" name="register-directive">Register Directive</a></h1>
+<div class="system-message">
+<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">/usr/src/docutils-svn/sandbox/code-block-directive/pygments_code_block_directive.py.txt</tt>, line 151)</p>
+<p>Unknown directive type &quot;code-block&quot;.</p>
<pre class="literal-block">
-code_block_directive.arguments = (1, 0, 1)
-code_block_directive.content = 1
-directives.register_directive('code-block', code_block_directive)
+.. code-block::
+
+ code_block_directive.arguments = (1, 0, 1)
+ code_block_directive.content = 1
+ directives.register_directive('code-block', code_block_directive)
+
</pre>
</div>
+</div>
<div class="section">
<h1><a id="test-output" name="test-output">Test output</a></h1>
<p>If called from the command line, call the docutils publisher to render the
-input:</p>
+input</p>
+<div class="system-message">
+<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">/usr/src/docutils-svn/sandbox/code-block-directive/pygments_code_block_directive.py.txt</tt>, line 169)</p>
+<p>Unknown directive type &quot;code-block&quot;.</p>
<pre class="literal-block">
-if __name__ == '__main__':
- from docutils.core import publish_cmdline, default_description
- description = &quot;code-block directive test output&quot; + default_description
- try:
- import locale
- locale.setlocale(locale.LC_ALL, '')
- except:
- pass
- # Uncomment the desired output format:
- publish_cmdline(writer_name='pseudoxml', description=description)
- # publish_cmdline(writer_name='xml', description=description)
- # publish_cmdline(writer_name='html', description=description)
- # publish_cmdline(writer_name='latex', description=description)
- # publish_cmdline(writer_name='newlatex2e', description=description)
+.. code-block::
+
+ if __name__ == '__main__':
+ from docutils.core import publish_cmdline, default_description
+ description = &quot;code-block directive test output&quot; + default_description
+ try:
+ import locale
+ locale.setlocale(locale.LC_ALL, '')
+ except:
+ pass
+ # Uncomment the desired output format:
+ publish_cmdline(writer_name='pseudoxml', description=description)
+ # publish_cmdline(writer_name='xml', description=description)
+ # publish_cmdline(writer_name='html', description=description)
+ # publish_cmdline(writer_name='latex', description=description)
+ # publish_cmdline(writer_name='newlatex2e', description=description)
+
+
+
</pre>
</div>
</div>
+</div>
<div class="footer">
<hr class="footer" />
<a class="reference" href="pygments_code_block_directive.py.txt">View document source</a>.
-Generated on: 2007-06-05.
+Generated on: 2007-06-13.
</div>
</body>