Source code for alphatwirl.configure.TableFileNameComposer

# Tai Sakuma <tai.sakuma@gmail.com>

##__________________________________________________________________||
[docs]class TableFileNameComposer(object): """Compose a name of a file to store the table from the column names and indices. For example, if column names are 'var1', 'var2', and 'var3' and indices are 1, None and 2, the file name will be 'tbl_n_component.var1-1.var2.var3-2.txt' """ def __init__(self, default_prefix = 'tbl_n', default_suffix = 'txt', default_var_separator = '.', default_idx_separator = '-', ): self.default_prefix = default_prefix self.default_suffix = default_suffix self.default_var_separator = default_var_separator self.default_idx_separator = default_idx_separator def __call__(self, columnNames, indices = None, prefix = None, suffix = None, var_separator = None, idx_separator = None ): prefix = self.default_prefix if prefix is None else prefix suffix = self.default_suffix if suffix is None else suffix var_separator = self.default_var_separator if var_separator is None else var_separator idx_separator = self.default_idx_separator if idx_separator is None else idx_separator if not columnNames: return prefix + '.' + suffix # e.g. "tbl_n_component.txt" if indices is None: colidxs = columnNames # e.g., ('var1', 'var2', 'var3'), middle = var_separator.join(colidxs) # e.g., 'var1.var2.var3' ret = prefix + var_separator + middle + '.' + suffix # e.g., 'tbl_n_component.var1.var2.var3.txt' return ret # e.g., # columnNames = ('var1', 'var2', 'var3', 'var4', 'var5'), # indices = (1, None, '*', '(*)', '\\1') idx_str = indices # e.g., (1, None, '*', '(*)', '\\1') idx_str = ['w' if i == '*' else i for i in idx_str] # e..g, [1, None, 'w', '(*)', '\\1'] idx_str = ['wp' if i == '(*)' else i for i in idx_str] # e.g., [1, None, 'w', 'wp', '\\1'] idx_str = ['b{}'.format(i[1:]) if isinstance(i, str) and i.startswith('\\') else i for i in idx_str] # e.g., [1, None, 'w', 'wp', 'b1'] idx_str = ['' if i is None else '{}{}'.format(idx_separator, i) for i in idx_str] # e.g., ['-1', '', '-w', '-wp', '-b1'] colidxs = [n + i for n, i in zip(columnNames, idx_str)] # e.g., ['var1-1', 'var2', 'var3-w', 'var4-wp', 'var5-b1'] middle = var_separator.join(colidxs) # e.g., 'var1-1.var2.var3-w.var4-wp.var5-b1' ret = prefix + var_separator + middle + '.' + suffix # e.g., tbl_n_component.var1-1.var2.var3-w.var4-wp.var5-b1.txt return ret
##__________________________________________________________________||