A format for expressing an ordered list of integers is to use a comma separated list of either

 individual integers
 Or a range of integers denoted by the starting integer separated from the end integer in the range by a dash, '-'. (The range includes all integers in the interval including both endpoints)
 The range syntax is to be used only for, and for every range that expands to more than two values.
Example

The list of integers:

 -6, -3, -2, -1, 0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 20
Is accurately expressed by the range expression:

 -6,-3-1,3-5,7-11,14,15,17-20
(And vice-versa).



Task

Expand the range description:

  -6,-3--1,3-5,7-11,14,15,17-20 

Note that the second element above,
is the range from minus 3 to minus 1. 



Related task

   Range extraction


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