chore: remove unused docs/dgeni tasks and packages
This stuff now lives in angular.io repo. Related to #4477 Closes #4552
This commit is contained in:
parent
5040a8e0df
commit
75187d605b
|
@ -1,76 +0,0 @@
|
||||||
var path = require('canonical-path');
|
|
||||||
var Package = require('dgeni').Package;
|
|
||||||
var basePackage = require('../public-docs-package');
|
|
||||||
|
|
||||||
var PARTIAL_PATH = 'partials';
|
|
||||||
var MODULES_DOCS_PATH = PARTIAL_PATH + '/api';
|
|
||||||
|
|
||||||
module.exports = new Package('angular.io', [basePackage])
|
|
||||||
|
|
||||||
.factory(require('./services/renderMarkdown'))
|
|
||||||
.processor(require('./processors/addJadeDataDocsProcessor'))
|
|
||||||
.processor(require('./processors/filterUnwantedDecorators'))
|
|
||||||
|
|
||||||
// Configure rendering
|
|
||||||
.config(function(templateFinder, templateEngine) {
|
|
||||||
|
|
||||||
templateFinder.templateFolders
|
|
||||||
.unshift(path.resolve(__dirname, 'templates'));
|
|
||||||
})
|
|
||||||
|
|
||||||
.config(function(writeFilesProcessor) {
|
|
||||||
writeFilesProcessor.outputFolder = 'dist/angular.io';
|
|
||||||
})
|
|
||||||
|
|
||||||
.config(function(readFilesProcessor, generateNavigationDoc, createOverviewDump) {
|
|
||||||
// Clear out unwanted processors
|
|
||||||
readFilesProcessor.$enabled = false;
|
|
||||||
generateNavigationDoc.$enabled = false;
|
|
||||||
createOverviewDump.$enabled = false;
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
.config(function(filterUnwantedDecorators, log) {
|
|
||||||
log.level = 'info';
|
|
||||||
filterUnwantedDecorators.decoratorsToIgnore = [
|
|
||||||
'CONST',
|
|
||||||
'IMPLEMENTS',
|
|
||||||
'ABSTRACT'
|
|
||||||
];
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
.config(function(computeIdsProcessor, computePathsProcessor, EXPORT_DOC_TYPES) {
|
|
||||||
|
|
||||||
computePathsProcessor.pathTemplates.push({
|
|
||||||
docTypes: ['module'],
|
|
||||||
pathTemplate: '${id}/',
|
|
||||||
outputPathTemplate: MODULES_DOCS_PATH + '/${id}/index.jade'
|
|
||||||
});
|
|
||||||
|
|
||||||
computePathsProcessor.pathTemplates.push({
|
|
||||||
docTypes: EXPORT_DOC_TYPES,
|
|
||||||
pathTemplate: '${moduleDoc.id}/${name}-${docType}.html',
|
|
||||||
outputPathTemplate: MODULES_DOCS_PATH + '/${moduleDoc.id}/${name}-${docType}.jade',
|
|
||||||
});
|
|
||||||
|
|
||||||
computePathsProcessor.pathTemplates.push({
|
|
||||||
docTypes: ['jade-data'],
|
|
||||||
pathTemplate: '${originalDoc.id}/_data',
|
|
||||||
outputPathTemplate: MODULES_DOCS_PATH + '/${path}.json'
|
|
||||||
});
|
|
||||||
})
|
|
||||||
|
|
||||||
.config(function(getLinkInfo) {
|
|
||||||
getLinkInfo.relativeLinks = true;
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
.config(function(templateEngine, getInjectables) {
|
|
||||||
templateEngine.filters = templateEngine.filters.concat(getInjectables([
|
|
||||||
require('./rendering/trimBlankLines'),
|
|
||||||
require('./rendering/toId')
|
|
||||||
]));
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
var Package = require('dgeni').Package;
|
|
||||||
|
|
||||||
module.exports = function mockPackage() {
|
|
||||||
|
|
||||||
return new Package('mockPackage', [require('../')])
|
|
||||||
|
|
||||||
.factory('log', function() { return require('dgeni/lib/mocks/log')(false); })
|
|
||||||
};
|
|
|
@ -1,86 +0,0 @@
|
||||||
var _ = require('lodash');
|
|
||||||
var path = require('canonical-path');
|
|
||||||
|
|
||||||
var titleCase = function(text) {
|
|
||||||
return text.replace(/(.)(.*)/, function(_, first, rest) {
|
|
||||||
return first.toUpperCase() + rest;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Create _data.json file for Harp pages
|
|
||||||
*
|
|
||||||
* http://harpjs.com/docs/development/metadata
|
|
||||||
*
|
|
||||||
* This method creates the meta data required for each page
|
|
||||||
* such as the title, description, etc. This meta data is used
|
|
||||||
* in the harp static site generator to create the title for headers
|
|
||||||
* and the navigation used in the API docs
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
module.exports = function addJadeDataDocsProcessor() {
|
|
||||||
return {
|
|
||||||
$runAfter: ['adding-extra-docs'],
|
|
||||||
$runBefore: ['extra-docs-added'],
|
|
||||||
$process: function(docs) {
|
|
||||||
var extraDocs = [];
|
|
||||||
var modules = [];
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Create Data for Modules
|
|
||||||
*
|
|
||||||
* Modules must be public and have content
|
|
||||||
*/
|
|
||||||
|
|
||||||
_.forEach(docs, function(doc) {
|
|
||||||
if (doc.docType === 'module' && !doc.private && doc.exports.length) {
|
|
||||||
modules.push(doc);
|
|
||||||
|
|
||||||
// GET DATA FOR INDEX PAGE OF MODULE SECTION
|
|
||||||
var indexPageInfo = [{
|
|
||||||
name: 'index',
|
|
||||||
title: _.map(path.basename(doc.fileInfo.baseName).split('_'), function(part) {
|
|
||||||
return titleCase(part);
|
|
||||||
}).join(' '),
|
|
||||||
intro: doc.description.replace('"', '\"').replace(/\s*(\r?\n|\r)\s*/g," "),
|
|
||||||
docType: 'module'
|
|
||||||
}];
|
|
||||||
|
|
||||||
// GET DATA FOR EACH PAGE (CLASS, VARS, FUNCTIONS)
|
|
||||||
var modulePageInfo = _(doc.exports)
|
|
||||||
.map(function(exportDoc) {
|
|
||||||
var dataDoc = {
|
|
||||||
name: exportDoc.name + '-' + exportDoc.docType,
|
|
||||||
title: exportDoc.name,
|
|
||||||
docType: exportDoc.docType
|
|
||||||
};
|
|
||||||
if (exportDoc.symbolTypeName) dataDoc.varType = titleCase(exportDoc.symbolTypeName);
|
|
||||||
if (exportDoc.originalModule) dataDoc.originalModule = exportDoc.originalModule;
|
|
||||||
return dataDoc;
|
|
||||||
})
|
|
||||||
.sortBy('name')
|
|
||||||
.value();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//COMBINE PAGE DATA
|
|
||||||
var allPageData = indexPageInfo.concat(modulePageInfo);
|
|
||||||
|
|
||||||
// PUSH DATA TO EXTRA DOCS ARRAY
|
|
||||||
extraDocs.push({
|
|
||||||
id: doc.id + "-data",
|
|
||||||
aliases: [doc.id + "-data"],
|
|
||||||
docType: 'jade-data',
|
|
||||||
originalDoc: doc,
|
|
||||||
data: allPageData
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
return docs.concat(extraDocs);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -1,66 +0,0 @@
|
||||||
var mockPackage = require('../mocks/mockPackage');
|
|
||||||
var Dgeni = require('dgeni');
|
|
||||||
|
|
||||||
describe('addJadeDataDocsProcessor', function() {
|
|
||||||
var dgeni, injector, processor;
|
|
||||||
|
|
||||||
beforeEach(function() {
|
|
||||||
dgeni = new Dgeni([mockPackage()]);
|
|
||||||
injector = dgeni.configureInjector();
|
|
||||||
processor = injector.get('addJadeDataDocsProcessor');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should add a doc for each module', function() {
|
|
||||||
var docs = [
|
|
||||||
{
|
|
||||||
docType: 'module',
|
|
||||||
id: 'someModule',
|
|
||||||
exports: [
|
|
||||||
{ name: 'someObj', docType: 'var', symbolTypeName: 'MyClass', originalModule: 'some/private/module' }
|
|
||||||
],
|
|
||||||
fileInfo: { baseName: 'x_y' },
|
|
||||||
description: 'some description\nsecond line'
|
|
||||||
}
|
|
||||||
];
|
|
||||||
docs = processor.$process(docs);
|
|
||||||
|
|
||||||
expect(docs[1]).toEqual({
|
|
||||||
id : 'someModule-data',
|
|
||||||
aliases : [ 'someModule-data' ],
|
|
||||||
docType : 'jade-data',
|
|
||||||
originalDoc : docs[0],
|
|
||||||
data : [
|
|
||||||
{ name : 'index', title : 'X Y', intro : 'some description second line', docType : 'module' },
|
|
||||||
{ name : 'someObj-var', title : 'someObj', varType : 'MyClass', docType: 'var', originalModule: 'some/private/module' }
|
|
||||||
] });
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should sort the exports into alphabetical order', function() {
|
|
||||||
var docs = [
|
|
||||||
{
|
|
||||||
docType: 'module',
|
|
||||||
id: 'someModule',
|
|
||||||
exports: [
|
|
||||||
{ name: 'Beta', docType: 'class'},
|
|
||||||
{ name: 'Alpha', docType: 'class'},
|
|
||||||
{ name: 'Gamma', docType: 'class'},
|
|
||||||
{ name: 'Nu', docType: 'class'},
|
|
||||||
{ name: 'Mu', docType: 'class'}
|
|
||||||
],
|
|
||||||
fileInfo: { baseName: 'x_y' },
|
|
||||||
description: 'some description\nsecond line'
|
|
||||||
}
|
|
||||||
];
|
|
||||||
docs = processor.$process(docs);
|
|
||||||
|
|
||||||
expect(docs[1].data).toEqual([
|
|
||||||
{ name : 'index', title : 'X Y', intro : 'some description second line', docType : 'module' },
|
|
||||||
{ name: 'Alpha-class', title: 'Alpha', docType: 'class' },
|
|
||||||
{ name: 'Beta-class', title: 'Beta', docType: 'class' },
|
|
||||||
{ name: 'Gamma-class', title: 'Gamma', docType: 'class' },
|
|
||||||
{ name: 'Mu-class', title: 'Mu', docType: 'class' },
|
|
||||||
{ name: 'Nu-class', title: 'Nu', docType: 'class' }
|
|
||||||
]);
|
|
||||||
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,20 +0,0 @@
|
||||||
var _ = require('lodash');
|
|
||||||
|
|
||||||
module.exports = function filterUnwantedDecorators() {
|
|
||||||
return {
|
|
||||||
decoratorsToIgnore: [],
|
|
||||||
$runAfter: ['processing-docs'],
|
|
||||||
$runBefore: ['docs-processed'],
|
|
||||||
$process: function(docs) {
|
|
||||||
var decoratorsToIgnore = this.decoratorsToIgnore || [];
|
|
||||||
_.forEach(docs, function(doc) {
|
|
||||||
if (doc.decorators) {
|
|
||||||
doc.decorators = _.filter(doc.decorators, function(decorator) {
|
|
||||||
return decoratorsToIgnore.indexOf(decorator.name) === -1;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return docs;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,46 +0,0 @@
|
||||||
var mockPackage = require('../mocks/mockPackage');
|
|
||||||
var Dgeni = require('dgeni');
|
|
||||||
|
|
||||||
describe('filterUnwantedDecorators', function() {
|
|
||||||
var dgeni, injector, processor;
|
|
||||||
|
|
||||||
beforeEach(function() {
|
|
||||||
dgeni = new Dgeni([mockPackage()]);
|
|
||||||
injector = dgeni.configureInjector();
|
|
||||||
processor = injector.get('filterUnwantedDecorators');
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
it('should remove decorators specified by name', function() {
|
|
||||||
var docs = [
|
|
||||||
{ id: 'doc1', decorators: [ { name: 'A' }, { name: 'B' } ] },
|
|
||||||
{ id: 'doc2', decorators: [ { name: 'B' }, { name: 'C' } ] },
|
|
||||||
{ id: 'doc3', decorators: [ { name: 'A' }, { name: 'C' } ] }
|
|
||||||
];
|
|
||||||
processor.decoratorsToIgnore = ['D', 'B'];
|
|
||||||
docs = processor.$process(docs);
|
|
||||||
|
|
||||||
expect(docs).toEqual([
|
|
||||||
{ id: 'doc1', decorators: [ { name: 'A' } ] },
|
|
||||||
{ id: 'doc2', decorators: [ { name: 'C' } ] },
|
|
||||||
{ id: 'doc3', decorators: [ { name: 'A' }, { name: 'C' } ] }
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
it('should ignore docs that have no decorators', function() {
|
|
||||||
var docs = [
|
|
||||||
{ id: 'doc1', decorators: [ { name: 'A' }, { name: 'B' } ] },
|
|
||||||
{ id: 'doc2' },
|
|
||||||
{ id: 'doc3', decorators: [ { name: 'A' }, { name: 'C' } ] }
|
|
||||||
];
|
|
||||||
processor.decoratorsToIgnore = ['D', 'B'];
|
|
||||||
docs = processor.$process(docs);
|
|
||||||
|
|
||||||
expect(docs).toEqual([
|
|
||||||
{ id: 'doc1', decorators: [ { name: 'A' } ] },
|
|
||||||
{ id: 'doc2' },
|
|
||||||
{ id: 'doc3', decorators: [ { name: 'A' }, { name: 'C' } ] }
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,8 +0,0 @@
|
||||||
module.exports = function() {
|
|
||||||
return {
|
|
||||||
name: 'toId',
|
|
||||||
process: function(str) {
|
|
||||||
return str.replace(/[^(a-z)(A-Z)(0-9)._-]/, '-');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -1,12 +0,0 @@
|
||||||
module.exports = function() {
|
|
||||||
return {
|
|
||||||
name: 'trimBlankLines',
|
|
||||||
process: function(str) {
|
|
||||||
var lines = str.split(/\r?\n/);
|
|
||||||
while(lines.length && (lines[0].trim() === '')) {
|
|
||||||
lines.shift();
|
|
||||||
}
|
|
||||||
return lines.join('\n');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -1,18 +0,0 @@
|
||||||
var factory = require('./trimBlankLines');
|
|
||||||
|
|
||||||
describe('trimBlankLines filter', function() {
|
|
||||||
var filter;
|
|
||||||
|
|
||||||
beforeEach(function() {
|
|
||||||
filter = factory();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should be called "trimBlankLines"', function() {
|
|
||||||
expect(filter.name).toEqual('trimBlankLines');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should remove all empty lines from the start of the string', function() {
|
|
||||||
expect(filter.process('\n\n\nsome text\n\nmore text\n\n'))
|
|
||||||
.toEqual('some text\n\nmore text\n\n');
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,54 +0,0 @@
|
||||||
var marked = require('marked');
|
|
||||||
var Encoder = require('node-html-encoder').Encoder;
|
|
||||||
var html2jade = require('html2jade');
|
|
||||||
var indentString = require('indent-string');
|
|
||||||
|
|
||||||
|
|
||||||
function stripTags(s) { //from sugar.js
|
|
||||||
return s.replace(RegExp('<\/?[^<>]*>', 'gi'), '');
|
|
||||||
}
|
|
||||||
|
|
||||||
// entity type encoder
|
|
||||||
var encoder = new Encoder('entity');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dgService renderMarkdown
|
|
||||||
* @description
|
|
||||||
* Render the markdown in the given string as HTML.
|
|
||||||
*/
|
|
||||||
module.exports = function renderMarkdown(trimIndentation) {
|
|
||||||
|
|
||||||
var renderer = new marked.Renderer();
|
|
||||||
|
|
||||||
renderer.code = function(code, lang, escaped) {
|
|
||||||
|
|
||||||
var cssClasses = ['prettyprint', 'linenums'];
|
|
||||||
var trimmedCode = trimIndentation(code);
|
|
||||||
|
|
||||||
if(lang) {
|
|
||||||
if(lang=='html') {
|
|
||||||
trimmedCode = encoder.htmlEncode(trimmedCode);
|
|
||||||
}
|
|
||||||
cssClasses.push(this.options.langPrefix + escape(lang, true));
|
|
||||||
}
|
|
||||||
|
|
||||||
return 'pre(class="' + cssClasses.join(' ') + '")\n' + indentString('code.\n', ' ', 2) + trimmedCode;
|
|
||||||
};
|
|
||||||
|
|
||||||
renderer.heading = function (text, level, raw) {
|
|
||||||
var headingText = marked.Renderer.prototype.heading.call(renderer, text, level, raw);
|
|
||||||
var title = 'h2 ' + stripTags(headingText);
|
|
||||||
|
|
||||||
if (level==2) {
|
|
||||||
title = '.l-main-section\n' + indentString(title, ' ', 2) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
return title;
|
|
||||||
};
|
|
||||||
|
|
||||||
return function(content) {
|
|
||||||
return marked(content, { renderer: renderer });
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -1,62 +0,0 @@
|
||||||
{% include "lib/githubLinks.html" -%}
|
|
||||||
{% include "lib/paramList.html" -%}
|
|
||||||
{% extends 'layout/base.template.html' -%}
|
|
||||||
|
|
||||||
{% block body %}
|
|
||||||
p.location-badge.
|
|
||||||
exported from {@link {$ doc.moduleDoc.id $} {$doc.moduleDoc.id $} }
|
|
||||||
defined in {$ githubViewLink(doc) $}
|
|
||||||
|
|
||||||
:markdown
|
|
||||||
{$ doc.description | indent(2, true) | trimBlankLines $}
|
|
||||||
|
|
||||||
{%- if doc.decorators %}
|
|
||||||
.l-main-section
|
|
||||||
h2 Annotations
|
|
||||||
{%- for decorator in doc.decorators %}
|
|
||||||
.l-sub-section
|
|
||||||
h3.annotation {$ decorator.name $}
|
|
||||||
pre.prettyprint
|
|
||||||
code.
|
|
||||||
@{$ decorator.name $}{$ paramList(decorator.arguments) | indent(8, false) $}
|
|
||||||
{% endfor %}
|
|
||||||
{% endif -%}
|
|
||||||
|
|
||||||
|
|
||||||
{%- if doc.constructorDoc or doc.members.length -%}
|
|
||||||
.l-main-section
|
|
||||||
h2 Members
|
|
||||||
|
|
||||||
{%- if doc.constructorDoc %}
|
|
||||||
.l-sub-section
|
|
||||||
h3#{$ doc.constructorDoc.name | toId $} {$ doc.constructorDoc.name $}
|
|
||||||
|
|
||||||
{% if doc.constructorDoc.parameters %}
|
|
||||||
pre.prettyprint
|
|
||||||
code.
|
|
||||||
{$ doc.constructorDoc.name $}{$ paramList(doc.constructorDoc.parameters) | indent(8, false) | trim $}
|
|
||||||
{% endif %}
|
|
||||||
:markdown
|
|
||||||
{$ doc.constructorDoc.description | indent(6, true) | replace('## Example', '') | replace('# Example', '') | trimBlankLines $}
|
|
||||||
|
|
||||||
|
|
||||||
{% endif -%}
|
|
||||||
|
|
||||||
{%- for member in doc.members %}{% if not member.private %}
|
|
||||||
.l-sub-section
|
|
||||||
h3#{$ member.name | toId $} {$ member.name $}{% if member.optional %}?{% endif %}
|
|
||||||
|
|
||||||
{% if member.parameters %}
|
|
||||||
pre.prettyprint
|
|
||||||
code.
|
|
||||||
{$ member.name $}{$ paramList(member.parameters) | indent(8, false) | trim $}{$ returnType(doc.returnType) $}
|
|
||||||
{% endif %}
|
|
||||||
:markdown
|
|
||||||
{$ member.description | indent(6, true) | replace('## Example', '') | replace('# Example', '') | trimBlankLines $}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% endif %}{% endfor %}
|
|
||||||
{%- endif -%}
|
|
||||||
|
|
||||||
{% endblock %}
|
|
|
@ -1 +0,0 @@
|
||||||
{% extends 'class.template.html' -%}
|
|
|
@ -1,22 +0,0 @@
|
||||||
{% include "lib/githubLinks.html" -%}
|
|
||||||
{% include "lib/paramList.html" -%}
|
|
||||||
{% extends 'layout/base.template.html' -%}
|
|
||||||
|
|
||||||
{% block body %}
|
|
||||||
.l-main-section
|
|
||||||
h2(class="function export") {$ doc.name $}
|
|
||||||
|
|
||||||
{% if doc.parameters %}
|
|
||||||
pre.prettyprint
|
|
||||||
code.
|
|
||||||
{$ doc.name $}{$ paramList(doc.parameters) | indent(4, true) | trim $}{$ returnType(doc.returnType) $}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
p.location-badge.
|
|
||||||
exported from {@link {$ doc.moduleDoc.id $} {$doc.moduleDoc.id $} }
|
|
||||||
defined in {$ githubViewLink(doc) $}
|
|
||||||
|
|
||||||
:markdown
|
|
||||||
{$ doc.description | indent(4, true) | trimBlankLines $}
|
|
||||||
|
|
||||||
{% endblock %}
|
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
{%- for item in doc.data %}
|
|
||||||
"{$ item.name $}" : {
|
|
||||||
"title" : "{$ item.title $}",
|
|
||||||
{%- if item.intro %}
|
|
||||||
"intro" : "{$ item.intro $}",
|
|
||||||
{%- endif %}
|
|
||||||
{%- if item.varType %}
|
|
||||||
"varType" : "{$ item.varType $}",
|
|
||||||
{%- endif %}
|
|
||||||
{%- if item.originalModule %}
|
|
||||||
"originalModule" : "{$ item.originalModule $}",
|
|
||||||
{%- endif %}
|
|
||||||
"docType": "{$ item.docType $}"
|
|
||||||
}{% if not loop.last %},{% endif %}
|
|
||||||
{% endfor -%}
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
{% block body %}{% endblock %}
|
|
|
@ -1,12 +0,0 @@
|
||||||
{% macro paramList(params) -%}
|
|
||||||
{%- if params -%}
|
|
||||||
({%- for param in params -%}
|
|
||||||
{$ param | escape $}{% if not loop.last %}, {% endif %}
|
|
||||||
{%- endfor %})
|
|
||||||
{%- endif %}
|
|
||||||
{%- endmacro -%}
|
|
||||||
|
|
||||||
|
|
||||||
{% macro returnType(returnType) -%}
|
|
||||||
{%- if returnType %} : {$ returnType | escape $}{% endif -%}
|
|
||||||
{%- endmacro -%}
|
|
|
@ -1,15 +0,0 @@
|
||||||
{% include "lib/githubLinks.html" -%}
|
|
||||||
{% extends 'layout/base.template.html' -%}
|
|
||||||
{% block body -%}
|
|
||||||
p.location-badge.
|
|
||||||
defined in {$ githubViewLink(doc) $}
|
|
||||||
|
|
||||||
ul
|
|
||||||
for page, slug in public.docs[current.path[1]][current.path[2]][current.path[3]][current.path[4]]._data
|
|
||||||
if slug != 'index'
|
|
||||||
- var url = "/docs/" + current.path[1] + "/" + current.path[2] + "/" + current.path[3] + "/" + current.path[4] + "/" + slug + ".html"
|
|
||||||
|
|
||||||
li.c8
|
|
||||||
!= partial("../../../../../_includes/_hover-card", {name: page.title, url: url })
|
|
||||||
|
|
||||||
{% endblock %}
|
|
|
@ -1,12 +0,0 @@
|
||||||
{% include "lib/githubLinks.html" -%}
|
|
||||||
{% extends 'layout/base.template.html' %}
|
|
||||||
|
|
||||||
{% block body %}
|
|
||||||
.l-main-section
|
|
||||||
p.location-badge.
|
|
||||||
exported from {@link {$ doc.moduleDoc.id $} {$doc.moduleDoc.id $} }
|
|
||||||
defined in {$ githubViewLink(doc) $}
|
|
||||||
|
|
||||||
:markdown
|
|
||||||
{$ doc.description | indent(4, true) | trimBlankLines $}
|
|
||||||
{% endblock %}
|
|
|
@ -1,379 +0,0 @@
|
||||||
|
|
||||||
.hide { display: none !important; }
|
|
||||||
|
|
||||||
body {
|
|
||||||
overflow: hidden;
|
|
||||||
max-width: 100%;
|
|
||||||
max-height: 100%;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: #3f51b5;
|
|
||||||
}
|
|
||||||
|
|
||||||
table {
|
|
||||||
margin-bottom: 20px;
|
|
||||||
max-width: 100%;
|
|
||||||
width: 100%;
|
|
||||||
border-spacing: 0;
|
|
||||||
border-collapse: collapse;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
td,
|
|
||||||
th {
|
|
||||||
padding: $baseline-grid ($baseline-grid * 2);
|
|
||||||
border-top: 1px solid #ddd;
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
|
|
||||||
th {
|
|
||||||
border-bottom: 2px solid #ddd;
|
|
||||||
vertical-align: bottom;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
white-space: pre;
|
|
||||||
white-space: pre-wrap;
|
|
||||||
word-wrap: break-word;
|
|
||||||
}
|
|
||||||
|
|
||||||
.md-sidenav-inner {
|
|
||||||
background: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layout-content,
|
|
||||||
.doc-content {
|
|
||||||
max-width: 864px;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
.layout-label {
|
|
||||||
width: 120px;
|
|
||||||
}
|
|
||||||
.layout-content code.highlight {
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu-item {
|
|
||||||
background: none;
|
|
||||||
border-width: 0;
|
|
||||||
cursor: pointer;
|
|
||||||
display: block;
|
|
||||||
color: #333;
|
|
||||||
font-size: inherit;
|
|
||||||
line-height: 40px;
|
|
||||||
max-height: 40px;
|
|
||||||
opacity: 1;
|
|
||||||
margin: 0;
|
|
||||||
outline: none;
|
|
||||||
padding: 0px 28px;
|
|
||||||
position: relative;
|
|
||||||
text-align: left;
|
|
||||||
text-decoration: none;
|
|
||||||
width: 100%;
|
|
||||||
z-index: 1;
|
|
||||||
-webkit-transition: 0.45s cubic-bezier(0.35, 0, 0.25, 1);
|
|
||||||
-webkit-transition-property: max-height, background-color, opacity;
|
|
||||||
-moz-transition: 0.45s cubic-bezier(0.35, 0, 0.25, 1);
|
|
||||||
-moz-transition-property: max-height, background-color, opacity;
|
|
||||||
transition: 0.45s cubic-bezier(0.35, 0, 0.25, 1);
|
|
||||||
transition-property: max-height, background-color, opacity;
|
|
||||||
}
|
|
||||||
.menu-item.ng-hide {
|
|
||||||
max-height: 0;
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
.menu-item:hover {
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
.menu-item:focus {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.menu-item.menu-title {
|
|
||||||
color: #888;
|
|
||||||
font-size: 14px;
|
|
||||||
padding-left: 16px;
|
|
||||||
text-align: left;
|
|
||||||
text-transform: uppercase;
|
|
||||||
transition: color 0.35s cubic-bezier(0.35, 0, 0.25, 1);
|
|
||||||
}
|
|
||||||
.menu-item.menu-title:hover,
|
|
||||||
.menu-item.menu-title.active {
|
|
||||||
color: #1976d2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu-icon {
|
|
||||||
background: none;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
.app-toolbar .md-toolbar-tools h3 {
|
|
||||||
-webkit-margin-before: 0;
|
|
||||||
-webkit-margin-after: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.demo-container {
|
|
||||||
border-radius: 4px;
|
|
||||||
margin-top: 16px;
|
|
||||||
-webkit-transition: 0.02s padding cubic-bezier(0.35, 0, 0.25, 1);
|
|
||||||
transition: 0.02s padding cubic-bezier(0.35, 0, 0.25, 1);
|
|
||||||
position: relative;
|
|
||||||
padding-bottom: 0;
|
|
||||||
}
|
|
||||||
.demo-source-tabs {
|
|
||||||
z-index: 1;
|
|
||||||
-webkit-transition: all 0.45s cubic-bezier(0.35, 0, 0.25, 1);
|
|
||||||
transition: all 0.45s cubic-bezier(0.35, 0, 0.25, 1);
|
|
||||||
max-height: 448px;
|
|
||||||
min-height: 448px;
|
|
||||||
background: #fff;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
md-tabs.demo-source-tabs md-tab,
|
|
||||||
md-tabs.demo-source-tabs .md-header {
|
|
||||||
background-color: #444444 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
md-tabs.demo-source-tabs md-tab-label {
|
|
||||||
color: #ccc !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
md-tabs.demo-source-tabs .active md-tab-label {
|
|
||||||
color: #fff !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.demo-source-tabs.ng-hide {
|
|
||||||
max-height: 0px;
|
|
||||||
min-height: 0px;
|
|
||||||
}
|
|
||||||
.demo-source-tabs {
|
|
||||||
position: relative;
|
|
||||||
width: 100%;
|
|
||||||
z-index: 0;
|
|
||||||
}
|
|
||||||
.demo-content {
|
|
||||||
position: relative;
|
|
||||||
overflow:hidden;
|
|
||||||
min-height: 448px;
|
|
||||||
display: -webkit-box;
|
|
||||||
display: -webkit-flex;
|
|
||||||
display: -moz-box;
|
|
||||||
display: -moz-flex;
|
|
||||||
display: -ms-flexbox;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
.small-demo .demo-source-tabs:not(.ng-hide) {
|
|
||||||
min-height: 224px;
|
|
||||||
max-height: 224px;
|
|
||||||
}
|
|
||||||
.small-demo .demo-content {
|
|
||||||
min-height: 128px;
|
|
||||||
}
|
|
||||||
.demo-content > * {
|
|
||||||
-webkit-box-flex: 1;
|
|
||||||
-webkit-flex: 1;
|
|
||||||
-moz-box-flex: 1;
|
|
||||||
-moz-flex: 1;
|
|
||||||
-ms-flex: 1;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.demo-content > div[layout-fill] {
|
|
||||||
min-height: 448px;
|
|
||||||
}
|
|
||||||
.small-demo .demo-content > div[layout-fill] {
|
|
||||||
min-height: 224px;
|
|
||||||
}
|
|
||||||
.small-demo .demo-toolbar,
|
|
||||||
.small-demo .md-toolbar-tools {
|
|
||||||
min-height: 48px;
|
|
||||||
max-height: 48px;
|
|
||||||
font-size: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.show-source md-toolbar.demo-toolbar {
|
|
||||||
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.36);
|
|
||||||
}
|
|
||||||
.demo-toolbar .md-button {
|
|
||||||
color: #616161;
|
|
||||||
}
|
|
||||||
|
|
||||||
md-toolbar.demo-toolbar,
|
|
||||||
.demo-source-tabs md-tab,
|
|
||||||
.demo-source-tabs .tabs-header {
|
|
||||||
background: #E0E0E0 !important;
|
|
||||||
color: #616161;
|
|
||||||
}
|
|
||||||
md-toolbar.demo-toolbar md-tab-label {
|
|
||||||
color: #99E4EE
|
|
||||||
}
|
|
||||||
md-toolbar.demo-toolbar .md-button:hover,
|
|
||||||
md-toolbar.demo-toolbar .md-button:focus,
|
|
||||||
md-toolbar.demo-toolbar .md-button.active {
|
|
||||||
background: rgba(0,0,0,0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
md-toolbar.demo-toolbar .md-button {
|
|
||||||
-webkit-transition: all 0.3s linear;
|
|
||||||
-moz-transition: all 0.3s linear;
|
|
||||||
transition: all 0.3s linear;
|
|
||||||
}
|
|
||||||
.demo-source-container {
|
|
||||||
display: block;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
background-color: #f6f6f6;
|
|
||||||
height: 400px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.demo-source-content {
|
|
||||||
height: 400px;
|
|
||||||
}
|
|
||||||
.demo-source-content,
|
|
||||||
.demo-source-content pre,
|
|
||||||
.demo-source-content code {
|
|
||||||
background: #f6f6f6;
|
|
||||||
font-family: monospace;
|
|
||||||
}
|
|
||||||
.demo-source-content pre {
|
|
||||||
max-width: 100%;
|
|
||||||
overflow-wrap: break-word;
|
|
||||||
}
|
|
||||||
|
|
||||||
.show-source div[demo-include] {
|
|
||||||
border-top: #ddd solid 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.menu-separator-icon {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
.menu-module-name {
|
|
||||||
opacity: 0.6;
|
|
||||||
font-size: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/************
|
|
||||||
* DOCS
|
|
||||||
************/
|
|
||||||
.api-options-bar .md-button {
|
|
||||||
margin: 4px;
|
|
||||||
padding: 4px;
|
|
||||||
}
|
|
||||||
.api-options-bar .md-button:hover,
|
|
||||||
.api-options-bar .md-button:focus {
|
|
||||||
background: rgba(0, 0, 0, 0.2);
|
|
||||||
}
|
|
||||||
.api-options-bar.with-icon md-icon {
|
|
||||||
position: absolute;
|
|
||||||
top: -3px;
|
|
||||||
left: 2px;
|
|
||||||
}
|
|
||||||
.api-options-bar.with-icon .md-button span {
|
|
||||||
margin-left: 22px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.api-params-item {
|
|
||||||
min-height: 72px;
|
|
||||||
border-bottom: 1px solid #ddd;
|
|
||||||
}
|
|
||||||
.api-params-label {
|
|
||||||
margin-right: 8px;
|
|
||||||
text-align: center;
|
|
||||||
margin-top: 14px;
|
|
||||||
-webkit-align-self: flex-start;
|
|
||||||
-moz-align-self: flex-start;
|
|
||||||
-ms-flex-item-align: start;
|
|
||||||
align-self: flex-start;
|
|
||||||
}
|
|
||||||
.api-params-title {
|
|
||||||
color: #888;
|
|
||||||
}
|
|
||||||
code.api-type {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
ul li {
|
|
||||||
margin-top: 3px;
|
|
||||||
list-style-position: inside;
|
|
||||||
}
|
|
||||||
ul li:first-child {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layout-title {
|
|
||||||
color: #999999;
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: bold;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
|
|
||||||
.api-params-content ul {
|
|
||||||
padding-left: 4px;
|
|
||||||
}
|
|
||||||
ul.methods > li {
|
|
||||||
margin-bottom: 48px;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.methods .method-function-syntax {
|
|
||||||
font-weight: normal;
|
|
||||||
font-size: 20px;
|
|
||||||
margin: 0;
|
|
||||||
-webkit-margin-before: 0;
|
|
||||||
-webkit-margin-after: 0;
|
|
||||||
}
|
|
||||||
ul.methods li h3 {
|
|
||||||
/* border-bottom: 1px solid #eee; */
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 600px) {
|
|
||||||
ul.methods > li {
|
|
||||||
padding-left: 0;
|
|
||||||
border-left: none;
|
|
||||||
list-style: default;
|
|
||||||
}
|
|
||||||
ul.methods .method-function-syntax {
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.version {
|
|
||||||
padding-left: 10px;
|
|
||||||
text-decoration: underline;
|
|
||||||
font-size: 0.95em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.demo-source-container pre,
|
|
||||||
.demo-source-container code {
|
|
||||||
min-height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
md-content.demo-source-container > hljs > pre > code.highlight {
|
|
||||||
position : absolute;
|
|
||||||
top : 0px;
|
|
||||||
left: 0px;
|
|
||||||
right: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.extraPad {
|
|
||||||
padding-left:32px !important;
|
|
||||||
padding-right:32px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.member .name {
|
|
||||||
white-space: pre-wrap;
|
|
||||||
word-wrap: break-word;
|
|
||||||
font-family: monospace;
|
|
||||||
font-size: 1.17em;
|
|
||||||
margin: 1em 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.left-nav {
|
|
||||||
min-width: 300px;
|
|
||||||
}
|
|
|
@ -1,142 +0,0 @@
|
||||||
/* GitHub Theme */
|
|
||||||
.prettyprint {
|
|
||||||
background: white;
|
|
||||||
font-family: Menlo, 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, Consolas, monospace;
|
|
||||||
font-size: 12px;
|
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lang-text * {
|
|
||||||
color: #333333!important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pln {
|
|
||||||
color: #333333;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen {
|
|
||||||
.str {
|
|
||||||
color: #dd1144;
|
|
||||||
}
|
|
||||||
|
|
||||||
.kwd {
|
|
||||||
color: #333333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.com {
|
|
||||||
color: #999988;
|
|
||||||
}
|
|
||||||
|
|
||||||
.typ {
|
|
||||||
color: #445588;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lit {
|
|
||||||
color: #445588;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pun {
|
|
||||||
color: #333333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.opn {
|
|
||||||
color: #333333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.clo {
|
|
||||||
color: #333333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tag {
|
|
||||||
color: navy;
|
|
||||||
}
|
|
||||||
|
|
||||||
.atn {
|
|
||||||
color: teal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.atv {
|
|
||||||
color: #dd1144;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dec {
|
|
||||||
color: #333333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.var {
|
|
||||||
color: teal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fun {
|
|
||||||
color: #990000;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media print, projection {
|
|
||||||
.str {
|
|
||||||
color: #006600;
|
|
||||||
}
|
|
||||||
|
|
||||||
.kwd {
|
|
||||||
color: #006;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.com {
|
|
||||||
color: #600;
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
.typ {
|
|
||||||
color: #404;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lit {
|
|
||||||
color: #004444;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pun, .opn, .clo {
|
|
||||||
color: #444400;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tag {
|
|
||||||
color: #006;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.atn {
|
|
||||||
color: #440044;
|
|
||||||
}
|
|
||||||
|
|
||||||
.atv {
|
|
||||||
color: #006600;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* Specify class=linenums on a pre to get line numbering */
|
|
||||||
ol.linenums {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* IE indents via margin-left */
|
|
||||||
li.L0,
|
|
||||||
li.L1,
|
|
||||||
li.L2,
|
|
||||||
li.L3,
|
|
||||||
li.L4,
|
|
||||||
li.L5,
|
|
||||||
li.L6,
|
|
||||||
li.L7,
|
|
||||||
li.L8,
|
|
||||||
li.L9 {
|
|
||||||
/* */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Alternate shading for lines */
|
|
||||||
li.L1,
|
|
||||||
li.L3,
|
|
||||||
li.L5,
|
|
||||||
li.L7,
|
|
||||||
li.L9 {
|
|
||||||
/* */
|
|
||||||
}
|
|
|
@ -1,55 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Angular 2 Docs</title>
|
|
||||||
<base href="/">
|
|
||||||
|
|
||||||
<link rel="stylesheet" type="text/css" href="/lib/angular-material/angular-material.css">
|
|
||||||
<link rel="stylesheet" type="text/css" href="/css/prettify-theme.css">
|
|
||||||
<link rel="stylesheet" type="text/css" href="/css/app.css">
|
|
||||||
|
|
||||||
<script src="/lib/hammerjs/hammer.js"></script>
|
|
||||||
<script src="/lib/google-code-prettify/src/prettify.js"></script>
|
|
||||||
<script src="/lib/google-code-prettify/src/lang-css.js"></script>
|
|
||||||
<script src="/lib/angular/angular.js"></script>
|
|
||||||
<script src="/lib/angular-animate/angular-animate.js"></script>
|
|
||||||
<script src="/lib/angular-aria/angular-aria.js"></script>
|
|
||||||
<script src="/lib/angular-material/angular-material.js"></script>
|
|
||||||
<script src="/js/navigation-modules.js"></script>
|
|
||||||
<script src="/js/navigation-guides.js"></script>
|
|
||||||
<script src="/js/app.js"></script>
|
|
||||||
<script src="/js/code.js"></script>
|
|
||||||
</head>
|
|
||||||
<body ng-app="app" ng-controller="NavController as nav" layout="column">
|
|
||||||
|
|
||||||
<md-toolbar md-scroll-shrink>
|
|
||||||
<h1 class="md-toolbar-tools">Angular V2</h1>
|
|
||||||
</md-toolbar>
|
|
||||||
|
|
||||||
<section layout="row">
|
|
||||||
|
|
||||||
<md-content class="left-nav">
|
|
||||||
<h2>Navigation</h2>
|
|
||||||
<section ng-repeat="area in nav.areas">
|
|
||||||
<h3>{{ area.name }}</h3>
|
|
||||||
<md-list>
|
|
||||||
<md-item ng-repeat="section in area.sections">
|
|
||||||
<h3><a href="{{section.path}}">{{section.name}}</a></h3>
|
|
||||||
<ul>
|
|
||||||
<li ng-repeat="page in section.pages">
|
|
||||||
<a href="{{page.path}}">{{ page.name }}</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</md-item>
|
|
||||||
</md-list>
|
|
||||||
</section>
|
|
||||||
</md-content>
|
|
||||||
|
|
||||||
|
|
||||||
<md-content class="md-padding">
|
|
||||||
<ng-include autoscroll src="nav.currentPage.partial"></ng-include>
|
|
||||||
</md-content>
|
|
||||||
|
|
||||||
</section>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,46 +0,0 @@
|
||||||
angular.module('app', ['ngMaterial', 'navigation-modules', 'navigation-guides', 'code'])
|
|
||||||
|
|
||||||
.config(function($locationProvider) {
|
|
||||||
$locationProvider.html5Mode(true);
|
|
||||||
})
|
|
||||||
|
|
||||||
.controller('NavController', ['$scope', '$location', 'MODULES', 'GUIDES',
|
|
||||||
function($scope, $location, MODULES, GUIDES) {
|
|
||||||
var that = this;
|
|
||||||
|
|
||||||
this.areas = [
|
|
||||||
{ name: 'Guides', sections: [ { pages: GUIDES.pages } ] },
|
|
||||||
{ name: 'Modules', sections: MODULES.sections }
|
|
||||||
];
|
|
||||||
|
|
||||||
this.updateCurrentPage = function(path) {
|
|
||||||
console.log('path', path);
|
|
||||||
this.currentPage = null;
|
|
||||||
|
|
||||||
this.areas.forEach(function(area) {
|
|
||||||
area.sections.forEach(function(section) {
|
|
||||||
|
|
||||||
// Short-circuit out if the page has been found
|
|
||||||
if ( that.currentPage ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (section.path === path) {
|
|
||||||
console.log('found!');
|
|
||||||
that.currentPage = section;
|
|
||||||
} else {
|
|
||||||
section.pages.forEach(function(page) {
|
|
||||||
if (page.path === path) {
|
|
||||||
that.currentPage = page;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
$scope.$watch(
|
|
||||||
function getLocationPath() { return $location.path(); },
|
|
||||||
function handleLocationPathChange(path) { that.updateCurrentPage(path); }
|
|
||||||
);
|
|
||||||
}]);
|
|
|
@ -1,15 +0,0 @@
|
||||||
angular.module('code', [])
|
|
||||||
|
|
||||||
.directive('code', function() {
|
|
||||||
return {
|
|
||||||
restrict: 'E',
|
|
||||||
terminal: true,
|
|
||||||
compile: function(element) {
|
|
||||||
var linenums = element.hasClass('linenum');
|
|
||||||
var match = /lang-(\S+)/.exec(element[0].className);
|
|
||||||
var lang = match && match[1];
|
|
||||||
var html = element.html();
|
|
||||||
element.html(window.prettyPrintOne(html, lang, linenums));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
});
|
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
"name": "angular-docs",
|
|
||||||
"main": "index.js",
|
|
||||||
"version": "0.0.0",
|
|
||||||
"homepage": "https://github.com/angular/angular",
|
|
||||||
"authors": [],
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"private": true,
|
|
||||||
"ignore": [
|
|
||||||
"**/.*",
|
|
||||||
"node_modules",
|
|
||||||
"bower_components",
|
|
||||||
"test",
|
|
||||||
"tests"
|
|
||||||
],
|
|
||||||
"dependencies": {
|
|
||||||
"angular-material": "~0.6.0",
|
|
||||||
"google-code-prettify": "~1.0.3"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,117 +0,0 @@
|
||||||
var Package = require('dgeni').Package;
|
|
||||||
var jsdocPackage = require('dgeni-packages/jsdoc');
|
|
||||||
var nunjucksPackage = require('dgeni-packages/nunjucks');
|
|
||||||
var typescriptPackage = require('../typescript-package');
|
|
||||||
var linksPackage = require('../links-package');
|
|
||||||
var gitPackage = require('dgeni-packages/git');
|
|
||||||
var path = require('canonical-path');
|
|
||||||
|
|
||||||
// Define the dgeni package for generating the docs
|
|
||||||
module.exports = new Package('angular-v2-docs', [jsdocPackage, nunjucksPackage, typescriptPackage, linksPackage, gitPackage])
|
|
||||||
|
|
||||||
// Register the services and file readers
|
|
||||||
.factory(require('./readers/ngdoc'))
|
|
||||||
|
|
||||||
// Register the processors
|
|
||||||
.processor(require('./processors/convertPrivateClassesToInterfaces'))
|
|
||||||
.processor(require('./processors/generateNavigationDoc'))
|
|
||||||
.processor(require('./processors/extractTitleFromGuides'))
|
|
||||||
.processor(require('./processors/createOverviewDump'))
|
|
||||||
.processor(require('./processors/checkUnbalancedBackTicks'))
|
|
||||||
|
|
||||||
// Configure the log service
|
|
||||||
.config(function(log) {
|
|
||||||
log.level = 'warn';
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
.config(function(renderDocsProcessor, versionInfo) {
|
|
||||||
renderDocsProcessor.extraData.versionInfo = versionInfo;
|
|
||||||
})
|
|
||||||
|
|
||||||
// Configure file reading
|
|
||||||
.config(function(readFilesProcessor, ngdocFileReader, readTypeScriptModules) {
|
|
||||||
readFilesProcessor.fileReaders = [ngdocFileReader];
|
|
||||||
readFilesProcessor.basePath = path.resolve(__dirname, '../..');
|
|
||||||
readFilesProcessor.sourceFiles = [
|
|
||||||
{ include: 'modules/*/docs/**/*.md', basePath: 'modules' },
|
|
||||||
{ include: 'docs/content/**/*.md', basePath: 'docs/content' }
|
|
||||||
];
|
|
||||||
|
|
||||||
readTypeScriptModules.sourceFiles = [
|
|
||||||
'*/*.@(js|es6|ts)',
|
|
||||||
'*/src/**/*.@(js|es6|ts)'
|
|
||||||
];
|
|
||||||
readTypeScriptModules.basePath = path.resolve(readFilesProcessor.basePath, 'modules');
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
.config(function(parseTagsProcessor, getInjectables) {
|
|
||||||
// We actually don't want to parse param docs in this package as we are getting the data out using TS
|
|
||||||
parseTagsProcessor.tagDefinitions.forEach(function(tagDef) {
|
|
||||||
if (tagDef.name === 'param') {
|
|
||||||
tagDef.docProperty = 'paramData';
|
|
||||||
tagDef.transforms = [];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
// Configure links
|
|
||||||
.config(function(getLinkInfo) {
|
|
||||||
getLinkInfo.useFirstAmbiguousLink = true;
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
// Configure file writing
|
|
||||||
.config(function(writeFilesProcessor) {
|
|
||||||
writeFilesProcessor.outputFolder = 'dist/docs';
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
// Configure rendering
|
|
||||||
.config(function(templateFinder, templateEngine) {
|
|
||||||
|
|
||||||
// Nunjucks and Angular conflict in their template bindings so change Nunjucks
|
|
||||||
templateEngine.config.tags = {
|
|
||||||
variableStart: '{$',
|
|
||||||
variableEnd: '$}'
|
|
||||||
};
|
|
||||||
|
|
||||||
templateFinder.templateFolders
|
|
||||||
.unshift(path.resolve(__dirname, 'templates'));
|
|
||||||
|
|
||||||
templateFinder.templatePatterns = [
|
|
||||||
'${ doc.template }',
|
|
||||||
'${ doc.id }.${ doc.docType }.template.html',
|
|
||||||
'${ doc.id }.template.html',
|
|
||||||
'${ doc.docType }.template.html',
|
|
||||||
'common.template.html'
|
|
||||||
];
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
// Configure ids and paths
|
|
||||||
.config(function(computeIdsProcessor, computePathsProcessor) {
|
|
||||||
|
|
||||||
computeIdsProcessor.idTemplates.push({
|
|
||||||
docTypes: ['guide'],
|
|
||||||
getId: function(doc) {
|
|
||||||
return doc.fileInfo.relativePath
|
|
||||||
// path should be relative to `modules` folder
|
|
||||||
.replace(/.*\/?modules\//, '')
|
|
||||||
// path should not include `/docs/`
|
|
||||||
.replace(/\/docs\//, '/')
|
|
||||||
// path should not have a suffix
|
|
||||||
.replace(/\.\w*$/, '');
|
|
||||||
},
|
|
||||||
getAliases: function(doc) { return [doc.id]; }
|
|
||||||
});
|
|
||||||
|
|
||||||
computePathsProcessor.pathTemplates.push({
|
|
||||||
docTypes: ['guide'],
|
|
||||||
pathTemplate: '/${id}',
|
|
||||||
outputPathTemplate: 'partials/guides/${id}.html'
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1 +0,0 @@
|
||||||
export var x = 100;
|
|
|
@ -1,10 +0,0 @@
|
||||||
var Package = require('dgeni').Package;
|
|
||||||
|
|
||||||
module.exports = function mockPackage() {
|
|
||||||
|
|
||||||
return new Package('mockPackage', [require('../')])
|
|
||||||
|
|
||||||
// provide a mock log service
|
|
||||||
.factory('log', function() { return require('dgeni/lib/mocks/log')(false); });
|
|
||||||
|
|
||||||
};
|
|
|
@ -1,34 +0,0 @@
|
||||||
/**
|
|
||||||
* @module
|
|
||||||
* @description
|
|
||||||
* This is the module description
|
|
||||||
*/
|
|
||||||
|
|
||||||
export * from 'importedSrc';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is some random other comment
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is MyClass
|
|
||||||
*/
|
|
||||||
export class MyClass {
|
|
||||||
message: String;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new MyClass
|
|
||||||
* @param {String} name The name to say hello to
|
|
||||||
*/
|
|
||||||
constructor(name) { this.message = 'hello ' + name; }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return a greeting message
|
|
||||||
*/
|
|
||||||
greet() { return this.message; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An exported function
|
|
||||||
*/
|
|
||||||
export var myFn = (val: number) => return val * 2;
|
|
|
@ -1,28 +0,0 @@
|
||||||
var _ = require('lodash');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dgProcessor checkUnbalancedBackTicks
|
|
||||||
* @description
|
|
||||||
* Searches the rendered content for an odd number of (```) backticks,
|
|
||||||
* which would indicate an unbalanced pair and potentially a typo in the
|
|
||||||
* source content.
|
|
||||||
*/
|
|
||||||
module.exports = function checkUnbalancedBackTicks(log, createDocMessage) {
|
|
||||||
|
|
||||||
var BACKTICK_REGEX = /^ *```/gm;
|
|
||||||
|
|
||||||
return {
|
|
||||||
$runAfter: ['checkAnchorLinksProcessor'],
|
|
||||||
$process: function(docs) {
|
|
||||||
_.forEach(docs, function(doc) {
|
|
||||||
if ( doc.renderedContent ) {
|
|
||||||
var matches = doc.renderedContent.match(BACKTICK_REGEX);
|
|
||||||
if (matches && matches.length % 2 !== 0) {
|
|
||||||
log.warn(createDocMessage('checkUnbalancedBackTicks processor: unbalanced backticks found in rendered content', doc));
|
|
||||||
console.log(doc.renderedContent);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -1,10 +0,0 @@
|
||||||
module.exports = function convertPrivateClassesToInterfacesProcessor(convertPrivateClassesToInterfaces) {
|
|
||||||
return {
|
|
||||||
$runAfter: ['processing-docs'],
|
|
||||||
$runBefore: ['docs-processed'],
|
|
||||||
$process: function(docs) {
|
|
||||||
convertPrivateClassesToInterfaces(docs, false);
|
|
||||||
return docs;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -1,24 +0,0 @@
|
||||||
var _ = require('lodash');
|
|
||||||
|
|
||||||
module.exports = function createOverviewDump() {
|
|
||||||
|
|
||||||
return {
|
|
||||||
$runAfter: ['processing-docs'],
|
|
||||||
$runBefore: ['docs-processed'],
|
|
||||||
$process: function(docs) {
|
|
||||||
var overviewDoc = {
|
|
||||||
id: 'overview-dump',
|
|
||||||
aliases: ['overview-dump'],
|
|
||||||
path: 'overview-dump',
|
|
||||||
outputPath: 'overview-dump.html',
|
|
||||||
modules: []
|
|
||||||
};
|
|
||||||
_.forEach(docs, function(doc) {
|
|
||||||
if ( doc.docType === 'module' ) {
|
|
||||||
overviewDoc.modules.push(doc);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
docs.push(overviewDoc);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -1,24 +0,0 @@
|
||||||
var _ = require('lodash');
|
|
||||||
|
|
||||||
module.exports = function extractTitleFromGuides() {
|
|
||||||
|
|
||||||
return {
|
|
||||||
$runAfter: ['processing-docs'],
|
|
||||||
$runBefore: ['docs-processed'],
|
|
||||||
$process: function(docs) {
|
|
||||||
_(docs).forEach(function(doc) {
|
|
||||||
if (doc.docType === 'guide') {
|
|
||||||
doc.name = doc.name || getNameFromHeading(doc.description);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
function getNameFromHeading(text) {
|
|
||||||
var match = /^\s*#\s*(.*)/.exec(text);
|
|
||||||
if (match) {
|
|
||||||
return match[1];
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,68 +0,0 @@
|
||||||
var _ = require('lodash');
|
|
||||||
|
|
||||||
module.exports = function generateNavigationDoc() {
|
|
||||||
|
|
||||||
return {
|
|
||||||
$runAfter: ['docs-processed'],
|
|
||||||
$runBefore: ['rendering-docs'],
|
|
||||||
$process: function(docs) {
|
|
||||||
var modulesDoc = {
|
|
||||||
value: { sections: [] },
|
|
||||||
moduleName: 'navigation-modules',
|
|
||||||
serviceName: 'MODULES',
|
|
||||||
template: 'data-module.template.js',
|
|
||||||
outputPath: 'js/navigation-modules.js'
|
|
||||||
};
|
|
||||||
|
|
||||||
_.forEach(docs, function(doc) {
|
|
||||||
if ( doc.docType === 'module' ) {
|
|
||||||
var moduleNavItem = {
|
|
||||||
path: doc.path,
|
|
||||||
partial: doc.outputPath,
|
|
||||||
name: doc.id,
|
|
||||||
type: 'module',
|
|
||||||
pages: []
|
|
||||||
};
|
|
||||||
|
|
||||||
modulesDoc.value.sections.push(moduleNavItem);
|
|
||||||
|
|
||||||
_.forEach(doc.exports, function(exportDoc) {
|
|
||||||
if (!exportDoc.private) {
|
|
||||||
var exportNavItem = {
|
|
||||||
path: exportDoc.path,
|
|
||||||
partial: exportDoc.outputPath,
|
|
||||||
name: exportDoc.name,
|
|
||||||
type: exportDoc.docType
|
|
||||||
};
|
|
||||||
moduleNavItem.pages.push(exportNavItem);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
docs.push(modulesDoc);
|
|
||||||
|
|
||||||
|
|
||||||
var guidesDoc = {
|
|
||||||
value: { pages: [] },
|
|
||||||
moduleName: 'navigation-guides',
|
|
||||||
serviceName: 'GUIDES',
|
|
||||||
template: 'data-module.template.js',
|
|
||||||
outputPath: 'js/navigation-guides.js'
|
|
||||||
};
|
|
||||||
|
|
||||||
_.forEach(docs, function(doc) {
|
|
||||||
if ( doc.docType === 'guide' ) {
|
|
||||||
var guideDoc = {
|
|
||||||
path: doc.path,
|
|
||||||
partial: doc.outputPath,
|
|
||||||
name: doc.name,
|
|
||||||
type: 'guide'
|
|
||||||
};
|
|
||||||
guidesDoc.value.pages.push(guideDoc);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
docs.push(guidesDoc);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -1,32 +0,0 @@
|
||||||
var path = require('canonical-path');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dgService ngdocFileReader
|
|
||||||
* @description
|
|
||||||
* This file reader will pull the contents from a text file (by default .ngdoc)
|
|
||||||
*
|
|
||||||
* The doc will initially have the form:
|
|
||||||
* ```
|
|
||||||
* {
|
|
||||||
* content: 'the content of the file',
|
|
||||||
* startingLine: 1
|
|
||||||
* }
|
|
||||||
* ```
|
|
||||||
*/
|
|
||||||
module.exports = function ngdocFileReader() {
|
|
||||||
var reader = {
|
|
||||||
name: 'ngdocFileReader',
|
|
||||||
defaultPattern: /\.md$/,
|
|
||||||
getDocs: function(fileInfo) {
|
|
||||||
|
|
||||||
// We return a single element array because ngdoc files only contain one document
|
|
||||||
return [{
|
|
||||||
docType: 'guide',
|
|
||||||
content: fileInfo.content,
|
|
||||||
startingLine: 1
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return reader;
|
|
||||||
};
|
|
|
@ -1,45 +0,0 @@
|
||||||
var ngdocFileReaderFactory = require('./ngdoc');
|
|
||||||
var path = require('canonical-path');
|
|
||||||
|
|
||||||
describe('ngdocFileReader', function() {
|
|
||||||
|
|
||||||
var fileReader;
|
|
||||||
|
|
||||||
var createFileInfo = function(file, content, basePath) {
|
|
||||||
return {
|
|
||||||
fileReader: fileReader.name,
|
|
||||||
filePath: file,
|
|
||||||
baseName: path.basename(file, path.extname(file)),
|
|
||||||
extension: path.extname(file).replace(/^\./, ''),
|
|
||||||
basePath: basePath,
|
|
||||||
relativePath: path.relative(basePath, file),
|
|
||||||
content: content
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
beforeEach(function() {
|
|
||||||
fileReader = ngdocFileReaderFactory();
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
describe('defaultPattern', function() {
|
|
||||||
it('should match .md files', function() {
|
|
||||||
expect(fileReader.defaultPattern.test('abc.md')).toBeTruthy();
|
|
||||||
expect(fileReader.defaultPattern.test('abc.js')).toBeFalsy();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
describe('getDocs', function() {
|
|
||||||
it('should return an object containing info about the file and its contents', function() {
|
|
||||||
var fileInfo = createFileInfo('project/path/modules/someModule/foo/docs/subfolder/bar.ngdoc', 'A load of content', 'project/path');
|
|
||||||
expect(fileReader.getDocs(fileInfo)).toEqual([{
|
|
||||||
docType: 'guide',
|
|
||||||
content: 'A load of content',
|
|
||||||
startingLine: 1
|
|
||||||
}]);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
{% include "lib/paramList.html" -%}
|
|
||||||
{% include "lib/githubLinks.html" -%}
|
|
||||||
{% extends 'layout/base.template.html' -%}
|
|
||||||
|
|
||||||
{% block body %}
|
|
||||||
<h1 class="class export">{$ doc.name $} <span class="type">{$ doc.docType $}</span></h1>
|
|
||||||
<p class="module">exported from {@link {$ doc.moduleDoc.id $} {$doc.moduleDoc.id $} }<br/>
|
|
||||||
defined in {$ githubViewLink(doc) $}
|
|
||||||
</p>
|
|
||||||
<p>{$ doc.description | marked $}</p>
|
|
||||||
|
|
||||||
{%- if doc.decorators %}
|
|
||||||
<h2>Annotations</h2>
|
|
||||||
{%- for decorator in doc.decorators %}
|
|
||||||
<h3 class="annotation">@{$ decorator.name $}{$ paramList(decorator.arguments) $}</h3>
|
|
||||||
{% endfor %}
|
|
||||||
{% endif -%}
|
|
||||||
|
|
||||||
{%- if doc.constructorDoc or doc.members.length -%}
|
|
||||||
<h2>Members</h2>
|
|
||||||
|
|
||||||
{%- if doc.constructorDoc %}
|
|
||||||
<section class="member constructor">
|
|
||||||
<h1 id="constructor" class="name">{$ doc.constructorDoc.name $}{$ paramList(doc.constructorDoc.params) $}</h1>
|
|
||||||
{% marked %}
|
|
||||||
{$ doc.constructorDoc.description $}
|
|
||||||
{% endmarked %}
|
|
||||||
</section>
|
|
||||||
{% endif -%}
|
|
||||||
|
|
||||||
{%- for member in doc.members %}{% if not member.private %}
|
|
||||||
<section class="member">
|
|
||||||
<h1 id="{$ member.name $}" class="name">
|
|
||||||
{$ member.name $}{% if member.optional %}?{% endif %}{$ paramList(member.params) $}
|
|
||||||
</h1>
|
|
||||||
{% marked %}
|
|
||||||
{$ member.description $}
|
|
||||||
{% endmarked %}
|
|
||||||
</section>
|
|
||||||
|
|
||||||
{% endif %}{% endfor %}
|
|
||||||
{%- endif -%}
|
|
||||||
|
|
||||||
{% endblock %}
|
|
|
@ -1,9 +0,0 @@
|
||||||
{% extends 'layout/base.template.html' %}
|
|
||||||
|
|
||||||
{% block body %}
|
|
||||||
<h1>{$ doc.id $}</h1>
|
|
||||||
<h2>({$ doc.docType $})</h2>
|
|
||||||
<div>
|
|
||||||
{$ doc.description | marked $}
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
|
@ -1 +0,0 @@
|
||||||
{% extends 'var.template.html' -%}
|
|
|
@ -1,3 +0,0 @@
|
||||||
angular.module('{$ doc.moduleName $}', [])
|
|
||||||
|
|
||||||
.value('{$ doc.serviceName $}', {$ doc.value | json $});
|
|
|
@ -1,11 +0,0 @@
|
||||||
{% include "lib/paramList.html" -%}
|
|
||||||
{% include "lib/githubLinks.html" -%}
|
|
||||||
{% extends 'layout/base.template.html' -%}
|
|
||||||
|
|
||||||
{% block body %}
|
|
||||||
<h1 class="function export">{$ doc.name $}{$ paramList(doc.parameters) $}</h1>
|
|
||||||
<p class="module">exported from {@link {$ doc.moduleDoc.id $} {$doc.moduleDoc.id $} }<br/>
|
|
||||||
defined in {$ githubViewLink(doc) $}</p>
|
|
||||||
<p>{$ doc.description | marked $}</p>
|
|
||||||
|
|
||||||
{% endblock %}
|
|
|
@ -1,5 +0,0 @@
|
||||||
{% extends 'layout/base.template.html' %}
|
|
||||||
|
|
||||||
{% block body %}
|
|
||||||
{$ doc.description | marked $}
|
|
||||||
{% endblock %}
|
|
|
@ -1 +0,0 @@
|
||||||
{% extends 'class.template.html' -%}
|
|
|
@ -1 +0,0 @@
|
||||||
{% block body %}{% endblock %}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{% macro githubViewLink(doc) -%}
|
|
||||||
<a href="https://github.com/{$ versionInfo.gitRepoInfo.owner $}/{$ versionInfo.gitRepoInfo.repo $}/tree/{$ versionInfo.currentVersion.isSnapshot and versionInfo.currentVersion.SHA or versionInfo.currentVersion.raw $}/modules/{$ doc.fileInfo.relativePath $}#L{$ doc.location.start.line+1 $}-L{$ doc.location.end.line+1 $}">{$ doc.fileInfo.relativePath $} (line {$ doc.location.start.line+1 $})</a>
|
|
||||||
{%- endmacro -%}
|
|
|
@ -1,7 +0,0 @@
|
||||||
{% macro paramList(params) -%}
|
|
||||||
{%- if params -%}<span class="params">(
|
|
||||||
{%- for param in params -%}
|
|
||||||
<span class="param">{$ param | escape $}{% if not loop.last %}, {% endif %}</span>
|
|
||||||
{%- endfor %})</span>
|
|
||||||
{%- endif %}
|
|
||||||
{%- endmacro -%}
|
|
|
@ -1,19 +0,0 @@
|
||||||
{% include "lib/githubLinks.html" -%}
|
|
||||||
{% extends 'layout/base.template.html' %}
|
|
||||||
|
|
||||||
{% block body %}
|
|
||||||
<h1 class="id">{$ doc.id $} <span class="type">module</span></h1>
|
|
||||||
<p>defined in {$ githubViewLink(doc) $}</p>
|
|
||||||
<p>{$ doc.description | marked $}</p>
|
|
||||||
|
|
||||||
{% if doc.exports.length %}
|
|
||||||
<h2>Exports</h2>
|
|
||||||
<ul>
|
|
||||||
{%- for exportDoc in doc.exports %}
|
|
||||||
{% if not exportDoc.private -%}
|
|
||||||
<li><a href="{$ exportDoc.path $}"><strong>{$ exportDoc.name $}</strong> {$ exportDoc.docType $}</a></li>
|
|
||||||
{%- endif %}
|
|
||||||
{%- endfor %}
|
|
||||||
</ul>
|
|
||||||
{% endif %}
|
|
||||||
{% endblock %}
|
|
|
@ -1,43 +0,0 @@
|
||||||
{% include "lib/paramList.html" -%}
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title></title>
|
|
||||||
<style>
|
|
||||||
h2 {
|
|
||||||
padding-left: 20px;
|
|
||||||
}
|
|
||||||
h3 {
|
|
||||||
padding-left: 50px;
|
|
||||||
}
|
|
||||||
h4 {
|
|
||||||
padding-left: 60px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
|
|
||||||
<h1>Modules</h1>
|
|
||||||
|
|
||||||
{% for module in doc.modules %}
|
|
||||||
|
|
||||||
<h2>{$ module.id $}
|
|
||||||
{%- if module.public %} (public){% endif %}</h2>
|
|
||||||
|
|
||||||
{% for export in module.exports %}
|
|
||||||
<h3>{$ export.name $}</h3>
|
|
||||||
|
|
||||||
{%- if export.constructorDoc %}
|
|
||||||
<h4>{$ doc.constructorDoc.name $}{$ paramList(doc.constructorDoc.params) $}</h4>
|
|
||||||
{% endif -%}
|
|
||||||
{%- for member in export.members %}
|
|
||||||
<h4>{$ member.name $}{$ paramList(member.params) $}</h4>
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,10 +0,0 @@
|
||||||
{% include "lib/githubLinks.html" -%}
|
|
||||||
{% extends 'layout/base.template.html' %}
|
|
||||||
|
|
||||||
{% block body %}
|
|
||||||
<h1>{$ doc.name $} <span class="type">type alias</span></h1>
|
|
||||||
<p class="module">exported from {@link {$ doc.moduleDoc.id $} {$doc.moduleDoc.id $} }<br/>
|
|
||||||
defined in {$ githubViewLink(doc) $}</p>
|
|
||||||
<p>{$ doc.description | marked $}</p>
|
|
||||||
|
|
||||||
{% endblock %}
|
|
|
@ -1,10 +0,0 @@
|
||||||
{% include "lib/githubLinks.html" -%}
|
|
||||||
{% extends 'layout/base.template.html' %}
|
|
||||||
|
|
||||||
{% block body %}
|
|
||||||
<h1>{$ doc.name $} <span class="type">variable</span></h1>
|
|
||||||
<p class="module">exported from {@link {$ doc.moduleDoc.id $} {$doc.moduleDoc.id $} }<br/>
|
|
||||||
defined in {$ githubViewLink(doc) $}</p>
|
|
||||||
<p>{$ doc.description | marked $}</p>
|
|
||||||
|
|
||||||
{% endblock %}
|
|
|
@ -1,12 +0,0 @@
|
||||||
var Package = require('dgeni').Package;
|
|
||||||
|
|
||||||
module.exports = new Package('links', [])
|
|
||||||
|
|
||||||
.factory(require('./inline-tag-defs/link'))
|
|
||||||
.factory(require('dgeni-packages/ngdoc/services/getAliases'))
|
|
||||||
.factory(require('dgeni-packages/ngdoc/services/getDocFromAlias'))
|
|
||||||
.factory(require('./services/getLinkInfo'))
|
|
||||||
|
|
||||||
.config(function(inlineTagProcessor, linkInlineTagDef) {
|
|
||||||
inlineTagProcessor.inlineTagDefinitions.push(linkInlineTagDef);
|
|
||||||
});
|
|
|
@ -1,33 +0,0 @@
|
||||||
var INLINE_LINK = /(\S+)(?:\s+([\s\S]+))?/;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dgService linkInlineTagDef
|
|
||||||
* @description
|
|
||||||
* Process inline link tags (of the form {@link some/uri Some Title}), replacing them with HTML anchors
|
|
||||||
* @kind function
|
|
||||||
* @param {Object} url The url to match
|
|
||||||
* @param {Function} docs error message
|
|
||||||
* @return {String} The html link information
|
|
||||||
*
|
|
||||||
* @property {boolean} relativeLinks Whether we expect the links to be relative to the originating doc
|
|
||||||
*/
|
|
||||||
module.exports = function linkInlineTagDef(getLinkInfo, createDocMessage, log) {
|
|
||||||
return {
|
|
||||||
name: 'link',
|
|
||||||
description: 'Process inline link tags (of the form {@link some/uri Some Title}), replacing them with HTML anchors',
|
|
||||||
handler: function(doc, tagName, tagDescription) {
|
|
||||||
|
|
||||||
// Parse out the uri and title
|
|
||||||
return tagDescription.replace(INLINE_LINK, function(match, uri, title) {
|
|
||||||
|
|
||||||
var linkInfo = getLinkInfo(uri, title, doc);
|
|
||||||
|
|
||||||
if ( !linkInfo.valid ) {
|
|
||||||
log.warn(createDocMessage(linkInfo.error, doc));
|
|
||||||
}
|
|
||||||
|
|
||||||
return "<a href='" + linkInfo.url + "'>" + linkInfo.title + "</a>";
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -1,72 +0,0 @@
|
||||||
var _ = require('lodash');
|
|
||||||
var path = require('canonical-path');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dgService getLinkInfo
|
|
||||||
* @description
|
|
||||||
* Get link information to a document that matches the given url
|
|
||||||
* @kind function
|
|
||||||
* @param {String} url The url to match
|
|
||||||
* @param {String} title An optional title to return in the link information
|
|
||||||
* @return {Object} The link information
|
|
||||||
*
|
|
||||||
* @property {boolean} relativeLinks Whether we expect the links to be relative to the originating doc
|
|
||||||
*/
|
|
||||||
module.exports = function getLinkInfo(getDocFromAlias, encodeCodeBlock, log) {
|
|
||||||
|
|
||||||
return function getLinkInfoImpl(url, title, currentDoc) {
|
|
||||||
var linkInfo = {
|
|
||||||
url: url,
|
|
||||||
type: 'url',
|
|
||||||
valid: true,
|
|
||||||
title: title || url
|
|
||||||
};
|
|
||||||
|
|
||||||
if ( !url ) {
|
|
||||||
throw new Error('Invalid url');
|
|
||||||
}
|
|
||||||
|
|
||||||
var docs = getDocFromAlias(url, currentDoc);
|
|
||||||
|
|
||||||
if ( !getLinkInfoImpl.useFirstAmbiguousLink && docs.length > 1 ) {
|
|
||||||
|
|
||||||
linkInfo.valid = false;
|
|
||||||
linkInfo.errorType = 'ambiguous';
|
|
||||||
linkInfo.error = 'Ambiguous link: "' + url + '".\n' +
|
|
||||||
docs.reduce(function(msg, doc) { return msg + '\n "' + doc.id + '" ('+ doc.docType + ') : (' + doc.path + ' / ' + doc.fileInfo.relativePath + ')'; }, 'Matching docs: ');
|
|
||||||
|
|
||||||
} else if ( docs.length >= 1 ) {
|
|
||||||
|
|
||||||
linkInfo.url = docs[0].path;
|
|
||||||
linkInfo.title = title || encodeCodeBlock(docs[0].name, true);
|
|
||||||
linkInfo.type = 'doc';
|
|
||||||
|
|
||||||
if ( getLinkInfoImpl.relativeLinks && currentDoc && currentDoc.path ) {
|
|
||||||
var currentFolder = path.dirname(currentDoc.path);
|
|
||||||
var docFolder = path.dirname(linkInfo.url);
|
|
||||||
var relativeFolder = path.relative(path.join('/', currentFolder), path.join('/', docFolder));
|
|
||||||
linkInfo.url = path.join(relativeFolder, path.basename(linkInfo.url));
|
|
||||||
log.debug(currentDoc.path, docs[0].path, linkInfo.url);
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if ( url.indexOf('#') > 0 ) {
|
|
||||||
var pathAndHash = url.split('#');
|
|
||||||
linkInfo = getLinkInfoImpl(pathAndHash[0], title, currentDoc);
|
|
||||||
linkInfo.url = linkInfo.url + '#' + pathAndHash[1];
|
|
||||||
return linkInfo;
|
|
||||||
|
|
||||||
} else if ( url.indexOf('/') === -1 && url.indexOf('#') !== 0 ) {
|
|
||||||
|
|
||||||
linkInfo.valid = false;
|
|
||||||
linkInfo.errorType = 'missing';
|
|
||||||
linkInfo.error = 'Invalid link (does not match any doc): "' + url + '"';
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
linkInfo.title = title || (( url.indexOf('#') === 0 ) ? url.substring(1) : path.basename(url, '.html'));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return linkInfo;
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -1,24 +0,0 @@
|
||||||
var Package = require('dgeni').Package;
|
|
||||||
var basePackage = require('../docs-package');
|
|
||||||
|
|
||||||
module.exports = new Package('angular-v2-public-docs', [basePackage])
|
|
||||||
|
|
||||||
.config(function(readTypeScriptModules) {
|
|
||||||
readTypeScriptModules.sourceFiles = [
|
|
||||||
'angular2/lifecycle_hooks.ts',
|
|
||||||
'angular2/core.ts',
|
|
||||||
'angular2/http.ts',
|
|
||||||
'angular2/router.ts',
|
|
||||||
'angular2/test.ts'
|
|
||||||
];
|
|
||||||
readTypeScriptModules.hidePrivateMembers = true;
|
|
||||||
})
|
|
||||||
|
|
||||||
.config(function(getLinkInfo) {
|
|
||||||
getLinkInfo.useFirstAmbiguousLink = false;
|
|
||||||
})
|
|
||||||
|
|
||||||
// Configure file writing
|
|
||||||
.config(function(writeFilesProcessor) {
|
|
||||||
writeFilesProcessor.outputFolder = 'dist/public_docs';
|
|
||||||
});
|
|
104
gulpfile.js
104
gulpfile.js
|
@ -415,106 +415,8 @@ gulp.task('serve.e2e.dart', ['build.js.cjs'], function(neverDone) {
|
||||||
|
|
||||||
|
|
||||||
// --------------
|
// --------------
|
||||||
// doc generation
|
// d.ts generation
|
||||||
var Dgeni = require('dgeni');
|
var Dgeni = require('dgeni');
|
||||||
var bower = require('bower');
|
|
||||||
var webserver = require('gulp-webserver');
|
|
||||||
|
|
||||||
gulp.task('docs/bower', function() {
|
|
||||||
var bowerTask = bower.commands.install(undefined, undefined, { cwd: 'docs' });
|
|
||||||
bowerTask.on('log', function (result) {
|
|
||||||
console.log('bower:', result.id, result.data);
|
|
||||||
});
|
|
||||||
bowerTask.on('error', function(error) {
|
|
||||||
console.log(error);
|
|
||||||
});
|
|
||||||
return bowerTask;
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
function createDocsTasks(options) {
|
|
||||||
var dgeniPackage = options.package;
|
|
||||||
var distDocsPath = options.path;
|
|
||||||
var taskPrefix = options.prefix;
|
|
||||||
|
|
||||||
gulp.task(taskPrefix + '/dgeni', function() {
|
|
||||||
try {
|
|
||||||
var dgeni = new Dgeni([require(dgeniPackage)]);
|
|
||||||
return dgeni.generate();
|
|
||||||
} catch(x) {
|
|
||||||
console.log(x);
|
|
||||||
console.log(x.stack);
|
|
||||||
throw x;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
gulp.task(taskPrefix + '/assets', ['docs/bower'], function() {
|
|
||||||
return gulp.src('docs/bower_components/**/*')
|
|
||||||
.pipe(gulp.dest(distDocsPath + '/lib'));
|
|
||||||
});
|
|
||||||
|
|
||||||
gulp.task(taskPrefix + '/app', function() {
|
|
||||||
return gulp.src('docs/app/**/*')
|
|
||||||
.pipe(gulp.dest(distDocsPath));
|
|
||||||
});
|
|
||||||
|
|
||||||
gulp.task(taskPrefix, [taskPrefix + '/assets', taskPrefix + '/app', taskPrefix + '/dgeni']);
|
|
||||||
gulp.task(taskPrefix + '/watch', function() {
|
|
||||||
return watch('docs/app/**/*', [taskPrefix + '/app']);
|
|
||||||
});
|
|
||||||
|
|
||||||
gulp.task(taskPrefix + '/test', function (done) {
|
|
||||||
runJasmineTests(['docs/**/*.spec.js'], done);
|
|
||||||
});
|
|
||||||
|
|
||||||
gulp.task(taskPrefix + '/serve', function() {
|
|
||||||
gulp.src(distDocsPath + '/')
|
|
||||||
.pipe(webserver({
|
|
||||||
fallback: 'index.html'
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
createDocsTasks({ package: './docs/docs-package', path: 'dist/docs', prefix: 'docs'});
|
|
||||||
createDocsTasks({ package: './docs/public-docs-package', path: 'dist/public_docs', prefix: 'public_docs'});
|
|
||||||
|
|
||||||
gulp.task('docs/angular.io', ['build/clean.docs_angular_io'], function() {
|
|
||||||
try {
|
|
||||||
var dgeni = new Dgeni([require('./docs/angular.io-package')]);
|
|
||||||
return dgeni.generate();
|
|
||||||
} catch(x) {
|
|
||||||
console.log(x);
|
|
||||||
console.log(x.stack);
|
|
||||||
throw x;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
gulp.task('docs/angular.io/watch', function() {
|
|
||||||
watch(['modules/angular2/docs/**', 'modules/**/src/**'], ['docs/angular.io', 'docs/angular.io/copy']);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
gulp.task('docs/angular.io/copy', function(){
|
|
||||||
var DOCS_DIRS = ['core', 'http', 'lifecycle_hooks', 'router', 'test'];
|
|
||||||
var DOCS_DIST = 'dist/angular.io/partials/api/angular2/';
|
|
||||||
var DOCS_IO_DIST = '../angular.io/public/docs/js/latest/api/';
|
|
||||||
|
|
||||||
var fs = require('fs');
|
|
||||||
var fse = require('fs-extra');
|
|
||||||
|
|
||||||
if (!fs.existsSync('../angular.io')) {
|
|
||||||
throw new Error('docs/angular.io-watch task requires the angular.io repo to be at ' + path.resolve('../angular.io'));
|
|
||||||
}
|
|
||||||
|
|
||||||
DOCS_DIRS.forEach(function(dir) {
|
|
||||||
var distIODir = DOCS_IO_DIST + dir;
|
|
||||||
fse.removeSync(distIODir);
|
|
||||||
fse.copySync(DOCS_DIST + dir, DOCS_IO_DIST + dir);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
gulp.task('docs/typings', [], function() {
|
gulp.task('docs/typings', [], function() {
|
||||||
try {
|
try {
|
||||||
|
@ -543,12 +445,12 @@ function runKarma(configFile, done) {
|
||||||
}
|
}
|
||||||
|
|
||||||
gulp.task('test.js', function(done) {
|
gulp.task('test.js', function(done) {
|
||||||
runSequence('test.unit.tools/ci', 'test.transpiler.unittest', 'docs/test', 'test.unit.js/ci',
|
runSequence('test.unit.tools/ci', 'test.transpiler.unittest', 'test.unit.js/ci',
|
||||||
'test.unit.cjs/ci', 'test.typings', sequenceComplete(done));
|
'test.unit.cjs/ci', 'test.typings', sequenceComplete(done));
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('test.dart', function(done) {
|
gulp.task('test.dart', function(done) {
|
||||||
runSequence('versions.dart', 'test.transpiler.unittest', 'docs/test', 'test.unit.dart/ci',
|
runSequence('versions.dart', 'test.transpiler.unittest', 'test.unit.dart/ci',
|
||||||
sequenceComplete(done));
|
sequenceComplete(done));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -9,4 +9,3 @@ source $SCRIPT_DIR/env_dart.sh
|
||||||
cd $SCRIPT_DIR/../..
|
cd $SCRIPT_DIR/../..
|
||||||
|
|
||||||
./node_modules/.bin/gulp build.js
|
./node_modules/.bin/gulp build.js
|
||||||
./node_modules/.bin/gulp docs
|
|
||||||
|
|
Loading…
Reference in New Issue