You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
#!/usr/bin/env python
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# pylint: disable=pointless-statement, missing-docstring, invalid-name, len-as-condition
|
|
|
|
from rebulk.rules import Rule, RemoveMatch, CustomRule
|
|
|
|
|
|
|
|
|
|
|
|
class RemoveAllButLastYear(Rule):
|
|
|
|
consequence = RemoveMatch
|
|
|
|
def when(self, matches, context):
|
|
|
|
entries = matches.named('year')
|
|
|
|
return entries[:-1]
|
|
|
|
|
|
|
|
|
|
|
|
class PrefixedSuffixedYear(CustomRule):
|
|
|
|
def when(self, matches, context):
|
|
|
|
toRemove = []
|
|
|
|
years = matches.named('year')
|
|
|
|
for year in years:
|
|
|
|
if not matches.previous(year, lambda p: p.name == 'yearPrefix') and \
|
|
|
|
not matches.next(year, lambda n: n.name == 'yearSuffix'):
|
|
|
|
toRemove.append(year)
|
|
|
|
return toRemove
|
|
|
|
|
|
|
|
def then(self, matches, when_response, context):
|
|
|
|
for to_remove in when_response:
|
|
|
|
matches.remove(to_remove)
|
|
|
|
|
|
|
|
|
|
|
|
class PrefixedSuffixedYearNoLambda(Rule):
|
|
|
|
consequence = RemoveMatch
|
|
|
|
def when(self, matches, context):
|
|
|
|
toRemove = []
|
|
|
|
years = matches.named('year')
|
|
|
|
for year in years:
|
|
|
|
if not [m for m in matches.previous(year) if m.name == 'yearPrefix'] and \
|
|
|
|
not [m for m in matches.next(year) if m.name == 'yearSuffix']:
|
|
|
|
toRemove.append(year)
|
|
|
|
return toRemove
|