root/lang/python/otolog4linux/trunk/src/plugin.py @ 2266

Revision 2266, 1.7 kB (checked in by mattn, 6 years ago)

lang/python/otolog4linux: initial import.

  • Property svn:executable set to *
Line 
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3"""
4Otolog Plugin Implements
5"""
6import os
7import sys
8import ihooks
9
10__author__ = 'mattn <mattn.jp@gmail.com>'
11__url__ = 'http://www.ac.cyberhome.ne.jp/~mattn/'
12__date__ = "Tue, 07 Feb 2006"
13__version__ = "0.04"
14__credits__ = """Yasuhro Matsumoto, main developer
15"""
16
17class Plugin:
18        """
19        Otolog Plugin Information Class
20        This class load plugins about jacket provider and player.
21        """
22        def __init__(self, plugin_paths):
23                """
24                specify plugin path.
25                """
26                loader = ihooks.BasicModuleLoader()
27                self.modules = {}
28                try:
29                        for plugin_path in plugin_paths:
30                                for f in os.listdir(plugin_path):
31                                        name, ext = os.path.splitext(f)
32                                        if ext != '.py':
33                                                continue
34                                        try:
35                                                m = loader.find_module_in_dir(name, plugin_path)
36                                                m = loader.load_module(name, m)
37                                                self.modules[name] = m
38                                        except Exception, e:
39                                                #print e
40                                                pass
41                except:
42                        pass
43
44        def get_module_names(self, kind):
45                """
46                return server plugin names.
47                """
48                names = []
49                for key in self.modules.keys():
50                        try:
51                                module = self.modules[key]
52                                if kind in module.get_capability():
53                                        names.append(self.modules[key].get_name())
54                        except:
55                                pass
56                return names
57
58        def get_module_keys(self, kind):
59                """
60                return server plugin keys.
61                """
62                keys = []
63                for key in self.modules.keys():
64                        try:
65                                module = self.modules[key]
66                                if kind in module.get_capability():
67                                        keys.append(key)
68                        except:
69                                pass
70                return keys
71
72        def get_key(self, kind, name):
73                for key in self.get_module_keys(kind):
74                        try:
75                                module = self.modules[key]
76                                if module.get_name() == name:
77                                        return key
78                        except:
79                                pass
80                return ''
81
82        def get_name(self, key):
83                try:
84                        return self.modules[key].get_name()
85                except:
86                        return key
Note: See TracBrowser for help on using the browser.