mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
chore(demos): start ionic-demo page
This commit is contained in:
119
docs/processors/demos.js
Normal file
119
docs/processors/demos.js
Normal file
@@ -0,0 +1,119 @@
|
||||
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;
|
||||
}
|
||||
};
|
||||
@@ -1,56 +0,0 @@
|
||||
var _ = require('lodash');
|
||||
var fs = require('fs');
|
||||
var path = require('canonical-path');
|
||||
var log = require('winston');
|
||||
|
||||
var outputFolder;
|
||||
var processorConfig;
|
||||
var currentVersion;
|
||||
|
||||
module.exports = {
|
||||
name: 'pages-data',
|
||||
description: 'This plugin will create a new doc that will be rendered as an angularjs module ' +
|
||||
'which will contain meta information about the pages and navigation',
|
||||
runAfter: ['adding-extra-docs', 'component-groups-generate'],
|
||||
runBefore: ['extra-docs-added'],
|
||||
init: function(config) {
|
||||
outputFolder = config.rendering.outputFolder;
|
||||
processorConfig = config.get('processing.pages-data', {});
|
||||
currentVersion = config.get('currentVersion');
|
||||
},
|
||||
process: function(docs, config) {
|
||||
// Generate an object collection of pages that is grouped by section e.g.
|
||||
// - section "directive"
|
||||
// - group "Tab Bar"
|
||||
// - ion-tabs
|
||||
// - ion-tab
|
||||
// - group ""
|
||||
// - ion-toggle
|
||||
// - ion-checkbox
|
||||
// - ...
|
||||
//
|
||||
var sections = _(docs)
|
||||
.filter(function(doc) { return doc.area === 'api'; })
|
||||
.filter(function(doc) { return doc.module === 'ionic'; })
|
||||
.filter(function(doc) { return doc.docType !== 'componentGroup'; })
|
||||
.groupBy('docType')
|
||||
.map(function(pages, docType) {
|
||||
return {
|
||||
name: docType,
|
||||
components: pages.map(function(page) {
|
||||
return {
|
||||
href: page.path,
|
||||
name: page.name,
|
||||
docType: page.docType,
|
||||
type: page.docType
|
||||
};
|
||||
})
|
||||
};
|
||||
})
|
||||
.sortBy(function(section) {
|
||||
//Directives always first
|
||||
return section.name != 'directive';
|
||||
})
|
||||
.value();
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user