Skip to content

lpogic/koper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

koper - Controversial standard class operator set

It extends some standard classes with operators whose mathematical and logical meaning is difficult to justify.

Installation

gem install koper

Usage

1. Complete example

require 'koper'

hash = {
  a: 1,
  b: 2
}

p hash / :a        # => 1 (#fetch or #fetch_values if right side is an Enumerable)
p hash / [:b, :a]  # => [2, 1]
p hash & :a        # => {:a=>1} (#slice or #slice with splat if right side is an Enumerable)
p hash & [:b, :a]  # => {:b=>2, :a=>1}
p !hash            # => {1=>:a, 2=>:b} (#invert)
p hash + {c: 3}    # => {:a=>1, :b=>2, :c=>3} (#merge)

array = [3, 4, 5, 6]

p array / 2        # => 5 (#[] alias)
p array >> 2       # => [3, 4] (like #pop but returns self)
p array >> 1 << 8  # => [3, 8] (last element swap)
p array[] = 9      # => 9 (like #push but returns right side argument)

2. Digging

require 'koper'

hash = {
  a: 1,
  b: {
    c: 2
  },
  d: [
    5,
    {
      e: 5
    }
  ]
}

p hash/:b/:c    # => 2
p hash/:x/:y    # => nil
p hash/:d/1/:e  # => 5

Authors

About

Controversial standard class operator set

Topics

Resources

Stars

Watchers

Forks

Languages