mirror of https://github.com/sveltejs/svelte
parent
c2fb0243ad
commit
c388557b76
@ -1,42 +1,51 @@
|
||||
import Renderer from '../Renderer';
|
||||
import Block from '../Block';
|
||||
import Comment from '../../nodes/Comment';
|
||||
import Wrapper from './shared/Wrapper';
|
||||
import Wrapper from './shared/Wrapper.js';
|
||||
import { x } from 'code-red';
|
||||
import { Identifier } from 'estree';
|
||||
|
||||
/** @extends Wrapper */
|
||||
export default class CommentWrapper extends Wrapper {
|
||||
node: Comment;
|
||||
var: Identifier;
|
||||
|
||||
constructor(renderer: Renderer, block: Block, parent: Wrapper, node: Comment) {
|
||||
super(renderer, block, parent, node);
|
||||
this.var = x`c` as Identifier;
|
||||
}
|
||||
|
||||
render(block: Block, parent_node: Identifier, parent_nodes: Identifier) {
|
||||
if (!this.renderer.options.preserveComments) return;
|
||||
|
||||
const string_literal = {
|
||||
type: 'Literal',
|
||||
value: this.node.data,
|
||||
loc: {
|
||||
start: this.renderer.locate(this.node.start),
|
||||
end: this.renderer.locate(this.node.end)
|
||||
}
|
||||
};
|
||||
|
||||
block.add_element(
|
||||
this.var,
|
||||
x`@comment(${string_literal})`,
|
||||
parent_nodes && x`@claim_comment(${parent_nodes}, ${string_literal})`,
|
||||
parent_node
|
||||
);
|
||||
}
|
||||
|
||||
text() {
|
||||
if (!this.renderer.options.preserveComments) return '';
|
||||
|
||||
return `<!--${this.node.data}-->`;
|
||||
}
|
||||
|
||||
/** @type {import('../../nodes/Comment.js').default} */
|
||||
node;
|
||||
|
||||
/** @type {import('estree').Identifier} */
|
||||
var;
|
||||
|
||||
/**
|
||||
* @param {import('../Renderer.js').default} renderer
|
||||
* @param {import('../Block.js').default} block
|
||||
* @param {import('./shared/Wrapper.js').default} parent
|
||||
* @param {import('../../nodes/Comment.js').default} node
|
||||
*/
|
||||
constructor(renderer, block, parent, node) {
|
||||
super(renderer, block, parent, node);
|
||||
this.var = /** @type {import('estree').Identifier} */ (x `c`);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {import('../Block.js').default} block
|
||||
* @param {import('estree').Identifier} parent_node
|
||||
* @param {import('estree').Identifier} parent_nodes
|
||||
*/
|
||||
render(block, parent_node, parent_nodes) {
|
||||
if (!this.renderer.options.preserveComments)
|
||||
return;
|
||||
const string_literal = {
|
||||
type: 'Literal',
|
||||
value: this.node.data,
|
||||
loc: {
|
||||
start: this.renderer.locate(this.node.start),
|
||||
end: this.renderer.locate(this.node.end)
|
||||
}
|
||||
};
|
||||
block.add_element(this.var, x `@comment(${string_literal})`, parent_nodes && x `@claim_comment(${parent_nodes}, ${string_literal})`, parent_node);
|
||||
}
|
||||
text() {
|
||||
if (!this.renderer.options.preserveComments)
|
||||
return '';
|
||||
return `<!--${this.node.data}-->`;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in new issue