Skip to content

Commit

Permalink
Support multiple sysdict.
Browse files Browse the repository at this point in the history
  • Loading branch information
ueno committed Sep 3, 2010
1 parent 81a41aa commit cd307b4
Show file tree
Hide file tree
Showing 5 changed files with 565 additions and 478 deletions.
5 changes: 4 additions & 1 deletion engine/factory.py
Expand Up @@ -61,7 +61,10 @@ def __load_sysdict(self, _config):
sysdict_type = _config.get_value('sysdict_type', 'file')
try:
if sysdict_type == 'file':
return skk.SysDict(_config.sysdict_path)
instances = list()
for path in _config.sysdict_paths:
instances.append(skk.SysDict(path))
return skk.MultiSysDict(instances)
else:
host = _config.get_value('skkserv_host', 'localhost')
port = int(_config.get_value('skkserv_port', '1178'))
Expand Down
19 changes: 19 additions & 0 deletions engine/skk.py
Expand Up @@ -577,6 +577,25 @@ def completer(self, midasi):
except IOError:
return iter(list())

class MultiSysDict(DictBase):
def __init__(self, instances):
self.__instances = instances

def reload(self):
for sysdict in self.__instances:
sysdict.reload()

def lookup(self, midasi, okuri=False):
for sysdict in self.__instances:
candidate = sysdict.lookup(midasi, okuri)
if candidate:
return candidate

def completer(self, midasi):
return reduce(lambda x, y: x + y,
[sysdict.completer(midasi)
for sysdict in self.__instances])

class UsrDict(DictBase):
PATH = '~/.skk-ibus-jisyo'
HISTSIZE = 128
Expand Down
4 changes: 4 additions & 0 deletions setup/config.py
Expand Up @@ -19,6 +19,10 @@ def __sysdict_path(self):
sysdict_path = property(lambda self: self.get_value(\
'sysdict', self.__sysdict_path()))

def sysdict_paths(self):
return self.get_value('sysdict_paths',
[self.sysdict_path] if self.sysdict_path else None)

def __usrdict_path(self):
usrdict_path = os.path.expanduser(self.__usrdict_path_unexpanded)
open(usrdict_path, 'a+').close()
Expand Down

0 comments on commit cd307b4

Please sign in to comment.