react 0.0.3 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.npmignore +6 -0
- package/Jakefile.js +8 -0
- package/README.md +226 -86
- package/examples/ast1.js +26 -0
- package/examples/chain-events1.js +34 -0
- package/examples/chain1.js +19 -0
- package/examples/default-events1.js +52 -0
- package/examples/default1.js +41 -0
- package/examples/fstr-events1.js +51 -0
- package/examples/fstr1.js +36 -0
- package/examples/pcode1.js +22 -0
- package/jake-tasks/jake-test.js +64 -0
- package/lib/base-task.js +115 -0
- package/lib/cb-task.js +67 -0
- package/lib/chain.js +148 -0
- package/lib/core.js +96 -0
- package/lib/dsl.js +122 -0
- package/lib/error.js +47 -0
- package/lib/event-manager.js +57 -0
- package/lib/finalcb-first-task.js +59 -0
- package/lib/finalcb-task.js +54 -0
- package/lib/fstr.js +110 -0
- package/lib/id.js +10 -0
- package/lib/input-parser.js +44 -0
- package/lib/parse.js +29 -0
- package/lib/pcode.js +164 -0
- package/lib/ret-task.js +67 -0
- package/lib/status.js +5 -0
- package/lib/task.js +234 -0
- package/lib/validate.js +102 -0
- package/lib/vcon.js +76 -0
- package/oldExamples/analyze.js +29 -0
- package/oldExamples/analyze2.js +29 -0
- package/oldExamples/example10-dsl.js +63 -0
- package/oldExamples/example11.js +62 -0
- package/oldExamples/example12.js +63 -0
- package/oldExamples/example13.js +63 -0
- package/oldExamples/example14.js +63 -0
- package/oldExamples/example15.js +75 -0
- package/{test → oldExamples}/example6-ast.js +0 -0
- package/{test → oldExamples}/example6-dsl.js +0 -0
- package/{test → oldExamples}/example8-ast.js +0 -0
- package/{test → oldExamples}/example8-dsl.js +0 -0
- package/{test → oldExamples}/example9-ast.js +0 -0
- package/{test → oldExamples}/example9-dsl.js +0 -0
- package/oldExamples/function-str-ex1.js +33 -0
- package/oldExamples/function-str-ex2.js +67 -0
- package/oldExamples/trait1.js +41 -0
- package/oldExamples/trait2.js +44 -0
- package/package.json +16 -6
- package/react.js +11 -1
- package/test/ast.test.js +69 -0
- package/test/cb-task.test.js +197 -0
- package/test/chain.test.js +239 -0
- package/test/core.test.js +519 -0
- package/test/dsl.test.js +265 -0
- package/test/event-manager.test.js +102 -0
- package/test/exec-options.test.js +32 -0
- package/test/finalcb-task.test.js +37 -0
- package/test/fstr.test.js +288 -0
- package/test/input-parser.test.js +62 -0
- package/test/module-use.test.js +317 -0
- package/test/pcode.test.js +321 -0
- package/test/ret-task.test.js +199 -0
- package/test/task.test.js +21 -0
- package/test/validate-cb-task.test.js +74 -0
- package/test/validate-ret-task.test.js +83 -0
- package/test/validate.test.js +218 -0
- package/test/vcon.test.js +160 -0
- package/lib/react.js +0 -254
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function loadUser(uid, cb) { setTimeout(cb, 100, null, "User" + uid); }
|
|
4
|
+
function loadFile(filename, cb) { setTimeout(cb, 100, null, 'Filedata' + filename); }
|
|
5
|
+
function markdown(filedata) { return 'html' + filedata; }
|
|
6
|
+
function prepareDirectory(outDirname, cb) { setTimeout(cb, 200, null, 'dircreated-' + outDirname); }
|
|
7
|
+
function writeOutput(html, user, cb) { setTimeout(cb, 300, null, html + '_bytesWritten'); }
|
|
8
|
+
function loadEmailTemplate(cb) { setTimeout(cb, 50, null, 'emailmd'); }
|
|
9
|
+
function customizeEmail(user, emailHtml, cb) { return 'cust-' + user + emailHtml; }
|
|
10
|
+
function deliverEmail(custEmailHtml, cb) { setTimeout(cb, 100, null, 'delivered-' + custEmailHtml); }
|
|
11
|
+
|
|
12
|
+
function analyze(fn) {
|
|
13
|
+
console.log(fn.toString());
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
var fn = analyze(function loadAndSend(filename, uid, outDirname, cb,
|
|
17
|
+
R, filedata, outDirName, dircreated, emailmd, emailHtml,
|
|
18
|
+
custEmailHtml, deliveredEmail, err, user, html, bytesWritten) {
|
|
19
|
+
R.async(loadUser, uid).cb(err, user)
|
|
20
|
+
.async(loadFile, filename).cb(err, filedata)
|
|
21
|
+
.sync(markdown, filedata).returns(filedata)
|
|
22
|
+
.async(prepareDirectory, outDirName).cb(dircreated)
|
|
23
|
+
.async(writeOutput, html, user).cb(err, bytesWritten).after(prepareDirectory)
|
|
24
|
+
.async(loadEmailTemplate).cb(err, emailmd)
|
|
25
|
+
.sync(markdown, emailmd).returns(emailHtml)
|
|
26
|
+
.sync(customizeEmail, user, emailHtml).returns(custEmailHtml)
|
|
27
|
+
.sync(deliverEmail, custEmailHtml).returns(deliveredEmail).after(writeOutput)
|
|
28
|
+
.finalCb(err, html, user, bytesWritten);
|
|
29
|
+
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function loadUser(uid, cb) { setTimeout(cb, 100, null, "User" + uid); }
|
|
4
|
+
function loadFile(filename, cb) { setTimeout(cb, 100, null, 'Filedata' + filename); }
|
|
5
|
+
function markdown(filedata) { return 'html' + filedata; }
|
|
6
|
+
function prepareDirectory(outDirname, cb) { setTimeout(cb, 200, null, 'dircreated-' + outDirname); }
|
|
7
|
+
function writeOutput(html, user, cb) { setTimeout(cb, 300, null, html + '_bytesWritten'); }
|
|
8
|
+
function loadEmailTemplate(cb) { setTimeout(cb, 50, null, 'emailmd'); }
|
|
9
|
+
function customizeEmail(user, emailHtml, cb) { return 'cust-' + user + emailHtml; }
|
|
10
|
+
function deliverEmail(custEmailHtml, cb) { setTimeout(cb, 100, null, 'delivered-' + custEmailHtml); }
|
|
11
|
+
|
|
12
|
+
function react(fn) {
|
|
13
|
+
console.log(fn.toString());
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
var fn = react(function (R, filename, uid, outDirname, cb) {
|
|
17
|
+
var filedata, outDirName, dircreated, emailmd, emailHtml,
|
|
18
|
+
custEmailHtml, deliveredEmail, err, user, html, bytesWritten;
|
|
19
|
+
R.async(loadUser).in(uid).out(err, user)
|
|
20
|
+
.async(loadFile).in(filename).out(err, filedata)
|
|
21
|
+
.sync(markdown, filedata).out(filedata)
|
|
22
|
+
.async(prepareDirectory, outDirName).out(dircreated)
|
|
23
|
+
.async(writeOutput, html, user).out(err, bytesWritten).after(prepareDirectory)
|
|
24
|
+
.async(loadEmailTemplate).out(err, emailmd)
|
|
25
|
+
.sync(markdown, emailmd).out(emailHtml)
|
|
26
|
+
.sync(customizeEmail, user, emailHtml).out(custEmailHtml)
|
|
27
|
+
.sync(deliverEmail, custEmailHtml).out(deliveredEmail).after(writeOutput)
|
|
28
|
+
.cb(err, html, user, bytesWritten);
|
|
29
|
+
});
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
var reactMod = require(__dirname+'/../lib/react.js');
|
|
4
|
+
var react = reactMod.react;
|
|
5
|
+
|
|
6
|
+
var r = react('allStart, titlesFile, numQueries, numFactors, cb').define(
|
|
7
|
+
openTitlesStream, 'titlesFile -> err, fileStream', { tasks: [
|
|
8
|
+
split, 'fileStream -> err, lineStream',
|
|
9
|
+
filterLines, 'lineStream, numQueries -> err, filteredLineStream',
|
|
10
|
+
trimLines, 'filteredLineStream -> err, trimmedLineStream',
|
|
11
|
+
recordTime, ' -> returns qStart', { after: trimLines },
|
|
12
|
+
runQuery, 'trimmedLineStream, numFactors -> err, qResults', { after: recordTime },
|
|
13
|
+
calcTime, 'qStart -> returns qTime', { after: runQuery },
|
|
14
|
+
sumTotal, 'qTime -> returns qTotal', { reduce: true }
|
|
15
|
+
], cb:'-> err, qTotal' },
|
|
16
|
+
calcTime, 'allStart -> returns allElapsed', { after: openTitlesStream }
|
|
17
|
+
).callbackDef('allElapsed, qTotal, numQueries, numFactors');
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
//new simpler syntax
|
|
22
|
+
|
|
23
|
+
var react = require('react');
|
|
24
|
+
|
|
25
|
+
var loadAndSave = react('allStart, titlesFile, numQueries, numFactors, cb',
|
|
26
|
+
foo, 'bar -> err, baz',
|
|
27
|
+
cat, 'baz -> err, zoo',
|
|
28
|
+
'-> err, allElapse, qTotal');
|
|
29
|
+
|
|
30
|
+
var loadAndSave = react('allStart, titlesFile, numQueries, numFactors, cb', [
|
|
31
|
+
foo, 'bar -> err, baz',
|
|
32
|
+
cat, 'baz -> returns zoo'
|
|
33
|
+
], 'err, allElapse, qTotal');
|
|
34
|
+
|
|
35
|
+
var loadAndSave = react('allStart, titlesFile, numQueries, numFactors, cb', [
|
|
36
|
+
foo, 'bar => err, baz',
|
|
37
|
+
cat, 'baz -> returns zoo'
|
|
38
|
+
], 'err, allElapse, qTotal');
|
|
39
|
+
|
|
40
|
+
var loadAndSave = react('allStart, titlesFile, numQueries, numFactors, cb', [
|
|
41
|
+
foo, 'bar -> err, baz',
|
|
42
|
+
'zoo <- ', cat, 'baz',
|
|
43
|
+
], 'err, allElapse, qTotal');
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
var loadAndSave = react('allStart, titlesFile, numQueries, numFactors, cb -> err, allElapse, qTotal',
|
|
48
|
+
foo, 'bar -> err, baz',
|
|
49
|
+
cat, 'baz -> err, zoo');
|
|
50
|
+
loadAndSave(1, 2, 3, cb);
|
|
51
|
+
|
|
52
|
+
OR using AST
|
|
53
|
+
|
|
54
|
+
var loadAndSave = react();
|
|
55
|
+
loadAndSave.ast.inputs(['one', 'two'])
|
|
56
|
+
.tasks({ })
|
|
57
|
+
.outTask({ });
|
|
58
|
+
|
|
59
|
+
loadAndSave(1,2,cb);
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
|
|
5
|
+
function loadUser(uid, cb) { setTimeout(cb, 100, null, "User" + uid); }
|
|
6
|
+
function loadFile(filename, cb) { setTimeout(cb, 100, null, 'Filedata' + filename); }
|
|
7
|
+
function markdown(filedata) { return 'html' + filedata; }
|
|
8
|
+
function prepareDirectory(outDirname, cb) { setTimeout(cb, 200, null, 'dircreated-' + outDirname); }
|
|
9
|
+
function writeOutput(html, user, cb) { setTimeout(cb, 300, null, html + '_bytesWritten'); }
|
|
10
|
+
function loadEmailTemplate(cb) { setTimeout(cb, 50, null, 'emailmd'); }
|
|
11
|
+
function customizeEmail(user, emailHtml, cb) { return 'cust-' + user + emailHtml; }
|
|
12
|
+
function deliverEmail(custEmailHtml, cb) { setTimeout(cb, 100, null, 'delivered-' + custEmailHtml); }
|
|
13
|
+
|
|
14
|
+
function useHtml(err, html, user, bytesWritten) {
|
|
15
|
+
if (err) {
|
|
16
|
+
console.log('***Error: %s', err);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
console.log('final result: %s, user: %s, written:%s', html, user, bytesWritten);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
var fn = react(function (r, filename, uid, outDirname, cb) {
|
|
25
|
+
var err, user, html, bytesWritten;
|
|
26
|
+
r.sync(loadUser).in(uid).out(err, user)
|
|
27
|
+
.cb(err, html, user, bytesWritten);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
/*
|
|
32
|
+
var r = react();
|
|
33
|
+
r.ast.inputNames = ['filename', 'uid', 'outDirname', 'cb'];
|
|
34
|
+
r.ast.taskDefs = [
|
|
35
|
+
{ f:loadUser, a:['uid'], cb:['user'] },
|
|
36
|
+
{ f:loadFile, a:['filename'], cb:['filedata'] },
|
|
37
|
+
{ f:markdown, a:['filedata'], ret:['html'] },
|
|
38
|
+
{ f:prepareDirectory, a:['outDirname'], cb:['dircreated'] },
|
|
39
|
+
{ f:writeOutput, a:['html', 'user'], cb:['bytesWritten'], after:['prepareDirectory'] },
|
|
40
|
+
{ f:loadEmailTemplate, a:[], cb:['emailmd'] },
|
|
41
|
+
{ f:markdown, a:['emailmd'], ret:['emailHtml'] },
|
|
42
|
+
{ f:customizeEmail, a:['user', 'emailHtml'], ret:['custEmailHtml'] },
|
|
43
|
+
{ f:deliverEmail, a:['custEmailHtml'], cb:['deliveredEmail'], after:['writeOutput'] }
|
|
44
|
+
];
|
|
45
|
+
r.ast.finalOutputNames = ['html', 'user', 'bytesWritten'];
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
var fn = react(function (r, filename, uid, outDirname, cb) {
|
|
49
|
+
var filedata, outDirName, dircreated, emailmd, emailHtml, custEmailHtml, deliveredEmail;
|
|
50
|
+
var err, user, html, bytesWritten;
|
|
51
|
+
|
|
52
|
+
r.async(loadUser).in(uid).out(err, user)
|
|
53
|
+
.async(loadFile).in(filename).out(filedata)
|
|
54
|
+
.sync(markdown).in(filedata).out(html)
|
|
55
|
+
.async(prepareDirectory).in(outDirName).out(dircreated)
|
|
56
|
+
.async(writeOutput).in(html, user).out(bytesWritten).after(prepareDirectory)
|
|
57
|
+
.async(loadEmailTemplate).out(emailmd)
|
|
58
|
+
.sync(markdown).in(emailmd).out(emailHtml)
|
|
59
|
+
.sync(customizeEmail).in(user, emailHtml).out(custEmailHtml)
|
|
60
|
+
.async(deliveredEmail).in(custEmailHtml).out(deliveredEmail).after(writeOutput)
|
|
61
|
+
.cb(err, html, user, bytesWritten);
|
|
62
|
+
});
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
|
|
5
|
+
function loadUser(uid, cb) { setTimeout(cb, 100, null, "User" + uid); }
|
|
6
|
+
function loadFile(filename, cb) { setTimeout(cb, 100, null, 'Filedata' + filename); }
|
|
7
|
+
function markdown(filedata) { return 'html' + filedata; }
|
|
8
|
+
function prepareDirectory(outDirname, cb) { setTimeout(cb, 200, null, 'dircreated-' + outDirname); }
|
|
9
|
+
function writeOutput(html, user, cb) { setTimeout(cb, 300, null, html + '_bytesWritten'); }
|
|
10
|
+
function loadEmailTemplate(cb) { setTimeout(cb, 50, null, 'emailmd'); }
|
|
11
|
+
function customizeEmail(user, emailHtml, cb) { return 'cust-' + user + emailHtml; }
|
|
12
|
+
function deliverEmail(custEmailHtml, cb) { setTimeout(cb, 100, null, 'delivered-' + custEmailHtml); }
|
|
13
|
+
|
|
14
|
+
function useHtml(err, html, user, bytesWritten) {
|
|
15
|
+
if (err) {
|
|
16
|
+
console.log('***Error: %s', err);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
console.log('final result: %s, user: %s, written:%s', html, user, bytesWritten);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
var fn = react(function (r, filename, uid, outDirname, cb) {
|
|
25
|
+
var err, user, html, bytesWritten;
|
|
26
|
+
r.sync(loadUser).in(uid).out(err, user)
|
|
27
|
+
.cb(err, html, user, bytesWritten);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
/*
|
|
32
|
+
var r = react();
|
|
33
|
+
r.ast.inputNames = ['filename', 'uid', 'outDirname', 'cb'];
|
|
34
|
+
r.ast.taskDefs = [
|
|
35
|
+
{ f:loadUser, a:['uid'], cb:['user'] },
|
|
36
|
+
{ f:loadFile, a:['filename'], cb:['filedata'] },
|
|
37
|
+
{ f:markdown, a:['filedata'], ret:['html'] },
|
|
38
|
+
{ f:prepareDirectory, a:['outDirname'], cb:['dircreated'] },
|
|
39
|
+
{ f:writeOutput, a:['html', 'user'], cb:['bytesWritten'], after:['prepareDirectory'] },
|
|
40
|
+
{ f:loadEmailTemplate, a:[], cb:['emailmd'] },
|
|
41
|
+
{ f:markdown, a:['emailmd'], ret:['emailHtml'] },
|
|
42
|
+
{ f:customizeEmail, a:['user', 'emailHtml'], ret:['custEmailHtml'] },
|
|
43
|
+
{ f:deliverEmail, a:['custEmailHtml'], cb:['deliveredEmail'], after:['writeOutput'] }
|
|
44
|
+
];
|
|
45
|
+
r.ast.finalOutputNames = ['html', 'user', 'bytesWritten'];
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
var fn = react(function (r, filename, uid, outDirname, cb,
|
|
49
|
+
filedata, outDirName, dircreated, emailmd, emailHtml,
|
|
50
|
+
custEmailHtml, deliveredEmail,
|
|
51
|
+
err, user, html, bytesWritten) {
|
|
52
|
+
|
|
53
|
+
r.async(loadUser, [uid], [err, user])
|
|
54
|
+
.async(loadFile, [filename], [filedata])
|
|
55
|
+
.sync(markdown, [filedata], filedata)
|
|
56
|
+
.async(prepareDirectory, [outDirName], [dircreated])
|
|
57
|
+
.async(writeOutput, [html, user], [err, bytesWritten], { after: prepareDirectory })
|
|
58
|
+
.async(loadEmailTemplate, [], [emailmd])
|
|
59
|
+
.sync(markdown, [emailmd], emailHtml)
|
|
60
|
+
.sync(customizeEmail, [user, emailHtml], custEmailHtml)
|
|
61
|
+
.sync(deliverEmail, [custEmailHtml], [deliveredEmail], { after: writeOutput })
|
|
62
|
+
.cb(err, html, user, bytesWritten);
|
|
63
|
+
});
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
|
|
5
|
+
function loadUser(uid, cb) { setTimeout(cb, 100, null, "User" + uid); }
|
|
6
|
+
function loadFile(filename, cb) { setTimeout(cb, 100, null, 'Filedata' + filename); }
|
|
7
|
+
function markdown(filedata) { return 'html' + filedata; }
|
|
8
|
+
function prepareDirectory(outDirname, cb) { setTimeout(cb, 200, null, 'dircreated-' + outDirname); }
|
|
9
|
+
function writeOutput(html, user, cb) { setTimeout(cb, 300, null, html + '_bytesWritten'); }
|
|
10
|
+
function loadEmailTemplate(cb) { setTimeout(cb, 50, null, 'emailmd'); }
|
|
11
|
+
function customizeEmail(user, emailHtml, cb) { return 'cust-' + user + emailHtml; }
|
|
12
|
+
function deliverEmail(custEmailHtml, cb) { setTimeout(cb, 100, null, 'delivered-' + custEmailHtml); }
|
|
13
|
+
|
|
14
|
+
function useHtml(err, html, user, bytesWritten) {
|
|
15
|
+
if (err) {
|
|
16
|
+
console.log('***Error: %s', err);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
console.log('final result: %s, user: %s, written:%s', html, user, bytesWritten);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
var fn = react(function (r, filename, uid, outDirname, cb) {
|
|
25
|
+
var err, user, html, bytesWritten;
|
|
26
|
+
r.sync(loadUser).in(uid).out(err, user)
|
|
27
|
+
.cb(err, html, user, bytesWritten);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
/*
|
|
32
|
+
var r = react();
|
|
33
|
+
r.ast.inputNames = ['filename', 'uid', 'outDirname', 'cb'];
|
|
34
|
+
r.ast.taskDefs = [
|
|
35
|
+
{ f:loadUser, a:['uid'], cb:['user'] },
|
|
36
|
+
{ f:loadFile, a:['filename'], cb:['filedata'] },
|
|
37
|
+
{ f:markdown, a:['filedata'], ret:['html'] },
|
|
38
|
+
{ f:prepareDirectory, a:['outDirname'], cb:['dircreated'] },
|
|
39
|
+
{ f:writeOutput, a:['html', 'user'], cb:['bytesWritten'], after:['prepareDirectory'] },
|
|
40
|
+
{ f:loadEmailTemplate, a:[], cb:['emailmd'] },
|
|
41
|
+
{ f:markdown, a:['emailmd'], ret:['emailHtml'] },
|
|
42
|
+
{ f:customizeEmail, a:['user', 'emailHtml'], ret:['custEmailHtml'] },
|
|
43
|
+
{ f:deliverEmail, a:['custEmailHtml'], cb:['deliveredEmail'], after:['writeOutput'] }
|
|
44
|
+
];
|
|
45
|
+
r.ast.finalOutputNames = ['html', 'user', 'bytesWritten'];
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
var fn = react(function (r, filename, uid, outDirname, cb,
|
|
49
|
+
filedata, outDirName, dircreated, emailmd, emailHtml,
|
|
50
|
+
custEmailHtml, deliveredEmail,
|
|
51
|
+
err, user, html, bytesWritten) {
|
|
52
|
+
|
|
53
|
+
r.async(loadUser, uid).cb(err, user)
|
|
54
|
+
.async(loadFile, filename).cb(err, filedata)
|
|
55
|
+
.sync(markdown, filedata).returns(filedata)
|
|
56
|
+
.async(prepareDirectory, outDirName).cb(dircreated)
|
|
57
|
+
.async(writeOutput, html, user).cb(err, bytesWritten).after(prepareDirectory)
|
|
58
|
+
.async(loadEmailTemplate).cb(err, emailmd)
|
|
59
|
+
.sync(markdown, emailmd).returns(emailHtml)
|
|
60
|
+
.sync(customizeEmail, user, emailHtml).returns(custEmailHtml)
|
|
61
|
+
.sync(deliverEmail, custEmailHtml).returns(deliveredEmail).after(writeOutput)
|
|
62
|
+
.finalCb(err, html, user, bytesWritten);
|
|
63
|
+
});
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
|
|
5
|
+
function loadUser(uid, cb) { setTimeout(cb, 100, null, "User" + uid); }
|
|
6
|
+
function loadFile(filename, cb) { setTimeout(cb, 100, null, 'Filedata' + filename); }
|
|
7
|
+
function markdown(filedata) { return 'html' + filedata; }
|
|
8
|
+
function prepareDirectory(outDirname, cb) { setTimeout(cb, 200, null, 'dircreated-' + outDirname); }
|
|
9
|
+
function writeOutput(html, user, cb) { setTimeout(cb, 300, null, html + '_bytesWritten'); }
|
|
10
|
+
function loadEmailTemplate(cb) { setTimeout(cb, 50, null, 'emailmd'); }
|
|
11
|
+
function customizeEmail(user, emailHtml, cb) { return 'cust-' + user + emailHtml; }
|
|
12
|
+
function deliverEmail(custEmailHtml, cb) { setTimeout(cb, 100, null, 'delivered-' + custEmailHtml); }
|
|
13
|
+
|
|
14
|
+
function useHtml(err, html, user, bytesWritten) {
|
|
15
|
+
if (err) {
|
|
16
|
+
console.log('***Error: %s', err);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
console.log('final result: %s, user: %s, written:%s', html, user, bytesWritten);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
var fn = react(function (r, filename, uid, outDirname, cb) {
|
|
25
|
+
var err, user, html, bytesWritten;
|
|
26
|
+
r.sync(loadUser).in(uid).out(err, user)
|
|
27
|
+
.cb(err, html, user, bytesWritten);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
/*
|
|
32
|
+
var r = react();
|
|
33
|
+
r.ast.inputNames = ['filename', 'uid', 'outDirname', 'cb'];
|
|
34
|
+
r.ast.taskDefs = [
|
|
35
|
+
{ f:loadUser, a:['uid'], cb:['user'] },
|
|
36
|
+
{ f:loadFile, a:['filename'], cb:['filedata'] },
|
|
37
|
+
{ f:markdown, a:['filedata'], ret:['html'] },
|
|
38
|
+
{ f:prepareDirectory, a:['outDirname'], cb:['dircreated'] },
|
|
39
|
+
{ f:writeOutput, a:['html', 'user'], cb:['bytesWritten'], after:['prepareDirectory'] },
|
|
40
|
+
{ f:loadEmailTemplate, a:[], cb:['emailmd'] },
|
|
41
|
+
{ f:markdown, a:['emailmd'], ret:['emailHtml'] },
|
|
42
|
+
{ f:customizeEmail, a:['user', 'emailHtml'], ret:['custEmailHtml'] },
|
|
43
|
+
{ f:deliverEmail, a:['custEmailHtml'], cb:['deliveredEmail'], after:['writeOutput'] }
|
|
44
|
+
];
|
|
45
|
+
r.ast.finalOutputNames = ['html', 'user', 'bytesWritten'];
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
var fn = react(function (filename, uid, outDirname, cb,
|
|
49
|
+
R, filedata, outDirName, dircreated, emailmd, emailHtml,
|
|
50
|
+
custEmailHtml, deliveredEmail, err, user, html, bytesWritten) {
|
|
51
|
+
R.async(loadUser, uid).cb(err, user)
|
|
52
|
+
.async(loadFile, filename).cb(err, filedata)
|
|
53
|
+
.sync(markdown, filedata).returns(filedata)
|
|
54
|
+
.async(prepareDirectory, outDirName).cb(dircreated)
|
|
55
|
+
.async(writeOutput, html, user).cb(err, bytesWritten).after(prepareDirectory)
|
|
56
|
+
.async(loadEmailTemplate).cb(err, emailmd)
|
|
57
|
+
.sync(markdown, emailmd).returns(emailHtml)
|
|
58
|
+
.sync(customizeEmail, user, emailHtml).returns(custEmailHtml)
|
|
59
|
+
.sync(deliverEmail, custEmailHtml).returns(deliveredEmail).after(writeOutput)
|
|
60
|
+
.finalCb(err, html, user, bytesWritten);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
|
|
5
|
+
function loadUser(uid, cb) { setTimeout(cb, 100, null, "User" + uid); }
|
|
6
|
+
function loadFile(filename, cb) { setTimeout(cb, 100, null, 'Filedata' + filename); }
|
|
7
|
+
function markdown(filedata) { return 'html' + filedata; }
|
|
8
|
+
function prepareDirectory(outDirname, cb) { setTimeout(cb, 200, null, 'dircreated-' + outDirname); }
|
|
9
|
+
function writeOutput(html, user, cb) { setTimeout(cb, 300, null, html + '_bytesWritten'); }
|
|
10
|
+
function loadEmailTemplate(cb) { setTimeout(cb, 50, null, 'emailmd'); }
|
|
11
|
+
function customizeEmail(user, emailHtml, cb) { return 'cust-' + user + emailHtml; }
|
|
12
|
+
function deliverEmail(custEmailHtml, cb) { setTimeout(cb, 100, null, 'delivered-' + custEmailHtml); }
|
|
13
|
+
|
|
14
|
+
function useHtml(err, html, user, bytesWritten) {
|
|
15
|
+
if (err) {
|
|
16
|
+
console.log('***Error: %s', err);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
console.log('final result: %s, user: %s, written:%s', html, user, bytesWritten);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
var fn = react(function (r, filename, uid, outDirname, cb) {
|
|
25
|
+
var err, user, html, bytesWritten;
|
|
26
|
+
r.sync(loadUser).in(uid).out(err, user)
|
|
27
|
+
.cb(err, html, user, bytesWritten);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
/*
|
|
32
|
+
var r = react();
|
|
33
|
+
r.ast.inputNames = ['filename', 'uid', 'outDirname', 'cb'];
|
|
34
|
+
r.ast.taskDefs = [
|
|
35
|
+
{ f:loadUser, a:['uid'], cb:['user'] },
|
|
36
|
+
{ f:loadFile, a:['filename'], cb:['filedata'] },
|
|
37
|
+
{ f:markdown, a:['filedata'], ret:['html'] },
|
|
38
|
+
{ f:prepareDirectory, a:['outDirname'], cb:['dircreated'] },
|
|
39
|
+
{ f:writeOutput, a:['html', 'user'], cb:['bytesWritten'], after:['prepareDirectory'] },
|
|
40
|
+
{ f:loadEmailTemplate, a:[], cb:['emailmd'] },
|
|
41
|
+
{ f:markdown, a:['emailmd'], ret:['emailHtml'] },
|
|
42
|
+
{ f:customizeEmail, a:['user', 'emailHtml'], ret:['custEmailHtml'] },
|
|
43
|
+
{ f:deliverEmail, a:['custEmailHtml'], cb:['deliveredEmail'], after:['writeOutput'] }
|
|
44
|
+
];
|
|
45
|
+
r.ast.finalOutputNames = ['html', 'user', 'bytesWritten'];
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
var fn = react(function (R, filename, uid, outDirname, cb) {
|
|
49
|
+
|
|
50
|
+
//local vars used
|
|
51
|
+
var filedata = R.var();
|
|
52
|
+
var outDirName = R.var();
|
|
53
|
+
var dircreated = R.var();
|
|
54
|
+
var emailmd = R.var();
|
|
55
|
+
var emailHtml = R.var();
|
|
56
|
+
var custEmailHtml = R.var();
|
|
57
|
+
var deliveredEmail = R.var();
|
|
58
|
+
var err = R.var();
|
|
59
|
+
var user = R.var();
|
|
60
|
+
var html = R.var();
|
|
61
|
+
var bytesWritten = R.var();
|
|
62
|
+
|
|
63
|
+
R.out(err, html, user, bytesWritten)
|
|
64
|
+
.async(loadUser, uid).cb(err, user)
|
|
65
|
+
.async(loadFile, filename).cb(err, filedata)
|
|
66
|
+
.sync(markdown, filedata).returns(filedata)
|
|
67
|
+
.async(prepareDirectory, outDirName).cb(dircreated)
|
|
68
|
+
.async(writeOutput, html, user).cb(err, bytesWritten).after(prepareDirectory)
|
|
69
|
+
.async(loadEmailTemplate).cb(err, emailmd)
|
|
70
|
+
.sync(markdown, emailmd).returns(emailHtml)
|
|
71
|
+
.sync(customizeEmail, user, emailHtml).returns(custEmailHtml)
|
|
72
|
+
.sync(deliverEmail, custEmailHtml).returns(deliveredEmail).after(writeOutput);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
|