node-poweredup 8.0.4 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.drone.yml +2 -2
- package/.gitmodules +0 -3
- package/.jsdoc.json +1 -2
- package/dist/browser/poweredup.js +1 -1
- package/dist/browser/poweredup.js.map +1 -1
- package/dist/node/color.js +5 -1
- package/dist/node/color.js.map +1 -1
- package/dist/node/consts.d.ts +21 -21
- package/dist/node/consts.js +27 -27
- package/dist/node/consts.js.map +1 -1
- package/dist/node/devices/absolutemotor.js +6 -2
- package/dist/node/devices/absolutemotor.js.map +1 -1
- package/dist/node/devices/basicmotor.js +5 -1
- package/dist/node/devices/basicmotor.js.map +1 -1
- package/dist/node/devices/colordistancesensor.js +7 -3
- package/dist/node/devices/colordistancesensor.js.map +1 -1
- package/dist/node/devices/currentsensor.js +6 -2
- package/dist/node/devices/currentsensor.js.map +1 -1
- package/dist/node/devices/device.d.ts +3 -1
- package/dist/node/devices/device.js +5 -1
- package/dist/node/devices/device.js.map +1 -1
- package/dist/node/devices/duplotrainbasecolorsensor.js +6 -2
- package/dist/node/devices/duplotrainbasecolorsensor.js.map +1 -1
- package/dist/node/devices/duplotrainbasemotor.js +5 -1
- package/dist/node/devices/duplotrainbasemotor.js.map +1 -1
- package/dist/node/devices/duplotrainbasespeaker.js +6 -2
- package/dist/node/devices/duplotrainbasespeaker.js.map +1 -1
- package/dist/node/devices/duplotrainbasespeedometer.js +6 -2
- package/dist/node/devices/duplotrainbasespeedometer.js.map +1 -1
- package/dist/node/devices/hubled.js +6 -2
- package/dist/node/devices/hubled.js.map +1 -1
- package/dist/node/devices/light.js +5 -1
- package/dist/node/devices/light.js.map +1 -1
- package/dist/node/devices/marioaccelerometer.js +6 -2
- package/dist/node/devices/marioaccelerometer.js.map +1 -1
- package/dist/node/devices/mariobarcodesensor.js +6 -2
- package/dist/node/devices/mariobarcodesensor.js.map +1 -1
- package/dist/node/devices/mariopantssensor.js +6 -2
- package/dist/node/devices/mariopantssensor.js.map +1 -1
- package/dist/node/devices/mediumlinearmotor.js +5 -1
- package/dist/node/devices/mediumlinearmotor.js.map +1 -1
- package/dist/node/devices/motionsensor.js +6 -2
- package/dist/node/devices/motionsensor.js.map +1 -1
- package/dist/node/devices/movehubmediumlinearmotor.js +5 -1
- package/dist/node/devices/movehubmediumlinearmotor.js.map +1 -1
- package/dist/node/devices/movehubtiltsensor.js +6 -2
- package/dist/node/devices/movehubtiltsensor.js.map +1 -1
- package/dist/node/devices/piezobuzzer.js +5 -1
- package/dist/node/devices/piezobuzzer.js.map +1 -1
- package/dist/node/devices/remotecontrolbutton.js +7 -3
- package/dist/node/devices/remotecontrolbutton.js.map +1 -1
- package/dist/node/devices/simplemediumlinearmotor.js +5 -1
- package/dist/node/devices/simplemediumlinearmotor.js.map +1 -1
- package/dist/node/devices/tachomotor.js +6 -2
- package/dist/node/devices/tachomotor.js.map +1 -1
- package/dist/node/devices/technic3x3colorlightmatrix.js +6 -2
- package/dist/node/devices/technic3x3colorlightmatrix.js.map +1 -1
- package/dist/node/devices/techniccolorsensor.js +6 -2
- package/dist/node/devices/techniccolorsensor.js.map +1 -1
- package/dist/node/devices/technicdistancesensor.js +6 -2
- package/dist/node/devices/technicdistancesensor.js.map +1 -1
- package/dist/node/devices/technicforcesensor.js +6 -2
- package/dist/node/devices/technicforcesensor.js.map +1 -1
- package/dist/node/devices/techniclargeangularmotor.js +5 -1
- package/dist/node/devices/techniclargeangularmotor.js.map +1 -1
- package/dist/node/devices/techniclargelinearmotor.js +5 -1
- package/dist/node/devices/techniclargelinearmotor.js.map +1 -1
- package/dist/node/devices/technicmediumangularmotor.js +5 -1
- package/dist/node/devices/technicmediumangularmotor.js.map +1 -1
- package/dist/node/devices/technicmediumhubaccelerometersensor.js +6 -2
- package/dist/node/devices/technicmediumhubaccelerometersensor.js.map +1 -1
- package/dist/node/devices/technicmediumhubgyrosensor.js +6 -2
- package/dist/node/devices/technicmediumhubgyrosensor.js.map +1 -1
- package/dist/node/devices/technicmediumhubtiltsensor.js +7 -3
- package/dist/node/devices/technicmediumhubtiltsensor.js.map +1 -1
- package/dist/node/devices/technicsmallangularmotor.js +5 -1
- package/dist/node/devices/technicsmallangularmotor.js.map +1 -1
- package/dist/node/devices/technicxlargelinearmotor.js +5 -1
- package/dist/node/devices/technicxlargelinearmotor.js.map +1 -1
- package/dist/node/devices/tiltsensor.js +6 -2
- package/dist/node/devices/tiltsensor.js.map +1 -1
- package/dist/node/devices/trainmotor.js +5 -1
- package/dist/node/devices/trainmotor.js.map +1 -1
- package/dist/node/devices/voltagesensor.js +6 -2
- package/dist/node/devices/voltagesensor.js.map +1 -1
- package/dist/node/hubs/basehub.d.ts +1 -0
- package/dist/node/hubs/basehub.js +5 -1
- package/dist/node/hubs/basehub.js.map +1 -1
- package/dist/node/hubs/duplotrainbase.d.ts +1 -0
- package/dist/node/hubs/duplotrainbase.js +5 -1
- package/dist/node/hubs/duplotrainbase.js.map +1 -1
- package/dist/node/hubs/hub.d.ts +1 -0
- package/dist/node/hubs/hub.js +12 -11
- package/dist/node/hubs/hub.js.map +1 -1
- package/dist/node/hubs/lpf2hub.js +5 -1
- package/dist/node/hubs/lpf2hub.js.map +1 -1
- package/dist/node/hubs/mario.d.ts +1 -0
- package/dist/node/hubs/mario.js +5 -1
- package/dist/node/hubs/mario.js.map +1 -1
- package/dist/node/hubs/movehub.d.ts +1 -0
- package/dist/node/hubs/movehub.js +7 -6
- package/dist/node/hubs/movehub.js.map +1 -1
- package/dist/node/hubs/remotecontrol.d.ts +1 -0
- package/dist/node/hubs/remotecontrol.js +5 -1
- package/dist/node/hubs/remotecontrol.js.map +1 -1
- package/dist/node/hubs/technicmediumhub.d.ts +1 -0
- package/dist/node/hubs/technicmediumhub.js +5 -1
- package/dist/node/hubs/technicmediumhub.js.map +1 -1
- package/dist/node/hubs/technicsmallhub.d.ts +1 -0
- package/dist/node/hubs/technicsmallhub.js +10 -6
- package/dist/node/hubs/technicsmallhub.js.map +1 -1
- package/dist/node/hubs/wedo2smarthub.d.ts +1 -0
- package/dist/node/hubs/wedo2smarthub.js +10 -6
- package/dist/node/hubs/wedo2smarthub.js.map +1 -1
- package/dist/node/index-browser.js +5 -1
- package/dist/node/index-browser.js.map +1 -1
- package/dist/node/index-node.js +5 -1
- package/dist/node/index-node.js.map +1 -1
- package/dist/node/interfaces.d.ts +1 -0
- package/dist/node/nobleabstraction.d.ts +1 -0
- package/dist/node/nobleabstraction.js.map +1 -1
- package/dist/node/poweredup-browser.js +10 -3
- package/dist/node/poweredup-browser.js.map +1 -1
- package/dist/node/poweredup-node.js +5 -3
- package/dist/node/poweredup-node.js.map +1 -1
- package/dist/node/utils.d.ts +2 -1
- package/dist/node/utils.js.map +1 -1
- package/dist/node/webbleabstraction.d.ts +2 -1
- package/dist/node/webbleabstraction.js +1 -1
- package/dist/node/webbleabstraction.js.map +1 -1
- package/docs/AbsoluteMotor.html +1037 -1066
- package/docs/BaseHub.html +622 -807
- package/docs/BasicMotor.html +707 -809
- package/docs/ColorDistanceSensor.html +1500 -1611
- package/docs/CurrentSensor.html +470 -623
- package/docs/Device.html +372 -502
- package/docs/DuploTrainBase.html +1004 -1225
- package/docs/DuploTrainBaseColorSensor.html +712 -874
- package/docs/DuploTrainBaseMotor.html +723 -841
- package/docs/DuploTrainBaseSpeaker.html +565 -693
- package/docs/DuploTraniBaseSpeedometer.html +396 -550
- package/docs/Hub.html +3842 -3987
- package/docs/HubLED.html +591 -731
- package/docs/LPF2Hub.html +983 -1188
- package/docs/Light.html +591 -731
- package/docs/Mario.html +1004 -1225
- package/docs/MarioAccelerometer.html +568 -732
- package/docs/MarioBarcodeSensor.html +568 -732
- package/docs/MarioPantsSensor.html +470 -623
- package/docs/MediumLinearMotor.html +679 -748
- package/docs/MotionSensor.html +470 -623
- package/docs/MoveHub.html +1004 -1225
- package/docs/MoveHubMediumLinearMotor.html +679 -748
- package/docs/MoveHubTiltSensor.html +483 -642
- package/docs/PiezoBuzzer.html +495 -642
- package/docs/PoweredUP.html +2223 -2174
- package/docs/RemoteControl.html +1004 -1225
- package/docs/RemoteControlButton.html +470 -623
- package/docs/SimpleMediumLinearMotor.html +396 -550
- package/docs/TachoMotor.html +1298 -1393
- package/docs/Technic3x3ColorLightMatrix.html +484 -628
- package/docs/TechnicColorSensor.html +726 -876
- package/docs/TechnicDistanceSensor.html +667 -824
- package/docs/TechnicForceSensor.html +614 -765
- package/docs/TechnicLargeAngularMotor.html +1046 -1091
- package/docs/TechnicLargeLinearMotor.html +1046 -1091
- package/docs/TechnicMediumAngularMotor.html +1046 -1091
- package/docs/TechnicMediumHub.html +1004 -1225
- package/docs/TechnicMediumHubAccelerometerSensor.html +496 -661
- package/docs/TechnicMediumHubGyroSensor.html +496 -661
- package/docs/TechnicMediumHubTiltSensor.html +820 -945
- package/docs/TechnicSmallAngularMotor.html +1046 -1091
- package/docs/TechnicXLargeLinearMotor.html +1046 -1091
- package/docs/TiltSensor.html +483 -642
- package/docs/TrainMotor.html +723 -841
- package/docs/VoltageSensor.html +470 -623
- package/docs/WeDo2SmartHub.html +890 -1102
- package/docs/consts.js.html +53 -116
- package/docs/devices_absolutemotor.js.html +35 -94
- package/docs/devices_basicmotor.js.html +34 -93
- package/docs/devices_colordistancesensor.js.html +33 -92
- package/docs/devices_currentsensor.js.html +35 -94
- package/docs/devices_device.js.html +32 -91
- package/docs/devices_duplotrainbasecolorsensor.js.html +35 -94
- package/docs/devices_duplotrainbasemotor.js.html +34 -93
- package/docs/devices_duplotrainbasespeaker.js.html +35 -94
- package/docs/devices_duplotrainbasespeedometer.js.html +35 -94
- package/docs/devices_hubled.js.html +35 -94
- package/docs/devices_light.js.html +34 -93
- package/docs/devices_marioaccelerometer.js.html +35 -94
- package/docs/devices_mariobarcodesensor.js.html +35 -94
- package/docs/devices_mariopantssensor.js.html +35 -94
- package/docs/devices_mediumlinearmotor.js.html +34 -93
- package/docs/devices_motionsensor.js.html +35 -94
- package/docs/devices_movehubmediumlinearmotor.js.html +34 -93
- package/docs/devices_movehubtiltsensor.js.html +35 -94
- package/docs/devices_piezobuzzer.js.html +34 -93
- package/docs/devices_remotecontrolbutton.js.html +36 -95
- package/docs/devices_simplemediumlinearmotor.js.html +34 -93
- package/docs/devices_tachomotor.js.html +33 -92
- package/docs/devices_technic3x3colorlightmatrix.js.html +35 -94
- package/docs/devices_techniccolorsensor.js.html +35 -94
- package/docs/devices_technicdistancesensor.js.html +35 -94
- package/docs/devices_technicforcesensor.js.html +35 -94
- package/docs/devices_techniclargeangularmotor.js.html +34 -93
- package/docs/devices_techniclargelinearmotor.js.html +34 -93
- package/docs/devices_technicmediumangularmotor.js.html +34 -93
- package/docs/devices_technicmediumhubaccelerometersensor.js.html +35 -94
- package/docs/devices_technicmediumhubgyrosensor.js.html +35 -94
- package/docs/devices_technicmediumhubtiltsensor.js.html +36 -95
- package/docs/devices_technicsmallangularmotor.js.html +34 -93
- package/docs/devices_technicxlargelinearmotor.js.html +34 -93
- package/docs/devices_tiltsensor.js.html +35 -94
- package/docs/devices_trainmotor.js.html +34 -93
- package/docs/devices_voltagesensor.js.html +35 -94
- package/docs/global.html +2094 -7927
- package/docs/hubs_basehub.js.html +31 -90
- package/docs/hubs_duplotrainbase.js.html +34 -93
- package/docs/hubs_hub.js.html +41 -103
- package/docs/hubs_lpf2hub.js.html +31 -90
- package/docs/hubs_mario.js.html +34 -93
- package/docs/hubs_movehub.js.html +36 -98
- package/docs/hubs_remotecontrol.js.html +34 -93
- package/docs/hubs_technicmediumhub.js.html +34 -93
- package/docs/hubs_technicsmallhub.js.html +39 -98
- package/docs/hubs_wedo2smarthub.js.html +36 -95
- package/docs/index.html +36 -83
- package/docs/poweredup-browser.js.html +36 -92
- package/docs/poweredup-node.js.html +32 -93
- package/docs/scripts/linenumber.js +21 -19
- package/docs/scripts/prettify/Apache-License-2.0.txt +202 -0
- package/docs/scripts/prettify/lang-css.js +2 -0
- package/docs/scripts/prettify/prettify.js +28 -0
- package/docs/styles/jsdoc-default.css +192 -787
- package/docs/styles/prettify-jsdoc.css +1 -1
- package/docs/styles/prettify-tomorrow.css +8 -14
- package/package.json +13 -13
- package/src/devices/device.ts +2 -2
- package/src/devices/remotecontrolbutton.ts +1 -1
- package/src/devices/technicmediumhubtiltsensor.ts +1 -1
- package/src/hubs/hub.ts +2 -2
- package/src/hubs/movehub.ts +2 -2
- package/src/poweredup-browser.ts +5 -2
- package/src/poweredup-node.ts +0 -2
- package/src/webbleabstraction.ts +2 -2
- package/jsdoc-template/braintree/CHANGELOG.md +0 -31
- package/jsdoc-template/braintree/LICENSE +0 -27
- package/jsdoc-template/braintree/README.md +0 -90
- package/jsdoc-template/braintree/package.json +0 -39
- package/jsdoc-template/braintree/publish.js +0 -675
- package/jsdoc-template/braintree/static/fonts/OpenSans-Bold-webfont.eot +0 -0
- package/jsdoc-template/braintree/static/fonts/OpenSans-Bold-webfont.svg +0 -1830
- package/jsdoc-template/braintree/static/fonts/OpenSans-Bold-webfont.woff +0 -0
- package/jsdoc-template/braintree/static/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
- package/jsdoc-template/braintree/static/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
- package/jsdoc-template/braintree/static/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
- package/jsdoc-template/braintree/static/fonts/OpenSans-Italic-webfont.eot +0 -0
- package/jsdoc-template/braintree/static/fonts/OpenSans-Italic-webfont.svg +0 -1830
- package/jsdoc-template/braintree/static/fonts/OpenSans-Italic-webfont.woff +0 -0
- package/jsdoc-template/braintree/static/fonts/OpenSans-Light-webfont.eot +0 -0
- package/jsdoc-template/braintree/static/fonts/OpenSans-Light-webfont.svg +0 -1831
- package/jsdoc-template/braintree/static/fonts/OpenSans-Light-webfont.woff +0 -0
- package/jsdoc-template/braintree/static/fonts/OpenSans-LightItalic-webfont.eot +0 -0
- package/jsdoc-template/braintree/static/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
- package/jsdoc-template/braintree/static/fonts/OpenSans-LightItalic-webfont.woff +0 -0
- package/jsdoc-template/braintree/static/fonts/OpenSans-Regular-webfont.eot +0 -0
- package/jsdoc-template/braintree/static/fonts/OpenSans-Regular-webfont.svg +0 -1831
- package/jsdoc-template/braintree/static/fonts/OpenSans-Regular-webfont.woff +0 -0
- package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.eot +0 -0
- package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.svg +0 -1830
- package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.ttf +0 -0
- package/jsdoc-template/braintree/static/fonts/OpenSans-Semibold-webfont.woff +0 -0
- package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
- package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.svg +0 -1830
- package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
- package/jsdoc-template/braintree/static/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
- package/jsdoc-template/braintree/static/icons/home.svg +0 -4
- package/jsdoc-template/braintree/static/icons/search.svg +0 -4
- package/jsdoc-template/braintree/static/scripts/linenumber.js +0 -23
- package/jsdoc-template/braintree/static/scripts/pagelocation.js +0 -89
- package/jsdoc-template/braintree/static/styles/collapse.css +0 -27
- package/jsdoc-template/braintree/static/styles/jsdoc-default.css +0 -953
- package/jsdoc-template/braintree/static/styles/prettify-jsdoc.css +0 -111
- package/jsdoc-template/braintree/static/styles/prettify-tomorrow.css +0 -138
- package/jsdoc-template/braintree/tmpl/augments.tmpl +0 -10
- package/jsdoc-template/braintree/tmpl/container.tmpl +0 -213
- package/jsdoc-template/braintree/tmpl/details.tmpl +0 -223
- package/jsdoc-template/braintree/tmpl/example.tmpl +0 -2
- package/jsdoc-template/braintree/tmpl/examples.tmpl +0 -14
- package/jsdoc-template/braintree/tmpl/exceptions.tmpl +0 -28
- package/jsdoc-template/braintree/tmpl/layout.tmpl +0 -150
- package/jsdoc-template/braintree/tmpl/mainpage.tmpl +0 -9
- package/jsdoc-template/braintree/tmpl/members.tmpl +0 -38
- package/jsdoc-template/braintree/tmpl/method.tmpl +0 -128
- package/jsdoc-template/braintree/tmpl/params.tmpl +0 -125
- package/jsdoc-template/braintree/tmpl/properties.tmpl +0 -111
- package/jsdoc-template/braintree/tmpl/returns.tmpl +0 -17
- package/jsdoc-template/braintree/tmpl/source.tmpl +0 -9
- package/jsdoc-template/braintree/tmpl/tutorial.tmpl +0 -23
- package/jsdoc-template/braintree/tmpl/type.tmpl +0 -11
|
@@ -1,675 +0,0 @@
|
|
|
1
|
-
/* global env: true */
|
|
2
|
-
/* eslint-disable vars-on-top, valid-jsdoc */
|
|
3
|
-
'use strict';
|
|
4
|
-
|
|
5
|
-
var doop = require('jsdoc/util/doop');
|
|
6
|
-
var fs = require('jsdoc/fs');
|
|
7
|
-
var helper = require('jsdoc/util/templateHelper');
|
|
8
|
-
var logger = require('jsdoc/util/logger');
|
|
9
|
-
var path = require('jsdoc/path');
|
|
10
|
-
var taffy = require('taffydb').taffy;
|
|
11
|
-
var template = require('jsdoc/template');
|
|
12
|
-
var util = require('util');
|
|
13
|
-
|
|
14
|
-
var htmlsafe = helper.htmlsafe;
|
|
15
|
-
var linkto = helper.linkto;
|
|
16
|
-
var resolveAuthorLinks = helper.resolveAuthorLinks;
|
|
17
|
-
var hasOwnProp = Object.prototype.hasOwnProperty;
|
|
18
|
-
|
|
19
|
-
var data, view;
|
|
20
|
-
|
|
21
|
-
var outdir = path.normalize(env.opts.destination);
|
|
22
|
-
|
|
23
|
-
function find(spec) {
|
|
24
|
-
return helper.find(data, spec);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function tutoriallink(tutorial) {
|
|
28
|
-
return helper.toTutorial(tutorial, null, {tag: 'em', classname: 'disabled', prefix: 'Tutorial: '});
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function getAncestorLinks(doclet) {
|
|
32
|
-
return helper.getAncestorLinks(data, doclet);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function hashToLink(doclet, hash) {
|
|
36
|
-
if (!/^(#.+)/.test(hash)) { return hash; }
|
|
37
|
-
|
|
38
|
-
var url = helper.createLink(doclet);
|
|
39
|
-
|
|
40
|
-
url = url.replace(/(#.+|$)/, hash);
|
|
41
|
-
|
|
42
|
-
return '<a href="' + url + '">' + hash + '</a>';
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function needsSignature(doclet) {
|
|
46
|
-
var i, l;
|
|
47
|
-
var needsSig = false;
|
|
48
|
-
|
|
49
|
-
// function and class definitions always get a signature
|
|
50
|
-
if (doclet.kind === 'function' || doclet.kind === 'class') {
|
|
51
|
-
needsSig = true;
|
|
52
|
-
} else if (doclet.kind === 'typedef' && doclet.type && doclet.type.names &&
|
|
53
|
-
doclet.type.names.length) { // typedefs that contain functions get a signature, too
|
|
54
|
-
for (i = 0, l = doclet.type.names.length; i < l; i++) {
|
|
55
|
-
if (doclet.type.names[i].toLowerCase() === 'function') {
|
|
56
|
-
needsSig = true;
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
return needsSig;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function getSignatureAttributes(item) {
|
|
66
|
-
var attributes = [];
|
|
67
|
-
|
|
68
|
-
if (item.optional) {
|
|
69
|
-
attributes.push('opt');
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (item.nullable === true) {
|
|
73
|
-
attributes.push('nullable');
|
|
74
|
-
} else if (item.nullable === false) {
|
|
75
|
-
attributes.push('non-null');
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
return attributes;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
function updateItemName(item) {
|
|
82
|
-
var attributes = getSignatureAttributes(item);
|
|
83
|
-
var itemName = item.name || '';
|
|
84
|
-
|
|
85
|
-
if (item.variable) {
|
|
86
|
-
itemName = '…' + itemName;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if (attributes && attributes.length) {
|
|
90
|
-
itemName = util.format('%s<span class="signature-attributes">%s</span>', itemName,
|
|
91
|
-
attributes.join(', '));
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
return itemName;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
function addParamAttributes(params) {
|
|
98
|
-
return params.filter(function (param) {
|
|
99
|
-
return param.name && param.name.indexOf('.') === -1;
|
|
100
|
-
}).map(updateItemName);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
function buildItemTypeStrings(item) {
|
|
104
|
-
var types = [];
|
|
105
|
-
|
|
106
|
-
if (item && item.type && item.type.names) {
|
|
107
|
-
item.type.names.forEach(function (name) {
|
|
108
|
-
types.push(linkto(name, htmlsafe(name)));
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
return types;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
function buildAttribsString(attribs) {
|
|
116
|
-
var attribsString = '';
|
|
117
|
-
|
|
118
|
-
if (attribs && attribs.length) {
|
|
119
|
-
attribsString = htmlsafe(util.format('(%s) ', attribs.join(', ')));
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
return attribsString;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
function addNonParamAttributes(items) {
|
|
126
|
-
var types = [];
|
|
127
|
-
|
|
128
|
-
items.forEach(function (item) {
|
|
129
|
-
types = types.concat(buildItemTypeStrings(item));
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
return types;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
function addSignatureParams(f) {
|
|
136
|
-
var params = f.params ? addParamAttributes(f.params) : [];
|
|
137
|
-
|
|
138
|
-
f.signature = util.format('%s(%s)', f.signature || '', params.join(', '));
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
function addSignatureReturns(f) {
|
|
142
|
-
var attribs = [];
|
|
143
|
-
var attribsString = '';
|
|
144
|
-
var returnTypes = [];
|
|
145
|
-
var returnTypesString = '';
|
|
146
|
-
|
|
147
|
-
// jam all the return-type attributes into an array. this could create odd results (for example,
|
|
148
|
-
// if there are both nullable and non-nullable return types), but let's assume that most people
|
|
149
|
-
// who use multiple @return tags aren't using Closure Compiler type annotations, and vice-versa.
|
|
150
|
-
if (f.returns) {
|
|
151
|
-
f.returns.forEach(function (item) {
|
|
152
|
-
helper.getAttribs(item).forEach(function (attrib) {
|
|
153
|
-
if (attribs.indexOf(attrib) === -1) {
|
|
154
|
-
attribs.push(attrib);
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
attribsString = buildAttribsString(attribs);
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
if (f.returns) {
|
|
163
|
-
returnTypes = addNonParamAttributes(f.returns);
|
|
164
|
-
}
|
|
165
|
-
if (returnTypes.length) {
|
|
166
|
-
returnTypesString = util.format(' → %s{%s}', attribsString, returnTypes.join('|'));
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
f.signature = '<span class="signature">' + (f.signature || '') + '</span>' +
|
|
170
|
-
'<span class="type-signature">' + returnTypesString + '</span>';
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
function addSignatureTypes(f) {
|
|
174
|
-
var types = f.type ? buildItemTypeStrings(f) : [];
|
|
175
|
-
|
|
176
|
-
f.signature = (f.signature || '') + '<span class="type-signature">' +
|
|
177
|
-
(types.length ? ' :' + types.join('|') : '') + '</span>';
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
function addAttribs(f) {
|
|
181
|
-
var attribs = helper.getAttribs(f);
|
|
182
|
-
var attribsString = buildAttribsString(attribs);
|
|
183
|
-
|
|
184
|
-
f.attribs = util.format('<span class="type-signature">%s</span>', attribsString);
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
function shortenPaths(files, commonPrefix) {
|
|
188
|
-
Object.keys(files).forEach(function (file) {
|
|
189
|
-
files[file].shortened = files[file].resolved.replace(commonPrefix, '')
|
|
190
|
-
// always use forward slashes
|
|
191
|
-
.replace(/\\/g, '/');
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
return files;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
function getPathFromDoclet(doclet) {
|
|
198
|
-
if (!doclet.meta) {
|
|
199
|
-
return null;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
return doclet.meta.path && doclet.meta.path !== 'null' ?
|
|
203
|
-
path.join(doclet.meta.path, doclet.meta.filename) :
|
|
204
|
-
doclet.meta.filename;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
function generate(type, title, docs, filename, resolveLinks) {
|
|
208
|
-
resolveLinks = resolveLinks !== false;
|
|
209
|
-
|
|
210
|
-
var docData = {
|
|
211
|
-
type: type,
|
|
212
|
-
title: title,
|
|
213
|
-
docs: docs
|
|
214
|
-
};
|
|
215
|
-
|
|
216
|
-
var outpath = path.join(outdir, filename);
|
|
217
|
-
var html = view.render('container.tmpl', docData);
|
|
218
|
-
|
|
219
|
-
if (resolveLinks) {
|
|
220
|
-
html = helper.resolveLinks(html); // turn {@link foo} into <a href="foodoc.html">foo</a>
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
if (typeof env.conf.templates.postProcess === 'function') {
|
|
224
|
-
html = env.conf.templates.postProcess(html);
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
fs.writeFileSync(outpath, html, 'utf8');
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
function generateSourceFiles(sourceFiles, encoding) {
|
|
231
|
-
encoding = encoding || 'utf8';
|
|
232
|
-
Object.keys(sourceFiles).forEach(function (file) {
|
|
233
|
-
var source;
|
|
234
|
-
// links are keyed to the shortened path in each doclet's `meta.shortpath` property
|
|
235
|
-
var sourceOutfile = helper.getUniqueFilename(sourceFiles[file].shortened);
|
|
236
|
-
|
|
237
|
-
helper.registerLink(sourceFiles[file].shortened, sourceOutfile);
|
|
238
|
-
|
|
239
|
-
try {
|
|
240
|
-
source = {
|
|
241
|
-
kind: 'source',
|
|
242
|
-
code: helper.htmlsafe(fs.readFileSync(sourceFiles[file].resolved, encoding))
|
|
243
|
-
};
|
|
244
|
-
} catch (e) {
|
|
245
|
-
logger.error('Error while generating source file %s: %s', file, e.message);
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
generate('Source', sourceFiles[file].shortened, [source], sourceOutfile, false);
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
/**
|
|
253
|
-
* Look for classes or functions with the same name as modules (which indicates that the module
|
|
254
|
-
* exports only that class or function), then attach the classes or functions to the `module`
|
|
255
|
-
* property of the appropriate module doclets. The name of each class or function is also updated
|
|
256
|
-
* for display purposes. This function mutates the original arrays.
|
|
257
|
-
*
|
|
258
|
-
* @private
|
|
259
|
-
* @param {Array.<module:jsdoc/doclet.Doclet>} doclets - The array of classes and functions to
|
|
260
|
-
* check.
|
|
261
|
-
* @param {Array.<module:jsdoc/doclet.Doclet>} modules - The array of module doclets to search.
|
|
262
|
-
*/
|
|
263
|
-
function attachModuleSymbols(doclets, modules) {
|
|
264
|
-
var symbols = {};
|
|
265
|
-
|
|
266
|
-
// build a lookup table
|
|
267
|
-
doclets.forEach(function (symbol) {
|
|
268
|
-
symbols[symbol.longname] = symbols[symbol.longname] || [];
|
|
269
|
-
symbols[symbol.longname].push(symbol);
|
|
270
|
-
});
|
|
271
|
-
|
|
272
|
-
return modules.map(function (module) {
|
|
273
|
-
if (symbols[module.longname]) {
|
|
274
|
-
module.modules = symbols[module.longname]
|
|
275
|
-
// Only show symbols that have a description. Make an exception for classes, because
|
|
276
|
-
// we want to show the constructor-signature heading no matter what.
|
|
277
|
-
.filter(function (symbol) {
|
|
278
|
-
return symbol.description || symbol.kind === 'class';
|
|
279
|
-
})
|
|
280
|
-
.map(function (symbol) {
|
|
281
|
-
symbol = doop(symbol);
|
|
282
|
-
|
|
283
|
-
if (symbol.kind === 'class' || symbol.kind === 'function') {
|
|
284
|
-
symbol.name = symbol.name.replace('module:', '(require("') + '"))';
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
return symbol;
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
});
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
function buildMemberNav(items, itemHeading, itemsSeen, linktoFn) {
|
|
294
|
-
var nav = '';
|
|
295
|
-
var itemsNav = '';
|
|
296
|
-
|
|
297
|
-
if (items && items.length) {
|
|
298
|
-
items.forEach(function (item) {
|
|
299
|
-
var methods = find({kind: 'function', memberof: item.longname});
|
|
300
|
-
|
|
301
|
-
if (!hasOwnProp.call(item, 'longname')) {
|
|
302
|
-
itemsNav += '<li id="' + item.name.replace('/', '_') + '-nav">' + linktoFn('', item.name);
|
|
303
|
-
itemsNav += '</li>';
|
|
304
|
-
} else if (!hasOwnProp.call(itemsSeen, item.longname)) {
|
|
305
|
-
// replace '/' in url to match ID in some section
|
|
306
|
-
itemsNav += '<li id="' + item.name.replace('/', '_') + '-nav">' + linktoFn(item.longname, item.name.replace(/^module:/, ''));
|
|
307
|
-
if (methods.length) {
|
|
308
|
-
itemsNav += "<ul class='methods'>";
|
|
309
|
-
|
|
310
|
-
methods.forEach(function (method) {
|
|
311
|
-
itemsNav += '<li data-type="method" id="' + item.name.replace('/', '_') + '-' + method.name + '-nav">';
|
|
312
|
-
itemsNav += linkto(method.longname, method.name);
|
|
313
|
-
itemsNav += '</li>';
|
|
314
|
-
});
|
|
315
|
-
|
|
316
|
-
itemsNav += '</ul>';
|
|
317
|
-
}
|
|
318
|
-
itemsNav += '</li>';
|
|
319
|
-
itemsSeen[item.longname] = true;
|
|
320
|
-
}
|
|
321
|
-
});
|
|
322
|
-
|
|
323
|
-
if (itemsNav !== '') {
|
|
324
|
-
nav += '<h3>' + itemHeading + '</h3><ul>' + itemsNav + '</ul>';
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
return nav;
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
// TODO: as needed, comment back in later
|
|
332
|
-
// function linktoTutorial(longName, name) {
|
|
333
|
-
// return tutoriallink(name);
|
|
334
|
-
// }
|
|
335
|
-
|
|
336
|
-
// function linktoExternal(longName, name) {
|
|
337
|
-
// return linkto(longName, name.replace(/(^"|"$)/g, ''));
|
|
338
|
-
// }
|
|
339
|
-
|
|
340
|
-
/**
|
|
341
|
-
* Create the navigation sidebar.
|
|
342
|
-
* @param {object} members The members that will be used to create the sidebar.
|
|
343
|
-
* @param {array<object>} members.classes
|
|
344
|
-
* @param {array<object>} members.externals
|
|
345
|
-
* @param {array<object>} members.globals
|
|
346
|
-
* @param {array<object>} members.mixins
|
|
347
|
-
* @param {array<object>} members.modules
|
|
348
|
-
* @param {array<object>} members.namespaces
|
|
349
|
-
* @param {array<object>} members.tutorials
|
|
350
|
-
* @param {array<object>} members.events
|
|
351
|
-
* @param {array<object>} members.interfaces
|
|
352
|
-
* @return {string} The HTML for the navigation sidebar.
|
|
353
|
-
*/
|
|
354
|
-
function buildNav(members) {
|
|
355
|
-
var nav = '';
|
|
356
|
-
var globalNav = '';
|
|
357
|
-
var seen = {};
|
|
358
|
-
// var seenTutorials = {};
|
|
359
|
-
|
|
360
|
-
nav += buildMemberNav(members.classes, 'Classes', seen, linkto);
|
|
361
|
-
nav += buildMemberNav(members.modules, 'Modules', {}, linkto);
|
|
362
|
-
// TODO: as needed, comment back in later
|
|
363
|
-
// nav += buildMemberNav(members.externals, 'Externals', seen, linktoExternal);
|
|
364
|
-
// nav += buildMemberNav(members.events, 'Events', seen, linkto);
|
|
365
|
-
// nav += buildMemberNav(members.namespaces, 'Namespaces', seen, linkto);
|
|
366
|
-
// nav += buildMemberNav(members.mixins, 'Mixins', seen, linkto);
|
|
367
|
-
// nav += buildMemberNav(members.tutorials, 'Tutorials', seenTutorials, linktoTutorial);
|
|
368
|
-
// nav += buildMemberNav(members.interfaces, 'Interfaces', seen, linkto);
|
|
369
|
-
|
|
370
|
-
if (members.globals.length) {
|
|
371
|
-
members.globals.forEach(function (g) {
|
|
372
|
-
if (g.kind !== 'typedef' && !hasOwnProp.call(seen, g.longname)) {
|
|
373
|
-
globalNav += '<li>' + linkto(g.longname, g.name) + '</li>';
|
|
374
|
-
}
|
|
375
|
-
seen[g.longname] = true;
|
|
376
|
-
});
|
|
377
|
-
|
|
378
|
-
if (!globalNav) {
|
|
379
|
-
// turn the heading into a link so you can actually get to the global page
|
|
380
|
-
nav += '<h3 id="global-nav">' + linkto('global', 'Global') + '</h3>';
|
|
381
|
-
} else {
|
|
382
|
-
nav += '<h3 id="global-nav">Global</h3><ul>' + globalNav + '</ul>';
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
return nav;
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
/**
|
|
390
|
-
@param {TAFFY} taffyData See <http://taffydb.com/>.
|
|
391
|
-
@param {object} opts
|
|
392
|
-
@param {Tutorial} tutorials
|
|
393
|
-
*/
|
|
394
|
-
exports.publish = function (taffyData, opts, tutorials) {
|
|
395
|
-
var conf, templatePath, indexUrl, globalUrl, sourceFiles, sourceFilePaths, staticFilePaths, staticFileFilter, staticFileScanner;
|
|
396
|
-
|
|
397
|
-
data = taffyData;
|
|
398
|
-
|
|
399
|
-
conf = env.conf.templates || {};
|
|
400
|
-
conf.default = conf.default || {};
|
|
401
|
-
|
|
402
|
-
templatePath = path.normalize(opts.template);
|
|
403
|
-
|
|
404
|
-
view = new template.Template(path.join(templatePath, 'tmpl'));
|
|
405
|
-
|
|
406
|
-
// claim some special filenames in advance, so the All-Powerful Overseer of Filename Uniqueness
|
|
407
|
-
// doesn't try to hand them out later
|
|
408
|
-
indexUrl = helper.getUniqueFilename('index');
|
|
409
|
-
|
|
410
|
-
// don't call registerLink() on this one! 'index' is also a valid longname
|
|
411
|
-
globalUrl = helper.getUniqueFilename('global');
|
|
412
|
-
|
|
413
|
-
helper.registerLink('global', globalUrl);
|
|
414
|
-
|
|
415
|
-
// set up templating
|
|
416
|
-
view.layout = conf.default.layoutFile ?
|
|
417
|
-
path.getResourcePath(path.dirname(conf.default.layoutFile),
|
|
418
|
-
path.basename(conf.default.layoutFile)) :
|
|
419
|
-
'layout.tmpl';
|
|
420
|
-
|
|
421
|
-
// set up tutorials for helper
|
|
422
|
-
helper.setTutorials(tutorials);
|
|
423
|
-
|
|
424
|
-
data = helper.prune(data);
|
|
425
|
-
if (!conf.disableSort) {
|
|
426
|
-
data.sort('longname, version, since');
|
|
427
|
-
}
|
|
428
|
-
helper.addEventListeners(data);
|
|
429
|
-
|
|
430
|
-
sourceFiles = {};
|
|
431
|
-
sourceFilePaths = [];
|
|
432
|
-
|
|
433
|
-
data().each(function (doclet) {
|
|
434
|
-
doclet.attribs = '';
|
|
435
|
-
|
|
436
|
-
if (doclet.examples) {
|
|
437
|
-
doclet.examples = doclet.examples.map(function (example) {
|
|
438
|
-
var caption, code;
|
|
439
|
-
|
|
440
|
-
if (example.match(/^\s*<caption>([\s\S]+?)<\/caption>(\s*[\n\r])([\s\S]+)$/i)) {
|
|
441
|
-
caption = RegExp.$1;
|
|
442
|
-
code = RegExp.$3;
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
return {
|
|
446
|
-
caption: caption || '',
|
|
447
|
-
code: code || example
|
|
448
|
-
};
|
|
449
|
-
});
|
|
450
|
-
}
|
|
451
|
-
if (doclet.see) {
|
|
452
|
-
doclet.see.forEach(function (seeItem, i) {
|
|
453
|
-
doclet.see[i] = hashToLink(doclet, seeItem);
|
|
454
|
-
});
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
// build a list of source files
|
|
458
|
-
var sourcePath;
|
|
459
|
-
|
|
460
|
-
if (doclet.meta) {
|
|
461
|
-
sourcePath = getPathFromDoclet(doclet);
|
|
462
|
-
sourceFiles[sourcePath] = {
|
|
463
|
-
resolved: sourcePath,
|
|
464
|
-
shortened: null
|
|
465
|
-
};
|
|
466
|
-
if (sourceFilePaths.indexOf(sourcePath) === -1) {
|
|
467
|
-
sourceFilePaths.push(sourcePath);
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
});
|
|
471
|
-
|
|
472
|
-
// update outdir if necessary, then create outdir
|
|
473
|
-
var packageInfo = (find({kind: 'package'}) || [])[0];
|
|
474
|
-
|
|
475
|
-
if (packageInfo && packageInfo.name) {
|
|
476
|
-
outdir = path.join(outdir, packageInfo.name, packageInfo.version || '');
|
|
477
|
-
}
|
|
478
|
-
fs.mkPath(outdir);
|
|
479
|
-
|
|
480
|
-
// copy the template's static files to outdir
|
|
481
|
-
var fromDir = path.join(templatePath, 'static');
|
|
482
|
-
var staticFiles = fs.ls(fromDir, 3);
|
|
483
|
-
|
|
484
|
-
staticFiles.forEach(function (fileName) {
|
|
485
|
-
var toDir = fs.toDir(fileName.replace(fromDir, outdir));
|
|
486
|
-
|
|
487
|
-
fs.mkPath(toDir);
|
|
488
|
-
fs.copyFileSync(fileName, toDir);
|
|
489
|
-
});
|
|
490
|
-
|
|
491
|
-
// copy user-specified static files to outdir
|
|
492
|
-
if (conf.default.staticFiles) {
|
|
493
|
-
// The canonical property name is `include`. We accept `paths` for backwards compatibility
|
|
494
|
-
// with a bug in JSDoc 3.2.x.
|
|
495
|
-
staticFilePaths = conf.default.staticFiles.include ||
|
|
496
|
-
conf.default.staticFiles.paths ||
|
|
497
|
-
[];
|
|
498
|
-
staticFileFilter = new (require('jsdoc/src/filter')).Filter(conf.default.staticFiles);
|
|
499
|
-
staticFileScanner = new (require('jsdoc/src/scanner')).Scanner();
|
|
500
|
-
|
|
501
|
-
staticFilePaths.forEach(function (filePath) {
|
|
502
|
-
var extraStaticFiles = staticFileScanner.scan([filePath], 10, staticFileFilter);
|
|
503
|
-
|
|
504
|
-
extraStaticFiles.forEach(function (fileName) {
|
|
505
|
-
var sourcePath = fs.toDir(filePath);
|
|
506
|
-
var toDir = fs.toDir(fileName.replace(sourcePath, outdir));
|
|
507
|
-
|
|
508
|
-
fs.mkPath(toDir);
|
|
509
|
-
fs.copyFileSync(fileName, toDir);
|
|
510
|
-
});
|
|
511
|
-
});
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
if (sourceFilePaths.length) {
|
|
515
|
-
sourceFiles = shortenPaths(sourceFiles, path.commonPrefix(sourceFilePaths));
|
|
516
|
-
}
|
|
517
|
-
data().each(function (doclet) {
|
|
518
|
-
var docletPath;
|
|
519
|
-
var url = helper.createLink(doclet);
|
|
520
|
-
|
|
521
|
-
helper.registerLink(doclet.longname, url);
|
|
522
|
-
|
|
523
|
-
// add a shortened version of the full path
|
|
524
|
-
if (doclet.meta) {
|
|
525
|
-
docletPath = getPathFromDoclet(doclet);
|
|
526
|
-
docletPath = sourceFiles[docletPath].shortened;
|
|
527
|
-
if (docletPath) {
|
|
528
|
-
doclet.meta.shortpath = docletPath;
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
});
|
|
532
|
-
|
|
533
|
-
data().each(function (doclet) {
|
|
534
|
-
var url = helper.longnameToUrl[doclet.longname];
|
|
535
|
-
|
|
536
|
-
if (url.indexOf('#') > -1) {
|
|
537
|
-
doclet.id = helper.longnameToUrl[doclet.longname].split(/#/).pop();
|
|
538
|
-
} else {
|
|
539
|
-
doclet.id = doclet.name;
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
if (needsSignature(doclet)) {
|
|
543
|
-
addSignatureParams(doclet);
|
|
544
|
-
addSignatureReturns(doclet);
|
|
545
|
-
addAttribs(doclet);
|
|
546
|
-
}
|
|
547
|
-
});
|
|
548
|
-
|
|
549
|
-
// do this after the urls have all been generated
|
|
550
|
-
data().each(function (doclet) {
|
|
551
|
-
doclet.ancestors = getAncestorLinks(doclet);
|
|
552
|
-
|
|
553
|
-
if ((doclet.kind === 'member' || doclet.kind === 'event' || doclet.kind === 'typedef') && doclet.signature == null) {
|
|
554
|
-
addSignatureTypes(doclet);
|
|
555
|
-
addAttribs(doclet);
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
if (doclet.kind === 'constant') {
|
|
559
|
-
addSignatureTypes(doclet);
|
|
560
|
-
addAttribs(doclet);
|
|
561
|
-
doclet.kind = 'member';
|
|
562
|
-
}
|
|
563
|
-
});
|
|
564
|
-
|
|
565
|
-
var members = helper.getMembers(data);
|
|
566
|
-
|
|
567
|
-
members.tutorials = tutorials.children;
|
|
568
|
-
|
|
569
|
-
// output pretty-printed source files by default
|
|
570
|
-
var outputSourceFiles = conf.default && conf.default.outputSourceFiles !== false;
|
|
571
|
-
|
|
572
|
-
// add template helpers
|
|
573
|
-
view.find = find;
|
|
574
|
-
view.linkto = linkto;
|
|
575
|
-
view.resolveAuthorLinks = resolveAuthorLinks;
|
|
576
|
-
view.tutoriallink = tutoriallink;
|
|
577
|
-
view.htmlsafe = htmlsafe;
|
|
578
|
-
view.outputSourceFiles = outputSourceFiles;
|
|
579
|
-
|
|
580
|
-
// once for all
|
|
581
|
-
view.nav = buildNav(members);
|
|
582
|
-
attachModuleSymbols(find({longname: {left: 'module:'}}), members.modules);
|
|
583
|
-
|
|
584
|
-
// generate the pretty-printed source files first so other pages can link to them
|
|
585
|
-
if (outputSourceFiles) {
|
|
586
|
-
generateSourceFiles(sourceFiles, opts.encoding);
|
|
587
|
-
}
|
|
588
|
-
|
|
589
|
-
if (members.globals.length) {
|
|
590
|
-
generate('', 'Global', [{kind: 'globalobj'}], globalUrl);
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
// index page displays information from package.json and lists files
|
|
594
|
-
var files = find({kind: 'file'});
|
|
595
|
-
var packages = find({kind: 'package'});
|
|
596
|
-
|
|
597
|
-
generate('', 'Home',
|
|
598
|
-
packages.concat(
|
|
599
|
-
[{kind: 'mainpage', readme: opts.readme, longname: opts.mainpagetitle ? opts.mainpagetitle : 'Main Page'}]
|
|
600
|
-
).concat(files),
|
|
601
|
-
indexUrl);
|
|
602
|
-
|
|
603
|
-
// set up the lists that we'll use to generate pages
|
|
604
|
-
var classes = taffy(members.classes);
|
|
605
|
-
var modules = taffy(members.modules);
|
|
606
|
-
var namespaces = taffy(members.namespaces);
|
|
607
|
-
var mixins = taffy(members.mixins);
|
|
608
|
-
var externals = taffy(members.externals);
|
|
609
|
-
var interfaces = taffy(members.interfaces);
|
|
610
|
-
|
|
611
|
-
Object.keys(helper.longnameToUrl).forEach(function (longname) {
|
|
612
|
-
var myModules = helper.find(modules, {longname: longname});
|
|
613
|
-
|
|
614
|
-
if (myModules.length) {
|
|
615
|
-
generate('Module', myModules[0].name, myModules, helper.longnameToUrl[longname]);
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
var myClasses = helper.find(classes, {longname: longname});
|
|
619
|
-
|
|
620
|
-
if (myClasses.length) {
|
|
621
|
-
generate('Class', myClasses[0].name, myClasses, helper.longnameToUrl[longname]);
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
var myNamespaces = helper.find(namespaces, {longname: longname});
|
|
625
|
-
|
|
626
|
-
if (myNamespaces.length) {
|
|
627
|
-
generate('Namespace', myNamespaces[0].name, myNamespaces, helper.longnameToUrl[longname]);
|
|
628
|
-
}
|
|
629
|
-
|
|
630
|
-
var myMixins = helper.find(mixins, {longname: longname});
|
|
631
|
-
|
|
632
|
-
if (myMixins.length) {
|
|
633
|
-
generate('Mixin', myMixins[0].name, myMixins, helper.longnameToUrl[longname]);
|
|
634
|
-
}
|
|
635
|
-
|
|
636
|
-
var myExternals = helper.find(externals, {longname: longname});
|
|
637
|
-
|
|
638
|
-
if (myExternals.length) {
|
|
639
|
-
generate('External', myExternals[0].name, myExternals, helper.longnameToUrl[longname]);
|
|
640
|
-
}
|
|
641
|
-
|
|
642
|
-
var myInterfaces = helper.find(interfaces, {longname: longname});
|
|
643
|
-
|
|
644
|
-
if (myInterfaces.length) {
|
|
645
|
-
generate('Interface', myInterfaces[0].name, myInterfaces, helper.longnameToUrl[longname]);
|
|
646
|
-
}
|
|
647
|
-
});
|
|
648
|
-
|
|
649
|
-
// TODO: move the tutorial functions to templateHelper.js
|
|
650
|
-
function generateTutorial(title, tutorial, filename) {
|
|
651
|
-
var tutorialData = {
|
|
652
|
-
title: title,
|
|
653
|
-
header: tutorial.title,
|
|
654
|
-
content: tutorial.parse(),
|
|
655
|
-
children: tutorial.children
|
|
656
|
-
};
|
|
657
|
-
|
|
658
|
-
var tutorialPath = path.join(outdir, filename);
|
|
659
|
-
var html = view.render('tutorial.tmpl', tutorialData);
|
|
660
|
-
|
|
661
|
-
// yes, you can use {@link} in tutorials too!
|
|
662
|
-
html = helper.resolveLinks(html); // turn {@link foo} into <a href="foodoc.html">foo</a>
|
|
663
|
-
fs.writeFileSync(tutorialPath, html, 'utf8');
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
// tutorials can have only one parent so there is no risk for loops
|
|
667
|
-
function saveChildren(node) {
|
|
668
|
-
node.children.forEach(function (child) {
|
|
669
|
-
generateTutorial('Tutorial: ' + child.title, child, helper.tutorialToUrl(child.name));
|
|
670
|
-
saveChildren(child);
|
|
671
|
-
});
|
|
672
|
-
}
|
|
673
|
-
|
|
674
|
-
saveChildren(tutorials);
|
|
675
|
-
};
|
|
Binary file
|