File tree Expand file tree Collapse file tree 4 files changed +61
-6
lines changed
Expand file tree Collapse file tree 4 files changed +61
-6
lines changed Original file line number Diff line number Diff line change 33 * @author Eugene Zhlobo
44 */
55
6- const { findVariablesInTemplate } = require ( 'pug-uses-variables' )
7- const { isReactPugReference, getTemplate } = require ( '../utilities' )
6+ const { isReactPugReference, getTemplate, extractVariables } = require ( '../utilities' )
87
98//------------------------------------------------------------------------------
109// Rule Definition
@@ -38,7 +37,7 @@ module.exports = {
3837 if ( isReactPugReference ( node ) ) {
3938 const template = getTemplate ( node )
4039
41- const usedVariables = findVariablesInTemplate ( template )
40+ const usedVariables = extractVariables ( template )
4241 const definedVariables = getDefinedVariables ( )
4342
4443 const isVariableDefined = variable => ! definedVariables . includes ( variable . value )
Original file line number Diff line number Diff line change 33 * @author Eugene Zhlobo
44 */
55
6- const { findVariablesInTemplate } = require ( 'pug-uses-variables' )
7- const { isReactPugReference, getTemplate } = require ( '../utilities' )
6+ const { isReactPugReference, getTemplate, extractVariables } = require ( '../utilities' )
87
98//------------------------------------------------------------------------------
109// Rule Definition
@@ -26,7 +25,7 @@ module.exports = {
2625 if ( isReactPugReference ( node ) ) {
2726 const template = getTemplate ( node )
2827
29- findVariablesInTemplate ( template )
28+ extractVariables ( template )
3029 . forEach ( variable => context . markVariableAsUsed ( variable . value ) )
3130 }
3231 } ,
Original file line number Diff line number Diff line change 1+ const { findVariablesInTemplate } = require ( 'pug-uses-variables' )
2+
13const getQuasiValue = ( { value } ) => {
24 if ( value && typeof value === 'object' ) {
35 return value . raw . trimRight ( )
@@ -29,7 +31,16 @@ function getTemplate({ quasi }) {
2931 return getQuasiValue ( quasis [ 0 ] )
3032}
3133
34+ function extractVariables ( template ) {
35+ try {
36+ return findVariablesInTemplate ( template )
37+ } catch ( e ) {
38+ return [ ]
39+ }
40+ }
41+
3242module . exports = {
3343 isReactPugReference,
3444 getTemplate,
45+ extractVariables,
3546}
Original file line number Diff line number Diff line change 1+ const fs = require ( 'fs' )
2+ const path = require ( 'path' )
3+ const { Linter } = require ( 'eslint' )
4+
5+ const customRules = fs . readdirSync ( path . join ( process . cwd ( ) , 'lib/rules' ) )
6+ . reduce ( ( files , filename ) => {
7+ const key = `react-pug/${ filename . replace ( / \. j s $ / , '' ) } `
8+
9+ // eslint-disable-next-line no-param-reassign, global-require, import/no-dynamic-require
10+ files [ key ] = require ( path . join ( process . cwd ( ) , `lib/rules/${ filename } ` ) )
11+
12+ return files
13+ } , { } )
14+
15+ const linter = new Linter ( )
16+
17+ linter . defineRules ( customRules )
18+
19+ const rulesSetting = Object . keys ( customRules )
20+ . reduce ( ( files , ruleName ) => {
21+ // eslint-disable-next-line no-param-reassign
22+ files [ ruleName ] = 2
23+ return files
24+ } , { } )
25+
26+ describe ( 'broken-template' , ( ) => {
27+ const configuration = {
28+ globals : {
29+ pug : true ,
30+ } ,
31+ parserOptions : {
32+ sourceType : 'module' ,
33+ } ,
34+ rules : rulesSetting ,
35+ }
36+
37+ it ( 'does not throw an exception' , ( ) => {
38+ const template = `
39+ pug\`
40+ each item, index in 1, 2, 3]
41+ \`
42+ `
43+
44+ linter . verify ( template , configuration , 'foo.js' )
45+ } )
46+ } )
You can’t perform that action at this time.
0 commit comments