def do_para(self, node):
if self.pieces[-<NUM_LIT:1>:] == ['<STR_LIT>']:<EOL><INDENT>pieces, self.pieces = self.pieces[:-<NUM_LIT:2>], self.pieces[-<NUM_LIT:2>:-<NUM_LIT:1>]<EOL><DEDENT>else:<EOL><INDENT>self.add_text('<STR_LIT:\n>')<EOL>pieces, self.pieces = self.pieces, ['<STR_LIT>']<EOL><DEDENT>self.subnode_parse(node)<EOL>dont_end_paragraph = self.pieces[-<NUM_LIT:1>:] == ['<STR_LIT>']<EOL>width = self.textwidth - self.indent<EOL>wrapped_para = []<EOL>for line in '<STR_LIT>'.join(self.pieces).splitlines():<EOL><INDENT>keep_markdown_newline = line[-<NUM_LIT:2>:] == '<STR_LIT:U+0020>'<EOL>w_line = textwrap.wrap(line, width=width, break_long_words=False)<EOL>if w_line == []:<EOL><INDENT>w_line = ['<STR_LIT>']<EOL><DEDENT>if keep_markdown_newline:<EOL><INDENT>w_line[-<NUM_LIT:1>] = w_line[-<NUM_LIT:1>] + '<STR_LIT:U+0020>'<EOL><DEDENT>for wl in w_line:<EOL><INDENT>wrapped_para.append(wl + '<STR_LIT:\n>')<EOL><DEDENT><DEDENT>if wrapped_para:<EOL><INDENT>if wrapped_para[-<NUM_LIT:1>][-<NUM_LIT:3>:] != '<STR_LIT>':<EOL><INDENT>wrapped_para[-<NUM_LIT:1>] = wrapped_para[-<NUM_LIT:1>][:-<NUM_LIT:1>] + '<STR_LIT>'<EOL><DEDENT>if dont_end_paragraph:<EOL><INDENT>wrapped_para.append('<STR_LIT>')<EOL><DEDENT><DEDENT>pieces.extend(wrapped_para)<EOL>self.pieces = pieces<EOL>
This is the only place where text wrapping is automatically performed.
        Generally, this function parses the node (locally), wraps the text, and
        then adds the result to self.pieces. However, it may be convenient to
        allow the previous content of self.pieces to be included in the text
        wrapping. For this, use the following *convention*:
        If self.pieces ends with '', treat the _previous_ entry as part of the
        current paragraph. Else, insert new-line and start a new paragraph
        and "wrapping context".
        Paragraphs always end with '  \n', but if the parsed content ends with
        the special symbol '', this is passed on.