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