docs: def parse_text(self, text):
          """
          Parse the given text and return a list of :class:`~taxi.timesheet.lines.DateLine`,
          :class:`~taxi.timesheet.lines.Entry`, and :class:`~taxi.timesheet.lines.TextLine` objects. If there's an
          error during parsing, a :exc:`taxi.exceptions.ParseError` will be raised.
          """
          text = text.strip()
          lines = text.splitlines()
          parsed_lines = []
          encountered_date = False
  
          for (lineno, line) in enumerate(lines, 1):
              try:
                  parsed_line = self.parse_line(line)
  
                  if isinstance(parsed_line, DateLine):
                      encountered_date = True
                  elif isinstance(parsed_line, Entry) and not encountered_date:
                      raise ParseError("Entries must be defined inside a date section")
              except ParseError as e:
                  # Update exception with some more information
                  e.line_number = lineno
                  e.line = line
                  raise
              else:
                  parsed_lines.append(parsed_line)
  
          return parsed_lines