class Tsundere::Imouto

Public Class Methods

new(parent, level) click to toggle source
# File lib/tsundere/imouto.rb, line 5
def initialize parent, level
        @parent = parent
        @level = level
end

Public Instance Methods

method_missing(meth, *args, &block) click to toggle source
Calls superclass method
# File lib/tsundere/imouto.rb, line 10
def method_missing meth, *args, &block
        
        conditions = []
        conditions << lambda do
                :[] == meth and @parent.dere_for? @level, process_args( *args )
        end
        conditions << lambda do
                :[]= == meth and @parent.dere_for? @level, process_args( *args[0..-2] )
        end
        conditions << lambda do
                @parent.dere_for? @level, meth 
        end
        if @parent.respond_to? meth 
                if conditions.inject(false) { |mem, c| mem or c.call }
                        case meth
                        when :[]
                                @parent[*args, &block] unless block.nil?
                                @parent[*args] if block.nil?
                        when :[]=
                                tail = args.pop 

                                @parent[*args] = tail
                        else
                                @parent.send(meth, *args, &block) unless block.nil?
                                @parent.send(meth, *args) if block.nil?
                        end # meth
                else

                        return @parent.tsun_for @level
                end # if conditions inject
        else
                super
        end # if has method
end
respond_to?(meth) click to toggle source
# File lib/tsundere/imouto.rb, line 45
def respond_to? meth
        if @parent.dere_for? @level, meth 
                @parent.respond_to? meth
        elsif :[] == meth or :[]= == meth
                @parent.respond_to? meth
        else
                false
        end # if-dere
end

Private Instance Methods

process_args(*args) click to toggle source
# File lib/tsundere/imouto.rb, line 57
def process_args *args
        args.inject("") { |mem, arg| mem += arg.to_s }.to_sym
end