pull/86/merge
FWeinb 9 years ago committed by GitHub
commit 8b1b6f385f

@ -489,6 +489,10 @@ export default function generate ( parsed, source, options ) {
state = {};
};
this.appendChild = function appendChild ( child ) {
this.yield.appendChild(child);
}
${initStatements.join( '\n\n' )}
}
` );

@ -3,14 +3,25 @@ import deindent from '../utils/deindent.js';
export default {
enter ( generator, node ) {
const name = generator.current.counter( 'text' );
const { snippet } = generator.contextualise( node.expression );
generator.addSourcemapLocations( node.expression );
const { snippet } = generator.contextualise( node.expression );
generator.addElement( name, `document.createTextNode( ${snippet} )`, true );
if (node.expression.name === 'yield') {
if (generator.hasYield === undefined) {
generator.hasYield = true;
generator.current.initStatements.push( deindent`
component.yield = ${generator.current.target};
` );
} else {
throw new Error( `Only one {{yield}} per component.` );
}
} else {
generator.addElement( name, `document.createTextNode( ${snippet} )`, true );
generator.current.updateStatements.push( deindent`
${name}.data = ${snippet};
` );
generator.current.updateStatements.push( deindent`
${name}.data = ${snippet};
` );
}
}
};

@ -0,0 +1,5 @@
export default {
compileError: function ( assert, err ) {
assert.equal('Error: Only one {{yield}} per component.', err)
}
};

@ -0,0 +1,2 @@
<p>{{yield}}</p>
<p>{{yield}}</p>

@ -0,0 +1 @@
<div class="sidebar-widget">{{yield}}</div>

@ -0,0 +1,8 @@
export default {
html: '<main><div class="sidebar-widget">Hello Hello</div></main>',
test ( assert, component, target ) {
component.set({ a: 'World' });
assert.equal( component.get( 'a' ), 'World' );
assert.equal( target.innerHTML, '<main><div class="sidebar-widget">Hello World</div></main>' );
}
};

@ -0,0 +1,16 @@
<main>
<Widget>Hello {{a}}</Widget>
</main>
<script>
import Widget from './Widget.html';
export default {
components: { Widget },
data(){
return {
a: "Hello"
}
}
};
</script>

@ -230,7 +230,7 @@ describe( 'svelte', () => {
compiled = svelte.compile( source );
} catch ( err ) {
if ( config.compileError ) {
config.compileError( err );
config.compileError( assert, err );
return;
} else {
throw err;

Loading…
Cancel
Save