module Tsundere

class methods

Imouto class; aka, the tsundere proxy

tsundere instance module

Public Class Methods

included(base) click to toggle source
# File lib/tsundere.rb, line 9
def self.included(base)
        base.extend ClassMethods
end

Public Instance Methods

dere_for?(lvl, meth) click to toggle source
# File lib/tsundere/instance_methods.rb, line 10
def dere_for? lvl, meth
        return false if lvl.nil?
        if self.class.rank_table[lvl].is_a? Array and self.class.rank_table[lvl].include? meth
                return true
        else
                level = self.class.rank_table[lvl.to_sym] if lvl.is_a? Symbol or lvl.is_a? String
                level ||= lvl
                start_ind = self.class.permission_table[:looker][:array].binary_search_raw([level, [meth]], :left => true) { |a1, a2| a1.first <=> a2.first }
                flag = false
                (start_ind+1).times do |n|
                        flag = self.class.permission_table[:looker][:array][n].last.include? meth
                        break flag if flag
                end # times
                return flag
        end # if-else
end
tsun_for(lvl) click to toggle source
# File lib/tsundere/instance_methods.rb, line 27
def tsun_for lvl
        fail_msg = self.class.fail_table[lvl]
        fail_msg ||= "Sorry #{lvl}, access is denied!"
end
tsundere_for(duck) click to toggle source
# File lib/tsundere/instance_methods.rb, line 4
def tsundere_for(duck)
        level = p_retrieve_level_or_rank duck

        Imouto.new self, level 
end

Private Instance Methods

p_retrieve_level_or_rank(duck) click to toggle source
# File lib/tsundere/instance_methods.rb, line 34
def p_retrieve_level_or_rank duck
        level = nil
        case duck.class.to_s
        when String.to_s, Fixnum.to_s, Float.to_s, Integer.to_s, Symbol.to_s
                level = duck
        when Hash.to_s
                level = duck[:level] if duck.has_key? :level
                level = duck[:rank] if duck.has_key? :rank
        else
                level = duck.level if duck.respond_to? :level
                level =      duck.rank if duck.respond_to? :rank
        end # duck class
        level
end