Class: Tilt::SyntaxHighlightingRedcarpetTemplate
- Inherits:
-
Template
- Object
- Template
- Tilt::SyntaxHighlightingRedcarpetTemplate
- Defined in:
- lib/ro/initializers/tilt.rb
Direct Known Subclasses
Class Method Summary collapse
Instance Method Summary collapse
- #allows_script? ⇒ Boolean
- #erb(string, binding) ⇒ Object
- #evaluate(scope, locals, &block) ⇒ Object
- #initialize_engine ⇒ Object
- #prepare ⇒ Object
- #syntax_highlighting_renderer ⇒ Object
Class Method Details
.engine_initialized? ⇒ Boolean
7 8 9 |
# File 'lib/ro/initializers/tilt.rb', line 7 def self.engine_initialized? defined?(::Redcarpet) && defined?(::Pygments) && defined?(::ERB) end |
Instance Method Details
#allows_script? ⇒ Boolean
66 67 68 |
# File 'lib/ro/initializers/tilt.rb', line 66 def allows_script? true end |
#erb(string, binding) ⇒ Object
62 63 64 |
# File 'lib/ro/initializers/tilt.rb', line 62 def erb(string, binding) string end |
#evaluate(scope, locals, &block) ⇒ Object
51 52 53 54 55 56 57 58 59 60 |
# File 'lib/ro/initializers/tilt.rb', line 51 def evaluate(scope, locals, &block) binding = if scope.is_a?(::Binding) scope else scope.instance_eval{ ::Kernel.binding } end @engine.render(erb(data, binding)) end |
#initialize_engine ⇒ Object
11 12 13 14 15 |
# File 'lib/ro/initializers/tilt.rb', line 11 def initialize_engine require_template_library('redcarpet') require_template_library('pygments') require_template_library('erb') end |
#prepare ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/ro/initializers/tilt.rb', line 17 def prepare @engine = Redcarpet::Markdown.new( syntax_highlighting_renderer, :no_intra_emphasis => true, :tables => true, :fenced_code_blocks => true, :autolink => true, :disable_indented_code_blocks => true, :strikethrough => true, :lax_spacing => true, :space_after_headers => false, :superscript => true, :underline => true, :highlight => true, :quote => true, :with_toc_data => true, :hard_wrap => true, ) @output = nil end |
#syntax_highlighting_renderer ⇒ Object
42 43 44 45 46 47 48 49 |
# File 'lib/ro/initializers/tilt.rb', line 42 def syntax_highlighting_renderer Class.new(Redcarpet::Render::HTML) do def block_code(code, language) language = 'ruby' if language.to_s.strip.empty? ::Pygments.highlight(code, :lexer => language, :options => {:encoding => 'utf-8'}) end end end |