             table:  'table|tbody|thead|tfoot|tr|td|th'
         @hooks = {}
         @html = no
+        @line = no
 
         @blockParsers = [
             ['code', 10]

                lang = trim lang
                rel = trim rel
        

        lines = lines.slice 1, -1
            .map (line) ->
                line.replace (new RegExp "/^[ ]{#{count}}/"), ''

        str = lines.join "\n"

        if str.match /^\s*$/ then '' else '<pre><code' \
            + (if !!lang then " class=\"#{lang}\"" else '') \
            + (if !!rel then " rel=\"#{rel}\"" else '') + '>' \
            + (htmlspecialchars str) + '</code></pre>'

    
    parsePre: (lines) ->
        lines = lines.map (line) ->
            htmlspecialchars line.substring 4
        str = lines.join "\n"

        if str.match /^\s*$/ then '' else '<pre><code>' + str + '</code></pre>'


    parseAhtml: (lines) ->
        trim lines.join "\n"


    parseShtml: (lines) ->
        trim (lines.slice 1, -1).join "\n"


    parseMath: (lines) ->
        '<p>' + (htmlspecialchars lines.join "\n") + '</p>'


    parseSh: (lines, num) ->
        line = @parseInline trim lines[0], '# '
        if line.match /^\s*$/ then '' else "<h#{num}>#{line}</h#{num}>"


    parseMh: (lines, num) ->
        @parseSh lines, num


    parseQuote: (lines) ->
        lines = lines.map (line) ->
            line.replace /^\s*> ?/, ''
        str = lines.join "\n"

        if str.match /^\s*$/ then '' else '<blockquote>' + (@parse str) + '</blockquote>'


    parseList: (lines) ->
        html = ''
        minSpace = 99999
        secondMinSpace = 99999

                    leftLines.push line.replace (new RegExp "^\\s{#{secondMinSpace}}"), ''
                else
                    if leftLines.length > 0
                        html += '<li>' + (@parse (leftLines.join "\n"), yes, start + leftStart) + '</li>'

                    if lastType != type
                        if !!lastType
