diff --git a/templates/mixins.jade b/templates/mixins.jade index 888811a9..d4cf88ba 100644 --- a/templates/mixins.jade +++ b/templates/mixins.jade @@ -1,4 +1,3 @@ - mixin Badge(method) //- Draw a badge for a given HTTP method case method @@ -26,37 +25,37 @@ mixin Nav() if self.api.navItems && self.api.navItems.length .resource-group .heading - .chevron - i.open.fa.fa-angle-down - a(href='#top') Overview + .chevron + i.open.fa.fa-angle-down + a(href='#top') Overview .collapse-content - ul: each item in self.api.navItems - li - a(href=item[1])!= item[0] + ul: each item in self.api.navItems + li + a(href=item[1])!= item[0] each resourceGroup in self.api.resourceGroups || [] .resource-group .heading - .chevron - i.open.fa.fa-angle-down - a(href=resourceGroup.elementLink)!= resourceGroup.name || 'Resource Group' + .chevron + i.open.fa.fa-angle-down + a(href=resourceGroup.elementLink)!= resourceGroup.name || 'Resource Group' .collapse-content - ul - each item in resourceGroup.navItems || [] - li - a(href=item[1])!= item[0] - each resource in resourceGroup.resources || [] - li - if !self.condenseNav || (resource.actions.length != 1) - a(href=resource.elementLink)!= resource.name || 'Resource' - ul: each action in resource.actions || [] - li: a(href=action.elementLink) - +Badge(action.method) - != action.name || action.method + ' ' + (action.attributes && action.attributes.uriTemplate || resource.uriTemplate) - else - - var action = resource.actions[0] - a(href=action.elementLink) - +Badge(action.method) - != action.name || resource.name || action.method + ' ' + (action.attributes && action.attributes.uriTemplate || resource.uriTemplate) + ul + each item in resourceGroup.navItems || [] + li + a(href=item[1])!= item[0] + each resource in resourceGroup.resources || [] + li + if !self.condenseNav || (resource.actions.length != 1) + a(href=resource.elementLink)!= resource.name || 'Resource' + ul: each action in resource.actions || [] + li: a(href=action.elementLink) + +Badge(action.method) + != action.name || action.method + ' ' + (action.attributes && action.attributes.uriTemplate || resource.uriTemplate) + else + - var action = resource.actions[0] + a(href=action.elementLink) + +Badge(action.method) + != action.name || resource.name || action.method + ' ' + (action.attributes && action.attributes.uriTemplate || resource.uriTemplate) //- Link to the API hostname, e.g. api.yourcompany.com each meta in self.api.metadata || {} if meta.name == 'HOST' @@ -99,7 +98,13 @@ mixin Parameters(params) code= self.urldec(value.value) = ' ' -mixin RequestResponse(title, request, collapse) +mixin Constraints(name, schema) + each constraint in ['minLength', 'maxLength', 'pattern'] + if schema.properties[name][constraint] + div #{constraint}: #{schema.properties[name][constraint]} + + +mixin RequestResponse(title, request, collapse, showSchema) .title strong = title @@ -110,9 +115,9 @@ mixin RequestResponse(title, request, collapse) .collapse-button span.close Hide span.open Show - +RequestResponseBody(request, collapse) + +RequestResponseBody(request, collapse, false, showSchema) -mixin RequestResponseBody(request, collapse, showBlank) +mixin RequestResponseBody(request, collapse, showBlank, showSchema) if request.hasContent || showBlank div(class=collapse ? 'collapse-content' : ''): .inner if request.description @@ -124,18 +129,40 @@ mixin RequestResponseBody(request, collapse, showBlank) each item, index in request.headers != self.highlight(item.name + ': ' + item.value, 'http') if index < request.headers.length - 1 - br + br div(style="height: 1px;") if request.body h5 Body pre: code != self.highlight(request.body, null, ['json', 'yaml', 'xml', 'javascript']) div(style="height: 1px;") - if request.schema - h5 Schema - pre: code - != self.highlight(request.schema, null, ['json', 'yaml', 'xml']) - div(style="height: 1px;") + if showSchema && request.schema + - var schema = JSON.parse(request.schema) + table(style="width: 100%;") + thead + tr + th Attribute name + th Type + th Required + th Description + th Constraints + each description, name in schema.properties || [] + tr + td #{name} + td #{description.type} + td #{schema.required && schema.required.indexOf(name) >= 0 ? 'true' : ''} + td #{description.description} + td + +Constraints(name, schema) + div.title + .collapse-button + span.close Hide + span.open Show + span Schema + div.collapse-content: .inner + pre: code + != self.highlight(request.schema, null, ['json', 'yaml', 'xml']) + div(style="height: 1px;") if !request.hasContent .description.text-muted This response has no content. div(style="height: 1px;") @@ -143,7 +170,7 @@ mixin RequestResponseBody(request, collapse, showBlank) mixin Examples(resourceGroup, resource, action) each example in action.examples each request in example.requests - +RequestResponse('Request', request, true) + +RequestResponse('Request', request, false, true) each response in example.responses +RequestResponse('Response', response, true) @@ -190,8 +217,8 @@ mixin Content() span.method(class=action.methodLower)= action.method |   span.uri - span.hostname= self.api.host - != action.colorizedUriTemplate + span.hostname= self.api.host + != action.colorizedUriTemplate //- A list of sub-sections for parameters, requests //- and responses. @@ -238,43 +265,43 @@ mixin ContentTriple() each action in resource.actions || [] if action.examples .right - .definition - span.method(class=action.methodLower)= action.method - |   - span.uri - span.hostname= self.api.host - != action.colorizedUriTemplate - .tabs - if action.hasRequest - .example-names - span Requests - - var requestCount = 0 - each example in action.examples - each request in example.requests - - requestCount++ - span.tab-button= request.name || 'example ' + requestCount - each example in action.examples - each request in example.requests - .tab - +RequestResponseBody(request, false, true) - .tabs - .example-names - span Responses - each response in example.responses - span.tab-button= response.name - each response in example.responses - .tab - +RequestResponseBody(response, false, true) - else - each example in action.examples - .tabs - .example-names - span Responses - each response in example.responses - span.tab-button= response.name - each response in example.responses + .definition + span.method(class=action.methodLower)= action.method + |   + span.uri + span.hostname= self.api.host + != action.colorizedUriTemplate + .tabs + if action.hasRequest + .example-names + span Requests + - var requestCount = 0 + each example in action.examples + each request in example.requests + - requestCount++ + span.tab-button= request.name || 'example ' + requestCount + each example in action.examples + each request in example.requests .tab - +RequestResponseBody(response, false, true) + +RequestResponseBody(request, false, true) + .tabs + .example-names + span Responses + each response in example.responses + span.tab-button= response.name + each response in example.responses + .tab + +RequestResponseBody(response, false, true) + else + each example in action.examples + .tabs + .example-names + span Responses + each response in example.responses + span.tab-button= response.name + each response in example.responses + .tab + +RequestResponseBody(response, false, true) .middle .action(class=action.methodLower, id=action.elementId) h4.action-heading