angular.module(‘PraxisDocBrowser’).config(function(ExamplesProvider) {
function basicCode(action, info) { var code = 'require \'restclient\'\n\n'; if (!info.endpoint) { //throw 'Endpoint not defined in schema'; } if (action.headers) { code += 'headers = {\n'; _.each(_.get(action, 'headers.type.attributes'), function(value, key) { code += ' ' + JSON.stringify(key) + ' => '+ JSON.stringify(value.example) + ',\n' }); code += '}\n' } if (action.payload) { code += 'payload = {\n' _.each(_.get(action, 'payload.type.attributes'), function(value, key) { if (value.example) { code += ' :' + key + ' => '+ JSON.stringify(value.example) + ',\n'; } }) code += '}\n' } var params = ''; _.each(_.get(action, 'params.type.attributes'), function(opts, name) { if (opts.source === 'query') { params += ' :' + name + ' => ' + JSON.stringify(opts.example) + ',\n'; } }); var signature = 'response = RestClient.' + action.urls[0].verb.toLowerCase() + ' \'' + info.endpoint + action.urls[0].example + '\''; if (action.payload) { signature += ', payload'; } if (action.headers && params.length > 0) { code += 'headers[:params] = {\n' + params + '}\n'; signature += ', headers' } else if (params.length > 0) { 'params = {\n' + params + '}\n' signature += ', :params => params' } else { signature += ', headers' } code += signature; code += '\n\nputs response.inspect' return code; } ExamplesProvider.register('ruby', 'Ruby', function($compile, $context, Documentation) { "ngInject"; return Documentation.info($context.version).then(function(info) { var template = '<pre highlight="ruby">' + basicCode($context.action, info) + '</pre>\n\n'; return $compile(template); }); });
});