Sha256: aeba1e41b1aee2932961d7d72d78967c1673e642b5a75e8930b9724f11b21fb9
Contents?: true
Size: 1.9 KB
Versions: 3
Compression:
Stored size: 1.9 KB
Contents
module React module Component class PropsWrapper attr_reader :props def self.define_param(name, param_type, owner) owner.define_method("#{name}") do |*args, &block| deprecated_params_method("#{name}", *args, &block) end if param_type == Observable owner.define_method("#{name}!") do |*args| deprecated_params_method("#{name}!", *args) end define_method("#{name}") do value_for(name) end define_method("#{name}!") do |*args| current_value = value_for(name) if args.count > 0 props[name].call args[0] current_value else # rescue in case we in middle of render... What happens during a # render that causes exception? # Where does `dont_update_state` come from? props[name].call current_value unless @dont_update_state rescue nil props[name] end end elsif param_type == Proc define_method("#{name}") do |*args, &block| props[name].call(*args, &block) if props[name] end else define_method("#{name}") do if param_type.respond_to? :_react_param_conversion param_type._react_param_conversion props[name] elsif param_type.is_a?(Array) && param_type[0].respond_to?(:_react_param_conversion) props[name].collect do |param| param_type[0]._react_param_conversion param end else props[name] end end end end def initialize(props) @props = props || {} end def [](prop) props[prop] end private def value_for(name) self[name].instance_variable_get("@value") if self[name] end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
reactive-ruby-0.7.36 | lib/react/component/props_wrapper.rb |
reactive-ruby-0.7.35 | lib/react/component/props_wrapper.rb |
reactive-ruby-0.7.34 | lib/react/component/props_wrapper.rb |