mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
120 lines
3.3 KiB
JavaScript
120 lines
3.3 KiB
JavaScript
var path = require('canonical-path');
|
|
var log = require('winston');
|
|
var _ = require('lodash');
|
|
|
|
var currentVersion;
|
|
var contentsFolder;
|
|
module.exports = {
|
|
name: 'demos',
|
|
runAfter: ['api-docs'],
|
|
runBefore: ['index-page'],
|
|
description: 'Create demos',
|
|
init: function(config) {
|
|
currentVersion = config.get('currentVersion');
|
|
contentsFolder = config.get('rendering.contentsFolder');
|
|
},
|
|
process: function(docs, config, extraData) {
|
|
var demoTags = [
|
|
'javascript',
|
|
'html',
|
|
'css',
|
|
'spec',
|
|
'scenario'
|
|
];
|
|
var extensions = {
|
|
javascript: 'js',
|
|
html: 'html',
|
|
css: 'css',
|
|
spec: 'js',
|
|
scenario: 'js'
|
|
};
|
|
|
|
var demoFolder = path.join(config.get('versionData.current.folder'),
|
|
'${docType}/${name}');
|
|
var demoPath = '${name}/${filename}.${extension}';
|
|
var templatePath = 'demo/${filename}.template.${extension}';
|
|
|
|
var allDemos = [];
|
|
_(docs)
|
|
.filter(function(doc) { return doc.demos; })
|
|
.forEach(function(doc) {
|
|
var outputFolder = _.template(demoFolder,doc);
|
|
|
|
doc.demos.forEach(function(demo) {
|
|
var demoData = {};
|
|
allDemos.push(demoData);
|
|
|
|
var outputFolder = _.template(demoFolder, doc);
|
|
demoData.module = demo.module;
|
|
demoData.name = demo.name;
|
|
demoData.docName = doc.name;
|
|
demoData.href = '/' + outputFolder + '/' + demo.name;
|
|
|
|
demoTags.forEach(function(tagName) {
|
|
var data = demo.tags.tagsByName[tagName];
|
|
|
|
if (data && data.length) {
|
|
var content = data.map(function(d) {
|
|
return d.description;
|
|
}).join('\n');
|
|
var filename = tagName;
|
|
var ext = extensions[tagName];
|
|
var outputPath = outputFolder + '/' + _.template(demoPath, {
|
|
name: demo.name,
|
|
filename: filename,
|
|
extension: ext
|
|
});
|
|
var template = _.template(templatePath, {
|
|
filename: filename,
|
|
extension: ext
|
|
});
|
|
|
|
demoData[tagName] = {
|
|
path: outputPath,
|
|
content: content
|
|
};
|
|
|
|
//Write all the files for this demo (html, css, js)
|
|
docs.push({
|
|
docType: 'demo',
|
|
id: doc.name + '/' + demo.name,
|
|
outputPath: config.get('demos.outputFolder') + '/' + outputPath,
|
|
template: template,
|
|
contents: content
|
|
});
|
|
}
|
|
|
|
});
|
|
var outputPath = outputFolder + '/' + _.template(demoPath, {
|
|
name: demo.name,
|
|
filename: 'index',
|
|
extension: 'html'
|
|
});
|
|
|
|
//Write this specific demo's index page
|
|
docs.push({
|
|
docType: 'demo',
|
|
outputPath: path.join(config.get('demos.outputFolder'), outputPath),
|
|
template: 'demo_index.template.html',
|
|
demoData: demoData,
|
|
name: doc.name
|
|
});
|
|
});
|
|
})
|
|
.value();
|
|
|
|
//Write the demo page for this whole version (eg at /nightly)
|
|
docs.push({
|
|
docType: 'demo',
|
|
template: 'demo_index.template.html',
|
|
outputPath: path.join(
|
|
config.get('demos.outputFolder'),
|
|
config.get('versionData.current.folder'),
|
|
'index.html'
|
|
)
|
|
});
|
|
|
|
extraData.demos = allDemos;
|
|
}
|
|
};
|