Class: Rembrandt::Highlighter
- Inherits:
-
Object
- Object
- Rembrandt::Highlighter
- Defined in:
- lib/rembrandt/highlighter.rb
Instance Attribute Summary collapse
Instance Method Summary collapse
- #autoselect_engine ⇒ Object
- #autoselect_store ⇒ Object
- #default_language ⇒ Object
- #engine ⇒ Object
- #engines ⇒ Object
- #highlight(input, input_language = default_language) ⇒ Object
- #highlight_file(filename, language = default_language) ⇒ Object
-
#initialize(input_engine = nil) ⇒ Highlighter
constructor
A new instance of Highlighter.
- #language_normalizer ⇒ Object
- #normalize_language(input) ⇒ Object
Constructor Details
#initialize(input_engine = nil) ⇒ Highlighter
Returns a new instance of Highlighter.
12 13 14 |
# File 'lib/rembrandt/highlighter.rb', line 12 def initialize(input_engine = nil) @engine = input_engine.new if input_engine end |
Instance Attribute Details
#store ⇒ Object
20 21 22 |
# File 'lib/rembrandt/highlighter.rb', line 20 def store @store ||= autoselect_store end |
Instance Method Details
#autoselect_engine ⇒ Object
41 42 43 44 45 46 47 |
# File 'lib/rembrandt/highlighter.rb', line 41 def autoselect_engine begin engines.detect(&:available?).new rescue raise "Error: no highlight engine is available." end end |
#autoselect_store ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/rembrandt/highlighter.rb', line 28 def autoselect_store redis = Stores::Redis.new if redis.available? redis else Stores::File.new end end |
#default_language ⇒ Object
24 25 26 |
# File 'lib/rembrandt/highlighter.rb', line 24 def default_language Config.default_language end |
#engine ⇒ Object
16 17 18 |
# File 'lib/rembrandt/highlighter.rb', line 16 def engine @engine ||= autoselect_engine end |
#engines ⇒ Object
37 38 39 |
# File 'lib/rembrandt/highlighter.rb', line 37 def engines Config.engine_priority end |
#highlight(input, input_language = default_language) ⇒ Object
49 50 51 52 53 54 |
# File 'lib/rembrandt/highlighter.rb', line 49 def highlight(input, input_language = default_language) language = normalize_language(input_language) store.fetch(input, language) do engine.highlight(input, language) end end |
#highlight_file(filename, language = default_language) ⇒ Object
56 57 58 59 |
# File 'lib/rembrandt/highlighter.rb', line 56 def highlight_file(filename, language = default_language) data = File.read(filename) highlight(data, language) end |
#language_normalizer ⇒ Object
65 66 67 |
# File 'lib/rembrandt/highlighter.rb', line 65 def language_normalizer @language_normalizer ||= LanguageNormalizer.new end |
#normalize_language(input) ⇒ Object
61 62 63 |
# File 'lib/rembrandt/highlighter.rb', line 61 def normalize_language(input) language_normalizer.process(input) end |