예제 #1
0
    def write_text(self, *args, **kwargs):
        #-------------------------------------------------------------
        # RawTextRfcWriter override
        #
        # We should be able to handle mostly all of the nroff commands by
        # intercepting the alignment and indentation arguments
        #-------------------------------------------------------------
        # Store buffer position for paging information

        if 'buf' in kwargs:
            buffer = kwargs["buf"]
        else:
            buffer = self.buf

        par = []
        kwargs["buf"] = par

        begin = len(buffer)

        leading_blankline = kwargs.get("leading_blankline", False)
        if self.in_list and not leading_blankline and len(
                buffer) and not buffer[-1].startswith('.sp'):
            self.write_nroff('.br')
        RawTextRfcWriter.write_text(self, *args, **kwargs)

        # Escape as needed
        for i in range(len(par)):
            par[i] = par[i].strip()
            if par[i] and par[i][0] in nroff_linestart_meta:
                par[i] = nroff_escape_linestart(par[i])

        # Handle alignment/indentation
        align = kwargs.get('align', 'left')
        indent = kwargs.get('indent', 0)
        sub_indent = kwargs.get('sub_indent', 0)
        bullet = kwargs.get('bullet', '')

        if align == 'center':
            self.write_nroff('.ce %s' % len([x for x in par if x != ""]),
                             buf=buffer)
        else:
            # Use bullet for indentation if sub not specified
            full_indent = sub_indent and indent + sub_indent or indent + len(
                bullet)
            self._indent(full_indent, buf=buffer)

        if bullet and len(bullet.strip()) > 0:
            # Bullet line: title just uses base indent
            self.write_nroff('.ti %s' % indent, buf=buffer)

        mark = len(buffer)

        # Write to buffer
        buffer.extend(par)

        # Page break information
        end = len(buffer)
        if buffer == self.buf:
            self._set_break_hint(end - mark, 'txt', begin)
        """
예제 #2
0
파일: nroff.py 프로젝트: oerdnj/xml2rfc
    def write_text(self, *args, **kwargs):
        #-------------------------------------------------------------
        # RawTextRfcWriter override
        #
        # We should be able to handle mostly all of the nroff commands by
        # intercepting the alignment and indentation arguments
        #-------------------------------------------------------------
        # Store buffer position for paging information

        if 'buf' in kwargs:
            buffer = kwargs["buf"]
        else:
            buffer = self.buf

        par = []
        kwargs["buf"] = par

        begin = len(buffer)
        
        leading_blankline = kwargs.get("leading_blankline", False)
        if self.in_list and not leading_blankline and len(buffer) and not buffer[-1].startswith('.sp'):
            self.write_nroff('.br')
        RawTextRfcWriter.write_text(self, *args, **kwargs)

        # Escape as needed
        for i in range(len(par)):
            par[i] = par[i].strip()
            if par[i] and par[i][0] in nroff_linestart_meta:
                par[i] = nroff_escape_linestart(par[i])

        # Handle alignment/indentation
        align = kwargs.get('align', 'left')
        indent = kwargs.get('indent', 0)
        sub_indent = kwargs.get('sub_indent', 0)
        bullet = kwargs.get('bullet', '')
        
        if align == 'center':
            self.write_nroff('.ce %s' % len([x for x in par if x != ""]), buf=buffer)
        else:
            # Use bullet for indentation if sub not specified
            full_indent = sub_indent and indent + sub_indent or indent + len(bullet)
            self._indent(full_indent, buf=buffer)

        if bullet and len(bullet.strip()) > 0:
            # Bullet line: title just uses base indent
            self.write_nroff('.ti %s' % indent, buf=buffer)

        mark = len(buffer)

        # Write to buffer
        buffer.extend(par)

        # Page break information
        end = len(buffer)
        if buffer == self.buf:
            self._set_break_hint(end - mark, 'txt', begin)
        """