Skip to content

Instantly share code, notes, and snippets.

@Inviz
Created July 14, 2016 02:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Inviz/641040d5a6be08086a783e948c63e4aa to your computer and use it in GitHub Desktop.
Save Inviz/641040d5a6be08086a783e948c63e4aa to your computer and use it in GitHub Desktop.
var values = [];
var open = 0;
var value
var character;
for (a in $r.args) {
// sort params in array
for (n = 0; n < values.length; n++) {
if (values[n][0] > a)
break;
}
value = [a, $r.args[a]]
tail = values.slice(n)
values = values.slice(0, n)
values.push(value)
values = values.concat(tail)
// parse key into bits
open = 0;
j = a.length;
for (i = 0; i < j; i++) {
character = a.charAt(i);
if (character == ']' || (character == '[' && !open)) {
value.push(a.substring(open, i))
} else if (i == j - 1) {
value.push(a.substring(open, i + 1))
}
if (character == '[') {
open = i + 1;
}
}
}
var string = '{<br>'
var current = [];
for (n = 0; n < values.length; n++) {
var path = values[n]
j = path.length
open = 1;
for (i = 2; i < j; i++) {
if (current[i] != path[i]) {
// close all mismatching objects
if (open) {
for (k = i; k < current.length - 1; k++) {
string += '}'
open = 0
}
// add comma if continuing on the same level
if (i > 2 ? current[i - 1] == path[i - 1] : n > 0)
string += ',<br>'
}
if (i == j - 1) {
string += '\"' + path[i] + '\": \"' + path[1] + '\"'
} else {
string += '\"' + path[i] + '\": {<br>'
}
}
}
current = path
if ( n == values.length - 1)
for (k = 2; k < current.length - 1; k++)
string += '}'
}
string + '<br>}';
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment