panino
Version:
API documentation generator with a strict grammar and testing tools
191 lines (150 loc) • 6.05 kB
text/jade
//
// Single document
/////////////////////////////////////////
mixin article(obj, parents)
if typeof obj === 'string'
obj = list[obj]
title = obj.id + (obj.type ? ' (' + obj.type + ')' : '')
article.docblock(id=obj.path, data-title=title)
include _doc_header.jade
if obj.type === 'section' || obj.type === 'namespace' || obj.type === 'class' || obj.type === 'mixin'
if obj.description
.section.description
h3 Description
.content
mixin markdown(obj.description)
collection = obj.children.filter(function(x){return x.type === 'namespace'});
if collection.length
.section.namespaces
h3 Namespaces
.content
mixin short_description_list(collection)
collection = obj.children.filter(function(x){return x.type === 'class'});
if collection.length
.section.classes
h3 Classes
.content
mixin short_description_list(collection)
collection = obj.children.filter(function(x){return x.type === 'mixin'});
if collection.length
.section.mixins
h3 Mixins
.content
mixin short_description_list(collection)
if obj.type === 'class'
if obj.superclass
.section.superclass
h3 Superclass
.content
mixin link(obj.superclass)
if obj.subclasses.length
.section.subclasses
h3 Subclasses
.content
mixin links(obj.subclasses)
if obj.included_mixins
.section.mixins
h3 Includes
.content
mixin links(obj.included_mixins)
collection = obj.children.filter(function(x){return x.type === 'utility'})
if collection.length
.section.utilities
h3 Utilities
.content
mixin links(collection)
collection = obj.children.filter(function(x){return x.type === 'constructor'})
if collection.length
.section.constructor
h3 Constructor
.content
ul.method-list
li
mixin link(collection[0])
for selector, title in {'Events': ['event', 'events'], 'Class methods': ['class method', 'class_methods'], 'Class properties': ['class property', 'class_properties'], 'Instance methods': ['instance method', 'instance_methods'], 'Instance properties': ['instance property', 'instance_properties'], 'Constants': ['constant', 'constants']}
methods = obj.children.filter(function(x){return x.type === selector[0]})
if methods.length
.section(class='#{selector[1]}')
h3
.content
ul.method-list
for x in methods
li
mixin link(x, true)
else
.section.method
.content
include _signatures.jade
include _arguments.jade
mixin markdown(obj.description)
if obj.bound && ~obj.bound.indexOf('#')
p.note.methodized
| This method can be called <em>either</em> as an
!= link(obj.bound, 'instance method', ['link-short'])
| <em>or</em> as a generic method. If calling as generic, pass the instance in as the first argument.
else if obj.bound && !~obj.bound.indexOf('#')
p.note.functionalized
| This method can be called <em>either</em> as an instance method <em>or</em> as a
!= link(obj.bound, 'generic method', ['link-short'])
|. If calling as generic, pass the instance in as the first argument.
if obj.aliases && obj.aliases.length
.alias.aliases
| Aliased as:
ul
for alias in obj.aliases
li
mixin link(alias)
if obj.alias_of
.alias.alias-of
| Alias of:
ul
li
mixin link(obj.alias_of)
if obj.related_to
.related-to
| Related to:
mixin link(obj.related_to)
//- children
for child in obj.children.filter(function(x){return x.type === 'section'})
mixin article(child, parents.concat(obj))
for child in obj.children.filter(function(x){return x.type === 'utility'})
mixin article(child, parents.concat(obj))
for child in obj.children.filter(function(x){return x.type === 'constructor'})
mixin article(child, parents.concat(obj))
for child in obj.children.filter(function(x){return x.type === 'namespace' || x.type === 'class' || x.type === 'mixin'})
mixin article(child, parents.concat(obj))
for child in obj.children.filter(function(x){return x.type === 'event'})
mixin article(child, parents.concat(obj))
for child in obj.children.filter(function(x){return x.type === 'class method'})
mixin article(child, parents.concat(obj))
for child in obj.children.filter(function(x){return x.type === 'class property'})
mixin article(child, parents.concat(obj))
for child in obj.children.filter(function(x){return x.type === 'instance method'})
mixin article(child, parents.concat(obj))
for child in obj.children.filter(function(x){return x.type === 'instance property'})
mixin article(child, parents.concat(obj))
for child in obj.children.filter(function(x){return x.type === 'constant'})
mixin article(child, parents.concat(obj))
mixin api()
for obj in tree.children
if (showInternals || !obj.internal)
mixin article(obj, [])
mixin short_description_list(collection)
ul.method-details-list
for obj in collection
if typeof obj === 'string'
obj = list[obj]
li.method-description
h4
mixin link(obj)
if obj.short_description
mixin markdown(obj.short_description, true)
mixin link(obj, short, classes)
!= link(obj, short, classes)
mixin markdown(text, no_highlight)
!= markdown(text, no_highlight)
mixin links(collection)
ul.method-list
for obj in collection
li
mixin link(obj)