Module: Ramaze::View::Mustache
- Defined in:
- lib/ramaze/view/mustache.rb
Overview
Binding to Mustache templating engine.
Mustache uses user-defined class for rendering. Ramaze overwrites value, if controller defined same name variable as method that class defined.
Defined Under Namespace
Classes: RamazeContext
Class Method Summary collapse
Class Method Details
.call(action, string) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/ramaze/view/mustache.rb', line 18 def self.call(action, string) context, path, ext = class_defined?(action) action.sync_variables(action) action.variables.each { |k, v| context[k.to_sym] = v } view = View.compile(string) { |s| ::Mustache::Template.new(s) } html = view.render(context) return html, 'text/html' end |
.class_defined?(action) ⇒ Boolean
30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/ramaze/view/mustache.rb', line 30 def self.class_defined?(action) return RamazeContext.new(nil), nil, nil unless action.view path = File.dirname(action.view) klass = if FileTest.exist?(File.join(path, "#{action.name}.rb")) require File.join(path, action.name) ::Object.const_get(::Mustache.classify(action.name)) # or eval? else ::Mustache end return RamazeContext.new(klass.new), path, View.exts_of(self).first end |