Module: ASIR::CodeMore
Overview
!SLIDE Code More
Help encode/decode and resolve receiver class.
Defined Under Namespace
Modules: Result
Instance Attribute Summary collapse
-
#receiver_name ⇒ Object
Returns the value of attribute receiver_name.
Instance Method Summary collapse
- #decode_more! ⇒ Object
-
#description ⇒ Object
Returns “Module.selector” if receiver is Module.
- #encode_more! ⇒ Object
-
#message_kind ⇒ Object
If receiver is a Module (i.e. class or module message), Returns [ name of the Module, :‘.’ ] Otherwise Returns [ name of the receiver’s Class, :‘#’ ].
Methods included from CodeBlock
block_cache, block_to_code, code_to_block, #decode_block!, #encode_block!
Methods included from ObjectResolving
Instance Attribute Details
#receiver_name ⇒ Object
Returns the value of attribute receiver_name.
10 11 12 |
# File 'lib/asir/code_more.rb', line 10 def receiver_name @receiver_name end |
Instance Method Details
#decode_more! ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/asir/code_more.rb', line 28 def decode_more! decode_block! if ::String === @receiver_class # pp [ :decode_more!, self ] @receiver_class = resolve_object(@receiver_class) @receiver = resolve_object(@receiver) if @receiver_name 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.
58 59 60 61 |
# File 'lib/asir/code_more.rb', line 58 def description x = "#{x[0]}#{x[1]}#{@selector}" end |
#encode_more! ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/asir/code_more.rb', line 12 def encode_more! obj = encode_block! # may self.dup unless ::String === @receiver_class obj ||= self.dup # dont dup twice. if ::Module === @receiver obj.receiver_name = true obj.receiver = @receiver.name end obj.receiver_class = @receiver_class.name if resp = obj.result and resp. == self resp. = obj end end obj || self end |
#message_kind ⇒ Object
If receiver is a Module (i.e. class or module message),
Returns [ name of the Module, :'.' ]
Otherwise
Returns [ name of the receiver's Class, :'#' ]
45 46 47 48 49 50 51 52 53 54 |
# File 'lib/asir/code_more.rb', line 45 def case when ::String === @receiver_class [ @receiver_class, :'.' ] when ::Module === @receiver [ @receiver.name, :'.' ] else [ @receiver_class.name, :'#' ] end end |