class Rouge::Formatters::HTMLLineTable
def initialize(formatter, opts={})
(**opts)
-
:code_class
(String
) -- Class name for rendered code cell. -
:gutter_class
(String
) -- Class name for rendered line-number cell. -
:line_class
(String
) -- Class name for each table row. -
:line_id
(String
) -- a `sprintf` template for generating an `id` -
:table_class
(String
) -- Class name for the table. -
:start_line
(Integer
) -- line number to start from. Defaults to `1`.
Parameters:
-
opts
(Hash
) -- options for HTMLLineTable instance. -
formatter
(Rouge::Formatters::Formatter
) -- An instance of a
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
def stream(tokens, &b)
def stream(tokens, &b) buffer = [%(<table class="#@table_class"><tbody>)] token_lines(tokens).with_index(@start_line) do |line_tokens, lineno| 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