Module: Redmine::SyntaxHighlighting::Rouge

Defined in:
lib/redmine/syntax_highlighting.rb

Defined Under Namespace

Classes: CustomHTMLLinewise

Class Method Summary collapse

Class Method Details

.filename_supported?(filename) ⇒ Boolean

Returns:

  • (Boolean)


112
113
114
# File 'lib/redmine/syntax_highlighting.rb', line 112

def filename_supported?(filename)
  !::Rouge::Lexer.guesses(:filename => filename).empty?
end

.highlight_by_filename(text, filename) ⇒ Object

Highlights text as the content of filename Should not return line numbers nor outer pre tag



87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/redmine/syntax_highlighting.rb', line 87

def highlight_by_filename(text, filename)
  # TODO: Delete the following workaround for #30434 and
  # test_syntax_highlight_should_normalize_line_endings in
  # application_helper_test.rb when Rouge is improved to
  # handle CRLF properly.
  # See also: https://github.com/jneen/rouge/pull/1078
  text = text.gsub(/\r\n?/, "\n")

  lexer =::Rouge::Lexer.guess(:source => text, :filename => filename)
  formatter = ::Rouge::Formatters::HTML.new
  ::Rouge.highlight(text, lexer, CustomHTMLLinewise.new(formatter))
end

.highlight_by_language(text, language) ⇒ Object

Highlights text using language syntax Should not return outer pre tag



102
103
104
105
106
# File 'lib/redmine/syntax_highlighting.rb', line 102

def highlight_by_language(text, language)
  lexer =
    find_lexer(language.to_s.downcase) || ::Rouge::Lexers::PlainText
  ::Rouge.highlight(text, lexer, ::Rouge::Formatters::HTML)
end

.language_supported?(language) ⇒ Boolean

Returns:

  • (Boolean)


108
109
110
# File 'lib/redmine/syntax_highlighting.rb', line 108

def language_supported?(language)
  find_lexer(language.to_s.downcase) ? true : false
end