diff options
author | ZyX <kp-pav@yandex.ru> | 2015-10-18 21:08:42 +0300 |
---|---|---|
committer | ZyX <kp-pav@yandex.ru> | 2015-10-23 14:47:59 +0300 |
commit | a85163a5d2af9d147e74ef2e52b7b4ac95611ab3 (patch) | |
tree | a4b6384572c1369b027ca56b5816b1c64a2e4b79 /scripts/shadacat.py | |
parent | e38cbb93670272d0da15c60222a123b88ec55002 (diff) | |
download | rneovim-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-x | scripts/shadacat.py | 23 |
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))) |