Class: Rouge::Formatters::HTMLGitlab

Inherits:
HTML
  • Object
show all
Defined in:
lib/rouge/formatters/html_gitlab.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ HTMLGitlab

Creates a new Rouge::Formatter::HTMLGitlab instance.

tag

The tag (language) of the lexer used to generate the formatted tokens

line_number

The line number used to populate line IDs


12
13
14
15
# File 'lib/rouge/formatters/html_gitlab.rb', line 12

def initialize(options = {})
  @tag = options[:tag]
  @line_number = options[:line_number] || 1
end

Instance Method Details

#stream(tokens) ⇒ Object


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/rouge/formatters/html_gitlab.rb', line 17

def stream(tokens)
  is_first = true
  token_lines(tokens) do |line|
    yield "\n" unless is_first
    is_first = false

    yield %(<span id="LC#{@line_number}" class="line" lang="#{@tag}">)

    line.each do |token, value|
      yield highlight_unicode_control_characters(span(token, value.chomp! || value))
    end

    yield %(</span>)

    @line_number += 1
  end
end