Class: Hpricot::CssProxy

Inherits:
BlankSlate show all
Defined in:
lib/ext/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.


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

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.


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

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