module Wunderbar::Template
Tilt template implementation
Constants
- PASSABLE
Public Class Methods
locals(scope, args)
click to toggle source
# File lib/wunderbar/sinatra.rb, line 166 def self.locals(scope, args) args.push({}) if args.length == 1 return unless Hash === args.last and not args.last[:locals] locals = {} scope.instance_variables.each do |ivar| next if [:@env, :@params].include? ivar value = scope.instance_variable_get(ivar) locals[ivar] = value end args.last[:locals] = locals end
register(language, base=Base)
click to toggle source
# File lib/wunderbar/sinatra.rb, line 182 def self.register(language, base=Base) template = Class.new(Template::Base) do self.default_mime_type = language.mime include language end Array(language.ext).each do |ext| SinatraHelpers.send :define_method, ext do |*args, &block| # parse json if env['CONTENT_TYPE'] =~ /^\w+\/json/ json = JSON.parse(env['rack.input'].read) @params.merge! json if Hash === json end Wunderbar::Template.locals(self, args) if Hash === args.last and args.last[:locals] @params.each do |name, value| args.last[:locals]["@#{name}".to_sym] = value end end # text, json shortcuts if block == nil and args.length >= 1 case args.first when Array, Hash block = proc { _! args.first } if ext == :_json when String block = proc { _ args.first } if ext == :_text end end template.evaluate(ext, self, *args, &block) end Tilt.register ext.to_s, template end end