30 lines
948 B
Plaintext
30 lines
948 B
Plaintext
function rangeExtract nums
|
|
local prevNum, znums, rangedNums
|
|
set itemDelimiter to ", "
|
|
put the first item of nums into prevNum
|
|
repeat for each item n in nums
|
|
if n is (prevNum + 1) then
|
|
put n into prevNum
|
|
put "#" & n after znums
|
|
else
|
|
put n into prevNum
|
|
put return & n after znums
|
|
end if
|
|
end repeat
|
|
set itemDelimiter to "#"
|
|
repeat for each line z in znums
|
|
if z is empty then next repeat
|
|
switch the number of items of z
|
|
case 1
|
|
put z & "," after rangedNums
|
|
break
|
|
case 2
|
|
put item 1 of z & "," & item -1 of z & "," after rangedNums
|
|
break
|
|
default
|
|
put item 1 of z & "-" & item -1 of z & "," after rangedNums
|
|
end switch
|
|
end repeat
|
|
return char 1 to -2 of rangedNums --strip off trailing comma
|
|
end rangeExtract
|