m 2 Reaktor: finish sed-plugin
This commit is contained in:
parent
869a278aa8
commit
ee4546c9a4
18
makefu/2configs/Reaktor/sed-plugin.nix
Normal file
18
makefu/2configs/Reaktor/sed-plugin.nix
Normal file
@ -0,0 +1,18 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with pkgs;
|
||||
let
|
||||
script = ./sed-plugin.py;
|
||||
in {
|
||||
#TODO: this will eat up the last regex, fix Reaktor
|
||||
krebs.Reaktor.extraConfig = ''
|
||||
public_commands.append({
|
||||
'capname' : "shack-correct",
|
||||
# only support s///gi
|
||||
'pattern' : '^(?P<args>.*)$$',
|
||||
'argv' : ["${pkgs.python3}/bin/python3","${script}"],
|
||||
'env' : { 'state_dir' : workdir,
|
||||
'PATH':'${lib.makeSearchPath "bin" [pkgs.gnused]}' }})
|
||||
'';
|
||||
}
|
||||
|
@ -1,18 +1,18 @@
|
||||
#!/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'
|
||||
# _from=krebs state_dir=. python sed-plugin.py 'dick butt'
|
||||
# _from=krebs state_dir=. 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)
|
||||
d = shelve.open(join(environ['state_dir'],'sed-plugin.shelve'),writeback=True)
|
||||
usr = environ['_from']
|
||||
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)
|
||||
|
||||
@ -32,22 +32,22 @@ if m:
|
||||
count = 0
|
||||
else:
|
||||
flagstr = ''
|
||||
last = d.get(environ['_from'],None)
|
||||
last = d.get(usr,None)
|
||||
if last:
|
||||
print(fn,tn,last)
|
||||
#print(re.sub(fn,tn,last,count=count,flags=flags))
|
||||
from subprocess import Popen,PIPE
|
||||
p = Popen(['sed','s/{}/{}/{}'.format(f,t,flagstr)],stdin=PIPE,stdout=PIPE )
|
||||
so,_ = p.communicate(last+"\n")
|
||||
so,se = p.communicate(bytes("{}\n".format(last),"UTF-8"))
|
||||
if p.returncode:
|
||||
print("something went wrong when trying to process your regex")
|
||||
print(so)
|
||||
|
||||
print("something went wrong when trying to process your regex: {}".format(se.decode()))
|
||||
ret = so.decode()
|
||||
print("\x1b[1m{}\x1b[0m meinte: {}".format(usr,ret.strip()))
|
||||
if ret:
|
||||
d[usr] = ret
|
||||
|
||||
else:
|
||||
print("no last message")
|
||||
else:
|
||||
print("setting line")
|
||||
d[environ['_from']] = line
|
||||
d[usr] = line
|
||||
|
||||
d.close()
|
||||
|
Loading…
Reference in New Issue
Block a user