Module: Trith::Core::Sequence::Operators
- Defined in:
- lib/trith/core/sequence.rb
Overview
Sequence operators.
Instance Method Summary (collapse)
Instance Method Details
- (Enumerable) concat(seq1, seq2)
342 343 344 345 346 347 348 349 350 351 |
# File 'lib/trith/core/sequence.rb', line 342 def concat(seq1, seq2) case when seq1.respond_to?(:concat) seq1.dup.concat(seq2) when seq1.respond_to?(:each) seq1.each.to_a.concat(seq2.each.to_a) # TODO: optimize else raise Machine::InvalidOperandError.new(seq1, :concat) end end |
- (Enumerable) flatten(seq)
374 375 376 377 378 379 380 381 382 383 384 385 386 387 |
# File 'lib/trith/core/sequence.rb', line 374 def flatten(seq) case seq when String then seq when Array then seq.flatten else case when seq.respond_to?(:flatten) seq.flatten when seq.respond_to?(:each) seq.each.to_a.flatten # TODO: optimize else raise Machine::InvalidOperandError.new(seq, :flatten) end end end |
- (Enumerable) reverse(seq)
356 357 358 359 360 361 362 363 364 365 366 367 368 369 |
# File 'lib/trith/core/sequence.rb', line 356 def reverse(seq) case seq when String then seq.reverse when Array then seq.reverse else case when seq.respond_to?(:reverse) seq.reverse when seq.respond_to?(:each) seq.each.to_a.reverse # TODO: optimize else raise Machine::InvalidOperandError.new(seq, :reverse) end end end |