diff options
author | Siteshwar Vashisht <siteshwar@gmail.com> | 2014-06-08 16:02:05 +0530 |
---|---|---|
committer | Siteshwar Vashisht <siteshwar@gmail.com> | 2014-06-08 16:05:00 +0530 |
commit | 7b3132d39d47687efb93b2a476a4926436c764c9 (patch) | |
tree | 1e8609bf6467d0fefbd21e65331ab9fa57972b93 | |
parent | 8345fc2b9e0bf71d7525ad25ee7a4994dc4110be (diff) |
Fixed code to parse bindings for webconfig
-rwxr-xr-x | share/tools/web_config/webconfig.py | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/share/tools/web_config/webconfig.py b/share/tools/web_config/webconfig.py index e5915ebd..fec78af9 100755 --- a/share/tools/web_config/webconfig.py +++ b/share/tools/web_config/webconfig.py @@ -29,6 +29,8 @@ try: except ImportError: import simplejson as json +from optparse import OptionParser + FISH_BIN_PATH = False # will be set later def run_fish_cmd(text): from subprocess import PIPE @@ -282,11 +284,10 @@ class BindingParser: "sleft": "Shift Left", "sright": "Shift Right" } - def set_buffer(self, buffer, is_key=False): + def set_buffer(self, buffer): """ Sets code to parse """ self.buffer = buffer - self.is_key = is_key self.index = 0 def get_char(self): @@ -356,12 +357,9 @@ class BindingParser: def get_readable_binding(self): """ Gets a readable representation of binding """ - if self.is_key: - try: - result = BindingParser.readable_keys[self.buffer] - except KeyError: - result = self.buffer.title() - else: + try: + result = BindingParser.readable_keys[self.buffer] + except KeyError: result = self.parse_binding() return result @@ -547,18 +545,29 @@ class FishConfigHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): bindings = [] binding_parser = BindingParser() + parser = OptionParser() + parser.add_option("-k") + parser.add_option("-M") + parser.add_option("-m") + + # Ignore any parsing errors + parser.error = lambda x: None + for line in out.split('\n'): - comps = line.split(' ', 2) - if len(comps) < 3: + comps = line.split(' ', 1) + + if len(comps) < 2: continue - if comps[1] == '-k': - key_name, command = comps[2].split(' ', 1) - binding_parser.set_buffer(key_name, True) - fish_binding = FishBinding(command=command, binding=key_name, readable_binding=binding_parser.get_readable_binding()) - else: - binding_parser.set_buffer(comps[1]) - fish_binding = FishBinding(command=comps[2], binding=comps[1], readable_binding=binding_parser.get_readable_binding()) + # parse arguments passed to bind command + bind_args_list = comps[1].split(' ', 6) + (options, args) = parser.parse_args(bind_args_list) + + key_name= options.k + command = args[0] + + binding_parser.set_buffer(key_name) + fish_binding = FishBinding(command=command, binding=key_name, readable_binding=binding_parser.get_readable_binding()) bindings.append(fish_binding) return [ binding.get_json_obj() for binding in bindings ] |