diff options
-rw-r--r-- | ranger/ext/signal_dispatcher.py | 52 | ||||
-rw-r--r-- | test/tc_signal.py | 43 |
2 files changed, 0 insertions, 95 deletions
diff --git a/ranger/ext/signal_dispatcher.py b/ranger/ext/signal_dispatcher.py index 11e9c955..c1630c0c 100644 --- a/ranger/ext/signal_dispatcher.py +++ b/ranger/ext/signal_dispatcher.py @@ -13,7 +13,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -import re import weakref from types import MethodType @@ -29,7 +28,6 @@ class Signal(dict): class SignalHandler(object): active = True - regexp = None def __init__(self, signal_name, function, priority, pass_signal): self.priority = max(0, min(1, priority)) self.signal_name = signal_name @@ -103,53 +101,3 @@ class SignalDispatcher(object): return except ReferenceError: handlers.remove(handler) - -class RegexpSignalDispatcher(SignalDispatcher): - """ - A subclass of SignalDispatcher with regexp matching. - """ - - def __init__(self): - SignalDispatcher.__init__(self) - self._signal_regexes = list() - _signal_clear = __init__ - - def signal_bind(self, signal_name, function, priority=0.5): - try: - handlers = self._signals[signal_name] - except: - handlers = self._signals[signal_name] = [] - for handler in self._signal_regexes: - if handler.regexp.match(signal_name): - handlers.append(handler) - return SignalDispatcher.signal_bind(self, signal_name, \ - function, priority) - - def signal_bind_regexp(self, regexp, function, priority=0.5): - if isinstance(regexp, str): - regexp = re.compile(regexp) - handler = self.signal_bind('dynamic', function, priority) - handler.regexp = regexp - self._signal_regexes.append(handler) - for signal_name, handlers in self._signals.items(): - if regexp.match(signal_name): - handlers.append(handler) - handlers.sort(key=lambda handler: -handler.priority) - return handler - - def signal_unbind(self, handler): - self._signal_regexes.remove(handler) - for handlers in self._signals.values(): - try: - handlers.remove(handler) - except ValueError: - pass - - def signal_emit(self, signal_name, **kw): - assert isinstance(signal_name, str) - if not signal_name in self._signals: - handlers = self._signals[signal_name] = [] - for handler in self._signal_regexes: - if handler.regexp.match(signal_name): - handlers.append(handler) - SignalDispatcher.signal_emit(self, signal_name, **kw) diff --git a/test/tc_signal.py b/test/tc_signal.py index feba3e5b..35b4eebe 100644 --- a/test/tc_signal.py +++ b/test/tc_signal.py @@ -130,48 +130,5 @@ class TestSignal(unittest.TestCase): self.assertEqual('ab', ''.join(alphabet)) self.assertTrue(is_deleted[0]) - - def test_regexp_signals(self): - sd = RegexpSignalDispatcher() - lst = [] - def modify(s): - s.number = 5 - def set_number(s): - lst.append(s.number) - def stopit(s): - s.stop() - - h1 = sd.signal_bind_regexp('.*ar', modify, priority=1) - - sd.signal_bind('xyz', set_number) - sd.signal_bind('foobar', set_number) - - sd.signal_emit('xyz', number=10) - self.assertEqual(10, lst[-1]) - sd.signal_emit('foobar', number=10) - self.assertEqual(5, lst[-1]) - - h2 = sd.signal_bind_regexp('x.z', modify, priority=1) -# print(sd._signals) - - sd.signal_emit('xyz', number=10) - self.assertEqual(5, lst[-1]) - sd.signal_emit('foobar', number=10) - self.assertEqual(5, lst[-1]) - - sd.signal_unbind(h2) - - sd.signal_emit('xyz', number=10) - self.assertEqual(10, lst[-1]) - sd.signal_emit('foobar', number=10) - self.assertEqual(5, lst[-1]) - - sd.signal_unbind(h1) - - sd.signal_emit('xyz', number=10) - self.assertEqual(10, lst[-1]) - sd.signal_emit('foobar', number=10) - self.assertEqual(10, lst[-1]) - if __name__ == '__main__': unittest.main() |