diff options
Diffstat (limited to 'sandbox/code-block-directive/tools')
5 files changed, 528 insertions, 0 deletions
diff --git a/sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py b/sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py new file mode 100644 index 000000000..d3edf4400 --- /dev/null +++ b/sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py @@ -0,0 +1,85 @@ +# Example for syntax highlight with Pygments +# ========================================== +# +# Translate this document to HTML with a pygments enhanced frontend:: +# +# rst2html-pygments --stylesheet=pygments-default.css +# +# or to LaTeX with:: +# +# rst2latex-pygments --stylesheet=pygments-default.sty +# +# to gain syntax highlight in the output. +# +# .. Run the doctests with ``pylit --doctest for-else-test.py``. +# +# +# for-else-test +# ------------- +# +# Test the flow in a `for` loop with `else` statement. +# +# First define a simple `for` loop. +# +# .. code-block:: python + +def loop1(iterable): + """simple for loop with `else` statement""" + for i in iterable: + print i + else: + print "iterable empty" + print "Ende" + +# Now test it: +# +# The first test runs as I expect: iterator empty -> else clause applies: +# +# .. code-block:: pycon +# +# >>> loop1(range(0)) +# iterable empty +# Ende +# +# However, the else clause even runs if the iterator is not empty in the first +# place but after it is "spent": +# +# .. code-block:: pycon +# +# >>> loop1(range(3)) +# 0 +# 1 +# 2 +# iterable empty +# Ende +# +# It seems like the else clause can only be prevented, if we break out of +# the loop. Let's try +# +# .. code-block:: python + +def loop2(iterable): + """for loop with `break` and `else` statement""" + for i in iterable: + print i + break + else: + print "iterable empty" + print "Ende" + +# And indeed, the else clause is skipped after breaking out of the loop: +# +# .. code-block:: pycon +# +# >>> loop2(range(3)) +# 0 +# Ende +# +# The empty iterator runs as expected: +# +# .. code-block:: pycon +# +# >>> loop2(range(0)) +# iterable empty +# Ende +# diff --git a/sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py.htm b/sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py.htm new file mode 100644 index 000000000..1e6057be1 --- /dev/null +++ b/sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py.htm @@ -0,0 +1,185 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> +<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" /> +<title>Example for syntax highlight with Pygments</title> +<style type="text/css"> + +/* Stylesheet for pygments enhanced reStructured Text */ +/* ================================================== */ + +/* :Author: Guenter Milde */ +/* :Copyright: 2007 G. Milde */ +/* This stylesheet is released under the GPL v. 2 or later */ + +/* This stylesheet provides syntax highlight for documents generated with a */ +/* pygments_ enhanced reStructured Text -> html converter. */ + +/* Import the default docutils style sheet */ +/* --------------------------------------- */ +/* :: */ + +@import url("/stylesheets/html4css1.css"); + +/* Indent the code block */ +/* --------------------- */ + +/* Content copied from the `html4css1.css` rule for literal blocks. */ +/* Selector adapted to the output of Pygments_. :: */ + +div.highlight { + margin-left: 2em ; + margin-right: 2em ; + background-color: #eeeeee + } + + +/* Colour code blocks */ +/* ------------------ */ + +/* Pygments_ has an option to generate stylesheets for html and latex. */ +/* The following code is generated with the command */ +/* `pygmentize -S default -f html > pygments-default.css`:: */ + +.c { color: #008800; font-style: italic } /* Comment */ +.err { border: 1px solid #FF0000 } /* Error */ +.k { color: #AA22FF; font-weight: bold } /* Keyword */ +.o { color: #666666 } /* Operator */ +.cm { color: #008800; font-style: italic } /* Comment.Multiline */ +.cp { color: #008800 } /* Comment.Preproc */ +.c1 { color: #008800; font-style: italic } /* Comment.Single */ +.gd { color: #A00000 } /* Generic.Deleted */ +.ge { font-style: italic } /* Generic.Emph */ +.gr { color: #FF0000 } /* Generic.Error */ +.gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.gi { color: #00A000 } /* Generic.Inserted */ +.go { color: #808080 } /* Generic.Output */ +.gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.gs { font-weight: bold } /* Generic.Strong */ +.gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.gt { color: #0040D0 } /* Generic.Traceback */ +.kc { color: #AA22FF; font-weight: bold } /* Keyword.Constant */ +.kd { color: #AA22FF; font-weight: bold } /* Keyword.Declaration */ +.kp { color: #AA22FF } /* Keyword.Pseudo */ +.kr { color: #AA22FF; font-weight: bold } /* Keyword.Reserved */ +.kt { color: #AA22FF; font-weight: bold } /* Keyword.Type */ +.m { color: #666666 } /* Literal.Number */ +.s { color: #BB4444 } /* Literal.String */ +.na { color: #BB4444 } /* Name.Attribute */ +.nb { color: #AA22FF } /* Name.Builtin */ +.nc { color: #0000FF } /* Name.Class */ +.no { color: #880000 } /* Name.Constant */ +.nd { color: #AA22FF } /* Name.Decorator */ +.ni { color: #999999; font-weight: bold } /* Name.Entity */ +.ne { color: #D2413A; font-weight: bold } /* Name.Exception */ +.nf { color: #00A000 } /* Name.Function */ +.nl { color: #A0A000 } /* Name.Label */ +.nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.nt { color: #008000; font-weight: bold } /* Name.Tag */ +.nv { color: #B8860B } /* Name.Variable */ +.ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.mf { color: #666666 } /* Literal.Number.Float */ +.mh { color: #666666 } /* Literal.Number.Hex */ +.mi { color: #666666 } /* Literal.Number.Integer */ +.mo { color: #666666 } /* Literal.Number.Oct */ +.sb { color: #BB4444 } /* Literal.String.Backtick */ +.sc { color: #BB4444 } /* Literal.String.Char */ +.sd { color: #BB4444; font-style: italic } /* Literal.String.Doc */ +.s2 { color: #BB4444 } /* Literal.String.Double */ +.se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ +.sh { color: #BB4444 } /* Literal.String.Heredoc */ +.si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ +.sx { color: #008000 } /* Literal.String.Other */ +.sr { color: #BB6688 } /* Literal.String.Regex */ +.s1 { color: #BB4444 } /* Literal.String.Single */ +.ss { color: #B8860B } /* Literal.String.Symbol */ +.bp { color: #AA22FF } /* Name.Builtin.Pseudo */ +.vc { color: #B8860B } /* Name.Variable.Class */ +.vg { color: #B8860B } /* Name.Variable.Global */ +.vi { color: #B8860B } /* Name.Variable.Instance */ +.il { color: #666666 } /* Literal.Number.Integer.Long */ + +/* .. _pygments: http://pygments.org/ */ + +</style> +</head> +<body> +<div class="document" id="example-for-syntax-highlight-with-pygments"> +<h1 class="title">Example for syntax highlight with Pygments</h1> +<p>Translate this document to HTML with a pygments enhanced frontend:</p> +<pre class="literal-block"> +rst2html-pygments --stylesheet=pygments-default.css +</pre> +<p>or to LaTeX with:</p> +<pre class="literal-block"> +rst2latex-pygments --stylesheet=pygments-default.sty +</pre> +<p>to gain syntax highlight in the output.</p> +<p>Convert between text <-> code source formats with:</p> +<pre class="literal-block"> +pylit --code-block-marker='.. code-block:: python' +</pre> +<p>Run the doctests with:</p> +<pre class="literal-block"> +pylit --doctest for-else-test.py +</pre> +<div class="section"> +<h1><a id="for-else-test" name="for-else-test">for-else-test</a></h1> +<p>Test the flow in a <cite>for</cite> loop with <cite>else</cite> statement.</p> +<p>First define a simple <cite>for</cite> loop.</p> +<div class="highlight"><pre><span class="k">def</span> <span class="nf">loop1</span><span class="p">(</span><span class="n">iterable</span><span class="p">):</span> + <span class="sd">"""simple for loop with `else` statement"""</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">iterable</span><span class="p">:</span> + <span class="k">print</span> <span class="n">i</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">print</span> <span class="s">"iterable empty"</span> + <span class="k">print</span> <span class="s">"Ende"</span> +</pre></div> +<p>Now test it:</p> +<p>The first test runs as I expect: iterator empty -> else clause applies:</p> +<div class="highlight"><pre><span class="gp">>>> </span><span class="nb">execfile</span><span class="p">(</span><span class="s">'for-else-test.py'</span><span class="p">)</span> +<span class="gp">>>> </span><span class="n">loop1</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">))</span> +<span class="go">iterable empty</span> +<span class="go">Ende</span> +</pre></div> +<p>However, the else clause even runs if the iterator is not empty in the first +place but after it is "spent":</p> +<div class="highlight"><pre><span class="gp">>>> </span><span class="n">loop1</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">3</span><span class="p">))</span> +<span class="go">0</span> +<span class="go">1</span> +<span class="go">2</span> +<span class="go">iterable empty</span> +<span class="go">Ende</span> +</pre></div> +<p>It seems like the else clause can only be prevented, if we break out of +the loop. Let's try</p> +<div class="highlight"><pre><span class="k">def</span> <span class="nf">loop2</span><span class="p">(</span><span class="n">iterable</span><span class="p">):</span> + <span class="sd">"""for loop with `break` and `else` statement"""</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">iterable</span><span class="p">:</span> + <span class="k">print</span> <span class="n">i</span> + <span class="k">break</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">print</span> <span class="s">"iterable empty"</span> + <span class="k">print</span> <span class="s">"Ende"</span> +</pre></div> +<p>And indeed, the else clause is skipped after breaking out of the loop:</p> +<div class="highlight"><pre><span class="gp">>>> </span><span class="n">loop2</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">3</span><span class="p">))</span> +<span class="go">0</span> +<span class="go">Ende</span> +</pre></div> +<p>The empty iterator runs as expected:</p> +<div class="highlight"><pre><span class="gp">>>> </span><span class="n">loop2</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">))</span> +<span class="go">iterable empty</span> +<span class="go">Ende</span> +</pre></div> +</div> +</div> +<div class="footer"> +<hr class="footer" /> +Generated on: 2007-06-21. + +</div> +</body> +</html> diff --git a/sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py.pdf b/sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py.pdf Binary files differnew file mode 100644 index 000000000..b8e63b5e8 --- /dev/null +++ b/sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py.pdf diff --git a/sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py.tex b/sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py.tex new file mode 100644 index 000000000..b664d4865 --- /dev/null +++ b/sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py.tex @@ -0,0 +1,166 @@ +\documentclass[10pt,a4paper,english]{article} +\usepackage{babel} +\usepackage{ae} +\usepackage{aeguill} +\usepackage{shortvrb} +\usepackage[latin1]{inputenc} +\usepackage{tabularx} +\usepackage{longtable} +\setlength{\extrarowheight}{2pt} +\usepackage{amsmath} +\usepackage{graphicx} +\usepackage{color} +\usepackage{multirow} +\usepackage{ifthen} +\usepackage[colorlinks=true,linkcolor=blue,urlcolor=blue]{hyperref} +\usepackage[DIV12]{typearea} +%% generator Docutils: http://docutils.sourceforge.net/ +\newlength{\admonitionwidth} +\setlength{\admonitionwidth}{0.9\textwidth} +\newlength{\docinfowidth} +\setlength{\docinfowidth}{0.9\textwidth} +\newlength{\locallinewidth} +\newcommand{\optionlistlabel}[1]{\bf #1 \hfill} +\newenvironment{optionlist}[1] +{\begin{list}{} + {\setlength{\labelwidth}{#1} + \setlength{\rightmargin}{1cm} + \setlength{\leftmargin}{\rightmargin} + \addtolength{\leftmargin}{\labelwidth} + \addtolength{\leftmargin}{\labelsep} + \renewcommand{\makelabel}{\optionlistlabel}} +}{\end{list}} +\newlength{\lineblockindentation} +\setlength{\lineblockindentation}{2.5em} +\newenvironment{lineblock}[1] +{\begin{list}{} + {\setlength{\partopsep}{\parskip} + \addtolength{\partopsep}{\baselineskip} + \topsep0pt\itemsep0.15\baselineskip\parsep0pt + \leftmargin#1} + \raggedright} +{\end{list}} +% begin: floats for footnotes tweaking. +\setlength{\floatsep}{0.5em} +\setlength{\textfloatsep}{\fill} +\addtolength{\textfloatsep}{3em} +\renewcommand{\textfraction}{0.5} +\renewcommand{\topfraction}{0.5} +\renewcommand{\bottomfraction}{0.5} +\setcounter{totalnumber}{50} +\setcounter{topnumber}{50} +\setcounter{bottomnumber}{50} +% end floats for footnotes +% some commands, that could be overwritten in the style file. +\newcommand{\rubric}[1]{\subsection*{~\hfill {\it #1} \hfill ~}} +\newcommand{\titlereference}[1]{\textsl{#1}} +% end of "some commands" +\input{pygments-default.sty} +\title{Example for syntax highlight with Pygments} +\author{} +\date{} +\hypersetup{ +pdftitle={Example for syntax highlight with Pygments} +} +\raggedbottom +\begin{document} +\maketitle + + +\setlength{\locallinewidth}{\linewidth} +% # -*- rst-mode -*- + +Translate this document to HTML with a pygments enhanced frontend: +\begin{quote}{\ttfamily \raggedright \noindent +rst2html-pygments~-{}-stylesheet=pygments-default.css +}\end{quote} + +or to LaTeX with: +\begin{quote}{\ttfamily \raggedright \noindent +rst2latex-pygments~-{}-stylesheet=pygments-default.sty +}\end{quote} + +to gain syntax highlight in the output. +% Run the doctests with ``pylit --doctest for-else-test.py``. + + +%___________________________________________________________________________ + +\hypertarget{for-else-test}{} +\pdfbookmark[0]{for-else-test}{for-else-test} +\section*{for-else-test} + +Test the flow in a \titlereference{for} loop with \titlereference{else} statement. + +First define a simple \titlereference{for} loop. +\begin{Verbatim}[commandchars=@\[\]] +@Cax[def] @CaJ[loop1](iterable): + @Car["""simple for loop with `else` statement"""] + @Cax[for] i @Cam[in] iterable: + @Cax[print] i + @Cax[else]: + @Cax[print] @Cad["]@Cad[iterable empty]@Cad["] + @Cax[print] @Cad["]@Cad[Ende]@Cad["] + +\end{Verbatim} + +Now test it: + +The first test runs as I expect: iterator empty -{\textgreater} else clause applies: +\begin{Verbatim}[commandchars=@\[\]] +@CaN[>>> ]loop1(@CaW[range](@Cag[0])) +@Caa[iterable empty] +@Caa[Ende] + +\end{Verbatim} + +However, the else clause even runs if the iterator is not empty in the first +place but after it is ``spent'': +\begin{Verbatim}[commandchars=@\[\]] +@CaN[>>> ]loop1(@CaW[range](@Cag[3])) +@Caa[0] +@Caa[1] +@Caa[2] +@Caa[iterable empty] +@Caa[Ende] + +\end{Verbatim} + +It seems like the else clause can only be prevented, if we break out of +the loop. Let's try +\begin{Verbatim}[commandchars=@\[\]] +@Cax[def] @CaJ[loop2](iterable): + @Car["""for loop with `break` and `else` statement"""] + @Cax[for] i @Cam[in] iterable: + @Cax[print] i + @Cax[break] + @Cax[else]: + @Cax[print] @Cad["]@Cad[iterable empty]@Cad["] + @Cax[print] @Cad["]@Cad[Ende]@Cad["] + +\end{Verbatim} + +And indeed, the else clause is skipped after breaking out of the loop: +\begin{Verbatim}[commandchars=@\[\]] +@CaN[>>> ]loop2(@CaW[range](@Cag[3])) +@Caa[0] +@Caa[Ende] + +\end{Verbatim} + +The empty iterator runs as expected: +\begin{Verbatim}[commandchars=@\[\]] +@CaN[>>> ]loop2(@CaW[range](@Cag[0])) +@Caa[iterable empty] +@Caa[Ende] + +\end{Verbatim} + +\begin{center}\small + +Generated on: 2007-04-24. + + +\end{center} + +\end{document} diff --git a/sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py.txt b/sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py.txt new file mode 100644 index 000000000..d9687ecd5 --- /dev/null +++ b/sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py.txt @@ -0,0 +1,92 @@ +Example for syntax highlight with Pygments +========================================== + +Translate this document to HTML with a pygments enhanced frontend:: + + rst2html-pygments --stylesheet=pygments-default.css + +or to LaTeX with:: + + rst2latex-pygments --stylesheet=pygments-default.sty + +to gain syntax highlight in the output. + +Convert between text <-> code source formats with:: + + pylit --code-block-marker='.. code-block:: python' + +Run the doctests with:: + + pylit --doctest for-else-test.py + + +for-else-test +------------- + +Test the flow in a `for` loop with `else` statement. + +First define a simple `for` loop. + +.. code-block:: python + + def loop1(iterable): + """simple for loop with `else` statement""" + for i in iterable: + print i + else: + print "iterable empty" + print "Ende" + +Now test it: + +The first test runs as I expect: iterator empty -> else clause applies: + +.. code-block:: pycon + + >>> execfile('for-else-test.py') + >>> loop1(range(0)) + iterable empty + Ende + +However, the else clause even runs if the iterator is not empty in the first +place but after it is "spent": + +.. code-block:: pycon + + >>> loop1(range(3)) + 0 + 1 + 2 + iterable empty + Ende + +It seems like the else clause can only be prevented, if we break out of +the loop. Let's try + +.. code-block:: python + + def loop2(iterable): + """for loop with `break` and `else` statement""" + for i in iterable: + print i + break + else: + print "iterable empty" + print "Ende" + +And indeed, the else clause is skipped after breaking out of the loop: + +.. code-block:: pycon + + >>> loop2(range(3)) + 0 + Ende + +The empty iterator runs as expected: + +.. code-block:: pycon + + >>> loop2(range(0)) + iterable empty + Ende + |