Exemplo n.º 1
0
 def _calcpostlf(self, values):
     valuecount = len(values)
     sametype = False
     for i in range(valuecount):
         value = values[i]
         if i + 1 == valuecount:
             value.postlf = 0
             continue
         if i + 1 < valuecount:
             sametype = value.__class__ is values[i + 1].__class__
         if not sametype:
             if IDocstring.providedBy(values[i + 1]):
                 value.postlf = 0
                 continue
             if IDocstring.providedBy(value):
                 if IFunction.providedBy(value.__parent__):
                     value.postlf = 0
                 else:
                     value.postlf = 1
                 continue
             value.postlf = 1
             continue
         if IClass.providedBy(value) or IFunction.providedBy(value):
             value.postlf = 1
             continue
         value.postlf = 0
Exemplo n.º 2
0
 def _calcpostlf(self, values):
     valuecount = len(values)
     sametype = False
     for i in range(valuecount):
         value = values[i]
         if i + 1 == valuecount:
             value.postlf = 0
             continue
         if i + 1 < valuecount:
             sametype = value.__class__ is values[i + 1].__class__
         if not sametype:
             if IDocstring.providedBy(values[i + 1]):
                 value.postlf = 0
                 continue
             if IDocstring.providedBy(value):
                 if IFunction.providedBy(value.__parent__):
                     value.postlf = 0
                 else:
                     value.postlf = 1
                 continue
             value.postlf = 1
             continue
         if IClass.providedBy(value) \
           or IFunction.providedBy(value):
             value.postlf = 1
             continue
         value.postlf = 0
Exemplo n.º 3
0
 def __call__(self):
     if self.model.classname is None:
         raise Incomplete(u"Incomplete class definition.")
     ret = list()
     for decorator in self.model.filtereditems(IDecorator):
         ret.append(decorator())
     name = self.model.classname
     level = self.model.nodelevel
     bases = self.model.bases
     indent = level * 4 * u" "
     base_str = u"class %s(" % name
     rclass = u"%s%s" % (indent, base_str)
     if not bases:
         bases = ["object"]
     if len(bases) > 1 and "object" in bases:
         bases.remove("object")
     rargs = self.render_arguments(level, len(name) + 7, bases)
     rclass = u"%s%s):\n" % (rclass, rargs)
     ret.append(rclass)
     values = [val for val in self.model.values() if not IDecorator.providedBy(val)]
     # case ``pass`` was parsed for class body
     if len(values) == 1 and IBlock.providedBy(values[0]) and values[0].text == u"pass":
         values = list()
     self._calcpostlf(values)
     if not values:
         ret.append(u"%s    pass\n" % indent)
     valuecount = len(values)
     for i in range(valuecount):
         if i == 0 and not IDocstring.providedBy(values[i]):
             ret.append("\n")
         ret.append(values[i]())
     ret += [u"\n" for i in range(self.model.postlf)]
     return u"".join(ret)
Exemplo n.º 4
0
 def __call__(self):
     if self.model.classname is None:
         raise Incomplete, u"Incomplete class definition."
     ret = list()
     for decorator in self.model.filtereditems(IDecorator):
         ret.append(decorator())
     name = self.model.classname
     level = self.model.nodelevel
     bases = self.model.bases
     indent = level * 4 * u' '
     base_str = u'class %s(' % name
     rclass = u'%s%s' % (indent, base_str)
     if not bases:
         bases = ['object']
     if len(bases) > 1 and 'object' in bases:
         bases.remove('object')
     rargs = self.render_arguments(level, len(name) + 7, bases)
     rclass = u'%s%s):\n' % (rclass, rargs)
     ret.append(rclass)
     values = [val for val in self.model.values() \
               if not IDecorator.providedBy(val)]
     # case ``pass`` was parsed for class body
     if len(values) == 1 \
       and IBlock.providedBy(values[0]) \
       and values[0].text == u'pass':
         values = list()
     self._calcpostlf(values)
     if not values:
         ret.append(u'%s    pass\n' % indent)
     valuecount = len(values)
     for i in range(valuecount):
         if i == 0 and not IDocstring.providedBy(values[i]):
             ret.append('\n')
         ret.append(values[i]())
     ret += [u'\n' for i in range(self.model.postlf)]
     return u''.join(ret)