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