Skip to content

Commit 1f7cfe9

Browse files
committed
Raml expander added to the parser.
1 parent 6b25792 commit 1f7cfe9

File tree

10 files changed

+637
-58
lines changed

10 files changed

+637
-58
lines changed

Gruntfile.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ module.exports = function (grunt) {
3535
'bower_components/slug/slug.js',
3636
'bower_components/FileSaver/FileSaver.js',
3737
'bower_components/raml-client-generator/dist/raml-client-generator.js',
38-
'bower_components/resolve-url/resolve-url.js'
38+
'bower_components/resolve-url/resolve-url.js',
39+
'bower_components/js-traverse/traverse.js'
3940
],
4041
html: ['src/index.html'],
4142
scss: ['src/scss/light-theme.scss', 'src/scss/dark-theme.scss'],

bower.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
"type": "git",
66
"url": "https://github.com/mulesoft/api-console.git"
77
},
8-
"ignore": [ "Dockerfile" ],
8+
"ignore": [
9+
"Dockerfile"
10+
],
911
"dependencies": {
1012
"angular": "~1.3.17",
1113
"angular-highlightjs": "~0.3.2",
@@ -24,7 +26,8 @@
2426
"resolve-url": "~0.2.1",
2527
"slug": "~0.8.0",
2628
"velocity": "~1.1.0",
27-
"vkbeautify": "vkiryukhin/vkBeautify#ecfc3b9e2b911ad8ebd49600c4089aca30619f29"
29+
"vkbeautify": "vkiryukhin/vkBeautify#ecfc3b9e2b911ad8ebd49600c4089aca30619f29",
30+
"js-traverse": "traverse#^0.6.7"
2831
},
2932
"devDependencies": {
3033
"angular-mocks": ">=1.2.0 <1.4.0"

dist/scripts/api-console-vendor.js

Lines changed: 335 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165037,3 +165037,338 @@ void (function(root, factory) {
165037165037
return resolveUrl
165038165038

165039165039
}));
165040+
165041+
(function (root, factory) {
165042+
if (typeof define === 'function' && define.amd) {
165043+
// AMD. Register as an anonymous module.
165044+
define([], factory);
165045+
} else if (typeof exports === 'object') {
165046+
// Node. Does not work with strict CommonJS, but
165047+
// only CommonJS-like environments that support module.exports,
165048+
// like Node.
165049+
module.exports = factory();
165050+
} else {
165051+
// Browser globals (root is window)
165052+
root.traverse = factory();
165053+
}
165054+
}(this, function () {
165055+
165056+
var traverse = function (obj) {
165057+
return new Traverse(obj);
165058+
};
165059+
165060+
function Traverse (obj) {
165061+
this.value = obj;
165062+
}
165063+
165064+
Traverse.prototype.get = function (ps) {
165065+
var node = this.value;
165066+
for (var i = 0; i < ps.length; i ++) {
165067+
var key = ps[i];
165068+
if (!node || !hasOwnProperty.call(node, key)) {
165069+
node = undefined;
165070+
break;
165071+
}
165072+
node = node[key];
165073+
}
165074+
return node;
165075+
};
165076+
165077+
Traverse.prototype.has = function (ps) {
165078+
var node = this.value;
165079+
for (var i = 0; i < ps.length; i ++) {
165080+
var key = ps[i];
165081+
if (!node || !hasOwnProperty.call(node, key)) {
165082+
return false;
165083+
}
165084+
node = node[key];
165085+
}
165086+
return true;
165087+
};
165088+
165089+
Traverse.prototype.set = function (ps, value) {
165090+
var node = this.value;
165091+
for (var i = 0; i < ps.length - 1; i ++) {
165092+
var key = ps[i];
165093+
if (!hasOwnProperty.call(node, key)) node[key] = {};
165094+
node = node[key];
165095+
}
165096+
node[ps[i]] = value;
165097+
return value;
165098+
};
165099+
165100+
Traverse.prototype.map = function (cb) {
165101+
return walk(this.value, cb, true);
165102+
};
165103+
165104+
Traverse.prototype.forEach = function (cb) {
165105+
this.value = walk(this.value, cb, false);
165106+
return this.value;
165107+
};
165108+
165109+
Traverse.prototype.reduce = function (cb, init) {
165110+
var skip = arguments.length === 1;
165111+
var acc = skip ? this.value : init;
165112+
this.forEach(function (x) {
165113+
if (!this.isRoot || !skip) {
165114+
acc = cb.call(this, acc, x);
165115+
}
165116+
});
165117+
return acc;
165118+
};
165119+
165120+
Traverse.prototype.paths = function () {
165121+
var acc = [];
165122+
this.forEach(function (x) {
165123+
acc.push(this.path);
165124+
});
165125+
return acc;
165126+
};
165127+
165128+
Traverse.prototype.nodes = function () {
165129+
var acc = [];
165130+
this.forEach(function (x) {
165131+
acc.push(this.node);
165132+
});
165133+
return acc;
165134+
};
165135+
165136+
Traverse.prototype.clone = function () {
165137+
var parents = [], nodes = [];
165138+
165139+
return (function clone (src) {
165140+
for (var i = 0; i < parents.length; i++) {
165141+
if (parents[i] === src) {
165142+
return nodes[i];
165143+
}
165144+
}
165145+
165146+
if (typeof src === 'object' && src !== null) {
165147+
var dst = copy(src);
165148+
165149+
parents.push(src);
165150+
nodes.push(dst);
165151+
165152+
forEach(objectKeys(src), function (key) {
165153+
dst[key] = clone(src[key]);
165154+
});
165155+
165156+
parents.pop();
165157+
nodes.pop();
165158+
return dst;
165159+
}
165160+
else {
165161+
return src;
165162+
}
165163+
})(this.value);
165164+
};
165165+
165166+
function walk (root, cb, immutable) {
165167+
var path = [];
165168+
var parents = [];
165169+
var alive = true;
165170+
165171+
return (function walker (node_) {
165172+
var node = immutable ? copy(node_) : node_;
165173+
var modifiers = {};
165174+
165175+
var keepGoing = true;
165176+
165177+
var state = {
165178+
node : node,
165179+
node_ : node_,
165180+
path : [].concat(path),
165181+
parent : parents[parents.length - 1],
165182+
parents : parents,
165183+
key : path.slice(-1)[0],
165184+
isRoot : path.length === 0,
165185+
level : path.length,
165186+
circular : null,
165187+
update : function (x, stopHere) {
165188+
if (!state.isRoot) {
165189+
state.parent.node[state.key] = x;
165190+
}
165191+
state.node = x;
165192+
if (stopHere) keepGoing = false;
165193+
},
165194+
'delete' : function (stopHere) {
165195+
delete state.parent.node[state.key];
165196+
if (stopHere) keepGoing = false;
165197+
},
165198+
remove : function (stopHere) {
165199+
if (isArray(state.parent.node)) {
165200+
state.parent.node.splice(state.key, 1);
165201+
}
165202+
else {
165203+
delete state.parent.node[state.key];
165204+
}
165205+
if (stopHere) keepGoing = false;
165206+
},
165207+
keys : null,
165208+
before : function (f) { modifiers.before = f },
165209+
after : function (f) { modifiers.after = f },
165210+
pre : function (f) { modifiers.pre = f },
165211+
post : function (f) { modifiers.post = f },
165212+
stop : function () { alive = false },
165213+
block : function () { keepGoing = false }
165214+
};
165215+
165216+
if (!alive) return state;
165217+
165218+
function updateState() {
165219+
if (typeof state.node === 'object' && state.node !== null) {
165220+
if (!state.keys || state.node_ !== state.node) {
165221+
state.keys = objectKeys(state.node)
165222+
}
165223+
165224+
state.isLeaf = state.keys.length == 0;
165225+
165226+
for (var i = 0; i < parents.length; i++) {
165227+
if (parents[i].node_ === node_) {
165228+
state.circular = parents[i];
165229+
break;
165230+
}
165231+
}
165232+
}
165233+
else {
165234+
state.isLeaf = true;
165235+
state.keys = null;
165236+
}
165237+
165238+
state.notLeaf = !state.isLeaf;
165239+
state.notRoot = !state.isRoot;
165240+
}
165241+
165242+
updateState();
165243+
165244+
// use return values to update if defined
165245+
var ret = cb.call(state, state.node);
165246+
if (ret !== undefined && state.update) state.update(ret);
165247+
165248+
if (modifiers.before) modifiers.before.call(state, state.node);
165249+
165250+
if (!keepGoing) return state;
165251+
165252+
if (typeof state.node == 'object'
165253+
&& state.node !== null && !state.circular) {
165254+
parents.push(state);
165255+
165256+
updateState();
165257+
165258+
forEach(state.keys, function (key, i) {
165259+
path.push(key);
165260+
165261+
if (modifiers.pre) modifiers.pre.call(state, state.node[key], key);
165262+
165263+
var child = walker(state.node[key]);
165264+
if (immutable && hasOwnProperty.call(state.node, key)) {
165265+
state.node[key] = child.node;
165266+
}
165267+
165268+
child.isLast = i == state.keys.length - 1;
165269+
child.isFirst = i == 0;
165270+
165271+
if (modifiers.post) modifiers.post.call(state, child);
165272+
165273+
path.pop();
165274+
});
165275+
parents.pop();
165276+
}
165277+
165278+
if (modifiers.after) modifiers.after.call(state, state.node);
165279+
165280+
return state;
165281+
})(root).node;
165282+
}
165283+
165284+
function copy (src) {
165285+
if (typeof src === 'object' && src !== null) {
165286+
var dst;
165287+
165288+
if (isArray(src)) {
165289+
dst = [];
165290+
}
165291+
else if (isDate(src)) {
165292+
dst = new Date(src.getTime ? src.getTime() : src);
165293+
}
165294+
else if (isRegExp(src)) {
165295+
dst = new RegExp(src);
165296+
}
165297+
else if (isError(src)) {
165298+
dst = { message: src.message };
165299+
}
165300+
else if (isBoolean(src)) {
165301+
dst = new Boolean(src);
165302+
}
165303+
else if (isNumber(src)) {
165304+
dst = new Number(src);
165305+
}
165306+
else if (isString(src)) {
165307+
dst = new String(src);
165308+
}
165309+
else if (Object.create && Object.getPrototypeOf) {
165310+
dst = Object.create(Object.getPrototypeOf(src));
165311+
}
165312+
else if (src.constructor === Object) {
165313+
dst = {};
165314+
}
165315+
else {
165316+
var proto =
165317+
(src.constructor && src.constructor.prototype)
165318+
|| src.__proto__
165319+
|| {}
165320+
;
165321+
var T = function () {};
165322+
T.prototype = proto;
165323+
dst = new T;
165324+
}
165325+
165326+
forEach(objectKeys(src), function (key) {
165327+
dst[key] = src[key];
165328+
});
165329+
return dst;
165330+
}
165331+
else return src;
165332+
}
165333+
165334+
var objectKeys = Object.keys || function keys (obj) {
165335+
var res = [];
165336+
for (var key in obj) res.push(key)
165337+
return res;
165338+
};
165339+
165340+
function toS (obj) { return Object.prototype.toString.call(obj) }
165341+
function isDate (obj) { return toS(obj) === '[object Date]' }
165342+
function isRegExp (obj) { return toS(obj) === '[object RegExp]' }
165343+
function isError (obj) { return toS(obj) === '[object Error]' }
165344+
function isBoolean (obj) { return toS(obj) === '[object Boolean]' }
165345+
function isNumber (obj) { return toS(obj) === '[object Number]' }
165346+
function isString (obj) { return toS(obj) === '[object String]' }
165347+
165348+
var isArray = Array.isArray || function isArray (xs) {
165349+
return Object.prototype.toString.call(xs) === '[object Array]';
165350+
};
165351+
165352+
var forEach = function (xs, fn) {
165353+
if (xs.forEach) return xs.forEach(fn)
165354+
else for (var i = 0; i < xs.length; i++) {
165355+
fn(xs[i], i, xs);
165356+
}
165357+
};
165358+
165359+
forEach(objectKeys(Traverse.prototype), function (key) {
165360+
traverse[key] = function (obj) {
165361+
var args = [].slice.call(arguments, 1);
165362+
var t = new Traverse(obj);
165363+
return t[key].apply(t, args);
165364+
};
165365+
});
165366+
165367+
var hasOwnProperty = Object.hasOwnProperty || function (obj, key) {
165368+
return key in obj;
165369+
};
165370+
165371+
return traverse
165372+
165373+
165374+
}));

0 commit comments

Comments
 (0)