Class: Hpricot::CssProxy

Inherits:
BlankSlate show all
Defined in:
lib/hpricot/builder.rb

Overview

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.

Instance Method Summary collapse

Methods inherited from BlankSlate

hide

Constructor Details

#initialize(builder, sym) ⇒ CssProxy

Creates a CssProxy object.



193
194
195
# File 'lib/hpricot/builder.rb', line 193

def initialize(builder, sym)
  @builder, @sym, @attrs = builder, sym, {}
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(id_or_class, *args, &block) ⇒ Object

Adds attributes to an element. Bang methods set the :id attribute. Other methods add to the :class attribute.



199
200
201
202
203
204
205
206
207
208
209
210
211
212
# File 'lib/hpricot/builder.rb', line 199

def method_missing(id_or_class, *args, &block)
  if (idc = id_or_class.to_s) =~ /!$/
    @attrs[:id] = $`
  else
    @attrs[:class] = @attrs[:class].nil? ? idc : "#{@attrs[:class]} #{idc}".strip
  end

  if block or args.any?
    args.push(@attrs)
    return @builder.tag!(@sym, *args, &block)
  end
  
  return self
end