RosettaCodeData/Task/Range-expansion/LiveCode/range-expansion-1.livecode

39 lines
1.0 KiB
Plaintext

function range beginning ending stepping
local tRange, tBegin, tEnd, tstep
if stepping is empty or stepping is 0 then
put 1 into tstep
else
put abs(stepping) into tstep
end if
if ending is empty or isNumber(ending) is not true then
put 0 into tEnd
else
put ending into tEnd
end if
if beginning is empty or isNumber(beginning) is not true then
put 0 into tBegin
else
put beginning into tBegin
end if
repeat with r = tBegin to tEnd step tstep
put space & r after tRange
end repeat
return word 1 to -1 of tRange
end range
function expandRange rangeExpr
put rangeExpr into tRange
split tRange by comma
repeat with n = 1 to the number of elements of tRange
if matchText(tRange[n],"^(\-*\d+)\-(\-*\d+)",beginning, ending) then
put range(beginning, ending, 1) & space after z
else
put tRange[n] & space after z
end if
end repeat
return z
end expandRange