Class: Markaby::CssProxy
- Inherits:
-
Object
- Object
- Markaby::CssProxy
- Defined in:
- lib/markaby/cssproxy.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
-
#initialize(builder, stream, sym) ⇒ CssProxy
constructor
A new instance of CssProxy.
- #respond_to?(sym, include_private = false) ⇒ Boolean
Constructor Details
#initialize(builder, stream, sym) ⇒ CssProxy
Returns a new instance of CssProxy.
7 8 9 10 11 12 13 14 15 16 |
# File 'lib/markaby/cssproxy.rb', line 7 def initialize(builder, stream, sym) @builder = builder @stream = stream @sym = sym @attrs = {} @original_stream_length = @stream.length @builder.tag! sym end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(id_or_class, *args, &block) ⇒ Object (private)
Adds attributes to an element. Bang methods set the :id attribute. Other methods add to the :class attribute.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/markaby/cssproxy.rb', line 26 def method_missing(id_or_class, *args, &block) if id_or_class.to_s =~ /(.*)!$/ @attrs[:id] = $1 else id = id_or_class @attrs[:class] = @attrs[:class] ? "#{@attrs[:class]} #{id}".strip : id end unless args.empty? if args.last.respond_to? :to_hash @attrs.merge! args.pop.to_hash end end args.push(@attrs) while @stream.length > @original_stream_length @stream.pop end if block @builder.tag! @sym, *args, &block else @builder.tag! @sym, *args end self end |
Instance Method Details
#respond_to?(sym, include_private = false) ⇒ Boolean
18 19 20 |
# File 'lib/markaby/cssproxy.rb', line 18 def respond_to?(sym, include_private = false) (include_private || !private_methods.map { |m| m.to_sym }.include?(sym.to_sym)) ? true : false end |