code: def tag(self, tag, child='', enclose=0, newline=True, **kwargs):
          
          kw = kwargs.copy()
          _class = ''
          if '_class' in kw:
              _class = kw.pop('_class')
          if 'class' in kw:
              _class += ' ' + kw.pop('class')
          tag_class = self.tag_class.get(tag, '')
          if tag_class:
              #if tag_class definition starts with '+', and combine it with original value
              if tag_class.startswith('+'):
                  kw['class'] = tag_class[1:] + ' ' + _class.lstrip()
              else:
                  kw['class'] = tag_class.lstrip()
          else:
              kw['class'] = _class.lstrip()
              
          #process inner and outter link
          if tag == 'a':
              print ('------', kw)
              href = kw.get('href', '#')
              if href and (href.startswith('http:') or href.startswith('https:') or href.startswith('ftp:')):
                  _cls = 'outter'
              else:
                  _cls = 'inner'
                  kw['href'] = href
              if kw.get('class'):
                  kw['class'] = kw['class'] + ' ' + _cls
              else:
                  kw['class'] = _cls
              
          attrs = ' '.join(['%s="%s"' % (x, y) for x, y in sorted(kw.items()) if y])
          if attrs:
              attrs = ' ' + attrs
          nline = '\n' if newline else ''
          if child:
              enclose = 2
          if enclose == 1:
              return '<%s%s/>%s' % (tag, attrs, nline)
          elif enclose == 2:
              return '<%s%s>%s</%s>%s' % (tag, attrs, child, tag, nline)
          else:
              return '<%s%s>%s' % (tag, attrs, nline)
docs: enclose:
              0 => <tag>
              1 => <tag/>
              2 => <tag></tag>