Source code for txt2xls.reader

# coding=utf-8
"""
"""
__author__ = 'Alisue <lambdalisue@hashnote.net>'
import maidenhair
from maidenhair.utils.plugins import registry
from maidenhair.filters.relative import relative
from maidenhair.filters.baseline import baseline
from maidenhair.classification.unite import unite_dataset
from maidenhair.classification.classify import classify_dataset
from txt2xls.function import parse_function


[docs]class Reader(object): def __init__(self, conf): self.parser = registry.find(conf['parser'])() self.loader = registry.find(conf['loader'])() self.using = conf['using'] # classify def config_classify(conf): self.classify = conf['enabled'] self.classify_function = parse_function(conf['function']) config_classify(conf['classify']) # unite def config_unite(conf): self.unite = conf['enabled'] self.unite_function = parse_function(conf['function']) self.unite_basecolumn = conf['basecolumn'] config_unite(conf['unite']) # relative # Note: # basecolumn +1 for filename column def config_relative(conf): self.relative = conf['enabled'] self.relative_origin = conf['origin'] self.relative_basecolumn = conf['basecolumn'] + 1 config_relative(conf['relative']) # baseline # Note: # basecolumn +1 for filename column def config_baseline(conf): self.baseline = conf['enabled'] self.baseline_function = parse_function(conf['function']) self.baseline_basecolumn = conf['basecolumn'] + 1 config_baseline(conf['baseline'])
[docs] def read(self, pathname, fail_silently): # load dataset with filename without # - unite # - relative # - baseline # because there will be proceeded in txt2xls way dataset = maidenhair.load(pathname, using=self.using, unite=False, relative=False, baseline=None, parser=self.parser, loader=self.loader, with_filename=True) # classify dataset if self.classify: collection = classify_dataset(dataset, self.classify_function) else: collection = {'': dataset} # run processes for name, dataset in collection.items(): # unite dataset if self.unite: dataset = unite_dataset(dataset, self.unite_basecolumn, self.unite_function) # baseline if self.baseline: dataset = baseline(dataset, self.baseline_basecolumn, self.baseline_function, fail_silently) # relative if self.relative: dataset = relative(dataset, self.relative_origin, self.relative_basecolumn, fail_silently) # save modified dataset into the collection collection[name] = dataset
return collection