71 lines
2.0 KiB
Ruby
71 lines
2.0 KiB
Ruby
module Radius
|
|
#
|
|
# A tag binding is passed into each tag definition and contains helper methods for working
|
|
# with tags. Use it to gain access to the attributes that were passed to the tag, to
|
|
# render the tag contents, and to do other tasks.
|
|
#
|
|
class TagBinding
|
|
# The Context that the TagBinding is associated with. Used internally. Try not to use
|
|
# this object directly.
|
|
attr_reader :context
|
|
|
|
# The locals object for the current tag.
|
|
attr_reader :locals
|
|
|
|
# The name of the tag (as used in a template string).
|
|
attr_reader :name
|
|
|
|
# The attributes of the tag. Also aliased as TagBinding#attr.
|
|
attr_reader :attributes
|
|
alias :attr :attributes
|
|
|
|
# The render block. When called expands the contents of the tag. Use TagBinding#expand
|
|
# instead.
|
|
attr_reader :block
|
|
|
|
# Creates a new TagBinding object.
|
|
def initialize(context, locals, name, attributes, block)
|
|
@context, @locals, @name, @attributes, @block = context, locals, name, attributes, block
|
|
end
|
|
|
|
# Evaluates the current tag and returns the rendered contents.
|
|
def expand
|
|
double? ? block.call : ''
|
|
end
|
|
|
|
# Returns true if the current tag is a single tag.
|
|
def single?
|
|
block.nil?
|
|
end
|
|
|
|
# Returns true if the current tag is a container tag.
|
|
def double?
|
|
not single?
|
|
end
|
|
|
|
# The globals object from which all locals objects ultimately inherit their values.
|
|
def globals
|
|
@context.globals
|
|
end
|
|
|
|
# Returns a list of the way tags are nested around the current tag as a string.
|
|
def nesting
|
|
@context.current_nesting
|
|
end
|
|
|
|
# Fires off Context#tag_missing for the current tag.
|
|
def missing!
|
|
@context.tag_missing(name, attributes, &block)
|
|
end
|
|
|
|
# Renders the tag using the current context .
|
|
def render(tag, attributes = {}, &block)
|
|
@context.render_tag(tag, attributes, &block)
|
|
end
|
|
|
|
# Shortcut for accessing tag.attr[key]
|
|
def [](key)
|
|
attr[key]
|
|
end
|
|
end
|
|
end |