Skip to content

Commit 112ccde

Browse files
Apply expressions to initial tree and set nextNode after expression process
1 parent 45f00f5 commit 112ccde

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

src/index.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ module.exports = (options = {}) => tree => {
7171

7272
log(options, 'options', 'init');
7373

74+
// Apply expressions to initial tree
75+
tree = expressions(options.expressions)(tree);
76+
7477
tree = processTree(options)(tree);
7578

7679
return tree;
@@ -115,7 +118,7 @@ function processTree(options) {
115118

116119
log(`${++processCounter} ${componentPath}`, 'Processing component', 'processTree');
117120

118-
const nextNode = parser(readFileSync(componentPath, 'utf8'));
121+
let nextNode = parser(readFileSync(componentPath, 'utf8'));
119122

120123
// Set filled slots
121124
setFilledSlots(currentNode, slotContent, options);
@@ -133,7 +136,8 @@ function processTree(options) {
133136

134137
log({attributes, locals, slotContent}, 'Processed attributes, locals and slots', 'processTree');
135138

136-
expressions(options.expressions)(nextNode);
139+
nextNode = expressions(options.expressions)(nextNode);
140+
// process.exit(0);
137141

138142
// Process <stack> tag
139143
processPushes(nextNode, pushedContent, options);
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
<script props>
22
module.exports = {
3-
title: 'Default title'
3+
title: 'Default title',
4+
slotsAccessibleViaScript: locals.$slots
45
}
56
</script>
6-
{{ $slots }}
7+
{{ slotsAccessibleViaScript }}
78
<div>{{ $slots }}</div>
89
<div><h1>{{title}}</h1></div><div><fill:filled></fill:filled><fill:notfilled></fill:notfilled></div>

test/test-locals.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ test('Must process parent and child locals via component', async t => {
5757

5858
test('Must has access to $slots in script locals', async t => {
5959
const actual = `<x-script-locals><slot:filled>filled slot content...</slot:filled></x-script-locals>`;
60-
const expected = `<div>{"filled":{"filled":true,"rendered":false,"tag":"slot:filled","attrs":{},"content":["filled slot content..."],"source":"filled slot content...","locals":{}}}</div><div><h1>Default title</h1></div><div>filled slot content...</div>`;
60+
const expected = `{"filled":{"filled":true,"rendered":false,"tag":"slot:filled","attrs":{},"content":["filled slot content..."],"source":"filled slot content...","locals":{}}}<div>{"filled":{"filled":true,"rendered":false,"tag":"slot:filled","attrs":{},"content":["filled slot content..."],"source":"filled slot content...","locals":{}}}</div><div><h1>Default title</h1></div><div>filled slot content...</div>`;
6161

6262
const html = await posthtml([plugin({root: './test/templates/components'})]).process(actual).then(result => clean(result.html));
6363

0 commit comments

Comments
 (0)