class Rouge::Formatters::HTMLLineTable

Public Class Methods

new(formatter, opts={}) click to toggle source

@param [Rouge::Formatters::Formatter] formatter An instance of a

`Rouge::Formatters::HTML` or `Rouge::Formatters::HTMLInline`

@param [Hash] opts options for HTMLLineTable instance. @option opts [Integer] :start_line line number to start from. Defaults to ‘1`. @option opts [String] :table_class Class name for the table.

Defaults to `"rouge-line-table"`.

@option opts [String] :line_id a ‘sprintf` template for generating an `id`

attribute for each table row corresponding to current line number.
Defaults to `"line-%i"`.

@option opts [String] :line_class Class name for each table row.

Defaults to `"lineno"`.

@option opts [String] :gutter_class Class name for rendered line-number cell.

Defaults to `"rouge-gutter"`.

@option opts [String] :code_class Class name for rendered code cell.

Defaults to `"rouge-code"`.
# File lib/rouge/formatters/html_line_table.rb, line 23
def initialize(formatter, opts={})
  @formatter    = formatter
  @start_line   = opts.fetch :start_line,   1
  @table_class  = opts.fetch :table_class,  'rouge-line-table'
  @gutter_class = opts.fetch :gutter_class, 'rouge-gutter'
  @code_class   = opts.fetch :code_class,   'rouge-code'
  @line_class   = opts.fetch :line_class,   'lineno'
  @line_id      = opts.fetch :line_id,      'line-%i'
end

Public Instance Methods

stream(tokens) { |join| ... } click to toggle source
# File lib/rouge/formatters/html_line_table.rb, line 33
def stream(tokens, &b)
  lineno = @start_line - 1
  buffer = [%(<table class="#@table_class"><tbody>)]
  token_lines(tokens) do |line_tokens|
    lineno += 1
    buffer << %(<tr id="#{sprintf @line_id, lineno}" class="#@line_class">)
    buffer << %(<td class="#@gutter_class gl" )
    buffer << %(style="-moz-user-select: none;-ms-user-select: none;)
    buffer << %(-webkit-user-select: none;user-select: none;">)
    buffer << %(<pre>#{lineno}</pre></td>)
    buffer << %(<td class="#@code_class"><pre>)
    @formatter.stream(line_tokens) { |formatted| buffer << formatted }
    buffer << "\n</pre></td></tr>"
  end
  buffer << %(</tbody></table>)
  yield buffer.join
end