special case literals

pull/434/head
Rich-Harris 9 years ago
parent 1a49c2f344
commit 6c754c2a3d

@ -1,18 +1,28 @@
import { parseExpressionAt } from 'acorn';
const literals = {
true: true,
false: false,
null: null
};
export default function readExpression ( parser ) {
const start = parser.index;
parser.index = start;
try {
const node = parseExpressionAt( parser.template, parser.index );
parser.index = node.end;
return node;
} catch ( err ) {
const name = parser.readUntil( /\s*}}/ );
if ( name && /^[a-z]+$/.test( name ) ) {
const end = start + name.length;
if ( name in literals ) {
return {
type: 'Literal',
start,
end,
value: literals[ name ],
raw: name
};
}
return {
type: 'Identifier',
start,
@ -20,6 +30,15 @@ export default function readExpression ( parser ) {
name
};
}
parser.index = start;
try {
const node = parseExpressionAt( parser.template, parser.index );
parser.index = node.end;
return node;
} catch ( err ) {
parser.acornError( err );
}
}

Loading…
Cancel
Save