getServerList = (server) ->
    host = ''
    batch = ''
    domain = ''
    isBatch = false
    batchEnd = false
    isGroupEnd = false
    serverList = []

    initVariable = () ->


    for str, i in server
        if str is '['
            isBatch = true
            continue
        if str is ']'
            isBatch = false
            batchEnd = true
            continue

        if isBatch is true
            batch += str
            continue

        if (str is ',' and (server[i+1] is ' ' or server[i+1] is 'l')) or (!server[i+1])
            isGroupEnd = true

        if batchEnd is true and (isGroupEnd isnt true)
            domain += str
            continue

        if isGroupEnd is true
            serverList = serverList.concat(joinServerList(host, splitBatch(batch), domain))
            host = ''
            batch = ''
            domain = ''
            isBatch = false
            batchEnd = false
            isGroupEnd = false
            continue

        if str is ' '
            continue

        host += str
    return serverList


splitBatch = (batch) ->
    arr = batch.split('-')
    ret = []
    if arr.length > 1
        start = arr[0]
        end = arr[1]

        for i in [start..end]
            ret.push(i)
    else
        ret = batch.split(',')

    return ret

joinServerList = (host, batch, domain) ->
    ret = []
    for item in batch
        ret.push(host + item + domain)
    return ret

exports.parse = getServerList