mirror of
https://github.com/zhigang1992/angular.js.git
synced 2026-04-02 17:26:31 +08:00
This got missed in the doc migration: When there is an error in an Angular app, extra information is placed in the URL, which can be used by the docs application to display a more useful message. This fix adds that back in. The error message templates are extracted by the minerr tool during build and put into the errors.json file. The errors-doc processor will load this up and attach these message templates to the error docs. The display of these templates was already in place, via the errorDisplay directive in docs/app/js/errors.js. (Also, moved the error.template.html file into the angular.js repository from the dgeni-packages repository as this is specific to the angular.js project and all the other error related stuff is in here. Finally, also, added an e2e test that checks that minerr formatted messages are displayed correctly. Closes #6363
51 lines
1.6 KiB
JavaScript
51 lines
1.6 KiB
JavaScript
var _ = require('lodash');
|
|
var log = require('winston');
|
|
var path = require('canonical-path');
|
|
|
|
module.exports = {
|
|
name: 'error-docs',
|
|
description: 'Compute the various fields for docs in the Error area',
|
|
runAfter: ['tags-extracted'],
|
|
init: function(config, injectables) {
|
|
injectables.value('errorNamespaces', {});
|
|
|
|
var minerrInfoPath = config.get('processing.errors.minerrInfoPath');
|
|
if ( !minerrInfoPath ) {
|
|
throw new Error('Error in configuration: Please provide a path to the minerr info file (errors.json) ' +
|
|
'in the `config.processing.errors.minerrInfoPath` property');
|
|
}
|
|
injectables.value('minerrInfo', require(minerrInfoPath));
|
|
},
|
|
process: function(docs, partialNames, errorNamespaces, minerrInfo) {
|
|
|
|
// Create error namespace docs and attach error docs to each
|
|
_.forEach(docs, function(doc) {
|
|
if ( doc.docType === 'error' ) {
|
|
|
|
var namespaceDoc = errorNamespaces[doc.namespace];
|
|
if ( !namespaceDoc ) {
|
|
// First time we came across this namespace, so create a new one
|
|
namespaceDoc = errorNamespaces[doc.namespace] = {
|
|
area: doc.area,
|
|
name: doc.namespace,
|
|
errors: [],
|
|
path: path.dirname(doc.path),
|
|
outputPath: path.dirname(doc.outputPath) + '.html',
|
|
docType: 'errorNamespace'
|
|
};
|
|
}
|
|
|
|
// Add this error to the namespace
|
|
namespaceDoc.errors.push(doc);
|
|
doc.namespace = namespaceDoc;
|
|
|
|
doc.formattedErrorMessage = minerrInfo.errors[doc.namespace.name][doc.name];
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
return docs.concat(_.values(errorNamespaces));
|
|
}
|
|
}; |