Sha256: bbbbaf5b8edcc26d694a578eb8175761be33328254205302154ed98cb1d10a9f

Contents?: true

Size: 1.4 KB

Versions: 15

Compression:

Stored size: 1.4 KB

Contents

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 only_numbers?
    all?{|a| a.kind_of_number? }    
  end
  
  def select_kinds_of *kinds
    select{|a| a.any_kind_of? *kinds }
  end

  def select_kinds_of! *kinds
    select!{|a| a.any_kind_of? *kinds }
    self
  end

  def select_labels
    select{|a| a.kind_of_label? }
  end

  def select_numbers
    select{|a| a.is_a?(Numeric) }
  end

  def select_numbers!
    select!{|a| a.is_a?(Numeric) }
    self
  end

  def select_labels!
    select!{|a| a.kind_of_label? }
    self
  end

  def select_symbols
    select_only :symbol
  end

  def select_symbols!
    select_only! :symbol
    self
  end

  def select_uniq_symbols!
    select_only!(:symbol).uniq!
    self
  end

  def select_strings
    select_only :string
  end

  def select_strings!
    select_only! :string
    self
  end

  def select_only type    
    const = type.kind_of_label? ? "#{type.to_s.camelize}".constantize : type
    select{|a| a.kind_of? const}
  end

  def select_only! type    
    const = type.kind_of_label? ? "#{type.to_s.camelize}".constantize : type
    select!{|a| a.kind_of? const}
    self
  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

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
sugar-high-0.6.3 lib/sugar-high/enumerable.rb
sugar-high-0.6.2.1 lib/sugar-high/enumerable.rb
sugar-high-0.6.1 lib/sugar-high/enumerable.rb
sugar-high-0.6.0 lib/sugar-high/enumerable.rb
sugar-high-0.5.5 lib/sugar-high/enumerable.rb
sugar-high-0.5.4 lib/sugar-high/enumerable.rb
sugar-high-0.5.3 lib/sugar-high/enumerable.rb
sugar-high-0.5.1 lib/sugar-high/enumerable.rb
sugar-high-0.5.0 lib/sugar-high/enumerable.rb
sugar-high-0.4.9.5 lib/sugar-high/enumerable.rb
sugar-high-0.4.9.3 lib/sugar-high/enumerable.rb
sugar-high-0.4.9.2 lib/sugar-high/enumerable.rb
sugar-high-0.4.9.1 lib/sugar-high/enumerable.rb
sugar-high-0.4.9 lib/sugar-high/enumerable.rb
sugar-high-0.4.8 lib/sugar-high/enumerable.rb