@@ -13,20 +13,18 @@ const {Syntax} = require("../utils/parseUtils");
1313 * @returns {boolean } Whether the node is a literal and whether its value matches the given string
1414 */
1515function isString ( node , literal ) {
16- if ( isLiteral ( node ) ) {
17- return literal == null ? true : node . value === literal ;
18- } else if ( isTemplateLiteralWithoutExpression ( node ) ) {
19- return literal == null ? true : getTemplateLiteralValue ( node ) === literal ;
20- } else {
16+ const value = getStringValue ( node ) ;
17+ if ( value === undefined ) {
2118 return false ;
2219 }
20+ return literal == null ? true : value === literal ;
2321}
2422
2523function getStringValue ( node ) {
2624 if ( isLiteral ( node ) ) {
2725 return node . value ;
2826 } else if ( isTemplateLiteralWithoutExpression ( node ) ) {
29- return getTemplateLiteralValue ( node ) ;
27+ return node ?. quasis ?. [ 0 ] ?. value ?. cooked ;
3028 }
3129}
3230
@@ -35,17 +33,9 @@ function isLiteral(node) {
3533}
3634
3735function isTemplateLiteralWithoutExpression ( node ) {
38- if ( node && node . type === Syntax . TemplateLiteral &&
39- node . quasis && node . quasis . length === 1 &&
40- node . quasis [ 0 ] . type === Syntax . TemplateElement &&
41- typeof node . quasis [ 0 ] . value . raw === "string" ) {
42- return true ;
43- }
44- return false ;
45- }
46-
47- function getTemplateLiteralValue ( node ) {
48- return node ?. quasis ?. [ 0 ] ?. value ?. cooked ;
36+ return node ?. type === Syntax . TemplateLiteral &&
37+ node ?. expressions ?. length === 0 &&
38+ node ?. quasis ?. length === 1 ;
4939}
5040
5141function isBoolean ( node , literal ) {
0 commit comments