move svelte-ignore comment extraction to parser phase

pull/6504/head
Simon Holthausen 5 years ago
parent 196245b822
commit faa0631a05

@ -36,7 +36,7 @@ import { DecodedSourceMap, RawSourceMap } from '@ampproject/remapping/dist/types
import { clone } from '../utils/clone'; import { clone } from '../utils/clone';
import compiler_warnings from './compiler_warnings'; import compiler_warnings from './compiler_warnings';
import compiler_errors from './compiler_errors'; import compiler_errors from './compiler_errors';
import { extract_ignores_above_position, extract_svelte_ignore_from_comments } from './utils/extract_svelte_ignore'; import { extract_ignores_above_position, extract_svelte_ignore_from_comments } from '../utils/extract_svelte_ignore';
interface ComponentOptions { interface ComponentOptions {
namespace?: string; namespace?: string;

@ -7,7 +7,7 @@ import Component from '../Component';
import { CssNode } from './interfaces'; import { CssNode } from './interfaces';
import hash from '../utils/hash'; import hash from '../utils/hash';
import compiler_warnings from '../compiler_warnings'; import compiler_warnings from '../compiler_warnings';
import { extract_ignores_above_position } from '../utils/extract_svelte_ignore'; import { extract_ignores_above_position } from '../../utils/extract_svelte_ignore';
function remove_css_prefix(name: string): string { function remove_css_prefix(name: string): string {
return name.replace(/^-((webkit)|(moz)|(o)|(ms))-/, ''); return name.replace(/^-((webkit)|(moz)|(o)|(ms))-/, '');

@ -1,6 +1,5 @@
import { TemplateNode } from '../../interfaces'; import { TemplateNode } from '../../interfaces';
import Component from '../Component'; import Component from '../Component';
import { extract_svelte_ignore } from '../utils/extract_svelte_ignore';
import Node from './shared/Node'; import Node from './shared/Node';
import TemplateScope from './shared/TemplateScope'; import TemplateScope from './shared/TemplateScope';
@ -12,6 +11,6 @@ export default class Comment extends Node {
constructor(component: Component, parent: Node, scope: TemplateScope, info: TemplateNode) { constructor(component: Component, parent: Node, scope: TemplateScope, info: TemplateNode) {
super(component, parent, scope, info); super(component, parent, scope, info);
this.data = info.data; this.data = info.data;
this.ignores = extract_svelte_ignore(this.data); this.ignores = info.ignores;
} }
} }

@ -10,7 +10,7 @@ import { ClassDeclaration, FunctionExpression, Node, Statement, ObjectExpression
import { apply_preprocessor_sourcemap } from '../../utils/mapped_code'; import { apply_preprocessor_sourcemap } from '../../utils/mapped_code';
import { RawSourceMap, DecodedSourceMap } from '@ampproject/remapping/dist/types/types'; import { RawSourceMap, DecodedSourceMap } from '@ampproject/remapping/dist/types/types';
import { Node as PeriscopicNode } from 'periscopic'; import { Node as PeriscopicNode } from 'periscopic';
import { flatten } from '../utils/flatten'; import { flatten } from '../../utils/flatten';
export default function dom( export default function dom(
component: Component, component: Component,

@ -7,6 +7,7 @@ import { Parser } from '../index';
import { Directive, DirectiveType, TemplateNode, Text } from '../../interfaces'; import { Directive, DirectiveType, TemplateNode, Text } from '../../interfaces';
import fuzzymatch from '../../utils/fuzzymatch'; import fuzzymatch from '../../utils/fuzzymatch';
import list from '../../utils/list'; import list from '../../utils/list';
import { extract_svelte_ignore } from '../../utils/extract_svelte_ignore';
// eslint-disable-next-line no-useless-escape // eslint-disable-next-line no-useless-escape
const valid_tag_name = /^\!?[a-zA-Z]{1,}:?[a-zA-Z0-9\-]*/; const valid_tag_name = /^\!?[a-zA-Z]{1,}:?[a-zA-Z0-9\-]*/;
@ -64,7 +65,8 @@ export default function tag(parser: Parser) {
start, start,
end: parser.index, end: parser.index,
type: 'Comment', type: 'Comment',
data data,
ignores: extract_svelte_ignore(data)
}); });
return; return;

@ -1,4 +1,4 @@
import { TemplateNode } from '../../interfaces'; import { TemplateNode } from '../interfaces';
import { flatten } from './flatten'; import { flatten } from './flatten';
const pattern = /^\s*svelte-ignore\s+([\s\S]+)\s*$/m; const pattern = /^\s*svelte-ignore\s+([\s\S]+)\s*$/m;
@ -24,9 +24,8 @@ export function extract_ignores_above_position(position: number, template_nodes:
return []; return [];
} }
if (node.type === 'Comment') { if (node.type === 'Comment') {
const ignores = extract_svelte_ignore(node.data || ''); if (node.ignores.length) {
if (ignores.length) { return node.ignores;
return ignores;
} }
} }
} }

@ -0,0 +1,16 @@
{
"html": {
"start": 0,
"end": 30,
"type": "Fragment",
"children": [
{
"start": 0,
"end": 30,
"type": "Comment",
"data": " svelte-ignore foo bar ",
"ignores": ["foo", "bar"]
}
]
}
}

@ -8,7 +8,8 @@
"start": 0, "start": 0,
"end": 18, "end": 18,
"type": "Comment", "type": "Comment",
"data": " a comment " "data": " a comment ",
"ignores": []
} }
] ]
} }

Loading…
Cancel
Save