mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
data-provider attr is now always an expression
This commit is contained in:
parent
0cfd079479
commit
96205fc607
@ -1011,7 +1011,7 @@ template.render({
|
|||||||
```
|
```
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<async-fragment data-providers="${data.userProfileDataProvider}"
|
<async-fragment data-provider="data.userProfileDataProvider"
|
||||||
var="userProfile"
|
var="userProfile"
|
||||||
arg-userId="${data.userId}">
|
arg-userId="${data.userId}">
|
||||||
|
|
||||||
|
|||||||
26
package.json
26
package.json
@ -23,19 +23,19 @@
|
|||||||
"events": "^1.0.2",
|
"events": "^1.0.2",
|
||||||
"htmlparser2": "^3.7.2",
|
"htmlparser2": "^3.7.2",
|
||||||
"minimatch": "^0.2.14",
|
"minimatch": "^0.2.14",
|
||||||
"property-handlers": "^0.2.1-beta",
|
"property-handlers": "^0.2.1",
|
||||||
"raptor-args": "^1.0.0-beta",
|
"raptor-args": "^1.0.0",
|
||||||
"raptor-json": "^1.0.0-beta",
|
"raptor-json": "^1.0.0",
|
||||||
"raptor-logging": "^1.0.0-beta",
|
"raptor-logging": "^1.0.0",
|
||||||
"raptor-modules": "^1.0.0-beta",
|
"raptor-modules": "^1.0.0",
|
||||||
"raptor-polyfill": "^1.0.0-beta",
|
"raptor-polyfill": "^1.0.0",
|
||||||
"raptor-promises": "^1.0.0-beta",
|
"raptor-promises": "^1.0.0",
|
||||||
"raptor-regexp": "^1.0.0-beta",
|
"raptor-regexp": "^1.0.0",
|
||||||
"async-writer": "^1.0.0-beta",
|
"async-writer": "^1.0.0",
|
||||||
"raptor-strings": "^1.0.0-beta",
|
"raptor-strings": "^1.0.0",
|
||||||
"marko-async": "^1.1.0",
|
"marko-async": "^1.1.0",
|
||||||
"marko-layout": "^1.1.0",
|
"marko-layout": "^1.1.0",
|
||||||
"raptor-util": "^1.0.0-beta",
|
"raptor-util": "^1.0.0",
|
||||||
"sax": "^0.6.0"
|
"sax": "^0.6.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@ -43,8 +43,8 @@
|
|||||||
"dustjs-linkedin": "^2.3.4",
|
"dustjs-linkedin": "^2.3.4",
|
||||||
"jshint": "^2.5.0",
|
"jshint": "^2.5.0",
|
||||||
"mocha": "~1.15.1",
|
"mocha": "~1.15.1",
|
||||||
"raptor-cache": "^1.0.0-beta",
|
"raptor-cache": "^1.0.0",
|
||||||
"raptor-data-providers": "^1.0.0-beta",
|
"raptor-data-providers": "^1.0.0",
|
||||||
"through": "^2.3.4"
|
"through": "^2.3.4"
|
||||||
},
|
},
|
||||||
"license": "Apache License v2.0",
|
"license": "Apache License v2.0",
|
||||||
|
|||||||
@ -2,7 +2,6 @@
|
|||||||
var chai = require('chai');
|
var chai = require('chai');
|
||||||
chai.Assertion.includeStack = true;
|
chai.Assertion.includeStack = true;
|
||||||
require('chai').should();
|
require('chai').should();
|
||||||
var expect = require('chai').expect;
|
|
||||||
var nodePath = require('path');
|
var nodePath = require('path');
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
|
|
||||||
@ -42,11 +41,6 @@ function testRender(path, data, done, options) {
|
|||||||
|
|
||||||
require('../compiler').defaultOptions.checkUpToDate = false;
|
require('../compiler').defaultOptions.checkUpToDate = false;
|
||||||
|
|
||||||
if (options.dataProviders) {
|
|
||||||
var dataProviders = require('raptor-data-providers').forContext(out);
|
|
||||||
dataProviders.register(options.dataProviders);
|
|
||||||
}
|
|
||||||
|
|
||||||
marko.render(inputPath, data, out)
|
marko.render(inputPath, data, out)
|
||||||
.on('end', function() {
|
.on('end', function() {
|
||||||
var output = out.getOutput();
|
var output = out.getOutput();
|
||||||
@ -92,101 +86,85 @@ describe('marko/marko-async' , function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should render a simple template with async fragments correctly (1)', function(done) {
|
it('should render a simple template with async fragments correctly (1)', function(done) {
|
||||||
testRender('test-project/html-templates/async-fragment-ordering.marko', {}, done, {
|
testRender('test-project/html-templates/async-fragment-ordering.marko', {
|
||||||
dataProviders: {
|
'D1': delayedDataProvider(100),
|
||||||
'D1': delayedDataProvider(100),
|
'D2': delayedDataProvider(300),
|
||||||
'D2': delayedDataProvider(300),
|
'D3': delayedDataProvider(200),
|
||||||
'D3': delayedDataProvider(200),
|
'D4': delayedDataProvider(800)
|
||||||
'D4': delayedDataProvider(800)
|
}, done);
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should render a simple template with async fragments correctly (2)', function(done) {
|
it('should render a simple template with async fragments correctly (2)', function(done) {
|
||||||
testRender('test-project/html-templates/async-fragment-ordering.marko', {}, done, {
|
testRender('test-project/html-templates/async-fragment-ordering.marko', {
|
||||||
dataProviders: {
|
'D1': delayedDataProvider(100),
|
||||||
'D1': delayedDataProvider(100),
|
'D2': delayedDataProvider(200),
|
||||||
'D2': delayedDataProvider(200),
|
'D3': delayedDataProvider(300),
|
||||||
'D3': delayedDataProvider(300),
|
'D4': delayedDataProvider(150)
|
||||||
'D4': delayedDataProvider(150)
|
}, done);
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should render a simple template with async fragments correctly (3)', function(done) {
|
it('should render a simple template with async fragments correctly (3)', function(done) {
|
||||||
testRender('test-project/html-templates/async-fragment-ordering.marko', {}, done, {
|
testRender('test-project/html-templates/async-fragment-ordering.marko', {
|
||||||
dataProviders: {
|
'D1': delayedDataProvider(800),
|
||||||
'D1': delayedDataProvider(800),
|
'D2': delayedDataProvider(200),
|
||||||
'D2': delayedDataProvider(200),
|
'D3': delayedDataProvider(300),
|
||||||
'D3': delayedDataProvider(300),
|
'D4': delayedDataProvider(100)
|
||||||
'D4': delayedDataProvider(100)
|
}, done);
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should render a simple template with async fragments correctly (4)', function(done) {
|
it('should render a simple template with async fragments correctly (4)', function(done) {
|
||||||
testRender('test-project/html-templates/async-fragment-ordering.marko', {}, done, {
|
testRender('test-project/html-templates/async-fragment-ordering.marko', {
|
||||||
dataProviders: {
|
'D1': delayedDataProvider(800),
|
||||||
'D1': delayedDataProvider(800),
|
'D2': delayedDataProvider(300),
|
||||||
'D2': delayedDataProvider(300),
|
'D3': delayedDataProvider(200),
|
||||||
'D3': delayedDataProvider(200),
|
'D4': delayedDataProvider(100)
|
||||||
'D4': delayedDataProvider(100)
|
}, done);
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should render a less simple template with async fragments correctly (1)', function(done) {
|
it('should render a less simple template with async fragments correctly (1)', function(done) {
|
||||||
testRender('test-project/html-templates/async-fragment-ordering2.marko', {}, done, {
|
testRender('test-project/html-templates/async-fragment-ordering2.marko', {
|
||||||
dataProviders: {
|
'D1': delayedDataProvider(100),
|
||||||
'D1': delayedDataProvider(100),
|
'D2': delayedDataProvider(300),
|
||||||
'D2': delayedDataProvider(300),
|
'D3': delayedDataProvider(200),
|
||||||
'D3': delayedDataProvider(200),
|
'D4': delayedDataProvider(800),
|
||||||
'D4': delayedDataProvider(800),
|
'D5': delayedDataProvider(900),
|
||||||
'D5': delayedDataProvider(900),
|
'D6': delayedDataProvider(100),
|
||||||
'D6': delayedDataProvider(100),
|
'D7': delayedDataProvider(50)
|
||||||
'D7': delayedDataProvider(50)
|
}, done);
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should render a less simple template with async fragments correctly (2)', function(done) {
|
it('should render a less simple template with async fragments correctly (2)', function(done) {
|
||||||
testRender('test-project/html-templates/async-fragment-ordering2.marko', {}, done, {
|
testRender('test-project/html-templates/async-fragment-ordering2.marko', {
|
||||||
dataProviders: {
|
'D1': delayedDataProvider(100),
|
||||||
'D1': delayedDataProvider(100),
|
'D2': delayedDataProvider(300),
|
||||||
'D2': delayedDataProvider(300),
|
'D3': delayedDataProvider(200),
|
||||||
'D3': delayedDataProvider(200),
|
'D4': delayedDataProvider(800),
|
||||||
'D4': delayedDataProvider(800),
|
'D5': delayedDataProvider(900),
|
||||||
'D5': delayedDataProvider(900),
|
'D6': delayedDataProvider(100),
|
||||||
'D6': delayedDataProvider(100),
|
'D7': delayedDataProvider(200)
|
||||||
'D7': delayedDataProvider(200)
|
}, done);
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should render a less simple template with async fragments correctly (3)', function(done) {
|
it('should render a less simple template with async fragments correctly (3)', function(done) {
|
||||||
testRender('test-project/html-templates/async-fragment-ordering2.marko', {}, done, {
|
testRender('test-project/html-templates/async-fragment-ordering2.marko', {
|
||||||
dataProviders: {
|
'D1': delayedDataProvider(900),
|
||||||
'D1': delayedDataProvider(900),
|
'D2': delayedDataProvider(300),
|
||||||
'D2': delayedDataProvider(300),
|
'D3': delayedDataProvider(200),
|
||||||
'D3': delayedDataProvider(200),
|
'D4': delayedDataProvider(800),
|
||||||
'D4': delayedDataProvider(800),
|
'D5': delayedDataProvider(100),
|
||||||
'D5': delayedDataProvider(100),
|
'D6': delayedDataProvider(100),
|
||||||
'D6': delayedDataProvider(100),
|
'D7': delayedDataProvider(200)
|
||||||
'D7': delayedDataProvider(200)
|
}, done);
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should allow for using macros inside async fragments", function(done) {
|
it("should allow for using macros inside async fragments", function(done) {
|
||||||
testRender('test-project/html-templates/async-fragment-macros.marko', {}, done, {
|
testRender('test-project/html-templates/async-fragment-macros.marko', {
|
||||||
dataProviders: {
|
'D1': delayedDataProvider(100)
|
||||||
'D1': delayedDataProvider(100)
|
}, done);
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should allow for global data providers", function(done) {
|
it("should allow for global data providers", function(done) {
|
||||||
require('raptor-data-providers').register({
|
testRender('test-project/html-templates/async-fragment-data-providers.marko', {
|
||||||
'sharedData': function(args, done) {
|
'sharedData': function(args, done) {
|
||||||
var deferred = require('raptor-promises').defer();
|
var deferred = require('raptor-promises').defer();
|
||||||
|
|
||||||
@ -197,14 +175,9 @@ describe('marko/marko-async' , function() {
|
|||||||
}, 100);
|
}, 100);
|
||||||
|
|
||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
}
|
},
|
||||||
});
|
'contextData': delayedDataProvider(100, {name: "testContextData"})
|
||||||
|
}, done);
|
||||||
testRender('test-project/html-templates/async-fragment-data-providers.marko', {}, done, {
|
|
||||||
dataProviders: {
|
|
||||||
'contextData': delayedDataProvider(100, {name: "testContextData"})
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should allow for data args", function(done) {
|
it("should allow for data args", function(done) {
|
||||||
@ -233,15 +206,13 @@ describe('marko/marko-async' , function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
testRender('test-project/html-templates/async-fragment-args.marko', {}, done, {
|
testRender('test-project/html-templates/async-fragment-args.marko', {
|
||||||
dataProviders: {
|
'userInfo': function(arg, done) {
|
||||||
'userInfo': function(arg, done) {
|
setTimeout(function() {
|
||||||
setTimeout(function() {
|
done(null, users[arg.userId]);
|
||||||
done(null, users[arg.userId]);
|
}, 100);
|
||||||
}, 100);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
}, done);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should allow a data provider to be a promise", function(done) {
|
it("should allow a data provider to be a promise", function(done) {
|
||||||
@ -251,13 +222,11 @@ describe('marko/marko-async' , function() {
|
|||||||
deferred.resolve('Test promise');
|
deferred.resolve('Test promise');
|
||||||
}, 200);
|
}, 200);
|
||||||
|
|
||||||
testRender('test-project/html-templates/async-fragment-promise.marko', {}, done, {
|
testRender('test-project/html-templates/async-fragment-promise.marko', {
|
||||||
dataProviders: {
|
'promiseData': function(arg, done) {
|
||||||
'promiseData': function(arg, done) {
|
return deferred.promise;
|
||||||
return deferred.promise;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
}, done);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should allow functions that return promises as data providers", function(done) {
|
it("should allow functions that return promises as data providers", function(done) {
|
||||||
@ -1,3 +1,3 @@
|
|||||||
<async-fragment data-provider="$data.nameDataProvider" var="name">
|
<async-fragment data-provider="data.nameDataProvider" var="name">
|
||||||
Hello $name!
|
Hello $name!
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li for="userId in [0, 1, 2, 3]">
|
<li for="userId in [0, 1, 2, 3]">
|
||||||
<async-fragment data-provider="userInfo" var="userInfo" arg-userId="$userId">
|
<async-fragment data-provider="data.userInfo" var="userInfo" arg-userId="$userId">
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<b>Name:</b> $userInfo.name
|
<b>Name:</b> $userInfo.name
|
||||||
@ -14,4 +14,4 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<async-fragment data-provider="contextData" var="d1">
|
<async-fragment data-provider="data.contextData" var="d1">
|
||||||
$d1.name
|
$d1.name
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
|
|
||||||
<async-fragment data-provider="sharedData" var="d2">
|
<async-fragment data-provider="data.sharedData" var="d2">
|
||||||
$d2.name
|
$d2.name
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
<async-fragment data-provider="${data.userInfo}" var="userInfo">
|
<async-fragment data-provider="data.userInfo" var="userInfo">
|
||||||
Hello $userInfo.name
|
Hello $userInfo.name
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<def function="asyncMacro(num)">
|
<def function="asyncMacro(num)">
|
||||||
$num
|
$num
|
||||||
</def>1
|
</def>1
|
||||||
<async-fragment data-provider="D1">
|
<async-fragment data-provider="data.D1" var="D1">
|
||||||
<invoke function="asyncMacro" num="2"/>
|
<invoke function="asyncMacro" num="2"/>
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
3
|
3
|
||||||
|
|||||||
@ -1,17 +1,17 @@
|
|||||||
1
|
1
|
||||||
<async-fragment data-provider="D1" var="d1">
|
<async-fragment data-provider="data.D1" var="d1">
|
||||||
2
|
2
|
||||||
<async-fragment data-provider="D2" var="d2">
|
<async-fragment data-provider="data.D2" var="d2">
|
||||||
3
|
3
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
4
|
4
|
||||||
<async-fragment data-provider="D3" var="d3">
|
<async-fragment data-provider="data.D3" var="d3">
|
||||||
5
|
5
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
6
|
6
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
7
|
7
|
||||||
<async-fragment data-provider="D4" var="d4">
|
<async-fragment data-provider="data.D4" var="d4">
|
||||||
8
|
8
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
9
|
9
|
||||||
@ -1,13 +1,13 @@
|
|||||||
1
|
1
|
||||||
<async-fragment data-provider="D1">
|
<async-fragment data-provider="data.D1" var="d1">
|
||||||
2
|
2
|
||||||
<async-fragment data-provider="D2" var="d2">
|
<async-fragment data-provider="data.D2" var="d2">
|
||||||
3
|
3
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
4
|
4
|
||||||
<async-fragment data-provider="D3" var="d3">
|
<async-fragment data-provider="data.D3" var="d3">
|
||||||
5
|
5
|
||||||
<async-fragment data-provider="D4" var="d4">
|
<async-fragment data-provider="data.D4" var="d4">
|
||||||
6
|
6
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
7
|
7
|
||||||
@ -15,19 +15,19 @@
|
|||||||
8
|
8
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
9
|
9
|
||||||
<async-fragment data-provider="D5" var="d5">
|
<async-fragment data-provider="data.D5" var="d5">
|
||||||
10
|
10
|
||||||
<async-fragment data-provider="D6" var="d6">
|
<async-fragment data-provider="data.D6" var="d6">
|
||||||
11
|
11
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
12
|
12
|
||||||
<async-fragment data-provider="D7" var="d7">
|
<async-fragment data-provider="data.D7" var="d7">
|
||||||
13
|
13
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
14
|
14
|
||||||
<async-fragment data-provider="D7" var="d7">
|
<async-fragment data-provider="data.D7" var="d7">
|
||||||
15
|
15
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
16
|
16
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
17
|
17
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
<async-fragment data-provider="promiseData" var="promiseData">
|
<async-fragment data-provider="data.promiseData" var="promiseData">
|
||||||
$promiseData
|
$promiseData
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
<async-fragment data-provider="${data.userInfo}" var="userInfo" timeout="100" timeout-message="Server is busy!">
|
<async-fragment data-provider="data.userInfo" var="userInfo" timeout="100" timeout-message="Server is busy!">
|
||||||
Hello World
|
Hello World
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li for="userId in [0, 1, 2, 3]">
|
<li for="userId in [0, 1, 2, 3]">
|
||||||
<async-fragment dependency="userInfo" var="userInfo" arg-userId="$userId">
|
<async-fragment data-provider="data.userInfo" var="userInfo" arg-userId="$userId">
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<b>Name:</b> $userInfo.name
|
<b>Name:</b> $userInfo.name
|
||||||
@ -18,4 +18,4 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</c-template>
|
</c-template>
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<c-template>
|
<c-template>
|
||||||
|
|
||||||
<async-fragment data-provider="${data.userInfo}" var="userInfo">
|
<async-fragment data-provider="data.userInfo" var="userInfo">
|
||||||
Hello $userInfo.name
|
Hello $userInfo.name
|
||||||
</async-fragment>
|
</async-fragment>
|
||||||
|
|
||||||
</c-template>
|
</c-template>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user