summaryrefslogtreecommitdiff
path: root/sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py
diff options
context:
space:
mode:
authormilde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2007-10-22 09:56:40 +0000
committermilde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2007-10-22 09:56:40 +0000
commit4a33f10b2bc9eadd02c4538d126d0076e591bfbd (patch)
tree0dcb9c9a28866555ac32e1c4d367293b86ef3170 /sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py
parentf81238ff65e7885ba3eadecedf3c263961be2bbf (diff)
downloaddocutils-4a33f10b2bc9eadd02c4538d126d0076e591bfbd.tar.gz
move example files for "legacy" implementation
git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@5460 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py')
-rw-r--r--sandbox/code-block-directive/tools/pygments-enhanced-front-ends/for-else-test.py85
1 files changed, 85 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
+#