JSFiddle - React, Tailwind, and code Playground

by puckipedia

CoffeeScript

operators = ["+", "-"]
step2operators = ["+","-"]
step1operators = []
split = (str) ->
    out = []
    t = ""
    inn = str.split("")
    if inn[0] not in operators
        t = "+"
    for char in inn
        if char in operators
            out.push t
            t = char
        else
            t += char
    out.push t
    alert out
    out
splitOperator = (str) ->
    tmp = str.split("")
    out = []
    t = 
        chars: ""
        operator: ""
        letters: ""
    for char, i in tmp
        if char in operators
            t.operator += char
        else if parseInt(char, 10) is NaN or char.charCodeAt(0) >= 97
            t.letters += char
        else
            t.chars += char
    t.chars = parseInt t.chars
    t
parse = (arr) ->
    out = {}
    dosteps = 
    {
        step1: []
        step2: []
    }
    for a in arr
        console.log a
        if not a?
            continue
        if a.chars == NaN
            continue
        if a.letters == ""
            a.letters = "|"
        if (String.fromCharCode a.operator.charCodeAt 1) is "-"
            a.chars = -a.chars
        if String.fromCharCode a.operator.charCodeAt 0 in step2operators
            dosteps.step2.push a
        else
            dosteps.step1.push a
        out[a.letters] = {chars: 0, letters: a.letters.replace "|",""}
    for a in dosteps.step2
        out[a.letters] = operatorfuncs[a.operator] out[a.letters], a
        console.log out[a.letters]
    console.log out
       
operatorfuncs = 
    "": (a) ->
        console.log "nothing"
        a
    "+": (a,b) ->
        console.log "#{a.chars}+#{b.chars}"
        a.chars += b.chars
        a
    "-": (a,b) ->
        console.log "#{a.chars}-#{b.chars}"
        a.chars -= b.chars
        a
makeDir = (arr) ->
    out = {}
a = []    
a.push (splitOperator s) for s in split "-7+100+9b+7a-9a+8090b"
parse a