Class: Hpricot::CssProxy

Inherits:
BasicObject
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

Constructor Details

#initialize(builder, sym) ⇒ CssProxy

Creates a CssProxy object.



221
222
223
# File 'lib/hpricot/builder.rb', line 221

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.



227
228
229
230
231
232
233
234
235
236
237
238
239
240
# File 'lib/hpricot/builder.rb', line 227

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