/** * 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; } e'>range
path: root/src/AngularPublic.js
blob: 2b5d4fbc988e1306564cba74168a974dbae3a904 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
var browserSingleton;
angularService('$browser', function($log){
  if (!browserSingleton) {
    browserSingleton = new Browser(
        window.location,
        jqLite(window.document),
        jqLite(window.document.getElementsByTagName('head')[0]),
        XHR,
        $log);
    browserSingleton.startPoller(50, function(delay, fn){setTimeout(delay,fn);});
    browserSingleton.bind();
  }
  return browserSingleton;
}, {inject:['$log']});

extend(angular, {
  'element': jqLite,
  'compile': compile,
  'scope': createScope,
  'copy': copy,
  'extend': extend,
  'equals': equals,
  'foreach': foreach,
  'injector': createInjector,
  'noop':noop,
  'bind':bind,
  'toJson': toJson,
  'fromJson': fromJson,
  'identity':identity,
  'isUndefined': isUndefined,
  'isDefined': isDefined,
  'isString': isString,
  'isFunction': isFunction,
  'isObject': isObject,
  'isNumber': isNumber,
  'isArray': isArray
});