Files
hudozka/modules/sync/utils/fn.py
T
2020-02-23 21:25:17 +03:00

46 lines
803 B
Python

import os
from functools import reduce
def constant(value):
return lambda _: value
def combine(items):
if len(items) == 0:
return []
return reduce(
lambda total, i: total + i,
items
)
def compose(*fns):
return lambda i: reduce(
lambda out, fn: fn(out),
fns, i
)
first = lambda i: i[0] if len(i) > 0 else None
def swap_ext(extension: str):
return lambda i: os.path.splitext(i)[0] + extension
def map_cases(param, cases):
for predicate, fn in cases:
if predicate(param):
return fn(param)
return param
def until(condition_fn, iter_fn, items, default_value=None):
for i in items:
result = iter_fn(i)
if condition_fn(result):
return result
return default_value