Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- export function ParseArrayValues(str) {
- if(str == null || str == '') throw 'String to parse cannot be null or empty';
- let result = [];
- let output = [];
- let trainyard = [];
- let value = -1;
- for (let i = 0; i < str.length; i++) {
- let exp = str[i];
- if (exp == ' ') continue;
- if (exp >= '0' && exp <= '9') {
- if (value == -1) value = 0;
- value = value * 10 + parseInt(exp.toString());
- continue;
- }
- else if (value != -1) {
- output.push(value);
- value = -1;
- }
- if (exp == ',') continue;
- switch (exp) {
- case '-':
- case '[':
- output.push(exp);
- break;
- case ']':
- while (trainyard.length > 0) {
- let c = trainyard.pop();
- if (c == '[') break;
- output.push(c);
- }
- output.push(exp);
- break;
- default:
- if (!(exp >= '0' && exp <= '9')) {
- throw 'unexpected token ' + exp;
- }
- break;
- }
- }
- if (value != -1) {
- output.push(value);
- value = -1;
- }
- while (trainyard.length > 0) {
- output.push(trainyard.pop());
- }
- var arrayStack = [];
- var curArray = [];
- while (output.length > 0) {
- let exp = output.shift();
- switch (exp) {
- case '-':
- var v = -output.shift();
- curArray.push(v);
- break;
- case '[':
- arrayStack.push(curArray);
- curArray = [];
- break;
- case ']':
- var t = arrayStack.pop();
- t.push(curArray);
- curArray = t;
- break;
- default:
- curArray.push(exp);
- break;
- }
- }
- ns.print(curArray[0]);
- return curArray[0];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement