Changeset 1081
- Timestamp:
- 11/30/03 21:13:02 (5 years ago)
- Files:
-
- trunk/lib/soap/property.rb (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/soap/property.rb
r1080 r1081 31 31 end 32 32 33 # name: a Symbol, String or an Array 34 # hook: block which will be called with 2 args, name and value 33 35 def add_hook(name, &hook) 34 36 assign_hook(name_to_a(name), &hook) … … 38 40 39 41 def referent(ary) 40 key = to_key(ary[0]) 41 if ary.size == 1 42 name, *rest = *ary 43 key = to_key(name) 44 if ary.empty? 42 45 @store[key] 43 46 else 44 deref_key(key).referent( ary[1..-1])47 deref_key(key).referent(rest) 45 48 end 46 49 end 47 50 48 51 def assign(ary, value) 49 key = to_key(ary[0]) 50 if ary.size == 1 52 name, *rest = *ary 53 key = to_key(name) 54 if rest.empty? 51 55 @store[key] = value 52 56 local_hook(key) 53 57 else 54 local_hook(key) + deref_key(key).assign( ary[1..-1], value)58 local_hook(key) + deref_key(key).assign(rest, value) 55 59 end 56 60 end 57 61 58 62 def assign_hook(ary, &hook) 59 key = to_key(ary[0]) 60 if ary.size == 1 63 name, *rest = *ary 64 key = to_key(name) 65 if ary.empty? 61 66 (@hook[key] ||= []) << hook 62 67 else 63 deref_key(key).assign_hook( ary[1..-1], &hook)68 deref_key(key).assign_hook(rest, &hook) 64 69 end 65 70 end