def _split_line(self,data_list,line_num,text):
<EOL>if not line_num:<EOL><INDENT>data_list.append((line_num,text))<EOL>return<EOL><DEDENT>size = len(text)<EOL>max = self._wrapcolumn<EOL>if (size <= max) or ((size -(text.count('<STR_LIT>')*<NUM_LIT:3>)) <= max):<EOL><INDENT>data_list.append((line_num,text))<EOL>return<EOL><DEDENT>i = <NUM_LIT:0><EOL>n = <NUM_LIT:0><EOL>mark = '<STR_LIT>'<EOL>while n < max and i < size:<EOL><INDENT>if text[i] == '<STR_LIT>':<EOL><INDENT>i += <NUM_LIT:1><EOL>mark = text[i]<EOL>i += <NUM_LIT:1><EOL><DEDENT>elif text[i] == '<STR_LIT>':<EOL><INDENT>i += <NUM_LIT:1><EOL>mark = '<STR_LIT>'<EOL><DEDENT>else:<EOL><INDENT>i += <NUM_LIT:1><EOL>n += <NUM_LIT:1><EOL><DEDENT><DEDENT>line1 = text[:i]<EOL>line2 = text[i:]<EOL>if mark:<EOL><INDENT>line1 = line1 + '<STR_LIT>'<EOL>line2 = '<STR_LIT>' + mark + line2<EOL><DEDENT>data_list.append((line_num,line1))<EOL>self._split_line(data_list,'<STR_LIT:>>',line2)<EOL>
Builds list of text lines by splitting text lines at wrap point

        This function will determine if the input text line needs to be
        wrapped (split) into separate lines.  If so, the first wrap point
        will be determined and the first line appended to the output
        text line list.  This function is used recursively to handle
        the second part of the split line to further split it.