tidy and adjust error message

pull/5060/head
Conduitry 5 years ago
parent a617ca1b8a
commit c20740f832

@ -8,7 +8,7 @@ import error from '../utils/error';
type ParserState = (parser: Parser) => (ParserState | void); type ParserState = (parser: Parser) => (ParserState | void);
interface LastAutoCloseTag { interface LastAutoClosedTag {
tag: string; tag: string;
reason: string; reason: string;
depth: number; depth: number;
@ -26,7 +26,7 @@ export class Parser {
css: Style[] = []; css: Style[] = [];
js: Script[] = []; js: Script[] = [];
meta_tags = {}; meta_tags = {};
last_auto_closed_tag?: LastAutoCloseTag; last_auto_closed_tag?: LastAutoClosedTag;
constructor(template: string, options: ParserOptions) { constructor(template: string, options: ParserOptions) {
if (typeof template !== 'string') { if (typeof template !== 'string') {

@ -134,16 +134,12 @@ export default function tag(parser: Parser) {
// close any elements that don't have their own closing tags, e.g. <div><p></div> // close any elements that don't have their own closing tags, e.g. <div><p></div>
while (parent.name !== name) { while (parent.name !== name) {
if (parent.type !== 'Element') { if (parent.type !== 'Element') {
if (parser.last_auto_closed_tag && parser.last_auto_closed_tag.tag === name) { const message = parser.last_auto_closed_tag && parser.last_auto_closed_tag.tag === name
? `</${name}> attempted to close <${name}> that was already automatically closed by <${parser.last_auto_closed_tag.reason}>`
: `</${name}> attempted to close an element that was not open`;
parser.error({ parser.error({
code: `invalid-closing-tag`, code: `invalid-closing-tag`,
message: `<${parser.last_auto_closed_tag.tag}> cannot have child element <${parser.last_auto_closed_tag.reason}>`, message
}, start);
}
parser.error({
code: `invalid-closing-tag`,
message: `</${name}> attempted to close an element that was not open`
}, start); }, start);
} }
@ -164,7 +160,7 @@ export default function tag(parser: Parser) {
} else if (closing_tag_omitted(parent.name, name)) { } else if (closing_tag_omitted(parent.name, name)) {
parent.end = start; parent.end = start;
parser.stack.pop(); parser.stack.pop();
parser.last_auto_closed_tag ={ parser.last_auto_closed_tag = {
tag: parent.name, tag: parent.name,
reason: name, reason: name,
depth: parser.stack.length, depth: parser.stack.length,

@ -1,6 +1,6 @@
{ {
"code": "invalid-closing-tag", "code": "invalid-closing-tag",
"message": "<p> cannot have child element <pre>", "message": "</p> attempted to close <p> that was already automatically closed by <pre>",
"pos": 24, "pos": 24,
"start": { "start": {
"character": 24, "character": 24,

Loading…
Cancel
Save