Class: Is::Property
Defined Under Namespace
Modules: Validators
Instance Attribute Summary collapse
- #getter ⇒ Proc readonly
- #name ⇒ Symbol readonly
- #options ⇒ Hash readonly
- #owner ⇒ Module readonly
- #setter ⇒ Proc readonly
Instance Method Summary collapse
- #===(value) ⇒ Boolean
- #default(obj) ⇒ Object?
-
#initialize(owner, name, opts = {}) ⇒ Property
constructor
A new instance of Property.
Constructor Details
#initialize(owner, name, opts = {}) ⇒ Property
Returns a new instance of Property.
230 231 232 233 234 |
# File 'lib/is/monkey/properties.rb', line 230 def initialize owner, name, opts = {} @owner = owner @name = name.intern @opts = opts end |
Instance Attribute Details
#getter ⇒ Proc (readonly)
204 205 206 |
# File 'lib/is/monkey/properties.rb', line 204 def getter @getter end |
#name ⇒ Symbol (readonly)
201 202 203 |
# File 'lib/is/monkey/properties.rb', line 201 def name @name end |
#options ⇒ Hash (readonly)
210 211 212 |
# File 'lib/is/monkey/properties.rb', line 210 def @options end |
#owner ⇒ Module (readonly)
213 214 215 |
# File 'lib/is/monkey/properties.rb', line 213 def owner @owner end |
#setter ⇒ Proc (readonly)
207 208 209 |
# File 'lib/is/monkey/properties.rb', line 207 def setter @setter end |
Instance Method Details
#===(value) ⇒ Boolean
262 263 264 265 266 267 268 269 270 |
# File 'lib/is/monkey/properties.rb', line 262 def === value if @opts[:validator] @opts[:validator] === value elsif @opts[:class] @opts[:class] === value else true end end |
#default(obj) ⇒ Object?
238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 |
# File 'lib/is/monkey/properties.rb', line 238 def default obj if Class === obj && obj.superclass && obj.superclass.respond_to?(@name) v = obj.superclass.send @name else v = nil end if v == nil if @opts.has_key? :init v = @opts[:init].call obj elsif @opts.has_key? :default v = @opts[:default] elsif @opts.has_key? :class begin v = @opts[:class].new rescue v = nil end end end v end |