aboutsummaryrefslogtreecommitdiff
path: root/scripts/shadacat.py
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2015-10-18 21:08:42 +0300
committerZyX <kp-pav@yandex.ru>2015-10-23 14:47:59 +0300
commita85163a5d2af9d147e74ef2e52b7b4ac95611ab3 (patch)
treea4b6384572c1369b027ca56b5816b1c64a2e4b79 /scripts/shadacat.py
parente38cbb93670272d0da15c60222a123b88ec55002 (diff)
downloadrneovim-a85163a5d2af9d147e74ef2e52b7b4ac95611ab3.tar.gz
rneovim-a85163a5d2af9d147e74ef2e52b7b4ac95611ab3.tar.bz2
rneovim-a85163a5d2af9d147e74ef2e52b7b4ac95611ab3.zip
scripts: Add filter argument to shadacat.py
Diffstat (limited to 'scripts/shadacat.py')
-rwxr-xr-xscripts/shadacat.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/scripts/shadacat.py b/scripts/shadacat.py
index 4ff493bfbc..2f2cf19f9d 100755
--- a/scripts/shadacat.py
+++ b/scripts/shadacat.py
@@ -60,9 +60,22 @@ def mnormalize(o):
fname = sys.argv[1]
+try:
+ filt = sys.argv[2]
+except IndexError:
+ filt = lambda entry: True
+else:
+ _filt = filt
+ filt = lambda entry: eval(_filt, globals(), {'entry': entry})
+
poswidth = len(str(os.stat(fname).st_size or 1000))
+class FullEntry(dict):
+ def __init__(self, val):
+ self.__dict__.update(val)
+
+
with open(fname, 'rb') as fp:
unpacker = msgpack.Unpacker(file_like=fp, read_size=1)
max_type = max(typ.value for typ in EntryTypes)
@@ -82,5 +95,15 @@ with open(fname, 'rb') as fp:
else:
entry = unpacker.unpack()
typ = EntryTypes(typ)
+ full_entry = FullEntry({
+ 'value': entry,
+ 'timestamp': timestamp,
+ 'time': time,
+ 'length': length,
+ 'pos': pos,
+ 'type': typ,
+ })
+ if not filt(full_entry):
+ continue
print('%*u %13s %s %5u %r' % (
poswidth, pos, typ.name, time.isoformat(), length, mnormalize(entry)))