Sha256: f812c22f8b4e0238b962e17dbe8d6a9378f0f309a6b04601402b81d105fd0e66

Contents?: true

Size: 1.8 KB

Versions: 2

Compression:

Stored size: 1.8 KB

Contents

require 'sugar-high/kind_of'
require 'sugar-high/enumerable'
require 'sugar-high/path'

class Array    
  def to_symbols
    res = self.flatten.select_labels
    res = res.map{|a| a.to_s.to_sym } if res
    res || []
  end  

  def to_symbols!
   self.flatten!
   self.select_labels!
   self.map!{|a| a.to_s.to_sym }
   self
  end

  def to_symbols_num
    self.flatten.map{|a| a.kind_of?(Fixnum) ? "_#{a}" : a}.map{|a| a.to_s.to_sym }
  end

  def to_symbols_num!
    self.flatten!
    self.map!{|a| a.kind_of?(Fixnum) ? "_#{a}" : a}.map!{|a| a.to_s.to_sym }
  end

  def to_symbols_uniq
    to_symbols.uniq
  end

  def to_symbols_uniq!
    self.to_symbols!.uniq!
  end

  def to_strings!
    self.flatten!
    self.select_labels!.map!(&:to_s)
  end  

  def to_strings
    self.flatten.select_labels.map(&:to_s)
  end  

  def to_filenames
    self.to_strings.map(&:underscore)
  end  

  def to_filenames!
    self.to_strings!.map!(&:underscore)
  end  

  def to_paths
    self.map(&:path)
  end

  def to_paths!
    self.map!(&:path)
    self
  end

  def file_join
    File.join(*self.flatten)
  end    

  def to_files
    self.map{|fp| fp.path.to_file }
    self.extend FilesArray    
  end

  def to_files!
    self.map!{|fp| fp.path.to_file }
    self.extend FilesArray    
  end
  
  def none?
    self.flatten.compact.empty?
  end 
  
  def flat_uniq
   self.flatten.compact.uniq
  end 

  def flat_uniq!
   self.flatten!
   self.compact!
   self.uniq!
   self
  end 

  def extract(sym)
   map { |e| e.send(sym) }
  end

  def sum
   inject( 0 ) { |sum,x| sum + x }
  end

  def mean
   (size > 0) ? sum.to_f / size : 0
  end 
end

module FilesArray
  def delete_all!
    self.each do |f| 
      f.delete! if f.kind_of?(File)
    end
  end
end

class NilClass  
  def flat_uniq  
    []
  end
  
  def none?
    true
  end
end


Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sugar-high-0.4.4.1 lib/sugar-high/array.rb
sugar-high-0.4.4 lib/sugar-high/array.rb