Method: Sequence#_parse_slice_args

Defined in:
lib/sequence.rb

#_parse_slice_args(*args) ⇒ Object



560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
# File 'lib/sequence.rb', line 560

def _parse_slice_args(*args)
  asize=args.size
  assert !closed?
  size=self.size
  case r=args.first
    when Range
      asize==1 or raise ArgumentError
      first,last=r.first,r.last
      first=_normalize_pos(first,size)
      last=_normalize_pos(last,size)
      len=last-first
      r.exclude_end? or len+=1
    when Integer
      asize<=2 or raise ArgumentError
      first=_normalize_pos(r,size)
      len=args[1] || (only1=1)
    when nil
      asize==0 or raise ArgumentError
      first=nil
      len=only1=1
    else raise ArgumentError
  end
  return first,len,only1
end