[Checkins] SVN: z3c.rml/trunk/src/z3c/rml/ * More fixing on the RML Reference.

Stephan Richter srichter at cosmos.phy.tufts.edu
Sat Apr 14 19:19:25 EDT 2007


Log message for revision 74139:
  * More fixing on the RML Reference.
  

Changed:
  U   z3c.rml/trunk/src/z3c/rml/chart.py
  U   z3c.rml/trunk/src/z3c/rml/rml-reference.pt
  U   z3c.rml/trunk/src/z3c/rml/rml-reference.py
  U   z3c.rml/trunk/src/z3c/rml/tests/input/tag-circle.rml

-=-
Modified: z3c.rml/trunk/src/z3c/rml/chart.py
===================================================================
--- z3c.rml/trunk/src/z3c/rml/chart.py	2007-04-14 22:12:40 UTC (rev 74138)
+++ z3c.rml/trunk/src/z3c/rml/chart.py	2007-04-14 23:19:24 UTC (rev 74139)
@@ -160,7 +160,7 @@
 class IData1D(interfaces.IRMLDirectiveSignature):
     """A 1-D data set."""
     occurence.containing(
-        occurence.OneOrMore('data', ISeries1D)
+        occurence.OneOrMore('series', ISeries1D)
         )
 
 class Data1D(Data):
@@ -171,7 +171,7 @@
 class ISingleData1D(interfaces.IRMLDirectiveSignature):
     """A 1-D data set."""
     occurence.containing(
-        occurence.One('data', ISeries1D)
+        occurence.One('series', ISeries1D)
         )
 
 class SingleData1D(Data1D):
@@ -201,7 +201,7 @@
 class IData2D(interfaces.IRMLDirectiveSignature):
     """A 2-D data set."""
     occurence.containing(
-        occurence.OneOrMore('data', ISeries2D)
+        occurence.OneOrMore('series', ISeries2D)
         )
 
 class Data2D(Data):
@@ -1186,6 +1186,9 @@
         )
 
     startAngle = attr.Integer(
+        title=u'Start Angle',
+        description=u'The start angle in the chart of the first slice '
+                    u'in degrees.',
         required=False)
 
     direction = attr.Choice(

Modified: z3c.rml/trunk/src/z3c/rml/rml-reference.pt
===================================================================
--- z3c.rml/trunk/src/z3c/rml/rml-reference.pt	2007-04-14 22:12:40 UTC (rev 74138)
+++ z3c.rml/trunk/src/z3c/rml/rml-reference.pt	2007-04-14 23:19:24 UTC (rev 74139)
@@ -177,6 +177,24 @@
         </tal:block>
       </tal:block>
 
+      <tal:block define="attr directive/content"
+                 condition="directive/content">
+        <para style="element-subtitle">
+          <i>Content</i>
+        </para>
+        <para style="attribute-name">
+          <tal:block content="attr/type">Type</tal:block>
+          <tal:block condition="attr/required">
+            <i>(required)</i>
+          </tal:block>
+        </para>
+        <para style="field-description"
+              tal:condition="attr/title">
+          <i tal:content="attr/title">Title</i>:
+          <tal:block tal:content="attr/description">Description</tal:block>
+        </para>
+      </tal:block>
+
       <tal:block condition="directive/sub-directives">
         <para style="element-subtitle">
           <i>Sub-Directives</i>

Modified: z3c.rml/trunk/src/z3c/rml/rml-reference.py
===================================================================
--- z3c.rml/trunk/src/z3c/rml/rml-reference.py	2007-04-14 22:12:40 UTC (rev 74138)
+++ z3c.rml/trunk/src/z3c/rml/rml-reference.py	2007-04-14 23:19:24 UTC (rev 74139)
@@ -16,11 +16,17 @@
 $Id$
 """
 __docformat__ = "reStructuredText"
+import os
 import zope.schema
 import zope.schema.interfaces
+from lxml import etree
 from z3c.rml import attr, document, pagetemplate
 
+EXAMPLES_DIRECTORY = os.path.join(os.path.dirname(__file__), 'tests', 'input')
 IGNORE_ATTRIBUTES = ('RMLAttribute', 'BaseChoice')
+CONTENT_FIELD_TYPES = (
+    attr.TextNode, attr.TextNodeSequence, attr.TextNodeGrid,
+    attr.RawXMLContent, attr.XMLContent)
 
 def getAttributeTypes():
     types = []
@@ -48,27 +54,42 @@
     vtFormatter = typeFormatters.get(field.value_type.__class__, formatField)
     return '%s of %s' %(field.__class__.__name__, vtFormatter(field.value_type))
 
+def formatGrid(field):
+    vtFormatter = typeFormatters.get(field.value_type.__class__, formatField)
+    return '%s with %i cols of %s' %(
+        field.__class__.__name__, field.columns, vtFormatter(field.value_type))
+
 typeFormatters = {
     attr.Choice: formatChoice,
-    attr.Sequence: formatSequence}
+    attr.Sequence: formatSequence,
+    attr.TextNodeSequence: formatSequence,
+    attr.TextNodeGrid: formatGrid}
 
-def processSignature(name, signature, directives=None):
+def processSignature(name, signature, examples, directives=None):
     if directives is None:
         directives = {}
     # Process this directive
     if signature not in directives:
         info = {'name': name, 'description': signature.getDoc()}
         attrs = []
-        for name, field in zope.schema.getFieldsInOrder(signature):
+        content = None
+        for fname, field in zope.schema.getFieldsInOrder(signature):
+            # Handle the case, where the field describes the content
             typeFormatter = typeFormatters.get(field.__class__, formatField)
-            attrs.append({
-                'name': name,
+            fieldInfo = {
+                'name': fname,
                 'type': typeFormatter(field),
                 'title': field.title,
                 'description': field.description,
                 'required': field.required,
-                })
+                }
+            if field.__class__ in CONTENT_FIELD_TYPES:
+                content = fieldInfo
+            else:
+                attrs.append(fieldInfo)
         info['attributes'] = attrs
+        info['content'] = content
+        info['examples'] = examples.get(name, None)
 
         subs = []
         for occurence in signature.queryTaggedValue('directives', ()):
@@ -80,14 +101,30 @@
         directives[signature] = info
     # Process Children
     for occurence in signature.queryTaggedValue('directives', ()):
-        processSignature(occurence.tag, occurence.signature, directives)
+        processSignature(occurence.tag, occurence.signature,
+                         examples, directives)
 
 
+def extractExamples(directory):
+    examples = {}
+    for fileName in os.listdir(directory):
+        if not fileName.endswith('.rml'):
+            continue
+        rmlFile = open(os.path.join(directory, fileName), 'r')
+        root = etree.parse(rmlFile).getroot()
+        if fileName == 'tag-circle.rml':
+            import pdb; pdb.set_trace()
+
+    return examples
+
+
 if __name__ == '__main__':
+    examples = extractExamples(EXAMPLES_DIRECTORY)
+
     template = pagetemplate.RMLPageTemplateFile('rml-reference.pt')
 
     directives = {}
-    processSignature('document', document.IDocument, directives)
+    processSignature('document', document.IDocument, examples, directives)
     directives = sorted(directives.values(), key=lambda d: d['name'])
 
     pdf = template(types=getAttributeTypes(), directives=directives)

Modified: z3c.rml/trunk/src/z3c/rml/tests/input/tag-circle.rml
===================================================================
--- z3c.rml/trunk/src/z3c/rml/tests/input/tag-circle.rml	2007-04-14 22:12:40 UTC (rev 74138)
+++ z3c.rml/trunk/src/z3c/rml/tests/input/tag-circle.rml	2007-04-14 23:19:24 UTC (rev 74139)
@@ -1,11 +1,14 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE document SYSTEM "rml.dtd">
 
-<document filename="circle.pdf">
+<document
+    filename="circle.pdf"
+    xmlns:doc="http://namespaces.zope.org/rml/doc">
   <pageDrawing>
 
     <circle x="10cm" y="25cm" radius="2cm"
-            fill="false" stroke="false" />
+            fill="false" stroke="false"
+            doc:elementExample="circle" />
 
     <circle x="10cm" y="20cm" radius="2cm"
             fill="true" stroke="false" />



More information about the Checkins mailing list