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(*args)
Also aliased as: push_without_statistics
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
push_without_statistics(*args)
Alias for: push
start() { |last| ... } click to toggle source
# File lib/screening.rb, line 30
def start
  self.push(Screening::Statistics.new)
  yield(self.last)
end