diff options
-rw-r--r-- | meta/lib/oe/types.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/meta/lib/oe/types.py b/meta/lib/oe/types.py index ea31cf4219..ea53df9bf2 100644 --- a/meta/lib/oe/types.py +++ b/meta/lib/oe/types.py | |||
@@ -40,6 +40,31 @@ def choice(value, choices): | |||
40 | (value, choices)) | 40 | (value, choices)) |
41 | return value | 41 | return value |
42 | 42 | ||
43 | class NoMatch(object): | ||
44 | """Stub python regex pattern object which never matches anything""" | ||
45 | def findall(self, string, flags=0): | ||
46 | return None | ||
47 | |||
48 | def finditer(self, string, flags=0): | ||
49 | return None | ||
50 | |||
51 | def match(self, flags=0): | ||
52 | return None | ||
53 | |||
54 | def search(self, string, flags=0): | ||
55 | return None | ||
56 | |||
57 | def split(self, string, maxsplit=0): | ||
58 | return None | ||
59 | |||
60 | def sub(pattern, repl, string, count=0): | ||
61 | return None | ||
62 | |||
63 | def subn(pattern, repl, string, count=0): | ||
64 | return None | ||
65 | |||
66 | NoMatch = NoMatch() | ||
67 | |||
43 | def regex(value, regexflags=None): | 68 | def regex(value, regexflags=None): |
44 | """OpenEmbedded 'regex' type | 69 | """OpenEmbedded 'regex' type |
45 | 70 | ||
@@ -59,6 +84,12 @@ def regex(value, regexflags=None): | |||
59 | except AttributeError: | 84 | except AttributeError: |
60 | raise ValueError("Invalid regex flag '%s'" % flag) | 85 | raise ValueError("Invalid regex flag '%s'" % flag) |
61 | 86 | ||
87 | if not value: | ||
88 | # Let's ensure that the default behavior for an undefined or empty | ||
89 | # variable is to match nothing. If the user explicitly wants to match | ||
90 | # anything, they can match '.*' instead. | ||
91 | return NoMatch | ||
92 | |||
62 | try: | 93 | try: |
63 | return re.compile(value, flagval) | 94 | return re.compile(value, flagval) |
64 | except re.error, exc: | 95 | except re.error, exc: |