UNPKG

panino

Version:

API documentation generator with a strict grammar and testing tools

260 lines (221 loc) 10.4 kB
- 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} (#{count}) 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 | &nbsp; (since #{obj.deprecated.from}) if obj.deprecated.off | &nbsp;and will be removed on #{obj.deprecated.off} 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') &nbsp;&nbsp;&nbsp; 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 #{heading} -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)