ractive
Version:
Next-generation DOM manipulation
24 lines (18 loc) • 746 B
JavaScript
import getStringLiteral from 'parse/Parser/expressions/primary/literal/stringLiteral/_stringLiteral';
import getNumberLiteral from 'parse/Parser/expressions/primary/literal/numberLiteral';
import patterns from 'parse/Parser/expressions/shared/patterns';
var identifier = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/;
// http://mathiasbynens.be/notes/javascript-properties
// can be any name, string literal, or number literal
export default function ( parser ) {
var token;
if ( token = getStringLiteral( parser ) ) {
return identifier.test( token.v ) ? token.v : '"' + token.v.replace( /"/g, '\\"' ) + '"';
}
if ( token = getNumberLiteral( parser ) ) {
return token.v;
}
if ( token = parser.matchPattern( patterns.name ) ) {
return token;
}
}