class TransformVariableHandler(Handler): # spec: # key_value_delimiter: str # known_key_predicate: str, State -> bool # key_transformer: str, str, State -> str # transform_fun: str -> object # value: object # rt: TransformVariableHandler def __init__(self, key_value_delimiter, known_key_predicate, key_transformer, transform_fun, value): self._key_value_handler = TransformKeyValueHandler(key_value_delimiter, known_key_predicate, key_transformer, transform_fun) self._single_key_handler = SingleKeyHandler.create_with_known_key_predicate(key_value_delimiter, known_key_predicate, key_transformer, value) # spec: # key_value_delimiter: str # known_key_list: [str] # key_transformer: str, str, State -> str # transform_fun: str -> object # value: object # rt: TransformVariableHandler @classmethod def create_with_known_key_list(cls, key_value_delimiter, known_key_list, key_transformer, transform_fun, value): known_key_predicate = lambda key, state: key in known_key_list return cls(key_value_delimiter, known_key_predicate, key_transformer, transform_fun, value) # spec: # key_value_delimiter: str # known_key_predicate: str, State -> bool # key_transformer: str, str, State -> str # transform_fun: str -> object # value: object # rt: TransformVariableHandler @classmethod def create_with_known_key_predicate(cls, key_value_delimiter, known_key_predicate, key_transformer, transform_fun, value): return cls(key_value_delimiter, known_key_predicate, key_transformer, transform_fun, value) # spec: str, State -> (bool, State) def process(self, source, state): (result, state) = self._key_value_handler.process(source, state) if result: return (True, state) return self._single_key_handler.process(source, state)
def __init__(self, source_filename, db_file_path, logger): filters = [CommentFilter("#"), SpacesFilter()] standard_key_transformer = StandardKeyTransformer() ip_key_transformer = lambda key, state: "%(category)s.ip" % {"category": state.state_id} handlers = [ StandardConfigSectionHandler(), SimpleKeyValueHandler.create_with_known_key_predicate( "=", lambda key, state: state.state_id == "services", standard_key_transformer ), TransformKeyValueHandler.create_with_known_key_predicate( "=", lambda key, state: state.state_id == "users", standard_key_transformer, transform_user_fun ), AggregateKeyValueHandler.create_with_known_key_list( "=", ["ip0", "ip1", "ip2", "ip3", "ip4"], ip_key_transformer, lambda old_value, item: old_value + 1, 0 ), ] init_state = OrderedDict() encoding = "utf-8" self._collect_task = FileSourceCollectTask( self._source, filters, handlers, init_state, source_filename, encoding, db_file_path, logger )
def __init__(self, methodName='runTest'): super(TestTransformKeyValueHandler, self).__init__(methodName) key_transformer = lambda key, value, state: key value_transformer = lambda value: '__' + str(value) + '__' self._handler = TransformKeyValueHandler.create_with_known_key_list('=', ['key13', 'key666'], key_transformer, value_transformer)
def __init__(self, key_value_delimiter, known_key_predicate, key_transformer, transform_fun, value): self._key_value_handler = TransformKeyValueHandler(key_value_delimiter, known_key_predicate, key_transformer, transform_fun) self._single_key_handler = SingleKeyHandler.create_with_known_key_predicate(key_value_delimiter, known_key_predicate, key_transformer, value)