aglio-theme-olio
Version:
Default theme for the Aglio API Blueprint renderer
169 lines (156 loc) • 7 kB
text/jade
mixin Badge(method)
//- Draw a badge for a given HTTP method
case method
when 'GET'
span.badge.get: i.fa.fa-arrow-down
when 'HEAD'
span.badge.head: i.fa.fa-info-circle
when 'OPTIONS'
span.badge.options: i.fa.fa-dot-circle-o
when 'POST'
span.badge.post: i.fa.fa-plus
when 'PUT'
span.badge.put: i.fa.fa-pencil
when 'PATCH'
span.badge.patch: i.fa.fa-pencil
when 'DELETE'
span.badge.delete: i.fa.fa-times
default
span.badge: i.fa.fa-dot-circle-o
mixin Nav()
//- Draw a navigation bar, which includes links to individual
//- resources and actions.
nav
each resourceGroup in self.api.resourceGroups || []
.resource-group
.heading
.chevron
i.open.fa.fa-angle-down
a(href=resourceGroup.elementLink)= resourceGroup.name
.collapse-content
ul: 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)
= action.name || action.method + ' ' + (action.attributes && action.attributes.uriTemplate || resource.uriTemplate)
+Badge(action.method)
else
- var action = resource.actions[0]
a(href=action.elementLink)
= resource.name || action.name || action.method + ' ' + (action.attributes && action.attributes.uriTemplate || resource.uriTemplate)
+Badge(action.method)
//- Link to the API hostname, e.g. api.yourcompany.com
each meta in self.api.metadata || {}
if meta.name == 'HOST'
p(style="text-align: center; word-wrap: break-word;")
a(href=meta.value)= meta.value
mixin Parameters(params)
//- Draw a definition list of parameter names, types, defaults,
//- examples and descriptions.
.title
strong Parameters
.collapse-button.show
span.close Hide
span.open Show
.collapse-content
dl.inner: each param in params || []
dt= param.name
dd
code= param.type
|
if param.required
span.required (required)
else
span (optional)
|
if param.default
span.text-info.default
strong Default:
span= param.default
|
if param.example
span.text-muted.example
strong Example:
span= param.example
!= self.markdown(param.description)
if param.values.length
p.choices
strong Choices:
each value in param.values
code= value.value
= ' '
mixin RequestResponse(title, request, resourceGroup, resource, action)
.title
strong
= title
if request.name
|
code= request.name
if request.hasContent
.collapse-button
span.close Hide
span.open Show
if request.hasContent
.collapse-content: .inner
if request.description
.description!= self.markdown(request.description)
if Object.keys(request.headers).length
h5 Headers
pre: code
each item in request.headers
!= self.highlight(item.name + ': ' + item.value, 'http')
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;")
mixin Examples(resourceGroup, resource, action)
each example in action.examples
each request in example.requests
+RequestResponse('Request', request, resourceGroup, resource, action)
each response in example.responses
+RequestResponse('Response', response, resourceGroup, resource, action)
mixin Content()
//- Page header and API description
header
h1#top= self.api.name || 'API Documentation'
if self.api.description
!= self.markdown(self.api.description)
//- Loop through and display information about all the resource
//- groups, resources, and actions.
each resourceGroup in self.api.resourceGroups || []
section.resource-group(id=resourceGroup.elementId)
h2= resourceGroup.name
a.permalink(href=resourceGroup.elementLink): ¶
if resourceGroup.description
!= self.markdown(resourceGroup.description)
each resource in resourceGroup.resources || []
.resource(id=resource.elementId)
h3= resource.name || 'Resource'
a.permalink(href=resource.elementLink): ¶
if resource.description
!= self.markdown(resource.description)
each action in resource.actions || []
.action(class=action.methodLower, id=action.elementId)
h4
.name= action.name
a.method(class=action.methodLower, href=action.elementLink)
= action.method
code.uri= (action.attributes && action.attributes.uriTemplate || resource.uriTemplate)
if action.description
!= self.markdown(action.description)
//- A list of sub-sections for parameters, requests
//- and responses.
if action.parameters.length
+Parameters(action.parameters)
if action.examples
+Examples(resourceGroup, resource, action)