]> granicus.if.org Git - graphviz/commitdiff
Simplify parsing, now all attributes have one name
authorMark Hansen <markhansen@google.com>
Wed, 21 Oct 2020 10:30:23 +0000 (21:30 +1100)
committerMark Hansen <markhansen@google.com>
Wed, 21 Oct 2020 10:30:23 +0000 (21:30 +1100)
Closes #64

doc/infosrc/mkattrs.py
doc/infosrc/templates/attrs.html.j2

index a8fbddeae4b2081b205e716dc62fbb92e705a67e..5c6dd0ffa13d1745b2589a8e0cc35d9dd3840cf5 100755 (executable)
@@ -15,20 +15,9 @@ import templates
 # Parse `attrs` file
 ##
 
-
-@dataclass
-class Term:
-    """ One <dt> item. """
-    name: str
-    # Anchor (<a name="#">) for definition
-    d_anchor: str = ""
-    # Anchor (<a name="#">) for table at the top
-    a_anchor: str = ""
-
-
 @dataclass
 class Attribute:
-    terms: List[Term]
+    name: str
     # use string : this is a string formed of G,N,C,E
     uses: str
     kinds: List[str]
@@ -36,6 +25,10 @@ class Attribute:
     html_description: str
     defaults: List[str]
     minimums: List[str]
+    # Anchor (<a name="#">) for definition
+    d_anchor: str = ""
+    # Anchor (<a name="#">) for table at the top
+    a_anchor: str = ""
 
 
 attrs: List[Attribute] = []
@@ -53,7 +46,7 @@ with open(sys.argv[1]) as attrs_in:
             parts = headers.split(':')
 
             attr = Attribute(
-                terms=[Term(name=name) for name in parts[1].split('/')],
+                name=parts[1],
                 uses=parts[2],
                 kinds=parts[3].split('/'),
                 flags=[flag for flag in flags.strip().split(',') if flag],
@@ -72,7 +65,7 @@ with open(sys.argv[1]) as attrs_in:
             attr.html_description += '  ' + line
 
 
-attrs.sort(key=lambda attr: ''.join(term.name for term in attr.terms))
+attrs.sort(key=lambda attr: attr.name)
 
 for attr in attrs:
     attr.html_description = markupsafe.Markup(attr.html_description)
@@ -82,21 +75,20 @@ for attr in attrs:
 a_anchors_used = set()
 d_anchors_used = set()
 for attr in attrs:
-    for term in attr.terms:
-        a_key = 'a'
-        d_key = 'd'
-        a_anchor = a_key + ':' + term.name
-        d_anchor = d_key + ':' + term.name
-        while a_anchor in a_anchors_used:
-            a_key += 'a'
-            a_anchor = a_key + ':' + term.name
-        while d_anchor in d_anchors_used:
-            d_key += 'd'
-            d_anchor = d_key + ':' + term.name
-        a_anchors_used.add(a_anchor)
-        d_anchors_used.add(d_anchor)
-        term.a_anchor = a_anchor
-        term.d_anchor = d_anchor
+    a_key = 'a'
+    d_key = 'd'
+    a_anchor = a_key + ':' + attr.name
+    d_anchor = d_key + ':' + attr.name
+    while a_anchor in a_anchors_used:
+        a_key += 'a'
+        a_anchor = a_key + ':' + attr.name
+    while d_anchor in d_anchors_used:
+        d_key += 'd'
+        d_anchor = d_key + ':' + attr.name
+    a_anchors_used.add(a_anchor)
+    d_anchors_used.add(d_anchor)
+    attr.a_anchor = a_anchor
+    attr.d_anchor = d_anchor
 
 ##
 # Parse `types` file
index ca4d20fe13483c9ecab5a874abd1781bde452ab8..d162e995de15bf6e2017dd64fa50f7d80c6a7cc3 100644 (file)
@@ -85,14 +85,8 @@ of the layout programs.
 <TABLE ALIGN=CENTER>
 <TR><TH>Name</TH><TH><A HREF=#h:uses>Used By</A></TH><TH>Type</TH><TH ALIGN=CENTER>Default</TH><TH>Minimum</TH><TH>Notes</TH></TR>
 {% for attr in attrs %}
- <TR><TD>
-  {%- for term in attr.terms -%}
-    {%- if not loop.first -%}
-    <BR>
-    {%- endif -%}
-    <A NAME={{ term.a_anchor }} HREF=#{{ term.d_anchor }}>{{ term.name }}</A>
-  {% endfor -%}
-  </TD><TD>{{ attr.uses }}</TD><TD>
+ <TR><TD><A NAME={{ attr.a_anchor }} HREF=#{{ attr.d_anchor }}>{{ attr.name }}</A>
+</TD><TD>{{ attr.uses }}</TD><TD>
   {%- for kind in attr.kinds -%}
     {%- if not loop.first -%}
     <BR>
@@ -142,10 +136,7 @@ of the layout programs.
 <H1>Attribute Descriptions</H1>
 <DL>
 {% for attr in attrs %}
-  {% for term in attr.terms %}
-    {% if not loop.first %},{% endif %}
-<DT><A NAME={{term.d_anchor}} HREF=#{{term.a_anchor}}><STRONG>{{ term.name }}</STRONG></A>
-  {% endfor %}
+<DT><A NAME={{attr.d_anchor}} HREF=#{{attr.a_anchor}}><STRONG>{{ attr.name }}</STRONG></A>
 <DD>{{ attr.html_description }}
 {% endfor %}
 </DL>