mirror of
https://github.com/borgbackup/borg.git
synced 2024-12-26 17:57:59 +00:00
Flexible default pattern style
A function to parse pattern specifications was introduced in commit
2bafece
. Since then it had a hardcoded default style of “fm”, meaning
fnmatch. With the forthcoming support for extracting files using
patterns this default style must be more flexible.
This commit is contained in:
parent
1fa4d2e516
commit
b6362b5963
1 changed files with 7 additions and 7 deletions
|
@ -418,18 +418,18 @@ def _match(self, path):
|
|||
_PATTERN_STYLE_BY_PREFIX = dict((i.PREFIX, i) for i in _PATTERN_STYLES)
|
||||
|
||||
|
||||
def parse_pattern(pattern):
|
||||
def parse_pattern(pattern, fallback=FnmatchPattern):
|
||||
"""Read pattern from string and return an instance of the appropriate implementation class.
|
||||
"""
|
||||
if len(pattern) > 2 and pattern[2] == ":" and pattern[:2].isalnum():
|
||||
(style, pattern) = (pattern[:2], pattern[3:])
|
||||
|
||||
cls = _PATTERN_STYLE_BY_PREFIX.get(style, None)
|
||||
|
||||
if cls is None:
|
||||
raise ValueError("Unknown pattern style: {}".format(style))
|
||||
else:
|
||||
style = FnmatchPattern.PREFIX
|
||||
|
||||
cls = _PATTERN_STYLE_BY_PREFIX.get(style, None)
|
||||
|
||||
if cls is None:
|
||||
raise ValueError("Unknown pattern style: {}".format(style))
|
||||
cls = fallback
|
||||
|
||||
return cls(pattern)
|
||||
|
||||
|
|
Loading…
Reference in a new issue