Sha256: fbd90e9aa10924579cc2961a39a90891bbe069f3dc43549a1ab573f1513798d6

Contents?: true

Size: 1.17 KB

Versions: 26

Compression:

Stored size: 1.17 KB

Contents

# content_or_self
[Hash, OpenObject].each do |aclass|
  aclass.class_eval do 
    def hash?; true end
  end
end

NilClass.class_eval do
  def content; "" end
  def hash?; false end
end

String.class_eval do
  def content; self end
  def hash?; false end
end

# OpenObject
OpenObject.class_eval do
  HTML_ATTRIBUTES = [:id, :class]
  
  def merge_html_attributes hash
    # html attributes
    result = {}
    HTML_ATTRIBUTES.each{|k| result[k.to_s] = self[k] if include? k}
    html_attributes.each{|k, v| result[k.to_s] = v} if html_attributes?
    
    # merging html attributes with hash
    hash.each do |k, v|
      k = k.to_s
      if result.include?(k) and v.is_a?(String)
        string = result[k].should! :be_a, [Symbol, String]
        result[k] = "#{result[k]}#{v}"
      else
        result[k] = v
      end
    end
    result
  end
  
  protected
    def method_missing( sym, arg=nil, &blk)
      type = sym.to_s[-1,1]
      key = sym.to_s.sub(/[=?!]$/,'').to_sym
      if type == '='
        define_slot(key,arg)
      elsif type == '!'
        define_slot(key,arg)
        self
      elsif type == '?'
        !self[key].blank?
      else
        self[key]
      end
    end
end

Version data entries

26 entries across 26 versions & 2 rubygems

Version Path
crystal-ext-0.0.1 lib/abstract_interface/support.rb
rails-ext-0.3.29 lib/abstract_interface/support.rb
rails-ext-0.3.28 lib/abstract_interface/support.rb
rails-ext-0.3.27 lib/interface_builder/support.rb
rails-ext-0.3.25 lib/interface_builder/support.rb
rails-ext-0.3.24 lib/interface_builder/support.rb
rails-ext-0.3.23 lib/interface_builder/support.rb
rails-ext-0.3.22 lib/interface_builder/support.rb
rails-ext-0.3.21 lib/interface_builder/support.rb
rails-ext-0.3.20 lib/interface_builder/support.rb
rails-ext-0.3.19 lib/interface_builder/support.rb
rails-ext-0.3.18 lib/interface_builder/support.rb
rails-ext-0.3.17 lib/interface_builder/support.rb
rails-ext-0.3.16 lib/interface_builder/support.rb
rails-ext-0.3.15 lib/interface_builder/support.rb
rails-ext-0.3.14 lib/interface_builder/support.rb
rails-ext-0.3.13 lib/interface_builder/support.rb
rails-ext-0.3.12 lib/interface_builder/support.rb
rails-ext-0.3.11 lib/interface_builder/support.rb
rails-ext-0.3.10 lib/interface_builder/support.rb