class Razor::View
Attributes
definition[R]
instances[R]
playout[R]
contents[RW]
Public Class Methods
all()
click to toggle source
# File lib/razor/view.rb, line 89 def all @subclasses.inject(@instances) { |ary, subclass| ary + subclass.instances } end
class_initialize()
click to toggle source
# File lib/razor/view.rb, line 17 def class_initialize @subclasses = [] @definition = Class.new(superclass.definition) @playout = superclass.playout @fields = {} @instances = [] end
eval(viewfile)
click to toggle source
# File lib/razor/view.rb, line 30 def eval(viewfile) @@last_evaluated = nil @@last_viewfile = viewfile Kernel.eval(File.read(viewfile.src), TOPLEVEL_BINDING) return @@last_evaluated end
extension(ext)
click to toggle source
# File lib/razor/view.rb, line 37 def extension(ext) @extension = ext end
field(name, default=nil)
click to toggle source
# File lib/razor/view.rb, line 65 def field(name, default=nil) if name =~ /^(field|contents)$/ raise "Try to create a #{name.inspect} field" end attr_accessor name @fields["@#{name}"] = default @definition.field(name) end
fields()
click to toggle source
# File lib/razor/view.rb, line 74 def fields if superclass.respond_to? :fields superclass.fields.merge(@fields) else @fields end end
get_extension()
click to toggle source
# File lib/razor/view.rb, line 53 def get_extension if superclass.respond_to? :get_extension @extension or superclass.get_extension else @extension end end
inherited(subclass)
click to toggle source
# File lib/razor/view.rb, line 12 def inherited(subclass) @subclasses << subclass subclass.class_initialize end
layout(str=nil, &block)
click to toggle source
# File lib/razor/view.rb, line 61 def layout(str=nil, &block) @playout = str ? lambda { str } : block end
layout_render(instance)
click to toggle source
# File lib/razor/view.rb, line 95 def layout_render(instance) render(Mustache::Context.new(instance)) end
layouts_path=(path)
click to toggle source
# File lib/razor/view.rb, line 41 def layouts_path=(path) @@layouts_path = path end
new(*args, &block)
click to toggle source
Calls superclass method
# File lib/razor/view.rb, line 82 def new(*args, &block) instance = super(*args, &block) @instances << instance @@last_evaluated = instance return instance end
new(*args, &block)
click to toggle source
# File lib/razor/view.rb, line 125 def initialize(*args, &block) @viewfile = @@last_viewfile @contents = lambda { '' } self.class.fields.each { |iv| instance_variable_set(*iv) } if block_given? self.class.definition.new(self, &block) end end
render(context)
click to toggle source
# File lib/razor/view.rb, line 99 def render(context) renderer = Renderer.get(@@layouts_path, @playout) if superclass.respond_to? :render if renderer.valid? context.push('yield' => renderer.layout_render(context)) end superclass.render(context) else if renderer.valid? renderer.layout_render(context) else context['yield'] end end end
reset_instances!()
click to toggle source
# File lib/razor/view.rb, line 25 def reset_instances! @instances = [] @subclasses.each(&:reset_instances!) end
url_base()
click to toggle source
# File lib/razor/view.rb, line 45 def url_base @@url_base end
url_base=(url_base)
click to toggle source
# File lib/razor/view.rb, line 49 def url_base=(url_base) @@url_base = url_base end
Public Instance Methods
field(name, value)
click to toggle source
# File lib/razor/view.rb, line 144 def field(name, value) (class<<self; self; end).class_eval { attr name } instance_variable_set("@#{name}", value) end
render()
click to toggle source
# File lib/razor/view.rb, line 153 def render self.class.layout_render(self) end
url()
click to toggle source
# File lib/razor/view.rb, line 136 def url @viewfile.url end
url_base()
click to toggle source
# File lib/razor/view.rb, line 140 def url_base self.class.url_base end
view_eval(&block)
click to toggle source
# File lib/razor/view.rb, line 180 def view_eval(&block) @view.instance_eval(&block) end
yield()
click to toggle source
# File lib/razor/view.rb, line 149 def yield Renderer.get(@viewfile.parent.src, @contents).render(self) end