master
parent
e7ebf5c245
commit
d5b0e25ce2
@ -0,0 +1,63 @@ |
|||||||
|
from functools import partial, reduce |
||||||
|
|
||||||
|
def n_chars(n: int, s) -> str: |
||||||
|
""" |
||||||
|
Takes the first n characters |
||||||
|
""" |
||||||
|
return s[0:n] |
||||||
|
|
||||||
|
|
||||||
|
first_char = partial(n_chars, 1) |
||||||
|
|
||||||
|
|
||||||
|
def first_word(s: str) -> str: |
||||||
|
""" |
||||||
|
Takes the first word |
||||||
|
""" |
||||||
|
return s.split(' ')[0] |
||||||
|
|
||||||
|
|
||||||
|
def drop_first_n_words(n: int, s: str) -> str: |
||||||
|
""" |
||||||
|
Removes the first word |
||||||
|
""" |
||||||
|
return ' '.join(s.split(' ')[n:]) |
||||||
|
|
||||||
|
|
||||||
|
drop_first_word = partial(drop_first_n_words, 1) |
||||||
|
|
||||||
|
|
||||||
|
def drop_first_word_if_eq(drop_if: str, s: str) -> str: |
||||||
|
return drop_first_word(s) if drop_if == first_word(s) else s |
||||||
|
|
||||||
|
|
||||||
|
def apply(*args: [callable], **k): |
||||||
|
fns = args[:-1] |
||||||
|
data = args[-1] |
||||||
|
for fn in fns: |
||||||
|
data = fn(data, **k) |
||||||
|
k = {} |
||||||
|
return data |
||||||
|
|
||||||
|
|
||||||
|
def drop_first_if_eq(drop_if: str, s: str) -> str: |
||||||
|
return s[len(drop_if):] if s[0:len(drop_if)] == drop_if else s |
||||||
|
|
||||||
|
def drop_until(until: str, s: str) -> str: |
||||||
|
return s[s.find(until):] |
||||||
|
|
||||||
|
def drop_from(end: str, s: str) -> str: |
||||||
|
idx = s.find(end) |
||||||
|
return s[:idx] if idx >= 0 else s |
||||||
|
|
||||||
|
|
||||||
|
def apply(x, y, **k): |
||||||
|
return y(x, **k) |
||||||
|
|
||||||
|
|
||||||
|
def foldr(fns, data, **kwargs): |
||||||
|
return reduce(partial(apply, **kwargs), fns, data) |
||||||
|
|
||||||
|
|
||||||
|
def drop_kwargs(x, *a, **k): |
||||||
|
return x(*a) |
Loading…
Reference in new issue