diff options
Diffstat (limited to 'makefu')
-rw-r--r-- | makefu/2configs/Reaktor/sed-plugin.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/makefu/2configs/Reaktor/sed-plugin.py b/makefu/2configs/Reaktor/sed-plugin.py new file mode 100644 index 000000000..6d6e1f8b8 --- /dev/null +++ b/makefu/2configs/Reaktor/sed-plugin.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 + +# Usage: +# _from=krebs statedir=. python sed-plugin.py 'dick butt' +# _from=krebs statedir=. python sed-plugin.py 's/t/l/g' +## dick bull +import shelve +from os import environ +from os.path import join +from sys import argv +d = shelve.open(join(environ['statedir'],'sed-plugin.shelve'),writeback=True) +import re + +def is_regex(line): + # TODO: match s/di\/ck/butt/ but not s/di/ck/butt/ + myre = re.compile(r'^s/((?:\\/|[^/])+)/((?:\\/|[^/])*)/([ig]*)$') + return myre.match(line) + +line = argv[1] +m = is_regex(line) + +if m: + f,t,flagstr = m.groups() + f = f.replace('\/','/') + t = t.replace('\/','/') + flags = 0 + count = 1 + if flagstr: + if 'i' in flagstr: + flags = re.IGNORECASE + if 'g' in flagstr: + count = 0 + last = d.get(environ['_from'],None) + if last: + print(f,t,last) + print(re.sub(f,t,last,count=count,flags=flags)) + else: + print("no last message") +else: + print("setting line") + d[environ['_from']] = line + +d.close() |