Changeset 3112:cff26c1b15ce in livinglogic.python.xist

Show
Ignore:
Timestamp:
01/06/08 00:27:41 (12 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Fix var names in ReSTConverter.convert(). Use textwrap.dedent() for touching up docstrings.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/ll/xist/ns/doc.py

    r3111 r3112  
    1616 
    1717# import __builtin__ to use property, which is also defined here 
    18 import sys, types, inspect, optparse, collections, warnings, operator, __builtin__ 
     18import sys, types, inspect, textwrap, optparse, collections, warnings, operator, __builtin__ 
    1919 
    2020try: 
     
    5757    if thing.__doc__ is None: 
    5858        return xsc.Null 
     59 
     60    # Remove indentation 
     61    lines = textwrap.dedent(thing.__doc__).split("\n") 
     62 
     63    # remove empty lines 
     64    while lines and not lines[0]: 
     65        del lines[0] 
     66    while lines and not lines[-1]: 
     67        del lines[-1] 
     68 
     69    text = "\n".join(lines) 
     70 
    5971    if format.lower() == "plaintext": 
    60         return xsc.Text(thing.__doc__) 
     72        return xsc.Text(text) 
    6173    elif format.lower() == "restructuredtext": 
    62         return rest2doc(thing.__doc__) 
     74        return rest2doc(text) 
    6375    elif format.lower() == "xist": 
    64         lines = thing.__doc__.split("\n") 
    65  
    66         # find first nonempty line 
    67         for i in xrange(len(lines)): 
    68             if lines[i] and not lines[i].isspace(): 
    69                 if i: 
    70                     del lines[:i] 
    71                 break 
    72  
    73         if lines: 
    74             # find starting white space of this line 
    75             startwhite = "" 
    76             for c in lines[0]: 
    77                 if c.isspace(): 
    78                     startwhite += c 
    79                 else: 
    80                     break 
    81  
    82             # remove this whitespace from every line 
    83             for i in xrange(len(lines)): 
    84                 if lines[i].startswith(startwhite): 
    85                     lines[i] = lines[i][len(startwhite):] 
    86      
    87             # remove empty lines 
    88             while lines and not lines[0]: 
    89                 del lines[0] 
    90             while lines and not lines[-1]: 
    91                 del lines[-1] 
    92  
    93         text = "\n".join(lines) 
    94  
    9576        if inspect.ismethod(thing): 
    9677            base = "METHOD-DOCSTRING(%s.%s.%s)" % (_getmodulename(thing), thing.im_class.__name__, thing.__name__) 
     
    16031584            return em(self.convert(child) for child in node.children) 
    16041585        elif isinstance(node, nodes.reference): 
    1605             link = link(self.convert(child) for child in node.children) 
     1586            e = link(self.convert(child) for child in node.children) 
    16061587            if "anonymous" in node.attributes: 
    1607                 self.unnamedrefs.append(link) 
     1588                self.unnamedrefs.append(e) 
    16081589            else: 
    1609                 self.namedrefs[node.attributes["refname"]].append(link) 
    1610             return link 
     1590                self.namedrefs[node.attributes["refname"]].append(e) 
     1591            return e 
    16111592        elif isinstance(node, nodes.target): 
    16121593            uri = node.attributes["refuri"] 
     
    16181599                for name in node.attributes["names"]: 
    16191600                    try: 
    1620                         links = self.namedrefs[name] 
     1601                        es = self.namedrefs[name] 
    16211602                    except KeyError: 
    16221603                        pass 
    16231604                    else: 
    1624                         for link in links: 
    1625                             link.attrs.href = uri 
     1605                        for e in es: 
     1606                            e.attrs.href = uri 
    16261607                        del self.namedrefs[name] 
    16271608            return xsc.Null