Holger Frey
3 years ago
3 changed files with 61 additions and 1 deletions
@ -0,0 +1,59 @@
@@ -0,0 +1,59 @@
|
||||
import click |
||||
import pyperclip |
||||
|
||||
def _strip_parts(iterable): |
||||
return [item.strip() for item in iterable] |
||||
|
||||
def _remove_item_two(iterable): |
||||
""" remove the second item from parts, it's the probe name """ |
||||
copied = iterable.copy() |
||||
copied.pop(1) # zero based index |
||||
return copied |
||||
|
||||
def _replace_empty_strings(iterable, replacement="None"): |
||||
return [i or replacement for i in iterable] |
||||
|
||||
def prepare(text): |
||||
lines = text.splitlines() |
||||
|
||||
# replacing the german decimal separator with the standard english dot |
||||
correct_separator = (l.replace(",", ".") for l in lines) |
||||
parted = (l.split("\t") for l in correct_separator) |
||||
stripped = (_strip_parts(l) for l in parted) |
||||
no_probe_name = (_remove_item_two(l) for l in stripped) |
||||
return [_replace_empty_strings(l) for l in no_probe_name] |
||||
|
||||
|
||||
def get_cell_lengths(table): |
||||
# get the max lenght of each column |
||||
in_columns = zip(*table) |
||||
columns_lenghts = (map(len, c) for c in in_columns) |
||||
return [max(c) for c in columns_lenghts] |
||||
|
||||
|
||||
def pad_field(index, t): |
||||
value, length = t |
||||
if index == 0: |
||||
return value.rjust(length) |
||||
else: |
||||
return value.ljust(length) |
||||
|
||||
def pad_fields(iterable, lengths): |
||||
return [pad_field(i, t) for i, t in enumerate(zip(iterable, lengths))] |
||||
|
||||
def build_list(table, lengths): |
||||
padded = (pad_fields(l) for l in lines) |
||||
padded_lines = (", ".join(l) for l in padded) |
||||
lines_as_list = (f" [{l}], # noqa: E201, E202, E501," for l in padded_lines) |
||||
list_content = "\n".join(lines_as_list) |
||||
return f"[\n{list_content}\n]\n" |
||||
|
||||
|
||||
@click.command() |
||||
def cli(): |
||||
xls = pyperclip.paste() |
||||
table = split_table(xls) |
||||
lengths = get_cell_lengths(table) |
||||
result = build_list(table, lengths) |
||||
print("copied to clipboard") |
||||
pyperclip.copy(result) |
Loading…
Reference in new issue