Module | BoxGrinder::AStructMixin |
In: |
lib/boxgrinder-core/astruct_mixin.rb
lib/boxgrinder-core/astruct_mixin.rb |
# File lib/boxgrinder-core/astruct_mixin.rb, line 14 14: def [](key) 15: r = [key, key.to_sym, key.to_s].find { |fk| !super(fk).nil? } 16: transform_entry( key, super(r) ) 17: end
# File lib/boxgrinder-core/astruct_mixin.rb, line 14 14: def [](key) 15: r = [key, key.to_sym, key.to_s].find { |fk| !super(fk).nil? } 16: transform_entry( key, super(r) ) 17: end
# File lib/boxgrinder-core/astruct_mixin.rb, line 5 5: def cascade_for_nils! 6: @cascade_for_nils = true 7: self 8: end
# File lib/boxgrinder-core/astruct_mixin.rb, line 5 5: def cascade_for_nils! 6: @cascade_for_nils = true 7: self 8: end
# File lib/boxgrinder-core/astruct_mixin.rb, line 54 54: def inspect 55: "AStruct<#{super.to_s}>" 56: end
# File lib/boxgrinder-core/astruct_mixin.rb, line 54 54: def inspect 55: "AStruct<#{super.to_s}>" 56: end
# File lib/boxgrinder-core/astruct_mixin.rb, line 10 10: def key?(key) 11: super( key ) || super( key.to_sym ) || super( key.to_s ) 12: end
# File lib/boxgrinder-core/astruct_mixin.rb, line 10 10: def key?(key) 11: super( key ) || super( key.to_sym ) || super( key.to_s ) 12: end
# File lib/boxgrinder-core/astruct_mixin.rb, line 19 19: def method_missing(sym, *args, &blk) 20: type = sym.to_s[-1,1] 21: name = sym.to_s.gsub(/[=!?]$/, '').to_sym 22: case type 23: when '=' 24: self[name] = args.first 25: when '!' 26: __send__(name, *args, &blk) 27: when '?' 28: self[name] 29: else 30: if key?(name) 31: self[name] 32: elsif @cascade_for_nils 33: self[name] = AStruct.new.cascade_for_nils! 34: self[name] 35: else 36: nil 37: end 38: end 39: end
# File lib/boxgrinder-core/astruct_mixin.rb, line 19 19: def method_missing(sym, *args, &blk) 20: type = sym.to_s[-1,1] 21: name = sym.to_s.gsub(/[=!?]$/, '').to_sym 22: case type 23: when '=' 24: self[name] = args.first 25: when '!' 26: __send__(name, *args, &blk) 27: when '?' 28: self[name] 29: else 30: if key?(name) 31: self[name] 32: elsif @cascade_for_nils 33: self[name] = AStruct.new.cascade_for_nils! 34: self[name] 35: else 36: nil 37: end 38: end 39: end
# File lib/boxgrinder-core/astruct_mixin.rb, line 41 41: def transform_entry(for_key, entry) 42: case(entry) 43: when AStructMixin 44: entry 45: when Hash 46: entry.extend(AStructMixin) 47: when Array 48: entry.map!{|i| transform_entry(for_key, i)} 49: else 50: entry 51: end 52: end