vim/castrate.py @ a65fd2691c94 default tip
More
| author | Steve Losh <steve@stevelosh.com> |
|---|---|
| date | Mon, 03 Nov 2025 14:55:17 -0500 |
| parents | 61eac7b103d6 |
| children | (none) |
#!/usr/bin/env python # Original source: http://forrst.com/posts/An_unball_script_for_vimball_plugins-CHM import os, sys if len(sys.argv) < 2: raise SystemExit('usage: python castrate.py annoying.vba bundle/annoying') infile = sys.argv[1] vba_dir = os.path.splitext(infile)[0] if len(sys.argv) > 2: vba_dir = sys.argv[2] if os.path.exists(vba_dir): raise SystemExit('The location ' + vba_dir + ' already exists. ' 'Please delete/move it or give a different folder to extract into.') lines = open(infile).read().splitlines() vbasize = len(lines) i = 0 while i < vbasize: line = lines[i] if line.endswith('\t[[[1'): path = line.rstrip('\t[[[1').replace('\\', '/') size = int(lines[i + 1]) content = '\n'.join(lines[i + 2 : i + 2 + size]) relpath = os.path.join(vba_dir, path) dirname = os.path.dirname(relpath) if not os.path.exists(dirname): os.makedirs(dirname) open(relpath, 'w').write(content) print 'wrote', path i += 2 + size else: i += 1 print 'Unballed', infile, 'into', vba_dir print 'And hence the world rests in peace'