gui.colorschemes: more efficient color_at
[ranger.git] / ranger / ext / cached_function.py
blob00068583834b5ce05018d39cd0d35ba87f8a84c7
1 # Copyright (C) 2012 Roman Zimbelmann <romanz@lavabit.com>
3 # This program is free software: you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation, either version 3 of the License, or
6 # (at your option) any later version.
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 def cached_function(fnc):
17 cache = {}
18 def inner_cached_function(self, *args):
19 try:
20 return cache[args]
21 except:
22 value = fnc(self, *args)
23 cache[args] = value
24 return value
25 inner_cached_function._cache = cache
26 return inner_cached_function