@@ -238,8 +238,8 @@ const messages = {
238238 suggestRemoveDefault : '"remove {{attributeName}}"' ,
239239 suggestRemoveEmpty : '"remove empty attribute {{attributeName}}"' ,
240240 suggestRemoveInvalid : '“remove invalid attribute {{reportingValue}}”' ,
241- suggestRemoveWhitespaces : 'remove whitespaces in “{{reportingValue }}”' ,
242- suggestRemoveNonString : 'remove non-string value in “{{reportingValue }}”' ,
241+ suggestRemoveWhitespaces : 'remove whitespaces in “{{attributeName }}”' ,
242+ suggestRemoveNonString : 'remove non-string value in “{{attributeName }}”' ,
243243} ;
244244
245245function splitIntoRangedParts ( node , regex ) {
@@ -259,27 +259,37 @@ function splitIntoRangedParts(node, regex) {
259259
260260function checkLiteralValueNode ( context , attributeName , node , parentNode , parentNodeName ) {
261261 if ( typeof node . value !== 'string' ) {
262+ const data = { attributeName, reportingValue : node . value } ;
263+
262264 report ( context , messages . onlyStrings , 'onlyStrings' , {
263265 node,
264- data : { attributeName } ,
266+ data,
265267 suggest : [
266268 Object . assign (
267269 getMessageData ( 'suggestRemoveNonString' , messages . suggestRemoveNonString ) ,
268- { fix ( fixer ) { return fixer . remove ( parentNode ) ; } }
270+ {
271+ data,
272+ fix ( fixer ) { return fixer . remove ( parentNode ) ; } ,
273+ }
269274 ) ,
270275 ] ,
271276 } ) ;
272277 return ;
273278 }
274279
275280 if ( ! node . value . trim ( ) ) {
281+ const data = { attributeName, reportingValue : node . value } ;
282+
276283 report ( context , messages . noEmpty , 'noEmpty' , {
277284 node,
278- data : { attributeName } ,
285+ data,
279286 suggest : [
280287 Object . assign (
281288 getMessageData ( 'suggestRemoveEmpty' , messages . suggestRemoveEmpty ) ,
282- { fix ( fixer ) { return fixer . remove ( node . parent ) ; } }
289+ {
290+ data,
291+ fix ( fixer ) { return fixer . remove ( node . parent ) ; } ,
292+ }
283293 ) ,
284294 ] ,
285295 } ) ;
@@ -291,32 +301,44 @@ function checkLiteralValueNode(context, attributeName, node, parentNode, parentN
291301 const allowedTags = VALID_VALUES . get ( attributeName ) . get ( singlePart . value ) ;
292302 const reportingValue = singlePart . reportingValue ;
293303
294- const suggest = [
295- Object . assign (
296- getMessageData ( 'suggestRemoveInvalid' , messages . suggestRemoveInvalid ) ,
297- { fix ( fixer ) { return fixer . removeRange ( singlePart . range ) ; } }
298- ) ,
299- ] ;
300-
301304 if ( ! allowedTags ) {
302305 const data = {
303306 attributeName,
304307 reportingValue,
305308 } ;
309+
306310 report ( context , messages . neverValid , 'neverValid' , {
307311 node,
308312 data,
309- suggest,
313+ suggest : [
314+ Object . assign (
315+ getMessageData ( 'suggestRemoveInvalid' , messages . suggestRemoveInvalid ) ,
316+ {
317+ data,
318+ fix ( fixer ) { return fixer . removeRange ( singlePart . range ) ; } ,
319+ }
320+ ) ,
321+ ] ,
310322 } ) ;
311323 } else if ( ! allowedTags . has ( parentNodeName ) ) {
324+ const data = {
325+ attributeName,
326+ reportingValue,
327+ elementName : parentNodeName ,
328+ } ;
329+
312330 report ( context , messages . notValidFor , 'notValidFor' , {
313331 node,
314- data : {
315- attributeName,
316- reportingValue,
317- elementName : parentNodeName ,
318- } ,
319- suggest,
332+ data,
333+ suggest : [
334+ Object . assign (
335+ getMessageData ( 'suggestRemoveInvalid' , messages . suggestRemoveInvalid ) ,
336+ {
337+ data,
338+ fix ( fixer ) { return fixer . removeRange ( singlePart . range ) ; } ,
339+ }
340+ ) ,
341+ ] ,
320342 } ) ;
321343 }
322344 }
@@ -360,7 +382,10 @@ function checkLiteralValueNode(context, attributeName, node, parentNode, parentN
360382 suggest : [
361383 Object . assign (
362384 getMessageData ( 'suggestRemoveWhitespaces' , messages . suggestRemoveWhitespaces ) ,
363- { fix ( fixer ) { return fixer . removeRange ( whitespacePart . range ) ; } }
385+ {
386+ data : { attributeName } ,
387+ fix ( fixer ) { return fixer . removeRange ( whitespacePart . range ) ; } ,
388+ }
364389 ) ,
365390 ] ,
366391 } ) ;
@@ -371,7 +396,10 @@ function checkLiteralValueNode(context, attributeName, node, parentNode, parentN
371396 suggest : [
372397 Object . assign (
373398 getMessageData ( 'suggestRemoveWhitespaces' , messages . suggestRemoveWhitespaces ) ,
374- { fix ( fixer ) { return fixer . replaceTextRange ( whitespacePart . range , '\u0020' ) ; } }
399+ {
400+ data : { attributeName } ,
401+ fix ( fixer ) { return fixer . replaceTextRange ( whitespacePart . range , '\u0020' ) ; } ,
402+ }
375403 ) ,
376404 ] ,
377405 } ) ;
@@ -390,16 +418,21 @@ function checkAttribute(context, node) {
390418 COMPONENT_ATTRIBUTE_MAP . get ( attribute ) . values ( ) ,
391419 ( tagName ) => `"<${ tagName } >"`
392420 ) . join ( ', ' ) ;
421+ const data = {
422+ attributeName : attribute ,
423+ tagNames,
424+ } ;
425+
393426 report ( context , messages . onlyMeaningfulFor , 'onlyMeaningfulFor' , {
394427 node : node . name ,
395- data : {
396- attributeName : attribute ,
397- tagNames,
398- } ,
428+ data,
399429 suggest : [
400430 Object . assign (
401431 getMessageData ( 'suggestRemoveDefault' , messages . suggestRemoveDefault ) ,
402- { fix ( fixer ) { return fixer . remove ( node ) ; } }
432+ {
433+ data,
434+ fix ( fixer ) { return fixer . remove ( node ) ; } ,
435+ }
403436 ) ,
404437 ] ,
405438 } ) ;
@@ -409,13 +442,15 @@ function checkAttribute(context, node) {
409442 function fix ( fixer ) { return fixer . remove ( node ) ; }
410443
411444 if ( ! node . value ) {
445+ const data = { attributeName : attribute } ;
446+
412447 report ( context , messages . emptyIsMeaningless , 'emptyIsMeaningless' , {
413448 node : node . name ,
414- data : { attributeName : attribute } ,
449+ data,
415450 suggest : [
416451 Object . assign (
417452 getMessageData ( 'suggestRemoveEmpty' , messages . suggestRemoveEmpty ) ,
418- { fix }
453+ { data , fix }
419454 ) ,
420455 ] ,
421456 } ) ;
@@ -435,24 +470,28 @@ function checkAttribute(context, node) {
435470 }
436471
437472 if ( node . value . expression . type === 'ObjectExpression' ) {
473+ const data = { attributeName : attribute } ;
474+
438475 report ( context , messages . onlyStrings , 'onlyStrings' , {
439476 node : node . value ,
440- data : { attributeName : attribute } ,
477+ data,
441478 suggest : [
442479 Object . assign (
443480 getMessageData ( 'suggestRemoveDefault' , messages . suggestRemoveDefault ) ,
444- { fix }
481+ { data , fix }
445482 ) ,
446483 ] ,
447484 } ) ;
448485 } else if ( node . value . expression . type === 'Identifier' && node . value . expression . name === 'undefined' ) {
486+ const data = { attributeName : attribute } ;
487+
449488 report ( context , messages . onlyStrings , 'onlyStrings' , {
450489 node : node . value ,
451- data : { attributeName : attribute } ,
490+ data,
452491 suggest : [
453492 Object . assign (
454493 getMessageData ( 'suggestRemoveDefault' , messages . suggestRemoveDefault ) ,
455- { fix }
494+ { data , fix }
456495 ) ,
457496 ] ,
458497 } ) ;
@@ -476,16 +515,21 @@ function checkPropValidValue(context, node, value, attribute) {
476515
477516 const validTagSet = validTags . get ( value . value ) ;
478517 if ( ! validTagSet ) {
518+ const data = {
519+ attributeName : attribute ,
520+ reportingValue : value . value ,
521+ } ;
522+
479523 report ( context , messages . neverValid , 'neverValid' , {
480524 node : value ,
481- data : {
482- attributeName : attribute ,
483- reportingValue : value . value ,
484- } ,
525+ data,
485526 suggest : [
486527 Object . assign (
487528 getMessageData ( 'suggestRemoveInvalid' , messages . suggestRemoveInvalid ) ,
488- { fix ( fixer ) { return fixer . replaceText ( value , value . raw . replace ( value . value , '' ) ) ; } }
529+ {
530+ data,
531+ fix ( fixer ) { return fixer . replaceText ( value , value . raw . replace ( value . value , '' ) ) ; } ,
532+ }
489533 ) ,
490534 ] ,
491535 } ) ;
0 commit comments