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
|