class Screening::Data
Attributes
binding_attributes[RW]
garbage[RW]
Public Instance Methods
bind(attributes=[])
click to toggle source
# File lib/screening.rb, line 94 def bind(attributes=[]) raise ArgumentError, "Permit only Array." unless attributes.is_a? Array @binding_attributes ||= [] @binding_attributes.concat(attributes).uniq! @binding_attributes end
classify(grade, target, block)
click to toggle source
# File lib/screening.rb, line 64 def classify(grade, target, block) self.class.class_eval do attr_accessor grade end self.__send__("#{grade}=", Screening::Data.new) if self.__send__(grade).nil? self.each do |element| if block.call(element.__send__(target)) self.__send__(grade).push(element) end end self.__send__(grade).uniq! # Thinking end
filter(target, paper)
click to toggle source
# File lib/screening.rb, line 41 def filter(target, paper) if paper.is_a? Proc filter_block(target, paper) elsif paper == :moji filter_moji(target) end end
filter_block(target, block)
click to toggle source
# File lib/screening.rb, line 57 def filter_block(target, block) self.each do |element| next if element.__send__(target).blank? res = block.call(element.__send__(target)) element.__send__("#{target}=", res) end end
filter_moji(target)
click to toggle source
# File lib/screening.rb, line 48 def filter_moji(target) self.each do |element| next if element.__send__(target).blank? element.__send__("#{target}=", Moji.zen_to_han(element.__send__(target), Moji::ZEN_ALPHA)) element.__send__("#{target}=", Moji.han_to_zen(element.__send__(target), Moji::HAN_KATA)) element.__send__("#{target}=", Moji.zen_to_han(element.__send__(target), Moji::ZEN_ASYMBOL)) element.__send__("#{target}=", Moji.zen_to_han(element.__send__(target), Moji::ZEN_NUMBER)) end end
omit(target, block)
click to toggle source
# File lib/screening.rb, line 34 def omit(target, block) @garbage ||= [] self.each do |element| @garbage.push(element) if block.call(element.__send__(target)) end self.delete_if {|element| block.call(element.__send__(target))} end
push_with_statistics(*args)
click to toggle source
# File lib/screening.rb, line 76 def push_with_statistics(*args) # override args.each do |arg| if arg.is_a? Hash if !@binding_attributes.nil? && @binding_attributes != [] arg.keys.each do |key| raise "#{key} is NOT permitted." unless @binding_attributes.include?(key.to_sym) end end self.push_without_statistics(Screening::Statistics.new.merge!(arg)) else raise "You cannot add elements except Hash(And this Hash is transformed into Screening::Statistics automatically.)." end end return self end
Also aliased as: push
start() { |last| ... }
click to toggle source
# File lib/screening.rb, line 30 def start self.push(Screening::Statistics.new) yield(self.last) end