diff options
author | makefu <github@syntax-fehler.de> | 2015-12-08 18:05:46 +0100 |
---|---|---|
committer | makefu <github@syntax-fehler.de> | 2015-12-08 18:08:39 +0100 |
commit | d83489feb1005dae7161909fcd0bf81a37e1ca41 (patch) | |
tree | 95edc8f0ae0bbcb1f2d20ab6c921bc4fc27e4b77 | |
parent | 0b1d441ddd1076bcb9bbb02abe13dddb3208efce (diff) |
m 2 Reaktor: init of sed-plugin
-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() |