panino
Version:
API documentation generator with a strict grammar and testing tools
260 lines (221 loc) • 10.4 kB
text/jade
- var methodSection, constructorSection, propertySection, eventSection;
-function renameMemberTitle(title, count)
if title.indexOf("ethods") >= 0
span Functions (#{count})
else if title.indexOf("ropert") >= 0
span Properties (#{count})
else
span #{title} (
mixin article(obj, parents)
if typeof obj === 'string'
obj = list[obj]
if (obj.private !== true)
title = obj.id + (obj.type ? ' (' + obj.type + ')' : '')
article.article(id=obj.path, data-title=title)
if obj.type === 'section' || obj.type === 'namespace' || obj.type === 'class' || obj.type === 'mixin'
if obj.stability
mixin markdown(">" + obj.stability)
if obj.description
.section.description
.memberContent
mixin markdown(obj.description)
collection = obj.children.filter(function(x){return x.type === 'namespace'});
if collection.length
.section.namespaces
//
h3 Namespaces
.memberContent
mixin short_description_list(collection)
collection = obj.children.filter(function(x){return x.type === 'mixin'});
if collection.length
.section.mixins
//
h3 Mixins
.memberContent
mixin short_description_list(collection)
if obj.type === 'class'
if obj.superclass
.section.superclass
// h3
Superclass
.memberContent
mixin link(obj.superclass)
if obj.subclasses.length
.section.subclasses
// h3
Subclasses
.memberContent
mixin links(obj.subclasses)
if obj.included_mixins
.section.mixins
// h3
Includes
.memberContent
mixin links(obj.included_mixins)
collection = obj.children.filter(function(x){return x.type === 'utility'})
if collection.length
.section.utilities
// h3
Utilities
.memberContent
mixin links(collection)
else
.section.method
.memberContent
if obj.signatures
div.title
ul.signatures
-var loops = 0;
for sig in obj.signatures
li.signature
ul
li.signature-call!= signature(obj, sig, ["methodClicker"])
if sig.returns
li.signature-returns
ul.argument-types
for ret in sig.returns
li.argument-type!= returnLink(obj, ret, [])
-if (loops == 0)
-loops = 1 // ensure that we only print ONE meta info UL per signature (some methods have multiple signatures)
ul.metaInfo
if obj.inheritedFrom
li
span.label.inheritedFrom
| Inherited from:
!= link(obj.inheritedFrom)
if obj.readonly
li
span.label.read-only Read-Only
if obj.chainable
li
span.label.chainable Chainable
if obj.internal
li
span.label.internal Internal
if obj.deprecated
li
span.label.deprecated
| Deprecated
if obj.deprecated.from
| (since
if obj.deprecated.off
| and will be removed on
if obj.alias_of
li
span.label.alias.single
| Aliased as:
!= link(obj.alias_of)
else if obj.aliases.length
li
span.label.alias.multiple
| Aliased as:
ul.alias
for alias in obj.aliases
li
mixin link(alias)
if obj.related_to
li
span.label.related-to
| Related to
mixin link(obj.related_to)
div.sideToggler
div(id='ellipsis_#{obj.id}', class='ellipsis_description')
mixin markdown(obj.short_description)
h3(id='#{obj.id}', class='methodToggle methodClicker inactive')
div.description
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, ['link-short'], 'instance method')
| <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, ['link-short'], 'generic method')
|. If calling as generic, pass the instance in as the first argument.
if obj.arguments
h4 Arguments
!= argumentTable(obj.arguments, ["argument-list", "table", "table-striped", "table-bordered"])
if obj.returns
h4 Returns
!= returnTable(obj.returns, ["return-list", "table", "table-striped", "table-bordered"])
//- 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'})
- if (!constructorSection)
- constructorSection = true
h3.sectionHeader Constructors
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'})
- if (!eventSection)
- eventSection = true
h3.sectionHeader Events
mixin article(child, parents.concat(obj), 'event')
for child in obj.children.filter(function(x){return x.type === 'class method'})
- if (!methodSection)
- methodSection = true
h3.sectionHeader Methods
mixin article(child, parents.concat(obj))
for child in obj.children.filter(function(x){return x.type === 'class property'})
- if (!propertySection)
- propertySection = true
h3.sectionHeader Properties
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()
-pos = 0
for obj in tree.children
-if (obj.private !== false)
.classContent
.membersBackground
div(class=' members pos#{pos}')
div(class=' membersContent pos#{pos}')
h1.memberHeader
-var heading = obj.path
span.name
-if (true || obj.filename.indexOf("index") < 0)
ul(class='nav tabs pos#{pos}', data-tabs='tabs')
for selector, title in {'Events': ['event', 'events'], 'Constructors': ['constructor', 'constructors'], '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']}
members = obj.children.filter(function(x){return x.type === selector[0]})
li(class="dropdown", data-dropdown="dropdown")
if members.length
a(href="\#", class="dropdown-toggle", data-toggle="dropdown")
!= renameMemberTitle(title, members.length)
b.caret
ul.dropdown-menu
for m in members
li(data-id='#{m.id}', class='memberLink')
mixin link(m, [], true)
-pos++
-methodSection = constructorSection = propertySection = eventSection = false;
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)
mixin link(obj, classes, short)
l = link(obj, classes, short)
!= l
mixin links(collection)
ul.method-list
for obj in collection
li
mixin link(obj)