class Markaby::CssProxy

Class used by Markaby::Builder to store element options. Methods called against the CssProxy object are added as element classes or IDs.

See the README for examples.

Public Class Methods

new(opts = {}, &blk) click to toggle source

Creates a CssProxy object. The opts and block passed in are stored until the element is created by Markaby::Builder#tag!

# File lib/markaby/cssproxy.rb, line 10
def initialize(opts = {}, &blk)
  @opts = opts
  @blk = blk
end

Public Instance Methods

merge!(opts) click to toggle source

Adds attributes to an element, for internal use only. For example, if you want to write a wrapper which sets a bunch of default attributes for a certain tag. Like the default `img' method included with Markaby automatically sets an empty alt attribute.

# File lib/markaby/cssproxy.rb, line 19
def merge!(opts)
  @opts.merge! opts
  self
end
method_missing(id_or_class, *args, &blk) click to toggle source

Adds attributes to an element. Bang methods set the :id attribute. Other methods add to the :class attribute. If a block is supplied, it is executed with a merged hash (@opts + args).

# File lib/markaby/cssproxy.rb, line 27
def method_missing(id_or_class, *args, &blk)
  idc = id_or_class.to_s
  case idc
  when "pass"
  when /!$/
    @opts[:id] = $`
  else 
    @opts[:class] = "#{@opts[:class]} #{idc}".strip
  end
  if args.empty? and blk.nil?
    self
  else
    if args.last.respond_to? :to_hash
      @opts.merge!(args.pop.to_hash)
    end
    args.push @opts
    @blk.call(args, blk)
  end
end
to_s()
Alias for: to_str
to_str() click to toggle source
# File lib/markaby/cssproxy.rb, line 47
def to_str
  @blk.call([[@opts]]).to_s
end
Also aliased as: to_s