def entry_line_to_text(self, entry):
line = []<EOL>if not entry._text:<EOL><INDENT>flags_text = self.flags_to_text(entry.flags)<EOL>duration_text = self.duration_to_text(entry.duration)<EOL>return '<STR_LIT>'.join(<EOL>(flags_text, '<STR_LIT:U+0020>' if flags_text else '<STR_LIT>', entry.alias, '<STR_LIT:U+0020>', duration_text, '<STR_LIT:U+0020>', entry.description)<EOL>)<EOL><DEDENT>for i, text in enumerate(entry._text):<EOL><INDENT>if i in self.ENTRY_ATTRS_POSITION:<EOL><INDENT>if self.ENTRY_ATTRS_POSITION[i] in entry._changed_attrs:<EOL><INDENT>attr_name = self.ENTRY_ATTRS_POSITION[i]<EOL>attr_value = getattr(entry, self.ENTRY_ATTRS_POSITION[i])<EOL>if attr_name in self.ENTRY_ATTRS_TRANSFORMERS:<EOL><INDENT>attr_value = getattr(self, self.ENTRY_ATTRS_TRANSFORMERS[attr_name])(attr_value)<EOL><DEDENT><DEDENT>else:<EOL><INDENT>attr_value = text<EOL><DEDENT>line.append(attr_value)<EOL><DEDENT>else:<EOL><INDENT>if len(line[i-<NUM_LIT:1>]) != len(entry._text[i-<NUM_LIT:1>]):<EOL><INDENT>text = '<STR_LIT:U+0020>' * max(<NUM_LIT:1>, (len(text) - (len(line[i-<NUM_LIT:1>]) - len(entry._text[i-<NUM_LIT:1>]))))<EOL><DEDENT>line.append(text)<EOL><DEDENT><DEDENT>return '<STR_LIT>'.join(line).strip()<EOL>
Return the textual representation of an :class:`~taxi.timesheet.lines.Entry` instance. This method is a bit
convoluted since we don't want to completely mess up the original formatting of the entry.