Skip to content

christianblais/utilities

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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
        }
      

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages