Sha256: 908c06cc2d6a55d8fb65b85d963429cfd34bab40dfd2b58ff02c883099e978ca

Contents?: true

Size: 1.03 KB

Versions: 5

Compression:

Stored size: 1.03 KB

Contents

# coding: utf-8
require 'spec'

$LOAD_PATH.unshift(File.dirname(__FILE__))
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
require 'numb'


class Seq
  include Enumerable
  attr_accessor :exclude, :include
  def initialize(*args)
    @include = args.first?
    @exclude = []
  end

  def each
    @include.each do |e|
      next if @exclude.include?(e)
      yield e
    end
  end

  def invert
    Seq.new(self.begin..self.end).tap{|s| s.exclude = @include }
  end

  def begin
    @include.respond_to?(:begin) ? @include.begin : @include.min
  end

  def end
    @include.respond_to?(:end) ? @include.end : @include.max
  end

  def sample(n=nil)
    return @include.sample(n) if @include.respond_to?(:sample)
    prng = Random.new
    (n||1).times.map do 
      r = prng.rand(@include) 
      redo if @exclude.include?(r)
      r
    end.tap{|a| return a.first unless n}
  end
end

class Array
  def first?
    size <= 1 ? first : self
  end

  def to_seq
    Seq.new *self
  end
end

Spec::Runner.configure do |config|
    
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
numb-0.77.0 spec/spec_helper.rb
numb-0.72.1 spec/spec_helper.rb
numb-0.72.0 spec/spec_helper.rb
numb-0.68.0 spec/spec_helper.rb
numb-0.63.0 spec/spec_helper.rb