diff --git a/docs/rules/boolean-prop-naming.md b/docs/rules/boolean-prop-naming.md index 71f4adb65b..541b8296f2 100644 --- a/docs/rules/boolean-prop-naming.md +++ b/docs/rules/boolean-prop-naming.md @@ -30,7 +30,12 @@ var Hello = createReactClass({ ```js ... -"react/boolean-prop-naming": [, { "propTypeNames": Array, "rule": , "message": }] +"react/boolean-prop-naming": [, { + "propTypeNames": Array, + "rule": , + "message": , + "validateNested": +}] ... ``` @@ -86,3 +91,11 @@ And the failure would look like so: ``` It is better if your prop (something) matches this pattern: (^is[A-Z]([A-Za-z0-9]?)+) ``` + +### `validateNested` + +This value is boolean. It tells if nested props should be validated as well. By default this is set to false but you can change it to true, to validate deeper layers of object: + +```jsx +"react/boolean-prop-naming": ["error", { "validateNested": true }] +``` diff --git a/lib/rules/boolean-prop-naming.js b/lib/rules/boolean-prop-naming.js index 9ba632a2d0..bc7394d327 100644 --- a/lib/rules/boolean-prop-naming.js +++ b/lib/rules/boolean-prop-naming.js @@ -41,6 +41,10 @@ module.exports = { message: { minLength: 1, type: 'string' + }, + validateNested: { + default: false, + type: 'boolean' } }, type: 'object' @@ -152,7 +156,7 @@ module.exports = { proptypes = proptypes || []; proptypes.forEach(prop => { - if (nestedPropTypes(prop)) { + if (config.validateNested && nestedPropTypes(prop)) { runCheck(prop.value.arguments[0].properties, addInvalidProp); return; } diff --git a/tests/lib/rules/boolean-prop-naming.js b/tests/lib/rules/boolean-prop-naming.js index f234654939..09bcb8982d 100644 --- a/tests/lib/rules/boolean-prop-naming.js +++ b/tests/lib/rules/boolean-prop-naming.js @@ -408,7 +408,11 @@ ruleTester.run('boolean-prop-naming', rule, { }) }) }; - ` + `, + options: [{ + rule: '^is[A-Z]([A-Za-z0-9]?)+', + validateNested: true + }] }], invalid: [{ @@ -861,7 +865,8 @@ ruleTester.run('boolean-prop-naming', rule, { }; `, options: [{ - rule: '^is[A-Z]([A-Za-z0-9]?)+' + rule: '^is[A-Z]([A-Za-z0-9]?)+', + validateNested: true }], errors: [{ message: 'Prop name (failingItIs) doesn\'t match rule (^is[A-Z]([A-Za-z0-9]?)+)' @@ -886,7 +891,8 @@ ruleTester.run('boolean-prop-naming', rule, { }; `, options: [{ - rule: '^is[A-Z]([A-Za-z0-9]?)+' + rule: '^is[A-Z]([A-Za-z0-9]?)+', + validateNested: true }], errors: [{ message: 'Prop name (failingItIs) doesn\'t match rule (^is[A-Z]([A-Za-z0-9]?)+)'