Commit 9df19859 authored by Dom Sekotill's avatar Dom Sekotill
Browse files

Modify pattern names and inheritance

parent 291e367c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@ class GitLoader(loaders.Loader):

	def __init__(self, project_root, target_path):
		super(GitLoader, self).__init__(project_root, target_path)
		pattern = patterns.ExactPattern('.git')
		pattern = patterns.FileMatchPattern('.git')
		self.rules = rules.Rule(project_root, '', pattern, with_path=False)
		self.tails = [self.rules, None]

+19 −13
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@ from functools import partial
from collections import Callable


class Pattern(object):
class BasePattern(object):

	def __init__(self, pattern, **extra):
		self.pattern = pattern
@@ -16,32 +16,38 @@ class Pattern(object):
		raise NotImplementedError()


class ExactPattern(Pattern):
class FileMatchPattern(BasePattern):

	def match(self, path):
		return path == self.pattern


class RegexPattern(Pattern):
class RegexPattern(BasePattern):

	def __init__(self, pattern, **extra):
		super(RegexPattern, self).__init__(pattern, **extra)
		self.match_begining = extra.get('match_begining', False)

	def match(self, path):
		return bool(re.match(self.pattern, path))
		regex = re.compile(self.pattern)
		return self._match(regex, path)

	def _match(self, regex, path):
		if self.match_begining:
			return bool(regex.match(path))
		else:
			return bool(regex.search(path))

class SimplePattern(Pattern):

class CompiledPattern(RegexPattern):

	def __init__(self, pattern, **extra):
		super(SimplePattern, self).__init__(pattern, **extra)
		self.match_begining = extra.get('match_begining', False)
		super(CompiledPattern, self).__init__(pattern, **extra)
		self.active_replacements = {}
		self._cached_regex = None

	def match(self, path):
		regex = self.regex()
		if self.match_begining:
			return bool(regex.match(path))
		else:
			return bool(regex.search(path))
		return self._match(self.regex(), path)

	def regex(self):
		if not self._cached_regex:
@@ -109,7 +115,7 @@ class SimplePattern(Pattern):
			)


class GlobPattern(SimplePattern):
class GlobPattern(CompiledPattern):

	default_replacements = {
		'\.': '\.',