Module: ASIR::CodeMore
Overview
!SLIDE Code More
Help encode/decode and resolve receiver class.
Defined Under Namespace
Modules: Result
Instance Method Summary collapse
- #decode_more! ⇒ Object
-
#description ⇒ Object
Returns “Module.selector” if receiver is Module.
- #encode_more! ⇒ Object
Methods included from CodeBlock
block_cache, block_to_code, code_to_block, #decode_block!, #encode_block!
Methods included from ObjectResolving
Instance Method Details
#decode_more! ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/asir/code_more.rb', line 23 def decode_more! decode_block! if ::String === @receiver_class @receiver_class = resolve_object(@receiver_class) @receiver = resolve_object(@receiver) if ::Module === @receiver_class unless @receiver_class === @receiver raise Error, "receiver #{@receiver.class.name} is not a #{@receiver_class}" end end self end |
#description ⇒ Object
Returns “Module.selector” if receiver is Module. Returns “Class#selector” if receiver is an instance.
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/asir/code_more.rb', line 37 def description case when ::String === @receiver_class "#{@receiver_class}.#{@selector}" when ::Module === @receiver "#{@receiver}.#{@selector}" else "#{@receiver_class}\#\#{@selector}" end end |
#encode_more! ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/asir/code_more.rb', line 10 def encode_more! obj = encode_block! # may self.dup unless ::String === @receiver_class obj ||= self.dup # dont dup twice. obj.receiver = @receiver.name if ::Module === @receiver obj.receiver_class = @receiver_class.name if resp = obj.result and resp. == self resp. = obj end end obj || self end |