flowy/splitter_validator.py
2010-11-05 18:57:01 +01:00

25 lines
1.1 KiB
Python

from copy import copy, deepcopy
from splitter import Branch as BranchImpl
from splitter import Splitter as SplitterImpl
class SplitterValidator(object):
def __init__(self, parser, filter_validator):
self.splitter = copy(parser.splitter)
self.branches = deepcopy(parser.branches)
self.branch_ids = filter_validator.branches_ids
self.filter_impl = filter_validator.impl
self.br_name_to_br = {}
self.impl = self.create_impl()
def sort_branches(self):
id_to_branch = dict(zip(self.branch_ids.values(),
self.branch_ids.keys()))
sorted_br = [id_to_branch[k] for k in sorted(id_to_branch.keys())]
return sorted_br
def create_impl(self):
br_names = self.sort_branches()
branches = [BranchImpl(name) for name in br_names]# Actual branch instances are being initiated
name_to_br = dict(zip(br_names, branches))# These instances are being mapped to the corresponding names, i.e. A, B
self.br_name_to_br = name_to_br
return SplitterImpl(name_to_br, self.filter_impl)