Module: Trith::Core::Sequence::Predicates

Defined in:
lib/trith/core/sequence.rb

Overview

Sequence predicates.

Instance Method Summary (collapse)

Instance Method Details

- (Boolean) emptyp(seq) Also known as: empty?

Parameters:

  • (#empty?, #size, #each) seq

Returns:



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/trith/core/sequence.rb', line 31

def emptyp(seq)
  case
    when seq.respond_to?(:empty?)
      seq.empty?
    when seq.respond_to?(:size)
      seq.size.zero?
    when seq.respond_to?(:each)
      seq.each.to_a.empty? # TODO: optimize
    else
      raise Machine::InvalidOperandError.new(seq, :emptyp)
  end
end

- (Boolean) memberp(elt, seq) Also known as: member?

Parameters:

  • (Object) elt
  • (#member?, #each) seq

Returns:



49
50
51
52
53
54
55
56
57
58
# File 'lib/trith/core/sequence.rb', line 49

def memberp(elt, seq)
  case
    when seq.respond_to?(:member?)
      seq.member?(elt)
    when seq.respond_to?(:each)
      seq.each.member?(elt)
    else
      raise Machine::InvalidOperandError.new(seq, :memberp)
  end
end

- (Boolean) seqp(obj) Also known as: seq?

Parameters:

  • (String, #each, #to_enum) obj

Returns:



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/trith/core/sequence.rb', line 15

def seqp(obj)
  case obj
    when String then true
    when Array  then true
    else case
      when obj.respond_to?(:each)    then true
      when obj.respond_to?(:to_enum) then true
      else false
    end
  end
end