This is the primary export module for shinstrap. jsdoc looks for this file in the referenced
template/ directory when specified as a template in jsdoc's config file.
shinstrap is a fork of ink-docstrap, and the bulk of
this file remains untouched. shinstrap, like docstrap before it follows the patterns set down
in jsdoc's default template. See jsdoc/templates/default/publish.js (no link because, ironically,
jsdoc didn't comment their templates :) ).
In addition to docstrap's baseline of features, shinstrap primarily adds customization. The order
and organization of default tags can be changed (from configuration settings), as well as new rules to
allow for the rendering of custom tags. The menus for tutorials can likewise be customized.shinstrap adds a few simple features to override the built-in templates even for complex reworks
with a minimum amount of futzing. Full details should be available in the Usage.md document in this
module's documentation (or in design/Usage.md) [Usage].
namespaces
templates
-
attribs
-
Template File: partial.scaffolded.attribs.tmpl
Honors the following configuration settings:
Name Type Description template.displayStylestring One of
buttons,badgesorcsldescribing how the doclet's attribs should be displayed.The "first" scaffolded partial template, this template controls the display of attributes. This partial is designed to fit in with the display layout of docstrap, attempting to provide a "terse" easy rendering of the attributes for an entity.
By default, this template is called from
method.tmplandmembers.tmpl. -
container
-
Template File: container.tmpl
The "root" level display template for
jsdoc.container.tmplmarhalls and displays most of the doclets which have their own landing page. This includes modules, interfaces, classes, namespace, events, mixins, etc. displayed as<article>s. This template is broken into two sections indocstrap, an "overview" section and what I am calling the body.Display of contents of the "overview" area are controlled in the
customizeOutputarea of the template's configuration by the specifier path:"container:article:overview:..."
This specifier has three branches -- "class", "module-with-modules" and the default (every other case). This is a legacy ofdocstrapThe "body" portion of this template's display is controlled by the specifier path:
"container:article:body:default" -
details
-
Template File: details.tmpl
One of the three workhorse templates for
jsdocdisplay.details.tmplmarshals and displays the details of a doclet. Specifically...[ "properties", "version", "since", "inherits", "overrides", "implementations", "implements", "mixes", "deprecated", "author", "copyright", "license", "defaultvalue", "meta", "tutorials", "see", "todo" ] -
General
-
Template File: listing.scaffolded.general.tmpl
Honors the following configuration settings:
Name Type Default Description entryWrapperstring The tag which the entire entry should be wrapped in. For situations where you want to wrap both the title and the contents. For example, when making a
<details>entry or a<fieldset>entry.entryWrapperAttributesstring The attributes which should be rendered for the entryWrapper. Only valid if entryWrapper has a value.
suppressTitleboolean If true, no title will be generated. This causes
title,titleCaptionandtitleAttributesto be ignored.outerTitleWrapperstring The "outer" wrapper for the title (title only supports two "tiers" of wrappers).
outerTitleAttributesstring The attributes to associate with the outer title tag.
titleWrapperstring The tag to wrap the title in.
titleCaptionstring A string with which to replace the normally auto-generated title text. (See module:template/publish.handleScaffolding)
titleContextPluralizeobject Causes the title to be pluralized if the doclet is an array with more than one member. This object has two fields--
singularandplural, the value for each is used as the title in their respective cases.titleWrapperAttributesstring The attributes to associate with the title tag.
suppressValueboolean false If true, no value will be display for this entry. This causes the various wrapper and use* descriptors to be ignored.
outermostWrapperstring listing.scaffolded.general.tmplallows for up to three tiers of embedded html wrappers.
This is the outermost wrapper.outermostWrapperAttributesstring The attributes to assign to the outermostWrapper.
outerWrapperstring The "second tier" or outer html wrapper for an entry value.
outerWrapperAttributesstring The attributes to assign to the outerWrapper.
wrapperstring If
usePartialis not set,wrapperindicates the tag in which to wrap the value of this listing.wrapperAttributesstring The attributes to associate with the wrapping tag.
usePartialstring The template to display the tag's value with.
usePartialOnFieldstring When
usePartialis set, allows the specification of which field on the doclet to supply to the partial as itsdata.usePerItemPartialstring In the event that the entry's value is an array,
usePerItemPartialallows the specification of a partial template to be used on each value in this entry's value array. This setting is overridden byusePartial.perItemMapPartialobject If set, this setting allows the specification of an object, where each field name in the object is an expression, which if it evaluates to true will cause this template to use as a partial the value of that field. Conditions are tested in order and used on a first found basis. If a "default" field is specified, it will be used in the event none of the other conditions evaluate to true.
usePartialandusePerItemPartialboth override this setting.alternateHandlerstring itemMarshallingarray :advanced: This is an array of view helpers and parameters to execute on each entry's value before rendering it. The format for each call is
["functionName", "param1", "param2", ...]. An arbitrary number of marshal calls may be made, and they will be executed in order (e.g.itemMarshalling: [ [ "linkto", "", "" ] ]). Param specifications are relative to the entry value itself (for brevity), so""references the entry value itself, and "kind" would referencedata.kind(for instance).findobject :advanced:
validateobject :advanced:
This is the general case listing handler for
shinstrap. -
KeyValue
-
Template File: listing.scaffolded.kv.tmpl
Honors the following configuration settings:
Name Type Description titleWrapperstring The tag to wrap the title in.
titleCaptionstring A string with which to replace the normally auto-generated title text. (See module:template/publish.handleScaffolding)
titleWrapperAttributesstring The attributes to associate with the title tag.
usePartialstring The template to display the tag's value with.
usePartialOnFieldstring When
usePartialis set, allows the specification of which field on the doclet to supply to the partial as itsdata.wrapperstring If
usePartialis not set,wrapperindicates the tag in which to wrap the value of this listing.wrapperAttributesstring The attributes to associate with the wrapping tag.
This template handles the display of key-value pairs. For instance,
Type: {Object} -
method
-
Template File: method.tmpl
One of the three workhorse templates for
jsdocdisplay.method.tmplmarshals and displays the common features of javascript entites and is used for methods, classes (when not on their own landing page), typedefs, and events. This is a common template to leverage for complex custom tags as well. By default it displays...[ "description", "augments", "type", "this", "params", "details", "requires", "fires", "listens", "listeners", "exceptions", "returns", "examples" ] -
source
-
Template File: source.tmpl
This template controls the presentation of source files by
jsdoc(when"outputSourceFiles": true). -
tutorial
-
Template File: tutorial.tmpl
This template controls the presentation of tutorials by
jsdoc.
methods
publish(taffyData, opts, tutorials)
This is the primary entry point into docstrap (and shinstrap).
Parameters:
| Name | Type | Description |
|---|---|---|
taffyData |
TAFFY | See http://taffydb.com/. |
opts |
object | |
tutorials |
Tutorial |
utils.addScopeToAttribs(_doclet)
This is a simple helper function which simple adds a doclet's scope to its attribs collection. This
is normally done in publish by calling jsdoc/util/templateHelper.getAttribs but that helper function
only adds scope attribs for doclets of specific kinds. For custom doclet types, we have this function.
Parameters:
| Name | Type | Description |
|---|---|---|
_doclet |
object | The doclet for which to accumulate attributes. |
utils.buildNamespaceLink()
Stub marshalling function to build namespace links.
utils.capitalize(_string)
This is a simple helper function to capitalize a string. It is currently not wired into the system, being "pre" deprecated ;).
Parameters:
| Name | Type | Description |
|---|---|---|
_string |
string | The string to capitalize |
utils.handleScaffolding(_tmpl, _doclet, _arrangement, _listing, _title)
This is the primary helper function for the new custom listing mechanism. All listings are now routed through this method and,
in conjunction with listing.scaffolded.general.tmpl, the capabilities of the custom listing declarations are enabled.
Parameters:
| Name | Type | Description |
|---|---|---|
_tmpl |
object | The template object for which this function is doing the scaffolding |
_doclet |
object | Doclet object being described |
_arrangement |
object | Describes how the listing should be displayed |
_listing |
string | The portion of the doclet being documented |
_title |
string | The doclet title as understood in the current template. Not the title of the listing being documented. |
Returns:
The rendered HTML for the doclet or doclet fragment passed in.
- Type
- string
utils.marshalItemDisplay(_item, _marshallingRules, _view)
This is the handler function for the itemMarshalling rule. This function will interpret the arrangment and the marshalling rules
in the context of the indicated _item to derive the appropriate parameters, invoke the indicated function and return the result
to the calling template.
Parameters:
| Name | Type | Description |
|---|---|---|
_item |
object | The display item or doclet being marshalled. |
_marshallingRules |
object | The marshalling rules which dictate the handling of this item's marshalling. |
_view |
object | The template view which is handing the rendering of this listing. |
Returns:
"marshalled" html representation for _item as indicated in the _marshallingRules.
- Type
- string
utils.renderDoclet(_arrangement, _defaults, _docOrData)
The default rendering pattern for a sectioned/named renderer (template).
Parameters:
| Name | Type | Description |
|---|---|---|
_arrangement |
object | The rules array for the doclet/fragment being rendered. |
_defaults |
array | The default array of entries which are expected/valide for this doclet. |
_docOrData |
object | array | string | The doclet or fragment being rendered. |
- ToDo:
-
-
Once I'm satisfied, this function should probably replace all the renderer snippets.
-
utils.resolveArrangement(_aSelectors)
This function resolves two sets of information for doclets of the specified selectors...
- It will determine the order which tags are intended to be displayed in the listing.
- It will generate the tags descriptor object for all tags.
This information is derived from the conf settings passed into the publish module.
remarks
I debate here whether I should capture in the closure the entirety of conf.customizeOutput or if I should instead
pass it in on the stack (which might also allow for some recursive/contextual resolution in the future)...
Parameters:
| Name | Type | Description |
|---|---|---|
_aSelectors |
Array | An array of selectors indicating for which context to resolve the arrangement information. The last (most specific) specifier in the array may be replaced by "default" (although because of the behavior for unrecognized specifiers, this is just a convention) |
Returns:
An object consisting of two fields--An order field as an array of listings to be displayed, and a
tags field containing any custom listing specifications for that section. If the specified path is not found, the
default arrangment will be returned ({ order: [ "*" ] , tags: {} }). If the specified path exists, but the specific
specifier does not (e.g. container:article:body:module-with-modules) this function will return the default arrangement
for that path, as specified in the all keyword, if present.
{ order: [ "description", "notes", "remarks", "*" ], tags: {} }
- Type
- object
Example
var arrangement = resolveArrangement([ "container", "article", "body", "default" ]);
utils.scaffoldFromSpecifier(_tmpl, _doclet, _tagSpecifier)
This is a simple wrapper on module:template/publish.utils.handleScaffolding which will retrieve the rules for a listing
from a specifier (and then call handleScaffolding with those rules for the specified listing).
Parameters:
| Name | Type | Description |
|---|---|---|
_tmpl |
object | The template object for which this function will be doing the scaffolding. |
_doclet |
object | The doclet or fragment being rendered. |
_tagSpecifier |
string | A colon-delimeted specifier to the rules which dictate the rendering pattern for the doclet. |
Returns:
HTML for the doclet or doclet fragment passed in.
- Type
- string
buildNav(members)
Create the navigation sidebar.
Parameters:
| Name | Type | Description | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
members |
object | The members that will be used to create the sidebar. Properties
|
Returns:
The HTML for the navigation sidebar.
- Type
- string
