/** * All reading related code here. This is so that we can separate the async code from sync code * for testability */ exports.collect = collect; require.paths.push(__dirname); var ngdoc = require('ngdoc.js'), Q = require('qq'), qfs = require('q-fs'); 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)) { console.log("reading " + 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$/)) { console.log("reading " + file + "......."); work2 = Q.when(qfs.read(file, 'b'), function(content){ var section = '@section ' + file.split('/')[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='search'/>
path: root/src/Validators.js
blob: b7efcb4ab68392a33d1f9446c6e5d0972e2d9c31 (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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110