view mercurial/demandload.py @ 1411:e2ba788545bf

hgweb: make viewing of non-text work in hgweb We use mimetypes.guess_type to guess file types and util.binary to determine whether a file is displayable as text. This lets us display displayable text files in our normal source view. Files that appear to be binary will be displayed as something like "(binary:image/gif)". Clicking on raw view will send the raw file with an appropriate MIME type. Thus things like GIFs will now be viewable inside hgweb without making a mess. Further, things like postscript files that are text should show source in the normal view and a browser can launch a postscript viewer for the raw view.
author Matt Mackall <mpm@selenic.com>
date Tue, 18 Oct 2005 23:50:55 -0700
parents 3db700146536
children f3abe0bdccdd
line wrap: on
line source

def demandload(scope, modules):
    class d:
        def __getattr__(self, name):
            mod = self.__dict__["mod"]
            scope = self.__dict__["scope"]
            scope[mod] = __import__(mod, scope, scope, [])
            return getattr(scope[mod], name)

    for m in modules.split():
        dl = d()
        dl.mod = m
        dl.scope = scope
        scope[m] = dl