mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-17 07:40:22 +00:00
Migrates the Angular project from Rake to Grunt. Benefits: - Drops Ruby dependency - Lowers barrier to entry for contributions from JavaScript ninjas - Simplifies the Angular project setup and build process - Adopts industry-standard tools specific to JavaScript projects - Support building angular.js on Windows platform (really?!? why?!?) BREAKING CHANGE: Rake is completely replaced by Grunt. Below are the deprecated Rake tasks and their Grunt equivalents: rake --> grunt rake package --> grunt package rake init --> N/A rake clean --> grunt clean rake concat_scenario --> grunt build:scenario rake concat --> grunt build rake concat_scenario --> grunt build:scenario rake minify --> grunt minify rake version --> grunt write:version rake docs --> grunt docs rake webserver --> grunt webserver rake test --> grunt test rake test:unit --> grunt test:unit rake test:<jqlite|jquery|modules|e2e> --> grunt test:<jqlite|jquery|modules|end2end|e2e> rake test[Firefox+Safari] --> grunt test --browsers Firefox,Safari rake test[Safari] --> grunt test --browsers Safari rake autotest --> grunt autotest NOTES: * For convenience grunt test:e2e starts a webserver for you, while grunt test:end2end doesn't. Use grunt test:end2end if you already have the webserver running. * Removes duplicate entry for Describe.js in the angularScenario section of angularFiles.js * Updates docs/src/gen-docs.js to use #done intead of the deprecated #end * Uses grunt-contrib-connect instead of lib/nodeserver (removed) * Removes nodeserver.sh, travis now uses grunt webserver * Built and minified files are identical to Rake's output, with the exception of one less character for git revisions (using --short) and a couple minor whitespace differences Closes #199
97 lines
2.4 KiB
JavaScript
97 lines
2.4 KiB
JavaScript
/**
|
|
* All reading related code here. This is so that we can separate the async code from sync code
|
|
* for testability
|
|
*/
|
|
|
|
exports.collect = collect;
|
|
|
|
var ngdoc = require('./ngdoc.js'),
|
|
Q = require('qq'),
|
|
qfs = require('q-fs'),
|
|
PATH = require('path');
|
|
|
|
var NEW_LINE = /\n\r?/;
|
|
|
|
function collect() {
|
|
var allDocs = [];
|
|
|
|
//collect docs in JS Files
|
|
var path = 'src';
|
|
var promiseA = Q.when(qfs.listTree(path), function(files) {
|
|
var done;
|
|
//read all files in parallel.
|
|
files.forEach(function(file) {
|
|
var work;
|
|
if(/\.js$/.test(file)) {
|
|
work = Q.when(qfs.read(file, 'b'), function(content) {
|
|
processJsFile(content, file).forEach (function(doc) {
|
|
allDocs.push(doc);
|
|
});
|
|
});
|
|
}
|
|
done = Q.when(done, function() {
|
|
return work;
|
|
});
|
|
});
|
|
return done;
|
|
});
|
|
|
|
//collect all ng Docs in Content Folder
|
|
var path2 = 'docs/content';
|
|
var promiseB = Q.when(qfs.listTree(path2), function(files){
|
|
var done2;
|
|
files.forEach(function(file) {
|
|
var work2;
|
|
if (file.match(/\.ngdoc$/)) {
|
|
work2 = Q.when(qfs.read(file, 'b'), function(content){
|
|
var section = '@section ' + file.split(PATH.sep)[2] + '\n';
|
|
allDocs.push(new ngdoc.Doc(section + content.toString(),file, 1).parse());
|
|
});
|
|
}
|
|
done2 = Q.when(done2, function() {
|
|
return work2;
|
|
});
|
|
});
|
|
return done2;
|
|
});
|
|
|
|
return Q.join(promiseA, promiseB, function() {
|
|
return allDocs;
|
|
});
|
|
}
|
|
|
|
function processJsFile(content, file) {
|
|
var docs = [];
|
|
var lines = content.toString().split(NEW_LINE);
|
|
var text;
|
|
var startingLine ;
|
|
var match;
|
|
var inDoc = false;
|
|
|
|
lines.forEach(function(line, lineNumber){
|
|
lineNumber++;
|
|
// is the comment starting?
|
|
if (!inDoc && (match = line.match(/^\s*\/\*\*\s*(.*)$/))) {
|
|
line = match[1];
|
|
inDoc = true;
|
|
text = [];
|
|
startingLine = lineNumber;
|
|
}
|
|
// are we done?
|
|
if (inDoc && line.match(/\*\//)) {
|
|
text = text.join('\n');
|
|
text = text.replace(/^\n/, '');
|
|
if (text.match(/@ngdoc/)){
|
|
//console.log(file, startingLine)
|
|
docs.push(new ngdoc.Doc('@section api\n' + text, file, startingLine).parse());
|
|
}
|
|
doc = null;
|
|
inDoc = false;
|
|
}
|
|
// is the comment add text
|
|
if (inDoc){
|
|
text.push(line.replace(/^\s*\*\s?/, ''));
|
|
}
|
|
});
|
|
return docs;
|
|
}
|