Utilities provides a handful of useful goodies including statistics, numeric arrays and the well-known raiser.
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
Gemfile
Gemfile.lock
LICENSE
README.md
utilities.gemspec

README.md

Utilities

Utilities provides a handful of useful goodies including statistics, numeric arrays and the well-known raiser.

Installation

gem install utilities

Test

rspec

Usage

Array

  • to_numerics

    ["3", 4, "7.9"].to_numerics #=> [3.0, 4.0, 7.9]
    
  • numerics?

    [1, 2.0, 3].numerics? #=> true
    
  • reverse_sort

    [1,8,3].reverse_sort #=> [8,3,1]
    
  • map_with

    [1,2,3].map_with([4,5,6]){|i,j| i * j }  #=> [4,10,18]
    
  • wrap

    [1, 2, 3].wrap("*") #=> ["*1*", "*2*", "*3*"]
    [1, 2, 3].wrap("*", "+") #=> ["*1+", "*2+", "*3+"]
    

Enumerable

  • collect_first

    {:a=>1, :b=>2, :c=>3}.collect_first{|k,v| [k, v * 3] if v == 2 } #=> [:b, 6]
    

Hash

  • collect_keys, map_keys (passing true as a parameter will collect keys recursively)

    {:a=>1, :b=>2, :c=>3}.collect_keys{|k| k.to_s.upcase } #=> {"A"=>1, "B"=>2, "C"=>3}
    
  • collect_values, map_values (passing true as a parameter will collect values recursively)

    {:a=>1, :b=>2, :c=>3}.collect_values{|v| v * -1 } #=> {:a=>-1, :b=>-2, :c=>-3}
    
  • symbolize_keys

    {"a"=>1, "b"=>2}.symbolize_keys #=> {:a=>1, :b=>2}
    
  • stringify_keys

    {:a=>1, :b=>2}.stringify_keys #=> {"a"=>1, "b"=>2}
    

Kernel

  • raiser

    raiser 1, Hash.new, Array.new #=> RuntimeError "1, {}, []"
    

Numeric

  • degrees

    180.degrees == Math::PI #=> true
    
  • square

    2.square #=> 4
    
  • hour_to_string

    14.5.hour_to_string #=> "14:30"
    
  • sqrt

    9.sqrt #=> 3
    
  • rank

    5.rank(3, 9) #=> 0.3333...
    
  • to_decimals

    1.759.to_decimals(2) #=> 1.76
    
  • percentage_of

    48.percentage_of(50) #=> 96
    

Object

  • attempt

    Attempts to call a method on given object. If it fails (nil or NoMethodError), returns nil

    nil.attempt(:something) #=> nil
    "String".attempt(:wrong_method_name) #=> nil
    
  • is_any?

    Returns true if object is one of the passed classes

    {}.is_any?(Array, Hash, Class) #=> true
    "".is_any?(Array) #=> false
    

String

  • hour_to_float

    "14:30".hour_to_float #=> 14.5
    
  • float?

    "123.456".float? #=> true
    

Utilities

  • Statistics

    This module is intended to provide basic statistic functionnalities to numeric arrays. You may either call [].to_stats or extend an existing array with Utilities::Statistics module.

    • sum

      [1,2,3].sum #=> 6
      
    • squares

      [1,2,3].squares #=> [1,4,9]
      
    • sqrts

      [9,16,25].sqrts #=> [3,4,5]
      
    • mean

      [1,2,3,4,5].mean #=> 3
      
    • frequences

      [1,1,2,3,3,3,4].frequences #=> {1=>2, 2=>1, 3=>3, 4=>1}
      
    • modes

      [1,2,3,3,4,4,4,5].modes #=> {4=>3}
      
    • statistics

      [1,2,3,4,5].statistics #=> {
        :first=>1,
        :last=>5,
        :size=>5,
        :sum=>15,
        :squares=>[1, 4, 9, 16, 25],
        :sqrts=>[1.0, 1.4142135623730951, 1.7320508075688772, 2.0, 2.23606797749979],
        :min=>1,
        :max=>5,
        :mean=>3.0,
        :frequences=>{1=>1, 2=>1, 3=>1, 4=>1, 5=>1},
        :variance=>2.5,
        :standard_deviation=>1.5811388300841898,
        :population_variance=>2.0,
        :population_standard_deviation=>1.4142135623730951,
        :modes=>{1=>1, 2=>1, 3=>1, 4=>1, 5=>1},
        :ranks=>[0.0, 1.0, 2.0, 3.0, 4.0],
        :median=>3,
        :midrange=>3.0,
        :statistical_range=>4,
        :quartiles=>[1.5, 3, 4.5],
        :interquartile_range=>3.0
      }