Sha256: d03d20878014d6bd1d1d3628b8de1f3f9055ed404463209c70c81509e4c05a8c
Contents?: true
Size: 1.52 KB
Versions: 43
Compression:
Stored size: 1.52 KB
Contents
/** * @fileoverview Utility functions for React pragma configuration * @author Yannick Croissant */ 'use strict'; const JSX_ANNOTATION_REGEX = /^\*\s*@jsx\s+([^\s]+)/; // Does not check for reserved keywords or unicode characters const JS_IDENTIFIER_REGEX = /^[_$a-zA-Z][_$a-zA-Z0-9]*$/; function getCreateClassFromContext(context) { let pragma = 'createReactClass'; // .eslintrc shared settings (http://eslint.org/docs/user-guide/configuring#adding-shared-settings) if (context.settings.react && context.settings.react.createClass) { pragma = context.settings.react.createClass; } if (!JS_IDENTIFIER_REGEX.test(pragma)) { throw new Error(`createClass pragma ${pragma} is not a valid function name`); } return pragma; } function getFromContext(context) { let pragma = 'React'; const sourceCode = context.getSourceCode(); const pragmaNode = sourceCode.getAllComments().find(node => JSX_ANNOTATION_REGEX.test(node.value)); if (pragmaNode) { const matches = JSX_ANNOTATION_REGEX.exec(pragmaNode.value); pragma = matches[1].split('.')[0]; // .eslintrc shared settings (http://eslint.org/docs/user-guide/configuring#adding-shared-settings) } else if (context.settings.react && context.settings.react.pragma) { pragma = context.settings.react.pragma; } if (!JS_IDENTIFIER_REGEX.test(pragma)) { throw new Error(`React pragma ${pragma} is not a valid identifier`); } return pragma; } module.exports = { getCreateClassFromContext: getCreateClassFromContext, getFromContext: getFromContext };
Version data entries
43 entries across 43 versions & 1 rubygems