Index: abp/filters/parser.py |
=================================================================== |
--- a/abp/filters/parser.py |
+++ b/abp/filters/parser.py |
@@ -140,7 +140,7 @@ |
Include = _line_type('Include', 'target', '%include {0.target}%') |
-METADATA_REGEXP = re.compile(r'([\w-]+)\s*:\s*(.*)') |
+METADATA_REGEXP = re.compile(r'(.*?)\s*:\s*(.*)') |
INCLUDE_REGEXP = re.compile(r'%include\s+(.+)%') |
HEADER_REGEXP = re.compile(r'\[(Adblock(?:\s*Plus\s*[\d\.]+?)?)\]', flags=re.I) |
HIDING_FILTER_REGEXP = re.compile(r'^([^/*|@"!]*?)#([@?])?#(.+)$') |
@@ -319,7 +319,7 @@ |
for line in lines: |
result = parse_line(line) |
- if isinstance(result, Comment): |
+ if result.type == 'comment': |
match = METADATA_REGEXP.match(result.text) |
if match: |
key, value = match.groups() |
@@ -330,12 +330,9 @@ |
# we have to make sure to still parse them regardless of |
# their position in the filter list. |
if not metadata_closed or key.lower() == 'checksum': |
- yield Metadata(key, value) |
- continue |
+ result = Metadata(key, value) |
- if not result.text: |
- metadata_closed = True |
- elif not isinstance(result, Header): |
+ if result.type not in {'header', 'metadata'}: |
metadata_closed = True |
yield result |