Sha256: 1f55451d493603147dd093a2d9d3e7d81bdcf279856d3028acfe1a7721d8260e

Contents?: true

Size: 1.27 KB

Versions: 2

Compression:

Stored size: 1.27 KB

Contents

module Symbiont
	module DataSetter
		
		def using(data)
			data.each do |key, value|
				use_text_data_with(key, value) if text_settable_for(key) and object_enabled_for(key)
        use_check_data_with(key, value) if value_checkable_for(key) and object_enabled_for(key)
        use_select_data_with(key, value) if value_selectable_for(key) and object_enabled_for(key)
			end
		end

		alias :using_data :using
		alias :using_values :using
		alias :use_data :using
		alias :use_values :using
		
		private
		
		def use_text_data_with(key, value)
			self.send "#{key}=", value
		end
		
    def use_check_data_with(key, value)
      if value
        self.send "check_#{key}"
      else
        self.send "uncheck_#{key}"
      end
    end
    
    def use_select_data_with(key, value)
      self.send "select_#{key}" if value
    end
    
    def text_settable_for(key)
      respond_to?("#{key}=".to_sym)
    end
    
    def value_checkable_for(key)
      respond_to?("check_#{key}".to_sym)
    end
    
    def value_selectable_for(key)
      respond_to?("select_#{key}".to_sym)
    end
    
    def object_enabled_for(key)
      return true if (self.send "#{key}_object").tag_name == "textarea"
      self.send("#{key}_object").enabled?
    end
    
	end # module: DataSetter
end # module: Symbiont

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
symbiont-0.2.1 lib/symbiont/data_setter.rb
symbiont-0.2.0 lib/symbiont/data_setter.rb