mirror of
https://github.com/adrienverge/yamllint.git
synced 2024-11-22 07:36:25 -06:00
truthy: add check-keys
option
This commit is contained in:
parent
542ae758f5
commit
6ce11dedb4
@ -114,3 +114,29 @@ class TruthyTestCase(RuleTestCase):
|
|||||||
'boolean5: !!bool off\n'
|
'boolean5: !!bool off\n'
|
||||||
'boolean6: !!bool NO\n',
|
'boolean6: !!bool NO\n',
|
||||||
conf)
|
conf)
|
||||||
|
|
||||||
|
def test_check_keys_disabled(self):
|
||||||
|
conf = ('truthy:\n'
|
||||||
|
' allowed-values: []\n'
|
||||||
|
' check-keys: false\n'
|
||||||
|
'key-duplicates: disable\n')
|
||||||
|
self.check('---\n'
|
||||||
|
'YES: 0\n'
|
||||||
|
'Yes: 0\n'
|
||||||
|
'yes: 0\n'
|
||||||
|
'No: 0\n'
|
||||||
|
'No: 0\n'
|
||||||
|
'no: 0\n'
|
||||||
|
'TRUE: 0\n'
|
||||||
|
'True: 0\n'
|
||||||
|
'true: 0\n'
|
||||||
|
'FALSE: 0\n'
|
||||||
|
'False: 0\n'
|
||||||
|
'false: 0\n'
|
||||||
|
'ON: 0\n'
|
||||||
|
'On: 0\n'
|
||||||
|
'on: 0\n'
|
||||||
|
'OFF: 0\n'
|
||||||
|
'Off: 0\n'
|
||||||
|
'off: 0\n',
|
||||||
|
conf)
|
||||||
|
@ -30,6 +30,9 @@ This can be useful to prevent surprises from YAML parsers transforming
|
|||||||
``'False'``, ``'false'``, ``'YES'``, ``'Yes'``, ``'yes'``, ``'NO'``,
|
``'False'``, ``'false'``, ``'YES'``, ``'Yes'``, ``'yes'``, ``'NO'``,
|
||||||
``'No'``, ``'no'``, ``'ON'``, ``'On'``, ``'on'``, ``'OFF'``, ``'Off'``,
|
``'No'``, ``'no'``, ``'ON'``, ``'On'``, ``'on'``, ``'OFF'``, ``'Off'``,
|
||||||
``'off'``.
|
``'off'``.
|
||||||
|
* ``check-keys`` disables verification for keys in mappings. By default,
|
||||||
|
``truthy`` rule applies to both keys and values. Set this option to ``false``
|
||||||
|
to prevent this.
|
||||||
|
|
||||||
.. rubric:: Examples
|
.. rubric:: Examples
|
||||||
|
|
||||||
@ -92,6 +95,22 @@ This can be useful to prevent surprises from YAML parsers transforming
|
|||||||
- false
|
- false
|
||||||
- on
|
- on
|
||||||
- off
|
- off
|
||||||
|
|
||||||
|
#. With ``truthy: {check-keys: false}``
|
||||||
|
|
||||||
|
the following code snippet would **PASS**:
|
||||||
|
::
|
||||||
|
|
||||||
|
yes: 1
|
||||||
|
on: 2
|
||||||
|
true: 3
|
||||||
|
|
||||||
|
the following code snippet would **FAIL**:
|
||||||
|
::
|
||||||
|
|
||||||
|
yes: Yes
|
||||||
|
on: On
|
||||||
|
true: True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
@ -109,14 +128,18 @@ TRUTHY = ['YES', 'Yes', 'yes',
|
|||||||
|
|
||||||
ID = 'truthy'
|
ID = 'truthy'
|
||||||
TYPE = 'token'
|
TYPE = 'token'
|
||||||
CONF = {'allowed-values': list(TRUTHY)}
|
CONF = {'allowed-values': list(TRUTHY), 'check-keys': bool}
|
||||||
DEFAULT = {'allowed-values': ['true', 'false']}
|
DEFAULT = {'allowed-values': ['true', 'false'], 'check-keys': True}
|
||||||
|
|
||||||
|
|
||||||
def check(conf, token, prev, next, nextnext, context):
|
def check(conf, token, prev, next, nextnext, context):
|
||||||
if prev and isinstance(prev, yaml.tokens.TagToken):
|
if prev and isinstance(prev, yaml.tokens.TagToken):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if (not conf['check-keys'] and isinstance(prev, yaml.tokens.KeyToken) and
|
||||||
|
isinstance(token, yaml.tokens.ScalarToken)):
|
||||||
|
return
|
||||||
|
|
||||||
if isinstance(token, yaml.tokens.ScalarToken):
|
if isinstance(token, yaml.tokens.ScalarToken):
|
||||||
if (token.value in (set(TRUTHY) - set(conf['allowed-values'])) and
|
if (token.value in (set(TRUTHY) - set(conf['allowed-values'])) and
|
||||||
token.style is None):
|
token.style is None):
|
||||||
|
Loading…
Reference in New Issue
Block a user