12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- require 'tilt/template'
- module Tilt
- # Markaby
- # http://github.com/markaby/markaby
- class MarkabyTemplate < Template
- def self.builder_class
- @builder_class ||= Class.new(Markaby::Builder) do
- def __capture_markaby_tilt__(&block)
- __run_markaby_tilt__ do
- text capture(&block)
- end
- end
- end
- end
- def self.engine_initialized?
- defined? ::Markaby
- end
- def initialize_engine
- require_template_library 'markaby'
- end
- def prepare
- end
- def evaluate(scope, locals, &block)
- builder = self.class.builder_class.new({}, scope)
- builder.locals = locals
- if data.kind_of? Proc
- (class << builder; self end).send(:define_method, :__run_markaby_tilt__, &data)
- else
- builder.instance_eval <<-CODE, __FILE__, __LINE__
- def __run_markaby_tilt__
- #{data}
- end
- CODE
- end
- if block
- builder.__capture_markaby_tilt__(&block)
- else
- builder.__run_markaby_tilt__
- end
- builder.to_s
- end
- end
- end
|