Project

set_theory

0.01
No commit activity in last 3 years
No release in over 3 years
Extends Object and Array with nice names for set operations.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 0.0.16
~> 0.3.4
~> 0.3.1
= 0.8.7
~> 0.4.0
~> 2.6.0
 Project Readme

Set Theory

Extends Object and Array with nice names for set operations.

See the Set class for a library that doesn't pollute your Objects and Arrays.

Installing

gem install set_theory

For the whole library

require 'set_theory'

Or choose the parts you want

require 'set_theory/member_of'
require 'set_theory/difference'
require 'set_theory/intersection'
require 'set_theory/power_set'
require 'set_theory/symmetric_difference'
require 'set_theory/union'

Usage

Membership (Object#member_of?)

Returns true if the receiving object is found within an array.

1.member_of? [1, 2, 3]     #=> true

Difference (Array#difference)

Returns an array with the objects of the receiving array that are not in the passed array.

[1, 2, 3].difference [2, 3, 4]    #=> [1]
[2, 3, 4].difference [1, 2, 3]    #=> [4]

Intersection (Array#intersection)

Returns an array containing only the objects that are members of both the receiving and passed array.

[1, 2, 3].intersection [2, 3, 4]    #=> [2, 3]

Power set (Array#power_set)

Returns an array with all possible subsets of the receiving array.

[1, 2, 3].power_set    #=> [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]

Symmetric difference (Array#symmetric_difference)

Returns an array containing only the objects that are in one of the receiving or passed arrays, but not both.

[1, 2, 3].symmetric_difference [2, 3, 4]    #=> [1, 4]

Union (Array#union)

Returns an array containing all members the receiving and passed arrays.

[1, 2, 3].union [2, 3, 4]    #=> [1, 2, 3, 4]

Development and Testing

Requirements

  • rake
  • bundler
  • gem-release
  • rspec

Install dependencies

bundle install

Then run the specs

bundle exec rake

Rationale

Yes, I know about this patch, but I prefer Object#member_of? and !Object#member_of?.

References

http://en.wikipedia.org/wiki/Set_theory

http://rosettacode.org/wiki/Power_Set#Ruby

Copyright

See LICENSE for details.

Hosted at RubyGems