lib/sugar-high/kind_of.rb in sugar-high-0.4.0 vs lib/sugar-high/kind_of.rb in sugar-high-0.4.3

- old
+ new

@@ -10,60 +10,25 @@ return true if self.kind_of? kind end false end + def not_any_kind_of? *kinds + kinds.all_kinds.each do |kind| + return false if self.kind_of? kind + end + true + end + def kind_of_label? self.any_kind_of? String, Symbol end def kind_of_symbol? self.any_kind_of? Symbols, Symbol end end - -module Enumerable - def only_kinds_of? *kinds - all?{|a| a.any_kind_of? *kinds } - end - - def only_labels? - all?{|a| a.kind_of_label? } - end - - def select_kinds_of *kinds - select{|a| a.any_kind_of? *kinds } - end - - def select_labels - select{|a| a.kind_of_label? } - end - - def select_symbols - select{|a| a.kind_of_symbol? } - end - - def select_strings - select_only :string - end - - def select_only type - const = type.kind_of_label? ? "#{type.to_s.camelize}".constantize : type - select{|a| a.kind_of? const} - end - - def all_kinds - map do |a| - case a - when Kinds - a.kinds - else - a if a.kind_of?(Module) - end - end.compact.uniq.flatten - end -end - + class Kinds attr_accessor :kinds def initialize *kinds self.kinds = *kinds \ No newline at end of file