Turn resources into a module, which can hold mutators too
[naja.git] / naja / resources.py
diff --git a/naja/resources.py b/naja/resources.py
deleted file mode 100644 (file)
index 00ebe1c..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-import os
-import sys
-
-try:
-    from pkg_resources import resource_filename
-except ImportError:
-    # OK, we're most likely running under py2exe, so this is safe
-    # (for values of safe that are unconcerned about py2exe being involved)
-    def resource_filename(mod, path):
-        # There are better ways of doing this, but I've spent too much
-        # time going down this rabbithole already
-        return os.path.join(os.path.dirname(__file__), '..', 'data', path)
-import pygame
-
-
-class ResourceNotFound(Exception):
-    pass
-
-
-class Resources(object):
-    CONVERT_ALPHA = True
-
-    def __init__(self, resource_module, language=None):
-        self.resource_module = resource_module
-        self.lang_dialect = language
-        self.language = language.split('_', 1)[0] if language else None
-        self._cache = {}
-
-    def create_resource_path(self, *path_fragments):
-        return resource_filename(self.resource_module,
-                                 os.path.join(*path_fragments))
-
-    def get_resource_path(self, *path_fragments):
-        for mod, full_path_fragments in self.lang_locations(path_fragments):
-            path = resource_filename(mod, os.path.join(*full_path_fragments))
-            if os.path.exists(path):
-                return path
-        raise ResourceNotFound(os.path.join(*path_fragments))
-
-    def lang_locations(self, path_fragments):
-        '''
-        For each resource module, yield:
-        * (<module>, (<lang>_<dialect>, <path>))
-        * (<module>, (<lang>, <path>))
-        * (<module>, (<path>, ))
-        '''
-        for module in (self.resource_module,):
-            if self.lang_dialect:
-                yield (module, (self.lang_dialect,) + path_fragments)
-            if self.language != self.lang_dialect:
-                yield (module, (self.language,) + path_fragments)
-            yield (module, path_fragments)
-
-    def get_file(self, *path_fragments, **kw):
-        mode = kw.get('mode', "rU")
-        try:
-            path = self.get_resource_path(*path_fragments)
-        except ResourceNotFound:
-            if 'w' in mode:
-                path = self.create_resource_path(*path_fragments)
-            else:
-                raise
-        return file(path, mode)
-
-    def get_image(self, *name_fragments, **kw):
-        transforms = kw.get('transforms', ())
-        basedir = kw.get('basedir', 'images')
-
-        path = (basedir,) + name_fragments
-
-        if path not in self._cache:
-            fn = self.get_resource_path(*path)
-            image = pygame.image.load(fn)
-            if self.CONVERT_ALPHA:
-                if not pygame.display.get_init():
-                    print >> sys.stderr, ("Display not initialized, "
-                                          "image '%s' not loaded."
-                                          % os.path.join(*path))
-                    return
-                image = image.convert_alpha(pygame.display.get_surface())
-            self._cache[path] = image
-
-        key = (path, transforms)
-        if key not in self._cache:
-            image = self._cache[path]
-            for mutator in transforms:
-                image = mutator(image)
-            self._cache[key] = image
-
-        return self._cache[key]
-
-    def get_font(self, file_name, font_size):
-        basedir = 'fonts'
-        key = (basedir, file_name, font_size)
-
-        if key not in self._cache:
-            fn = self.get_resource_path(basedir, file_name)
-            self._cache[key] = pygame.font.Font(fn, font_size)
-
-        return self._cache[key]
-
-
-resources = Resources('data')