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
|
||||
<async-fragment data-providers="${data.userProfileDataProvider}"
|
||||
<async-fragment data-provider="data.userProfileDataProvider"
|
||||
var="userProfile"
|
||||
arg-userId="${data.userId}">
|
||||
|
||||
|
||||
26
package.json
26
package.json
@ -23,19 +23,19 @@
|
||||
"events": "^1.0.2",
|
||||
"htmlparser2": "^3.7.2",
|
||||
"minimatch": "^0.2.14",
|
||||
"property-handlers": "^0.2.1-beta",
|
||||
"raptor-args": "^1.0.0-beta",
|
||||
"raptor-json": "^1.0.0-beta",
|
||||
"raptor-logging": "^1.0.0-beta",
|
||||
"raptor-modules": "^1.0.0-beta",
|
||||
"raptor-polyfill": "^1.0.0-beta",
|
||||
"raptor-promises": "^1.0.0-beta",
|
||||
"raptor-regexp": "^1.0.0-beta",
|
||||
"async-writer": "^1.0.0-beta",
|
||||
"raptor-strings": "^1.0.0-beta",
|
||||
"property-handlers": "^0.2.1",
|
||||
"raptor-args": "^1.0.0",
|
||||
"raptor-json": "^1.0.0",
|
||||
"raptor-logging": "^1.0.0",
|
||||
"raptor-modules": "^1.0.0",
|
||||
"raptor-polyfill": "^1.0.0",
|
||||
"raptor-promises": "^1.0.0",
|
||||
"raptor-regexp": "^1.0.0",
|
||||
"async-writer": "^1.0.0",
|
||||
"raptor-strings": "^1.0.0",
|
||||
"marko-async": "^1.1.0",
|
||||
"marko-layout": "^1.1.0",
|
||||
"raptor-util": "^1.0.0-beta",
|
||||
"raptor-util": "^1.0.0",
|
||||
"sax": "^0.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
@ -43,8 +43,8 @@
|
||||
"dustjs-linkedin": "^2.3.4",
|
||||
"jshint": "^2.5.0",
|
||||
"mocha": "~1.15.1",
|
||||
"raptor-cache": "^1.0.0-beta",
|
||||
"raptor-data-providers": "^1.0.0-beta",
|
||||
"raptor-cache": "^1.0.0",
|
||||
"raptor-data-providers": "^1.0.0",
|
||||
"through": "^2.3.4"
|
||||
},
|
||||
"license": "Apache License v2.0",
|
||||
|
||||
@ -2,7 +2,6 @@
|
||||
var chai = require('chai');
|
||||
chai.Assertion.includeStack = true;
|
||||
require('chai').should();
|
||||
var expect = require('chai').expect;
|
||||
var nodePath = require('path');
|
||||
var fs = require('fs');
|
||||
|
||||
@ -42,11 +41,6 @@ function testRender(path, data, done, options) {
|
||||
|
||||
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)
|
||||
.on('end', function() {
|
||||
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) {
|
||||
testRender('test-project/html-templates/async-fragment-ordering.marko', {}, done, {
|
||||
dataProviders: {
|
||||
'D1': delayedDataProvider(100),
|
||||
'D2': delayedDataProvider(300),
|
||||
'D3': delayedDataProvider(200),
|
||||
'D4': delayedDataProvider(800)
|
||||
}
|
||||
});
|
||||
testRender('test-project/html-templates/async-fragment-ordering.marko', {
|
||||
'D1': delayedDataProvider(100),
|
||||
'D2': delayedDataProvider(300),
|
||||
'D3': delayedDataProvider(200),
|
||||
'D4': delayedDataProvider(800)
|
||||
}, done);
|
||||
});
|
||||
|
||||
it('should render a simple template with async fragments correctly (2)', function(done) {
|
||||
testRender('test-project/html-templates/async-fragment-ordering.marko', {}, done, {
|
||||
dataProviders: {
|
||||
'D1': delayedDataProvider(100),
|
||||
'D2': delayedDataProvider(200),
|
||||
'D3': delayedDataProvider(300),
|
||||
'D4': delayedDataProvider(150)
|
||||
}
|
||||
});
|
||||
testRender('test-project/html-templates/async-fragment-ordering.marko', {
|
||||
'D1': delayedDataProvider(100),
|
||||
'D2': delayedDataProvider(200),
|
||||
'D3': delayedDataProvider(300),
|
||||
'D4': delayedDataProvider(150)
|
||||
}, done);
|
||||
});
|
||||
|
||||
it('should render a simple template with async fragments correctly (3)', function(done) {
|
||||
testRender('test-project/html-templates/async-fragment-ordering.marko', {}, done, {
|
||||
dataProviders: {
|
||||
'D1': delayedDataProvider(800),
|
||||
'D2': delayedDataProvider(200),
|
||||
'D3': delayedDataProvider(300),
|
||||
'D4': delayedDataProvider(100)
|
||||
}
|
||||
});
|
||||
testRender('test-project/html-templates/async-fragment-ordering.marko', {
|
||||
'D1': delayedDataProvider(800),
|
||||
'D2': delayedDataProvider(200),
|
||||
'D3': delayedDataProvider(300),
|
||||
'D4': delayedDataProvider(100)
|
||||
}, done);
|
||||
});
|
||||
|
||||
it('should render a simple template with async fragments correctly (4)', function(done) {
|
||||
testRender('test-project/html-templates/async-fragment-ordering.marko', {}, done, {
|
||||
dataProviders: {
|
||||
'D1': delayedDataProvider(800),
|
||||
'D2': delayedDataProvider(300),
|
||||
'D3': delayedDataProvider(200),
|
||||
'D4': delayedDataProvider(100)
|
||||
}
|
||||
});
|
||||
testRender('test-project/html-templates/async-fragment-ordering.marko', {
|
||||
'D1': delayedDataProvider(800),
|
||||
'D2': delayedDataProvider(300),
|
||||
'D3': delayedDataProvider(200),
|
||||
'D4': delayedDataProvider(100)
|
||||
}, 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, {
|
||||
dataProviders: {
|
||||
'D1': delayedDataProvider(100),
|
||||
'D2': delayedDataProvider(300),
|
||||
'D3': delayedDataProvider(200),
|
||||
'D4': delayedDataProvider(800),
|
||||
'D5': delayedDataProvider(900),
|
||||
'D6': delayedDataProvider(100),
|
||||
'D7': delayedDataProvider(50)
|
||||
}
|
||||
});
|
||||
testRender('test-project/html-templates/async-fragment-ordering2.marko', {
|
||||
'D1': delayedDataProvider(100),
|
||||
'D2': delayedDataProvider(300),
|
||||
'D3': delayedDataProvider(200),
|
||||
'D4': delayedDataProvider(800),
|
||||
'D5': delayedDataProvider(900),
|
||||
'D6': delayedDataProvider(100),
|
||||
'D7': delayedDataProvider(50)
|
||||
}, 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, {
|
||||
dataProviders: {
|
||||
'D1': delayedDataProvider(100),
|
||||
'D2': delayedDataProvider(300),
|
||||
'D3': delayedDataProvider(200),
|
||||
'D4': delayedDataProvider(800),
|
||||
'D5': delayedDataProvider(900),
|
||||
'D6': delayedDataProvider(100),
|
||||
'D7': delayedDataProvider(200)
|
||||
}
|
||||
});
|
||||
testRender('test-project/html-templates/async-fragment-ordering2.marko', {
|
||||
'D1': delayedDataProvider(100),
|
||||
'D2': delayedDataProvider(300),
|
||||
'D3': delayedDataProvider(200),
|
||||
'D4': delayedDataProvider(800),
|
||||
'D5': delayedDataProvider(900),
|
||||
'D6': delayedDataProvider(100),
|
||||
'D7': delayedDataProvider(200)
|
||||
}, 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, {
|
||||
dataProviders: {
|
||||
'D1': delayedDataProvider(900),
|
||||
'D2': delayedDataProvider(300),
|
||||
'D3': delayedDataProvider(200),
|
||||
'D4': delayedDataProvider(800),
|
||||
'D5': delayedDataProvider(100),
|
||||
'D6': delayedDataProvider(100),
|
||||
'D7': delayedDataProvider(200)
|
||||
}
|
||||
});
|
||||
testRender('test-project/html-templates/async-fragment-ordering2.marko', {
|
||||
'D1': delayedDataProvider(900),
|
||||
'D2': delayedDataProvider(300),
|
||||
'D3': delayedDataProvider(200),
|
||||
'D4': delayedDataProvider(800),
|
||||
'D5': delayedDataProvider(100),
|
||||
'D6': delayedDataProvider(100),
|
||||
'D7': delayedDataProvider(200)
|
||||
}, done);
|
||||
});
|
||||
|
||||
it("should allow for using macros inside async fragments", function(done) {
|
||||
testRender('test-project/html-templates/async-fragment-macros.marko', {}, done, {
|
||||
dataProviders: {
|
||||
'D1': delayedDataProvider(100)
|
||||
}
|
||||
});
|
||||
testRender('test-project/html-templates/async-fragment-macros.marko', {
|
||||
'D1': delayedDataProvider(100)
|
||||
}, 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) {
|
||||
var deferred = require('raptor-promises').defer();
|
||||
|
||||
@ -197,14 +175,9 @@ describe('marko/marko-async' , function() {
|
||||
}, 100);
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
});
|
||||
|
||||
testRender('test-project/html-templates/async-fragment-data-providers.marko', {}, done, {
|
||||
dataProviders: {
|
||||
'contextData': delayedDataProvider(100, {name: "testContextData"})
|
||||
}
|
||||
});
|
||||
},
|
||||
'contextData': delayedDataProvider(100, {name: "testContextData"})
|
||||
}, 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, {
|
||||
dataProviders: {
|
||||
'userInfo': function(arg, done) {
|
||||
setTimeout(function() {
|
||||
done(null, users[arg.userId]);
|
||||
}, 100);
|
||||
}
|
||||
testRender('test-project/html-templates/async-fragment-args.marko', {
|
||||
'userInfo': function(arg, done) {
|
||||
setTimeout(function() {
|
||||
done(null, users[arg.userId]);
|
||||
}, 100);
|
||||
}
|
||||
});
|
||||
}, 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');
|
||||
}, 200);
|
||||
|
||||
testRender('test-project/html-templates/async-fragment-promise.marko', {}, done, {
|
||||
dataProviders: {
|
||||
'promiseData': function(arg, done) {
|
||||
return deferred.promise;
|
||||
}
|
||||
testRender('test-project/html-templates/async-fragment-promise.marko', {
|
||||
'promiseData': function(arg, done) {
|
||||
return deferred.promise;
|
||||
}
|
||||
});
|
||||
}, 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!
|
||||
</async-fragment>
|
||||
</async-fragment>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<ul>
|
||||
<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>
|
||||
<li>
|
||||
<b>Name:</b> $userInfo.name
|
||||
@ -14,4 +14,4 @@
|
||||
</ul>
|
||||
</async-fragment>
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<async-fragment data-provider="contextData" var="d1">
|
||||
<async-fragment data-provider="data.contextData" var="d1">
|
||||
$d1.name
|
||||
</async-fragment>
|
||||
|
||||
<async-fragment data-provider="sharedData" var="d2">
|
||||
<async-fragment data-provider="data.sharedData" var="d2">
|
||||
$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
|
||||
</async-fragment>
|
||||
</async-fragment>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<def function="asyncMacro(num)">
|
||||
$num
|
||||
</def>1
|
||||
<async-fragment data-provider="D1">
|
||||
</def>1
|
||||
<async-fragment data-provider="data.D1" var="D1">
|
||||
<invoke function="asyncMacro" num="2"/>
|
||||
</async-fragment>
|
||||
3
|
||||
3
|
||||
|
||||
@ -1,17 +1,17 @@
|
||||
1
|
||||
<async-fragment data-provider="D1" var="d1">
|
||||
<async-fragment data-provider="data.D1" var="d1">
|
||||
2
|
||||
<async-fragment data-provider="D2" var="d2">
|
||||
<async-fragment data-provider="data.D2" var="d2">
|
||||
3
|
||||
</async-fragment>
|
||||
4
|
||||
<async-fragment data-provider="D3" var="d3">
|
||||
<async-fragment data-provider="data.D3" var="d3">
|
||||
5
|
||||
</async-fragment>
|
||||
6
|
||||
</async-fragment>
|
||||
7
|
||||
<async-fragment data-provider="D4" var="d4">
|
||||
<async-fragment data-provider="data.D4" var="d4">
|
||||
8
|
||||
</async-fragment>
|
||||
9
|
||||
@ -1,13 +1,13 @@
|
||||
1
|
||||
<async-fragment data-provider="D1">
|
||||
1
|
||||
<async-fragment data-provider="data.D1" var="d1">
|
||||
2
|
||||
<async-fragment data-provider="D2" var="d2">
|
||||
<async-fragment data-provider="data.D2" var="d2">
|
||||
3
|
||||
</async-fragment>
|
||||
4
|
||||
<async-fragment data-provider="D3" var="d3">
|
||||
<async-fragment data-provider="data.D3" var="d3">
|
||||
5
|
||||
<async-fragment data-provider="D4" var="d4">
|
||||
<async-fragment data-provider="data.D4" var="d4">
|
||||
6
|
||||
</async-fragment>
|
||||
7
|
||||
@ -15,19 +15,19 @@
|
||||
8
|
||||
</async-fragment>
|
||||
9
|
||||
<async-fragment data-provider="D5" var="d5">
|
||||
<async-fragment data-provider="data.D5" var="d5">
|
||||
10
|
||||
<async-fragment data-provider="D6" var="d6">
|
||||
<async-fragment data-provider="data.D6" var="d6">
|
||||
11
|
||||
</async-fragment>
|
||||
12
|
||||
<async-fragment data-provider="D7" var="d7">
|
||||
<async-fragment data-provider="data.D7" var="d7">
|
||||
13
|
||||
</async-fragment>
|
||||
14
|
||||
<async-fragment data-provider="D7" var="d7">
|
||||
<async-fragment data-provider="data.D7" var="d7">
|
||||
15
|
||||
</async-fragment>
|
||||
16
|
||||
</async-fragment>
|
||||
17
|
||||
17
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
<async-fragment data-provider="promiseData" var="promiseData">
|
||||
<async-fragment data-provider="data.promiseData" var="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
|
||||
</async-fragment>
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
<ul>
|
||||
<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>
|
||||
<li>
|
||||
<b>Name:</b> $userInfo.name
|
||||
@ -18,4 +18,4 @@
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</c-template>
|
||||
</c-template>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<c-template>
|
||||
|
||||
<async-fragment data-provider="${data.userInfo}" var="userInfo">
|
||||
<async-fragment data-provider="data.userInfo" var="userInfo">
|
||||
Hello $userInfo.name
|
||||
</async-fragment>
|
||||
|
||||
</c-template>
|
||||
|
||||
</c-template>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user