<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def read(self, source_path):
 """Parse content and metadata of textile files."""


        with pelican_open(source_path) as text:
            parts = text.split('----', 1)
            if len(parts) == 2:
                headerlines = parts[0].splitlines()
                headerpairs = map(lambda l: l.split(':', 1), headerlines)
                headerdict = {pair[0]: pair[1].strip()
                              for pair in headerpairs
                              if len(pair) == 2}
                metadata = self._parse_metadata(headerdict)
                content = textile(parts[1])
            else:
                metadata = {}
                content = textile(text)

        return content, metadata