def stream(tokens, &b)
num_lines = 0
last_val = ''
formatted = ''
tokens.each do |tok, val|
last_val = val
num_lines += val.scan(/\n/).size
formatted << @inner.span(tok, val)
end
if last_val[-1] != "\n"
num_lines += 1
@inner.span(Token::Tokens::Text::Whitespace, "\n") { |str| formatted << str }
end
formatted_line_numbers = (@start_line..num_lines+@start_line-1).map do |i|
sprintf("#{@line_format}", i) << "\n"
end.join('')
numbers = %(<pre class="lineno">#{formatted_line_numbers}</pre>)
yield %(<table class="#@table_class"><tbody><tr>)
yield %(<td class="#@gutter_class gl">)
yield numbers
yield '</td>'
yield %(<td class="#@code_class"><pre>)
yield formatted
yield '</pre></td>'
yield "</tr></tbody></table>"
end