mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-18 19:21:34 +08:00
generate api index page
This commit is contained in:
18
scripts/docs/processors/index-page.js
Normal file
18
scripts/docs/processors/index-page.js
Normal file
@ -0,0 +1,18 @@
|
||||
module.exports = function indexPage() {
|
||||
return {
|
||||
name: 'index-page',
|
||||
description: 'Create documentation index page',
|
||||
version: 'nightly',
|
||||
$runAfter: ['adding-extra-docs'],
|
||||
$runBefore: ['extra-docs-added'],
|
||||
$process: function(docs) {
|
||||
docs.push({
|
||||
docType: 'index-page',
|
||||
id: 'index-page',
|
||||
currentVersion: this.version,
|
||||
template: 'api_index.template.html',
|
||||
outputPath: 'index.md'
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
23
scripts/docs/processors/jekyll.js
Normal file
23
scripts/docs/processors/jekyll.js
Normal file
@ -0,0 +1,23 @@
|
||||
var log = require('winston');
|
||||
|
||||
module.exports = {
|
||||
name: 'jekyll',
|
||||
runAfter: ['api-docs'],
|
||||
runBefore: ['compute-path'],
|
||||
description: 'Create jekyll includes',
|
||||
process: function(docs, config) {
|
||||
var currentVersion = config.versionData.current.name;
|
||||
docs.push({
|
||||
template: 'api_menu.template.html',
|
||||
outputPath: '_includes/api_menu.html'
|
||||
});
|
||||
docs.push({
|
||||
template: 'api_menu_version.template.html',
|
||||
outputPath: '_includes/api_menu_' + currentVersion + '.html'
|
||||
});
|
||||
docs.push({
|
||||
template: 'api_version_select.template.html',
|
||||
outputPath: '_includes/api_version_select.html'
|
||||
});
|
||||
}
|
||||
};
|
30
scripts/docs/processors/latest-version.js
Normal file
30
scripts/docs/processors/latest-version.js
Normal file
@ -0,0 +1,30 @@
|
||||
var copy = require('cpr').cpr;
|
||||
var mkdirp = require('mkdirp');
|
||||
var path = require('canonical-path');
|
||||
var q = require('q');
|
||||
|
||||
module.exports = {
|
||||
name: 'latest-version',
|
||||
runAfter: ['write-files'],
|
||||
description: 'Copy the latest version (that was compiled to docs/) into docs/versionName',
|
||||
process: function(docs, config) {
|
||||
var versionData = config.get('versionData');
|
||||
|
||||
var docsBase = path.join(config.get('rendering.outputFolder'), 'docs');
|
||||
var versionDir = path.join(docsBase, versionData.latest.name);
|
||||
var latestDir = path.join(docsBase, 'api');
|
||||
|
||||
var deferred = q.defer();
|
||||
|
||||
mkdirp(versionDir, function() {
|
||||
copy(latestDir, path.join(versionDir, 'api'), {
|
||||
deleteFirst: true,
|
||||
overwrite: true
|
||||
}, function(err, files) {
|
||||
deferred.resolve(docs);
|
||||
});
|
||||
});
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
};
|
52
scripts/docs/processors/version-data.js
Normal file
52
scripts/docs/processors/version-data.js
Normal file
@ -0,0 +1,52 @@
|
||||
var _ = require('lodash');
|
||||
var fs = require('fs');
|
||||
var semver = require('semver');
|
||||
var path = require('canonical-path');
|
||||
|
||||
module.exports = {
|
||||
name: 'version-data',
|
||||
runBefore: ['reading-files'],
|
||||
description: 'Expose version data to templates',
|
||||
process: function(extraData, config) {
|
||||
var basePath = config.get('basePath');
|
||||
var outputFolder = config.get('rendering.outputFolder');
|
||||
var currentVersion = config.get('currentVersion');
|
||||
|
||||
var docsBaseFolder = path.resolve(basePath, outputFolder, 'docs');
|
||||
|
||||
var versions;
|
||||
try {
|
||||
versions = fs.readdirSync(docsBaseFolder)
|
||||
.filter(semver.valid)
|
||||
.sort(semver.rcompare);
|
||||
} catch(e) {
|
||||
versions = [];
|
||||
}
|
||||
|
||||
!_.contains(versions, currentVersion) && versions.unshift(currentVersion);
|
||||
!_.contains(versions, 'nightly') && versions.unshift('nightly');
|
||||
|
||||
//First semver valid version is latest
|
||||
var latestVersion = _.find(versions, semver.valid);
|
||||
versions = versions.map(function(version) {
|
||||
//Latest version is in docs root
|
||||
var folder = version == latestVersion ? '' : version;
|
||||
return {
|
||||
href: path.join('/', config.get('versionFolderBase') || '', folder),
|
||||
folder: folder,
|
||||
name: version
|
||||
};
|
||||
});
|
||||
|
||||
var versionData = {
|
||||
list: versions,
|
||||
current: _.find(versions, { name: currentVersion }),
|
||||
latest: _.find(versions, {name: latestVersion}) || _.first(versions)
|
||||
};
|
||||
|
||||
config.set('rendering.contentsFolder',
|
||||
path.join(config.get('versionFolderBase') || '', versionData.current.folder || ''));
|
||||
config.set('versionData', versionData);
|
||||
extraData.version = versionData;
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user