I think so, too. You can make a nice 'fluent' DSL out of it, though.
class Chain: def __init__(self, *fns): self.fns = fns def __or__(self, fn): return Chain(*self.fns, fn) def __call__(self, arg): return reduce(lambda ret, f: f(ret), self.fns, arg) Chain() | read_file | create_filter("https://") | web_get def double(x): return 2*x def fromstr(s): return int(s) def inc(x): return x+1 def repeat(n): return lambda s: s * n c = Chain() | fromstr | inc | double | str | repeat(3) assert c("1") == "444" assert c("20") == "424242"
..... ingenious.
I'm still trying to brain this, its possibilities and its limitations but... wow.
A bit of commentary would be very welcome :-)
I'll expand it in a full fledged post :) Or 'leave it as an exercise'?
I either love this or hate it, I can't decide. Bravo, sir!
Somehow, I have hit the 'publish' button on dev.to/xtofl/i-want-my-bash-pipe-34i2.
I've only skimmed the article so far, but it looks like a good one. I like the title! 😁
@xtofl , @Cliff , I have finally gotten round to this, I think you will be gleefully dismayed.
dev.to/taikedz/shellpipe-shellpipe...
We're a place where coders share, stay up-to-date and grow their careers.
I think so, too. You can make a nice 'fluent' DSL out of it, though.
..... ingenious.
I'm still trying to brain this, its possibilities and its limitations but... wow.
A bit of commentary would be very welcome :-)
I'll expand it in a full fledged post :) Or 'leave it as an exercise'?
I either love this or hate it, I can't decide. Bravo, sir!
Somehow, I have hit the 'publish' button on dev.to/xtofl/i-want-my-bash-pipe-34i2.
I've only skimmed the article so far, but it looks like a good one. I like the title! 😁
@xtofl , @Cliff , I have finally gotten round to this, I think you will be gleefully dismayed.
dev.to/taikedz/shellpipe-shellpipe...