     else
       render += "## [#{fileStats.pkg}](source/#{sourcePath})"
 
-    # Naively parse out the file description. It must be wrapped in asterisks,
-    # i.e. italicized in markdown.
-    #
-    # ###### TODO: This 'chunk' parsing should be done with a Transform like the others.
-    data = fs.readFileSync "docs/source/#{fileStats.file}", 'utf8'
-    chunks = data.split '\n\n'
-
-    title = chunks[0]
-    if 35 is title.charCodeAt 0
+    if fileStats.title?
       render += '\n\n'
       render += '> ' if isSubpackage
-      render += "<span class=\"package-title\">#{title.substr 2}</span>"
+      render += "<span class=\"package-title\">#{fileStats.title}</span>"
 
     render += '\n\n'
 
-    description = chunks[1] ? ''
-    if 42 is description.charCodeAt 0 and 42 is description.charCodeAt description.length - 1
+    if fileStats.description?
       render += '> ' if isSubpackage
-      render += "#{description}\n\n"
+      render += "#{fileStats.description}\n\n"
 
     if fileStats.implementations.length > 0
       render += '> ' if isSubpackage


      index: todo
      lines: @lines.slice start, end

# Implement a transform stream to convert a .coffee file to .litcoffee
class LitcoffeeConversion extends Transform

        lineStream.pipe hookImplementations = new HookImplementations()
        lineStream.pipe hookInvocations = new HookInvocations()
        lineStream.pipe todos = new Todos()
        lineStream.pipe titleAndDescription = new TitleAndDescription()

        fstream.on 'error', reject

