UNPKG

aglio-theme-goose

Version:

Custom theme for the Aglio API Blueprint renderer

81 lines (74 loc) 2.36 kB
// Generated by CoffeeScript 2.2.1 (function() { // This is an extremely simple example generator given refracted MSON input. // It handles the following: // * Simple types, enums, arrays, objects // * Property descriptions // * References // * Mixins (Includes) // * Arrays with members of different types // * One Of properties (the first is always selected) // It is missing support for many advanced features. var defaultValue, inherit, renderExample; inherit = require('./inherit'); defaultValue = function(type) { switch (type) { case 'boolean': return true; case 'number': return 1; case 'string': return 'Hello, world!'; } }; module.exports = renderExample = function(root, dataStructures) { var i, item, j, key, len, member, obj, properties, ref, ref1, results; switch (root.element) { case 'boolean': case 'string': case 'number': if (root.content != null) { return root.content; } else { return defaultValue(root.element); } break; case 'enum': return renderExample(root.content[0], dataStructures); case 'array': ref1 = root.content || []; results = []; for (j = 0, len = ref1.length; j < len; j++) { item = ref1[j]; results.push(renderExample(item, dataStructures)); } return results; break; case 'object': obj = {}; properties = root.content.slice(0); i = 0; while (i < properties.length) { member = properties[i]; i++; if (member.element === 'ref') { ref = dataStructures[member.content.href]; i--; properties.splice.apply(properties, [i, 1].concat(ref.content)); continue; } else if (member.element === 'select') { // Note: we *always* select the first choice! member = member.content[0].content[0]; } key = member.content.key.content; obj[key] = renderExample(member.content.value, dataStructures); } return obj; default: ref = dataStructures[root.element]; if (ref) { return renderExample(inherit(ref, root), dataStructures); } } }; }).call(this);