2018-09-17 00:27:00 +00:00
|
|
|
#!/usr/bin/env python
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
|
|
cd and cd_count properties
|
|
|
|
"""
|
|
|
|
from rebulk.remodule import re
|
|
|
|
|
|
|
|
from rebulk import Rebulk
|
2020-05-20 15:29:39 +00:00
|
|
|
|
2018-09-17 00:27:00 +00:00
|
|
|
from ..common import dash
|
2020-05-20 15:29:39 +00:00
|
|
|
from ..common.pattern import is_disabled
|
2018-09-17 00:27:00 +00:00
|
|
|
|
|
|
|
|
2020-05-20 15:29:39 +00:00
|
|
|
def cds(config): # pylint:disable=unused-argument
|
2018-09-17 00:27:00 +00:00
|
|
|
"""
|
|
|
|
Builder for rebulk object.
|
2020-05-20 15:29:39 +00:00
|
|
|
|
|
|
|
:param config: rule configuration
|
|
|
|
:type config: dict
|
2018-09-17 00:27:00 +00:00
|
|
|
:return: Created Rebulk object
|
|
|
|
:rtype: Rebulk
|
|
|
|
"""
|
2020-05-20 15:29:39 +00:00
|
|
|
rebulk = Rebulk(disabled=lambda context: is_disabled(context, 'cd'))
|
|
|
|
rebulk = rebulk.regex_defaults(flags=re.IGNORECASE, abbreviations=[dash])
|
2018-09-17 00:27:00 +00:00
|
|
|
|
|
|
|
rebulk.regex(r'cd-?(?P<cd>\d+)(?:-?of-?(?P<cd_count>\d+))?',
|
|
|
|
validator={'cd': lambda match: 0 < match.value < 100,
|
|
|
|
'cd_count': lambda match: 0 < match.value < 100},
|
|
|
|
formatter={'cd': int, 'cd_count': int},
|
|
|
|
children=True,
|
|
|
|
private_parent=True,
|
|
|
|
properties={'cd': [None], 'cd_count': [None]})
|
|
|
|
rebulk.regex(r'(?P<cd_count>\d+)-?cds?',
|
|
|
|
validator={'cd': lambda match: 0 < match.value < 100,
|
|
|
|
'cd_count': lambda match: 0 < match.value < 100},
|
|
|
|
formatter={'cd_count': int},
|
|
|
|
children=True,
|
|
|
|
private_parent=True,
|
|
|
|
properties={'cd': [None], 'cd_count': [None]})
|
|
|
|
|
|
|
|
return rebulk
|