From cf0c56e14529a47f54daa62e2e6a9ab0e76c6d12 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Sat, 21 Sep 2019 11:02:06 +0200 Subject: Consolidate command line utils --- lulua/layout.py | 20 ++++++++++++++++---- lulua/plot.py | 16 ---------------- lulua/stats.py | 33 +++++++++++++++++++++++++++------ 3 files changed, 43 insertions(+), 26 deletions(-) (limited to 'lulua') diff --git a/lulua/layout.py b/lulua/layout.py index 05a6083..5e021fe 100644 --- a/lulua/layout.py +++ b/lulua/layout.py @@ -18,7 +18,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -import sys, re, unicodedata, copy +import sys, re, unicodedata, copy, argparse, logging from enum import IntEnum, unique from collections import defaultdict, namedtuple from itertools import chain @@ -343,9 +343,21 @@ class GenericLayout: defaultLayouts = YamlLoader ('data/layouts', GenericLayout.deserialize) -def importKlc (): - with open (sys.argv[1], 'r', encoding='utf16') as fd: - layers, layerSwitches = Layout.fromKlc (fd) +def importKlc (args): + with open (args.input, 'r', encoding='utf16') as fd: + layers, layerSwitches = GenericLayout.fromKlc (fd) data = {'name': None, 'layout': [{'layer': l, 'modifier': [list (x) for x in layerSwitches[i]]} for i, l in enumerate (layers)]} yaml.dump (data, sys.stdout) +def importFrom (): + parser = argparse.ArgumentParser(description='Import keyboard layouts.') + parser.add_argument('input', metavar='FILE', help='Input file') + subparsers = parser.add_subparsers() + sp = subparsers.add_parser('klc', help='Import from Microsoft Keyboard Layout creator') + sp.set_defaults (func=importKlc) + + logging.basicConfig (level=logging.INFO) + args = parser.parse_args() + + return args.func (args) + diff --git a/lulua/plot.py b/lulua/plot.py index 2cd7759..2a7d678 100644 --- a/lulua/plot.py +++ b/lulua/plot.py @@ -128,19 +128,3 @@ def triadfreq (args): return 0 -def plot (): - plotKinds = { - 'letterfreq': letterfreq, - 'triadfreq': triadfreq, - } - - parser = argparse.ArgumentParser (description='Plot stuff') - parser.add_argument('-l', '--layout', metavar='LAYOUT', help='Keyboard layout name') - parser.add_argument('kind', type=lambda x: plotKinds[x]) - - args = parser.parse_args() - - logging.basicConfig (level=logging.INFO) - - return args.kind (args) - diff --git a/lulua/stats.py b/lulua/stats.py index 3efa1c0..fc2b202 100644 --- a/lulua/stats.py +++ b/lulua/stats.py @@ -18,7 +18,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -import sys, operator, pickle +import sys, operator, pickle, argparse, logging from operator import itemgetter from itertools import chain, groupby, product from collections import defaultdict @@ -27,6 +27,7 @@ from .layout import * from .keyboard import defaultKeyboards from .writer import SkipEvent, Writer from .carpalx import Carpalx, model01 as cmodel01 +from .plot import letterfreq, triadfreq def updateDictOp (a, b, op): """ Update dict a by adding items from b using op """ @@ -164,8 +165,8 @@ def unpickleAll (fd): except EOFError: break -def combine (): - keyboard = defaultKeyboards['ibmpc105'] +def combine (args): + keyboard = defaultKeyboards[args.keyboard] layout = defaultLayouts['null'].specialize (keyboard) w = Writer (layout) combined = dict ((cls.name, cls(w)) for cls in allStats) @@ -174,11 +175,11 @@ def combine (): combined[s.name].update (r[s.name]) pickle.dump (combined, sys.stdout.buffer, pickle.HIGHEST_PROTOCOL) -def pretty (): +def pretty (args): stats = pickle.load (sys.stdin.buffer) - keyboard = defaultKeyboards['ibmpc105'] - layout = defaultLayouts[sys.argv[1]].specialize (keyboard) + keyboard = defaultKeyboards[args.keyboard] + layout = defaultLayouts[args.layout].specialize (keyboard) writer = Writer (layout) buttonPresses = sum (stats['simple'].buttons.values ()) @@ -220,3 +221,23 @@ def pretty (): effort.addTriads (stats['triads'].triads) print ('total effort (carpalx)', effort.effort) +def main (): + parser = argparse.ArgumentParser(description='Process statistics files.') + parser.add_argument('-l', '--layout', metavar='LAYOUT', help='Keyboard layout name') + parser.add_argument('-k', '--keyboard', metavar='KEYBOARD', + default='ibmpc105', help='Physical keyboard name') + subparsers = parser.add_subparsers() + sp = subparsers.add_parser('pretty') + sp.set_defaults (func=pretty) + sp = subparsers.add_parser('combine') + sp.set_defaults (func=combine) + sp = subparsers.add_parser('letterfreq') + sp.set_defaults (func=letterfreq) + sp = subparsers.add_parser('triadfreq') + sp.set_defaults (func=triadfreq) + + logging.basicConfig (level=logging.INFO) + args = parser.parse_args() + + return args.func (args) + -- cgit v1.2.3