Module: Main::Cast
- Defined in:
- lib/main/cast.rb
Constant Summary collapse
- List =
[]
Class Method Summary collapse
Class Method Details
.[](sym) ⇒ Object
152 153 154 155 156 157 158 159 160 161 |
# File 'lib/main/cast.rb', line 152 def self.[] sym prefix = sym.to_s.downcase.to_sym candidates = List.select{|m| m =~ %r/^#{ prefix }/i} m = candidates.shift raise ArgumentError, "unsupported cast: #{ sym.inspect } (#{ List.join ',' })" unless m raise ArgumentError, "ambiguous cast: #{ sym.inspect } (#{ List.join ',' })" unless candidates.empty? or m.to_s == sym.to_s lambda{|obj| method(m).call obj} end |
.cast(*args, &block) ⇒ Object
10 11 12 13 14 15 16 17 18 19 |
# File 'lib/main/cast.rb', line 10 def Cast.cast(*args, &block) if args.first && block method = args.shift define_method(method, &block) export(method) List << (method.to_s) else Cast.send(*args) end end |
.export(m) ⇒ Object
3 4 5 6 |
# File 'lib/main/cast.rb', line 3 def self.export m module_function m public m end |