MCPcopy
hub / github.com/allmarkedup/purl / parse

Function parse

purl.js:77–109  ·  view source on GitHub ↗
(parts, parent, key, val)

Source from the content-addressed store, hash-verified

75 }
76
77 function parse(parts, parent, key, val) {
78 var part = parts.shift();
79 if (!part) {
80 if (isArray(parent[key])) {
81 parent[key].push(val);
82 } else if ('object' == typeof parent[key]) {
83 parent[key] = val;
84 } else if ('undefined' == typeof parent[key]) {
85 parent[key] = val;
86 } else {
87 parent[key] = [parent[key], val];
88 }
89 } else {
90 var obj = parent[key] = parent[key] || [];
91 if (']' == part) {
92 if (isArray(obj)) {
93 if ('' !== val) obj.push(val);
94 } else if ('object' == typeof obj) {
95 obj[keys(obj).length] = val;
96 } else {
97 obj = parent[key] = [parent[key], val];
98 }
99 } else if (~part.indexOf(']')) {
100 part = part.substr(0, part.length - 1);
101 if (!isint.test(part) && isArray(obj)) obj = promote(parent, key);
102 parse(parts, obj, part, val);
103 // key
104 } else {
105 if (!isint.test(part) && isArray(obj)) obj = promote(parent, key);
106 parse(parts, obj, part, val);
107 }
108 }
109 }
110
111 function merge(parent, key, val) {
112 if (~key.indexOf(']')) {

Callers 1

mergeFunction · 0.85

Calls 3

isArrayFunction · 0.85
keysFunction · 0.85
promoteFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…