diff --git a/libs/caper/__init__.py b/libs/caper/__init__.py index 23801ee3..1638ec0a 100644 --- a/libs/caper/__init__.py +++ b/libs/caper/__init__.py @@ -19,7 +19,7 @@ from caper.parsers.anime import AnimeParser from caper.parsers.scene import SceneParser -__version_info__ = ('0', '2', '0') +__version_info__ = ('0', '2', '2') __version_branch__ = 'master' __version__ = "%s%s" % ( diff --git a/libs/caper/matcher.py b/libs/caper/matcher.py index 24ef69af..23fdcf95 100644 --- a/libs/caper/matcher.py +++ b/libs/caper/matcher.py @@ -12,10 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -import pprint import re from logr import Logr -from caper.helpers import is_list_type, clean_dict +from caper.helpers import is_list_type class FragmentMatcher(object): @@ -57,8 +56,6 @@ class FragmentMatcher(object): self.regex[group_name].append((weight, weight_patterns)) - pprint.pprint(self.regex) - def find_group(self, name): for group_name, weight_groups in self.regex.items(): if group_name and group_name == name: @@ -66,62 +63,6 @@ class FragmentMatcher(object): return None - def parser_match(self, parser, group_name, single=True): - """ - - :type parser: caper.parsers.base.Parser - """ - result = None - - for group, weight_groups in self.regex.items(): - if group_name and group != group_name: - continue - - # TODO handle multiple weights - weight, patterns = weight_groups[0] - - for pattern in patterns: - fragments = [] - pattern_matched = True - pattern_result = {} - - for fragment_pattern in pattern: - if not parser.fragment_available(): - pattern_matched = False - break - - fragment = parser.next_fragment() - fragments.append(fragment) - - Logr.debug('[r"%s"].match("%s")', fragment_pattern.pattern, fragment.value) - match = fragment_pattern.match(fragment.value) - if match: - Logr.debug('Pattern "%s" matched', fragment_pattern.pattern) - else: - pattern_matched = False - break - - pattern_result.update(clean_dict(match.groupdict())) - - if pattern_matched: - if result is None: - result = {} - - if group not in result: - result[group] = {} - - Logr.debug('Matched on <%s>', ' '.join([f.value for f in fragments])) - - result[group].update(pattern_result) - parser.commit() - - if single: - return result - else: - parser.rewind() - - return result - def value_match(self, value, group_name=None, single=True): result = None diff --git a/libs/caper/parsers/base.py b/libs/caper/parsers/base.py index 70bc7334..d0e109e2 100644 --- a/libs/caper/parsers/base.py +++ b/libs/caper/parsers/base.py @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from logr import Logr from caper import FragmentMatcher from caper.group import CaptureGroup from caper.result import CaperResult, CaperClosureNode @@ -59,62 +58,6 @@ class Parser(object): raise NotImplementedError() - # - # Closure Methods - # - - def next_closure(self): - self._closure_pos += 1 - closure = self.closures[self._closure_pos] - - self._history.append(('fragment', -1 - self._fragment_pos)) - self._fragment_pos = -1 - - if self._closure_pos != 0: - self._history.append(('closure', 1)) - - Logr.debug('(next_closure) closure.value: "%s"', closure.value) - return closure - - def closure_available(self): - return self._closure_pos + 1 < len(self.closures) - - # - # Fragment Methods - # - - def next_fragment(self): - closure = self.closures[self._closure_pos] - - self._fragment_pos += 1 - fragment = closure.fragments[self._fragment_pos] - - self._history.append(('fragment', 1)) - - Logr.debug('(next_fragment) closure.value "%s" - fragment.value: "%s"', closure.value, fragment.value) - return fragment - - def fragment_available(self): - if not self.closure_available(): - return False - return self._fragment_pos + 1 < len(self.closures[self._closure_pos].fragments) - - def rewind(self): - for source, delta in reversed(self._history): - Logr.debug('(rewind) Rewinding step: %s', (source, delta)) - if source == 'fragment': - self._fragment_pos -= delta - elif source == 'closure': - self._closure_pos -= delta - else: - raise NotImplementedError() - - self.commit() - - def commit(self): - Logr.debug('(commit)') - self._history = [] - # # Capture Methods # diff --git a/libs/caper/step.py b/libs/caper/step.py index eb94b6fc..a82a9301 100644 --- a/libs/caper/step.py +++ b/libs/caper/step.py @@ -33,18 +33,6 @@ class CaptureStep(object): #: @type: bool self.single = single - def _get_next_subject(self, parser): - if self.source == 'fragment': - if not parser.fragment_available(): - return None - return parser.next_fragment() - elif self.source == 'closure': - if not parser.closure_available(): - return None - return parser.next_closure() - - raise NotImplementedError() - def execute(self, fragment): if self.regex: weight, match, num_fragments = self.capture_group.parser.matcher.fragment_match(fragment, self.regex)