Mercurial > hg > TextShaper
comparison textshaper/commands.py @ 34:88a69d587326
round1 of commands
| author | Jeff Hammel <k0scist@gmail.com> |
|---|---|
| date | Sun, 02 Mar 2014 15:33:07 -0800 |
| parents | de3148412191 |
| children |
comparison
equal
deleted
inserted
replaced
| 33:de3148412191 | 34:88a69d587326 |
|---|---|
| 1 #!/usr/bin/env python | |
| 2 # -*- coding: utf-8 -*- | 1 # -*- coding: utf-8 -*- |
| 3 | 2 |
| 4 """ | 3 """ |
| 5 CLI commands for textshaper | 4 CLI commands for textshaper |
| 6 """ | 5 """ |
| 7 | 6 |
| 7 import inspect | |
| 8 | |
| 8 class Shaper(object): | 9 class Shaper(object): |
| 9 """individual text shaper component""" | 10 """ |
| 11 individual text shaper component | |
| 12 (function wrapper) | |
| 13 """ | |
| 10 | 14 |
| 11 def __init__(self, function): | 15 def __init__(self, function): |
| 12 self.function = function | 16 self.function = function |
| 17 self.func_name = function.func_name | |
| 18 | |
| 19 def __call__(self, text, **kwargs): | |
| 20 return self.function(text, **kwargs) | |
| 21 | |
| 22 def __str__(self): | |
| 23 return self.func_name | |
| 24 | |
| 13 | 25 |
| 14 class Commands(object): | 26 class Commands(object): |
| 15 | 27 |
| 16 def __init__(self): | 28 def __init__(self): |
| 17 self.shapers = [] | 29 self.shapers = [] |
| 18 self.keys = {} | 30 self.keys = {} |
| 31 self.display_keys = [] | |
| 19 | 32 |
| 20 def add(self, function, key=None): | 33 def add(self, function, key=None): |
| 21 self.shapers.append(Shaper(function)) | 34 self.shapers.append(Shaper(function)) |
| 22 if key: | 35 if not key: |
| 23 self.keys[key] = self.shapers[-1] | 36 key = str(self.shapers[-1]) |
| 37 key = key.lower() | |
| 38 self.keys[key] = self.shapers[-1] | |
| 39 name = str(self.shapers[-1]).lower() | |
| 40 if name.startswith(key): | |
| 41 display_name = '{}{}'.format(key, name[len(key):].upper()) | |
| 42 else: | |
| 43 display_name = '{}:{}'.format(key, name.upper()) | |
| 44 self.display_keys.append(display_name) | |
| 45 | |
| 46 def call(self, key, text, **kwargs): | |
| 47 if key in self.keys: | |
| 48 return self.keys[key](text, **kwargs) | |
| 49 | |
| 50 __call__ = call | |
| 51 | |
| 52 def display(self): | |
| 53 return ' '.join(self.display_keys) |
