Module: Trith::Core::Sequence::Predicates
- Defined in:
- lib/trith/core/sequence.rb
Overview
Sequence predicates.
Instance Method Summary (collapse)
- - (Boolean) emptyp(seq) (also: #empty?)
- - (Boolean) memberp(elt, seq) (also: #member?)
- - (Boolean) seqp(obj) (also: #seq?)
Instance Method Details
- (Boolean) emptyp(seq) Also known as: empty?
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?
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?
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 |