class Makeup::SyntaxHighlighter

Public Class Methods

lexer(path, code = nil, mode = nil) click to toggle source
# File lib/makeup/syntax_highlighter.rb, line 51
def self.lexer(path, code = nil, mode = nil)
  lexer = Linguist::Language.detect(path, code, mode)
  lexer && (lexer.aliases.first || lexer.name)
end
new() click to toggle source
# File lib/makeup/syntax_highlighter.rb, line 33
def initialize
  @entities = HTMLEntities.new
end

Public Instance Methods

highlight(path, code, options = {}) click to toggle source
# File lib/makeup/syntax_highlighter.rb, line 37
def highlight(path, code, options = {})
  options[:lexer] ||= lexer(path, code)
  lexer = Pygments::Lexer.find(options[:lexer])
  return unknown_lexer(code) unless lexer
  code = Pygments.highlight(code, highlight_options(options))
  CodeBlock.new(lexer.aliases.first, code)
rescue MentosError
  unknown_lexer(code)
end
lexer(path, code = nil, mode = nil) click to toggle source
# File lib/makeup/syntax_highlighter.rb, line 47
def lexer(path, code = nil, mode = nil)
  self.class.lexer(path, code, mode)
end

Private Instance Methods

highlight_options(options = {}) click to toggle source
# File lib/makeup/syntax_highlighter.rb, line 62
def highlight_options(options = {})
  options[:options] ||= {}
  options[:options][:nowrap] = true
  options[:options][:encoding] ||= "utf-8"
  options
end
unknown_lexer(code) click to toggle source
# File lib/makeup/syntax_highlighter.rb, line 58
def unknown_lexer(code)
  CodeBlock.new(nil, @entities.encode(code))
end