[Checkins] SVN: zope.structuredtext/trunk/ Output valid html

Laurence Rowe l at lrowe.co.uk
Tue Mar 31 14:42:09 EDT 2009


Log message for revision 98715:
  Output valid html

Changed:
  U   zope.structuredtext/trunk/CHANGES.txt
  U   zope.structuredtext/trunk/buildout.cfg
  A   zope.structuredtext/trunk/convert.py
  U   zope.structuredtext/trunk/setup.py
  U   zope.structuredtext/trunk/src/zope/structuredtext/html.py
  U   zope.structuredtext/trunk/src/zope/structuredtext/regressions/Acquisition.ref
  U   zope.structuredtext/trunk/src/zope/structuredtext/regressions/ExtensionClass.ref
  U   zope.structuredtext/trunk/src/zope/structuredtext/regressions/InnerLinks.ref
  U   zope.structuredtext/trunk/src/zope/structuredtext/regressions/Links.ref
  U   zope.structuredtext/trunk/src/zope/structuredtext/regressions/MultiMapping.ref
  U   zope.structuredtext/trunk/src/zope/structuredtext/regressions/examples.ref
  U   zope.structuredtext/trunk/src/zope/structuredtext/regressions/examples1.ref
  U   zope.structuredtext/trunk/src/zope/structuredtext/regressions/index.ref
  U   zope.structuredtext/trunk/src/zope/structuredtext/regressions/table.ref

-=-
Modified: zope.structuredtext/trunk/CHANGES.txt
===================================================================
--- zope.structuredtext/trunk/CHANGES.txt	2009-03-31 18:26:09 UTC (rev 98714)
+++ zope.structuredtext/trunk/CHANGES.txt	2009-03-31 18:42:08 UTC (rev 98715)
@@ -1,6 +1,11 @@
 Change History
 ==============
 
+3.5.0 (unreleased)
+------------------
+
+Output valid html
+
 3.4.0 (2007/09/01)
 ------------------
 

Modified: zope.structuredtext/trunk/buildout.cfg
===================================================================
--- zope.structuredtext/trunk/buildout.cfg	2009-03-31 18:26:09 UTC (rev 98714)
+++ zope.structuredtext/trunk/buildout.cfg	2009-03-31 18:42:08 UTC (rev 98715)
@@ -1,7 +1,12 @@
 [buildout]
 develop = .
-parts = test
+parts = test py
 
 [test]
 recipe = zc.recipe.testrunner
 eggs = zope.structuredtext
+
+[py]
+recipe = zc.recipe.egg
+eggs = zope.structuredtext
+interpreter = py

Added: zope.structuredtext/trunk/convert.py
===================================================================
--- zope.structuredtext/trunk/convert.py	                        (rev 0)
+++ zope.structuredtext/trunk/convert.py	2009-03-31 18:42:08 UTC (rev 98715)
@@ -0,0 +1,16 @@
+"""Utility to convert stx to html
+"""
+
+import sys
+from zope.structuredtext import stng
+from zope.structuredtext.document import Document
+from zope.structuredtext.html import HTML
+
+def convert(raw_text):
+    doc = stng.structurize(raw_text)
+    doc = Document()(doc)
+    return HTML()(doc)
+
+if __name__ == '__main__':
+    fname = sys.argv[1]
+    print convert(open(fname).read())

Modified: zope.structuredtext/trunk/setup.py
===================================================================
--- zope.structuredtext/trunk/setup.py	2009-03-31 18:26:09 UTC (rev 98714)
+++ zope.structuredtext/trunk/setup.py	2009-03-31 18:42:08 UTC (rev 98715)
@@ -39,7 +39,7 @@
 
 setup(
     name='zope.structuredtext',
-    version = '3.4.1dev',
+    version = '3.5.0dev',
     url='http://pypi.python.org/pypi/zope.structuredtext',
     author='Zope Corporation and Contributors',
     author_email='zope3-dev at zope.org',

Modified: zope.structuredtext/trunk/src/zope/structuredtext/html.py
===================================================================
--- zope.structuredtext/trunk/src/zope/structuredtext/html.py	2009-03-31 18:26:09 UTC (rev 98714)
+++ zope.structuredtext/trunk/src/zope/structuredtext/html.py	2009-03-31 18:42:08 UTC (rev 98715)
@@ -22,8 +22,21 @@
 
 class HTML:
 
-    element_types = {
+    paragraph_nestable = {
         '#text': '_text',
+        'StructuredTextLiteral': 'literal',
+        'StructuredTextEmphasis': 'emphasis',
+        'StructuredTextStrong': 'strong',
+        'StructuredTextLink': 'link',
+        'StructuredTextXref': 'xref',
+        'StructuredTextInnerLink':'innerLink',
+        'StructuredTextNamedLink':'namedLink',
+        'StructuredTextUnderline':'underline',
+        'StructuredTextSGML':'sgml', # this might or might not be valid
+        }
+
+    element_types = paragraph_nestable.copy()
+    element_types.update({
         'StructuredTextDocument': 'document',
         'StructuredTextParagraph': 'paragraph',
         'StructuredTextExample': 'example',
@@ -34,19 +47,9 @@
         'StructuredTextDescriptionBody': 'descriptionBody',
         'StructuredTextSection': 'section',
         'StructuredTextSectionTitle': 'sectionTitle',
-        'StructuredTextLiteral': 'literal',
-        'StructuredTextEmphasis': 'emphasis',
-        'StructuredTextStrong': 'strong',
-        'StructuredTextLink': 'link',
-        'StructuredTextXref': 'xref',
-        'StructuredTextInnerLink':'innerLink',
-        'StructuredTextNamedLink':'namedLink',
-        'StructuredTextUnderline':'underline',
         'StructuredTextTable':'table',
-        'StructuredTextSGML':'sgml',
-        }
+        })
 
-
     def dispatch(self, doc, level, output):
         getattr(self, self.element_types[doc.getNodeName()])(doc, level, output)
 
@@ -147,14 +150,18 @@
 
     def paragraph(self, doc, level, output):
         output('<p>')
+        in_p = True
         for c in doc.getChildNodes():
-            if c.getNodeName() in ['StructuredTextParagraph']:
-                getattr(self, self.element_types[c.getNodeName()])(
-                    c, level, output)
+            if c.getNodeName() in self.paragraph_nestable:
+                if not in_p:
+                    output('<p>')
+                self.dispatch(c, level, output)
             else:
-                getattr(self, self.element_types[c.getNodeName()])(
-                    c, level, output)
-        output('</p>\n')
+                output('</p>\n')
+                in_p = False
+                self.dispatch(c, level, output)
+        if in_p:
+            output('</p>\n')
 
     def link(self, doc, level, output):
         output('<a href="%s">' % doc.href)
@@ -242,7 +249,10 @@
 
 class HTMLWithImages(HTML):
 
-    element_types = HTML.element_types
+    paragraph_nestable = HTML.paragraph_nestable.copy()
+    paragraph_nestable.update({'StructuredTextImage': 'image'})
+    
+    element_types = HTML.element_types.copy()
     element_types.update({'StructuredTextImage': 'image'})
 
     def image(self, doc, level, output):

Modified: zope.structuredtext/trunk/src/zope/structuredtext/regressions/Acquisition.ref
===================================================================
--- zope.structuredtext/trunk/src/zope/structuredtext/regressions/Acquisition.ref	2009-03-31 18:26:09 UTC (rev 98714)
+++ zope.structuredtext/trunk/src/zope/structuredtext/regressions/Acquisition.ref	2009-03-31 18:42:08 UTC (rev 98715)
@@ -13,7 +13,8 @@
   extension base classes that can be used to add acquisition as a
   feature to extension subclasses.  These mix-in classes use the
   context-wrapping feature of ExtensionClasses to implement
-  acquisition. Consider the following example:
+  acquisition. Consider the following example:</p>
+
 <pre>
     import ExtensionClass, Acquisition
 
@@ -39,7 +40,6 @@
 
     a.report() # raises an attribute error
 </pre>
-</p>
 <p>  The class <code>A</code> inherits acquisition behavior from
   <code>Acquisition.Implicit</code>.  The object, <code>a</code>, "has" the color of
   objects <code>c</code> and <code>d</code> when it is accessed through them, but it
@@ -56,21 +56,21 @@
     cannot be found in <code>a</code>.</p>
 <p>    Aquisition wrappers provide access to the wrapped objects
     through the attributes <code>aq_parent</code>, <code>aq_self</code>, <code>aq_base</code>.  
-    In the example above, the expressions:
+    In the example above, the expressions:</p>
+
 <pre>
        'c.a.aq_parent is c'
 </pre>
-</p>
-<p>    and:
+<p>    and:</p>
+
 <pre>
        'c.a.aq_self is a'
 </pre>
-</p>
-<p>    both evaluate to true, but the expression:
+<p>    both evaluate to true, but the expression:</p>
+
 <pre>
        'c.a is a'
 </pre>
-</p>
 <p>    evaluates to false, because the expression <code>c.a</code> evaluates
     to an acquisition wrapper around <code>c</code> and <code>a</code>, not <code>a</code> itself.</p>
 <p>    The attribute <code>aq_base</code> is similar to <code>aq_self</code>.  Wrappers may be
@@ -91,11 +91,11 @@
 <h3>    Explicit Acquisition</h3>
 <p>      When explicit acquisition is used, attributes are not
       automatically obtained from the environment.  Instead, the
-      method <code>aq_aquire</code> must be used, as in:
+      method <code>aq_aquire</code> must be used, as in:</p>
+
 <pre>
         print c.a.aq_acquire('color')
 </pre>
-</p>
 <p>      To support explicit acquisition, an object should inherit
       from the mix-in class <code>Acquisition.Explicit</code>.</p>
 <h3>    Controlled Acquisition</h3>
@@ -107,7 +107,8 @@
 <li>setting all attributes that should be acquired to the special
         value: <code>Acquisition.Acquired</code>.  Setting an attribute to this
         value also allows inherited attributes to be overridden with
-        acquired ones.<p>        For example, in:
+        acquired ones.<p>        For example, in:</p>
+
 <pre>
           class C(Acquisition.Explicit):
              id=1
@@ -115,7 +116,6 @@
              color=Acquisition.Acquired
              __roles__=Acquisition.Acquired
 </pre>
-</p>
 <p>        The <em>only</em> attributes that are automatically acquired from
         containing objects are <code>color</code>, and <code>__roles__</code>.  Note also
         that the <code>__roles__</code> attribute is acquired even though it's
@@ -145,7 +145,8 @@
 </ul>
 <p>      If the filter returns a true object that the object found is
       returned, otherwise, the acquisition search continues.</p>
-<p>      For example, in:
+<p>      For example, in:</p>
+
 <pre>
         from Acquisition import Explicit
 
@@ -174,15 +175,14 @@
 
         print a.b.c.aq_acquire('p', find_nice)
 </pre>
-</p>
 <p>      The filtered acquisition in the last line skips over the first
       attribute it finds with the name <code>p</code>, because the attribute
       doesn't satisfy the condition given in the filter. The output of
-      the last line is:
+      the last line is:</p>
+
 <pre>
         spam(Nice) and I am nice!
 </pre>
-</p>
 <h2>  Acquisition and methods</h2>
 <p>    Python methods of objects that support acquisition can use
     acquired attributes as in the <code>report</code> method of the first example
@@ -196,7 +196,8 @@
     this time.  This is because wrapper objects do not conform to the
     data structures expected by these methods.</p>
 <h2>  Acquiring Acquiring objects</h2>
-<p>    Consider the following example:
+<p>    Consider the following example:</p>
+
 <pre>
       from Acquisition import Implicit
 
@@ -216,7 +217,6 @@
 
       o=a.b.c.x
 </pre>
-</p>
 <p>    The expression <code>o.color</code> might be expected to return <code>"red"</code>. In
     earlier versions of ExtensionClass, however, this expression
     failed.  Acquired acquiring objects did not acquire from the

Modified: zope.structuredtext/trunk/src/zope/structuredtext/regressions/ExtensionClass.ref
===================================================================
--- zope.structuredtext/trunk/src/zope/structuredtext/regressions/ExtensionClass.ref	2009-03-31 18:26:09 UTC (rev 98714)
+++ zope.structuredtext/trunk/src/zope/structuredtext/regressions/ExtensionClass.ref	2009-03-31 18:42:08 UTC (rev 98715)
@@ -251,18 +251,19 @@
 
 </ul>
 <p>      where <code>name</code> is the module name and <code>type</code> is the extension class
-      type object.<h2>    Attribute lookup</h2>
+      type object.</p>
+<h2>    Attribute lookup</h2>
 <p>      Attribute lookup is performed by calling the base extension class
       <code>getattr</code> operation for the base extension class that includes C
       data, or for the first base extension class, if none of the base
       extension classes include C data.  <code>ExtensionClass.h</code> defines a
       macro <code>Py_FindAttrString</code> that can be used to find an object's
       attributes that are stored in the object's instance dictionary or
-      in the object's class or base classes:
+      in the object's class or base classes:</p>
+
 <pre>
          v = Py_FindAttrString(self,name);
 </pre>
-</p>
 <p>      where <code>name</code> is a C string containing the attribute name.</p>
 <p>      In addition, a macro is provided that replaces <code>Py_FindMethod</code>
       calls with logic to perform the same sort of lookup that is
@@ -270,6 +271,7 @@
 <p>      If an attribute name is contained in a Python string object,
       rather than a C string object, then the macro <code>Py_FindAttr</code> should
       be used to look up an attribute value.</p>
+</p>
 <h2>    Linking</h2>
 <p>      The extension class mechanism was designed to be useful with
       dynamically linked extension modules.  Modules that implement
@@ -277,10 +279,10 @@
       class library.  The macro <code>PyExtensionClass_Export</code> imports the
       <code>ExtensionClass</code> module and uses objects imported from this module
       to initialize an extension class with necessary behavior.</p>
+</p>
 <h2>    Example: MultiMapping objects</h2>
 <p>      An <a href="MultiMapping.html">example</a>, is provided that illustrates the
       changes needed to convert an existing type to an ExtensionClass.</p>
-</p>
 <h2>  Implementing base extension class constructors</h2>
 <p>    Some care should be taken when implementing or overriding base
     class constructors.  When a Python class overrides a base class
@@ -300,7 +302,8 @@
     This was not done above to simplify the example.</p>
 <h2>  Overriding methods inherited from Python base classes</h2>
 <p>    A problem occurs when trying to overide methods inherited from
-    Python base classes.  Consider the following example:
+    Python base classes.  Consider the following example:</p>
+
 <pre>
       from ExtensionClass import Base
 
@@ -315,7 +318,6 @@
           Spam.__init__(self,name)
           self.favorite_color=favorite_color
 </pre>
-</p>
 <p>    This implementation will fail when an <code>ECSpam</code> object is
     instantiated.  The problem is that <code>ECSpam.__init__</code> calls
     <code>Spam.__init__</code>, and <code>Spam.__init__</code> can only be called with a
@@ -326,7 +328,8 @@
     <code>inheritedAttribute</code> that can be used to obtain an inherited
     attribute that is suitable for calling with an extension class
     instance.  Using the <code>inheritedAttribute</code> method, the above
-    example can be rewritten as:
+    example can be rewritten as:</p>
+
 <pre>
       from ExtensionClass import Base
 
@@ -341,7 +344,6 @@
           ECSpam.inheritedAttribute('__init__')(self,name)
           self.favorite_color=favorite_color
 </pre>
-</p>
 <p>    This isn't as pretty but does provide the desired result.</p>
 <h2>  New class and instance semantics</h2>
 <h3>    Context Wrapping</h3>
@@ -370,7 +372,8 @@
         extension class that defines an <code>__of__</code> method, then when the
         attribute is accessed through an instance, it's <code>__of__</code> method
         will be called to create a bound method.</p>
-<p>        Consider the following example:
+<p>        Consider the following example:</p>
+
 <pre>
           import ExtensionClass
 
@@ -393,7 +396,6 @@
           x=bar()
           hi=x.hi()
 </pre>
-</p>
 <p>        Note that <code>ExtensionClass.Base</code> is a base extension class that
         provides very basic ExtensionClass behavior. </p>
 <p>        When run, this program outputs: <code>a bar was called</code>.</p>
@@ -408,17 +410,19 @@
         computed attributes. First, we define a ComputedAttribute
         class.  a ComputedAttribute is constructed with a function to
         be used to compute an attribute, and calls the function when
-        it's <code>__of__</code> method is called:<p>          import ExtensionClass</p>
+        it's <code>__of__</code> method is called:</p>
+<p>          import ExtensionClass</p>
+</p>
 <h5>          class ComputedAttribute(ExtensionClass.Base):</h5>
 <p>            def __init__(self, func): self.func=func</p>
 <p>            def __of__(self, parent): return self.func(parent)</p>
+<p>        Then we can use this class to create computed attributes.  In the
+        example below, we create a computed attribute, 'radius':</p>
+<p>          from math import sqrt</p>
 </p>
-<p>        Then we can use this class to create computed attributes.  In the
-        example below, we create a computed attribute, 'radius':<p>          from math import sqrt</p>
 <h5>          class Point(ExtensionClass.Base):</h5>
 <p>            def __init__(self, x, y): self.x, self.y = x, y</p>
 <p>            radius=ComputedAttribute(lambda self: sqrt(self.x<strong>2+self.y</strong>2))</p>
-</p>
 <h5>        which we can use just like an ordinary attribute:</h5>
 <p>          p=Point(2,2)
           print p.radius</p>
@@ -450,7 +454,8 @@
 <h3>    Method attributes</h3>
 <p>      Methods of ExtensionClass instances can have user-defined
       attributes, which are stored in their associated instances.</p>
-<p>      For example:
+<p>      For example:</p>
+
 <pre>
         class C(ExtensionClass.Base):
 
@@ -467,7 +472,6 @@
 
         print C.f.__roles__ # fails, unbound method
 </pre>
-</p>
 <p>      A bound method attribute is set by setting an attribute in it's
       instance with a name consisting of the concatination of the
       method's <code>__name__</code> attribute and the attribute name.
@@ -581,16 +585,18 @@
     Synchonized classes have also been used in recent products.</p>
 <h2>  Summary</h2>
 <p>    The extension-class mechanism described here provides a way to add
-    class services to extension types.  It allows:
+    class services to extension types.  It allows:</p>
+
 <ul>
 <li>Sub-classing extension classes in Python,</li>
+</p>
 <li>Construction of extension class instances by calling extension
         classes,</li>
+</p>
 <li>Extension classes to provide meta-data, such as unbound methods
         and their documentation string.</li>
 
 </ul>
-</p>
 <p>    In addition, the extension class module provides a relatively
     concise example of the use of mechanisms that were added to Python
     to support MESS <a href="#ref6">[6]</a>, and that were described at the fourth Python

Modified: zope.structuredtext/trunk/src/zope/structuredtext/regressions/InnerLinks.ref
===================================================================
--- zope.structuredtext/trunk/src/zope/structuredtext/regressions/InnerLinks.ref	2009-03-31 18:26:09 UTC (rev 98714)
+++ zope.structuredtext/trunk/src/zope/structuredtext/regressions/InnerLinks.ref	2009-03-31 18:42:08 UTC (rev 98715)
@@ -9,3 +9,4 @@
 <p>  <a name="ref2">[2]</a> "Python Book" by Guido van Rossum</p>
 </body>
 </html>
+

Modified: zope.structuredtext/trunk/src/zope/structuredtext/regressions/Links.ref
===================================================================
--- zope.structuredtext/trunk/src/zope/structuredtext/regressions/Links.ref	2009-03-31 18:26:09 UTC (rev 98714)
+++ zope.structuredtext/trunk/src/zope/structuredtext/regressions/Links.ref	2009-03-31 18:42:08 UTC (rev 98715)
@@ -21,3 +21,4 @@
   <a href="http://www.zope-is-kewl.com">Link 2</a>  and <a href="http://www.freshmeat.net">one more link - yeah.</a></p>
 </body>
 </html>
+

Modified: zope.structuredtext/trunk/src/zope/structuredtext/regressions/MultiMapping.ref
===================================================================
--- zope.structuredtext/trunk/src/zope/structuredtext/regressions/MultiMapping.ref	2009-03-31 18:26:09 UTC (rev 98714)
+++ zope.structuredtext/trunk/src/zope/structuredtext/regressions/MultiMapping.ref	2009-03-31 18:42:08 UTC (rev 98715)
@@ -11,7 +11,8 @@
   object, the encapsulated mapping objects are searched until an
   object is found.</p>
 <p>  Consider an implementation of a MultiMapping extension type,
-  without use of the extension class mechanism:
+  without use of the extension class mechanism:</p>
+
 <pre>
     #include "Python.h"
 
@@ -170,7 +171,6 @@
            Py_FatalError("can't initialize module MultiMapping");
     }
 </pre>
-</p>
 <p>  This module defines an extension type, <code>MultiMapping</code>, and exports a
   module function, <code>MultiMapping</code>, that creates <code>MultiMapping</code>
   Instances. The type provides two methods, <code>push</code>, and <code>pop</code>, for
@@ -179,7 +179,8 @@
   and subscript operators but not mapping a subscript assignment
   operator.</p>
 <p>  Now consider an extension class implementation of MultiMapping
-  objects:
+  objects:</p>
+
 <pre>
     #include "Python.h"
     #include "ExtensionClass.h"
@@ -360,23 +361,23 @@
            Py_FatalError("can't initialize module MultiMapping");
     }
 </pre>
-</p>
 <p>  This version includes <code>ExtensionClass.h</code>.  The two declarations of
   <code>MMtype</code> have been changed from <code>PyTypeObject</code> to <code>PyExtensionClass</code>.
   The <code>METHOD_CHAIN</code> macro has been used to add methods to the end of
   the definition for <code>MMtype</code>.  The module function, newMMobject has
   been replaced by the <code>MMtype</code> method, <code>MM__init__</code>.  Note that this
-  method does not create or return a new object.  Finally, the lines:
+  method does not create or return a new object.  Finally, the lines:</p>
+
 <pre>
     d = PyModule_GetDict(m);
     PyExtensionClass_Export(d,"MultiMapping",MMtype);
 </pre>
-</p>
 <p>  Have been added to both initialize the extension class and to export
   it in the module dictionary.</p>
 <p>  To use this module, compile, link, and import it as with any other
   extension module.  The following python code illustrates the
-  module's use:
+  module's use:</p>
+
 <pre>
     from MultiMapping import MultiMapping
     m=MultiMapping()
@@ -387,13 +388,13 @@
     m['ham']  # returns 4
     m['foo']  # raises a key error
 </pre>
-</p>
 <p>  Creating the <code>MultiMapping</code> object took three steps, one to create
   an empty <code>MultiMapping</code>, and two to add mapping objects to it.  We
   might wish to simplify the process of creating MultiMapping
   objects by providing a constructor that takes source mapping
   objects as parameters.  We can do this by sub-classing MultiMapping
-  in Python:
+  in Python:</p>
+
 <pre>
     from MultiMapping import MultiMapping
     class ExtendedMultiMapping(MultiMapping):
@@ -407,9 +408,9 @@
     m['ham']  # returns 4
     m['foo']  # raises a key error
 </pre>
-</p>
 <p>  Note that the source file included in the ExtensionClass
   distribution has numerous enhancements beyond the version shown in
   this document.</p>
 </body>
 </html>
+

Modified: zope.structuredtext/trunk/src/zope/structuredtext/regressions/examples.ref
===================================================================
--- zope.structuredtext/trunk/src/zope/structuredtext/regressions/examples.ref	2009-03-31 18:26:09 UTC (rev 98714)
+++ zope.structuredtext/trunk/src/zope/structuredtext/regressions/examples.ref	2009-03-31 18:42:08 UTC (rev 98715)
@@ -29,20 +29,26 @@
 
 </ul>
 <p><a name="ref1">[1]</a> (The referring text should be a paragraph, not a header, and
-should contain a reference to this footnote, footnote "<a href="#ref1">[1]</a>".)<p>  Some hrefs, in a definition list:</p>
+should contain a reference to this footnote, footnote "<a href="#ref1">[1]</a>".)</p>
+<p>  Some hrefs, in a definition list:</p>
+</p>
 <dl>
 <dt>  <u>Regular</u></dt>
 <dd><a href="http://www.zope.org">http://www.zope.org/</a></dd>
+</p>
 <dt>  <u>W/trailing punctuation</u></dt>
 <dd><a href="http://www.zope.org">http://www.zope.org/</a>.</dd>
+</p>
 <dt>  <u>W protocol implicit</u></dt>
 <dd><a href=":locallink">locallink</a></dd>
+</p>
 <dt>  <u>W protocol implicit</u>, alternate</dt>
 <dd>"locallink", :locallink</dd>
 </dl>
+</p>
 <p>  |||| A Simple Two-column Table ||
   || Column A || Column B ||
   || Apples   || Oranges  ||</p>
-</p>
 </body>
 </html>
+

Modified: zope.structuredtext/trunk/src/zope/structuredtext/regressions/examples1.ref
===================================================================
--- zope.structuredtext/trunk/src/zope/structuredtext/regressions/examples1.ref	2009-03-31 18:26:09 UTC (rev 98714)
+++ zope.structuredtext/trunk/src/zope/structuredtext/regressions/examples1.ref	2009-03-31 18:42:08 UTC (rev 98715)
@@ -4,12 +4,13 @@
 </head>
 <body>
 <h1>Test</h1>
-<p>  For instance:
+<p>  For instance:</p>
+
 <pre>
     &lt;table border="0"&gt;
       &lt;tr&gt;&lt;td&gt;blabla&lt;/td&gt;&lt;/tr&gt;
     &lt;/table&gt;
 </pre>
-</p>
 </body>
 </html>
+

Modified: zope.structuredtext/trunk/src/zope/structuredtext/regressions/index.ref
===================================================================
--- zope.structuredtext/trunk/src/zope/structuredtext/regressions/index.ref	2009-03-31 18:26:09 UTC (rev 98714)
+++ zope.structuredtext/trunk/src/zope/structuredtext/regressions/index.ref	2009-03-31 18:42:08 UTC (rev 98715)
@@ -46,3 +46,4 @@
     Python 1.5.1 using Microsoft Visual C++ 5.0 in "Release" mode.</p>
 </body>
 </html>
+

Modified: zope.structuredtext/trunk/src/zope/structuredtext/regressions/table.ref
===================================================================
--- zope.structuredtext/trunk/src/zope/structuredtext/regressions/table.ref	2009-03-31 18:26:09 UTC (rev 98714)
+++ zope.structuredtext/trunk/src/zope/structuredtext/regressions/table.ref	2009-03-31 18:42:08 UTC (rev 98715)
@@ -70,3 +70,4 @@
 </table>
 </body>
 </html>
+



More information about the Checkins mailing list