File tree Expand file tree Collapse file tree 3 files changed +41
-8
lines changed Expand file tree Collapse file tree 3 files changed +41
-8
lines changed Original file line number Diff line number Diff line change 33 * @author Eugene Zhlobo
44 */
55
6+ const { isReactPugReference } = require ( '../utilities' )
7+
68//------------------------------------------------------------------------------
79// Rule Definition
810//------------------------------------------------------------------------------
@@ -21,9 +23,8 @@ module.exports = {
2123 return {
2224 TaggedTemplateExpression : function ( node ) {
2325 const pragma = 'React'
24- const { tag } = node
2526
26- if ( tag && tag . name === 'pug' ) {
27+ if ( isReactPugReference ( node ) ) {
2728 context . markVariableAsUsed ( pragma )
2829 }
2930 } ,
Original file line number Diff line number Diff line change 44 */
55
66const { findVariablesInTemplate } = require ( 'pug-uses-variables' )
7+ const { isReactPugReference, getTemplate } = require ( '../utilities' )
78
89//------------------------------------------------------------------------------
910// Rule Definition
@@ -20,14 +21,10 @@ module.exports = {
2021 } ,
2122
2223 create : function ( context ) {
23- const sourceCode = context . getSourceCode ( )
24-
2524 return {
2625 TaggedTemplateExpression : function ( node ) {
27- const { tag, quasi } = node
28-
29- if ( tag && tag . name === 'pug' ) {
30- const template = sourceCode . getText ( quasi , - 1 , - 1 ) . trim ( )
26+ if ( isReactPugReference ( node ) ) {
27+ const template = getTemplate ( node )
3128
3229 findVariablesInTemplate ( template ) . forEach ( context . markVariableAsUsed )
3330 }
Original file line number Diff line number Diff line change 1+ const getQuasiValue = ( { value } ) => {
2+ if ( value && typeof value === 'object' ) {
3+ return value . raw . trim ( )
4+ }
5+
6+ return ''
7+ }
8+
9+ const getInterpolatedTemplate = ( template , interpolations ) => template
10+ . map ( ( quasi , index ) => {
11+ const rawValue = getQuasiValue ( quasi )
12+
13+ // We need to stringify interpolation so babel will understand the code
14+ return interpolations [ index ] ? `${ rawValue } ` : rawValue
15+ } )
16+ . join ( '' )
17+
18+ function isReactPugReference ( { tag } ) {
19+ return tag && tag . name === 'pug'
20+ }
21+
22+ function getTemplate ( { quasi } ) {
23+ const { quasis, expressions } = quasi
24+
25+ if ( expressions && expressions . length ) {
26+ return getInterpolatedTemplate ( quasis , expressions )
27+ }
28+
29+ return getQuasiValue ( quasis [ 0 ] )
30+ }
31+
32+ module . exports = {
33+ isReactPugReference,
34+ getTemplate,
35+ }
You can’t perform that action at this time.
0 commit comments