Mercurial > hg
changeset 6992:4e62be0208d3
merge with crew
author | Benoit Boissinot <benoit.boissinot@ens-lyon.org> |
---|---|
date | Fri, 05 Sep 2008 11:04:36 +0200 |
parents | a408ea9876e6 (current diff) 32e68ffccbc5 (diff) |
children | ddfcefab8b97 |
files | |
diffstat | 5 files changed, 68 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/highlight/__init__.py Fri Sep 05 11:03:34 2008 +0200 +++ b/hgext/highlight/__init__.py Fri Sep 05 11:04:36 2008 +0200 @@ -25,14 +25,25 @@ web_annotate = webcommands.annotate def filerevision_highlight(web, tmpl, fctx): - style = web.config('web', 'pygments_style', 'colorful') - highlight.pygmentize('fileline', fctx, style, tmpl) + mt = ''.join(tmpl('mimetype', encoding=web.encoding)) + # only pygmentize for mimetype containing 'html' so we both match + # 'text/html' and possibly 'application/xhtml+xml' in the future + # so that we don't have to touch the extension when the mimetype + # for a template changes; also hgweb optimizes the case that a + # raw file is sent using rawfile() and doesn't call us, so we + # can't clash with the file's content-type here in case we + # pygmentize a html file + if 'html' in mt: + style = web.config('web', 'pygments_style', 'colorful') + highlight.pygmentize('fileline', fctx, style, tmpl) return web_filerevision(web, tmpl, fctx) def annotate_highlight(web, req, tmpl): - fctx = webutil.filectx(web.repo, req) - style = web.config('web', 'pygments_style', 'colorful') - highlight.pygmentize('annotateline', fctx, style, tmpl) + mt = ''.join(tmpl('mimetype', encoding=web.encoding)) + if 'html' in mt: + fctx = webutil.filectx(web.repo, req) + style = web.config('web', 'pygments_style', 'colorful') + highlight.pygmentize('annotateline', fctx, style, tmpl) return web_annotate(web, req, tmpl) def generate_css(web, req, tmpl):
--- a/mercurial/statichttprepo.py Fri Sep 05 11:03:34 2008 +0200 +++ b/mercurial/statichttprepo.py Fri Sep 05 11:04:36 2008 +0200 @@ -54,7 +54,9 @@ raise repo.RepoError(_("requirement '%s' not supported") % r) # setup store - self.store = store.store(requirements, self.path, opener) + def pjoin(a, b): + return a + '/' + b + self.store = store.store(requirements, self.path, opener, pjoin) self.spath = self.store.path self.sopener = self.store.opener self.sjoin = self.store.join
--- a/mercurial/store.py Fri Sep 05 11:03:34 2008 +0200 +++ b/mercurial/store.py Fri Sep 05 11:04:36 2008 +0200 @@ -50,18 +50,19 @@ class basicstore: '''base class for local repository stores''' - def __init__(self, path, opener): + def __init__(self, path, opener, pathjoiner): + self.pathjoiner = pathjoiner self.path = path self.createmode = _calcmode(path) self.opener = opener(self.path) self.opener.createmode = self.createmode def join(self, f): - return os.path.join(self.path, f) + return self.pathjoiner(self.path, f) def _walk(self, relpath, recurse): '''yields (unencoded, encoded, size)''' - path = os.path.join(self.path, relpath) + path = self.pathjoiner(self.path, relpath) striplen = len(self.path) + len(os.sep) prefix = path[striplen:] l = [] @@ -70,7 +71,7 @@ while visit: p = visit.pop() for f, kind, st in osutil.listdir(p, stat=True): - fp = os.path.join(p, f) + fp = self.pathjoiner(p, f) if kind == stat.S_IFREG and f[-2:] in ('.d', '.i'): n = util.pconvert(fp[striplen:]) l.append((n, n, st.st_size)) @@ -96,8 +97,9 @@ return ['requires'] + _data.split() class encodedstore(basicstore): - def __init__(self, path, opener): - self.path = os.path.join(path, 'store') + def __init__(self, path, opener, pathjoiner): + self.pathjoiner = pathjoiner + self.path = self.pathjoiner(path, 'store') self.createmode = _calcmode(self.path) op = opener(self.path) op.createmode = self.createmode @@ -112,13 +114,14 @@ yield a, b, size def join(self, f): - return os.path.join(self.path, encodefilename(f)) + return self.pathjoiner(self.path, encodefilename(f)) def copylist(self): return (['requires', '00changelog.i'] + - ['store/' + f for f in _data.split()]) + [self.pathjoiner('store', f) for f in _data.split()]) -def store(requirements, path, opener): +def store(requirements, path, opener, pathjoiner=None): + pathjoiner = pathjoiner or os.path.join if 'store' in requirements: - return encodedstore(path, opener) - return basicstore(path, opener) + return encodedstore(path, opener, pathjoiner) + return basicstore(path, opener, pathjoiner)
--- a/tests/test-highlight Fri Sep 05 11:03:34 2008 +0200 +++ b/tests/test-highlight Fri Sep 05 11:04:36 2008 +0200 @@ -18,14 +18,41 @@ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log cat hg.pid >> $DAEMON_PIDS -echo % hgweb filerevision +echo % hgweb filerevision, html ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/get-with-headers.py') \ | sed "s/[0-9]* years ago/long ago/g" -echo % hgweb fileannotate +echo % hgweb fileannotate, html ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/get-with-headers.py') \ | sed "s/[0-9]* years ago/long ago/g" +echo % hgweb fileannotate, raw +("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/get-with-headers.py?style=raw') \ + | sed "s/test@//" > a + +echo "200 Script output follows" > b +echo "" >> b +echo "" >> b +hg annotate "get-with-headers.py" >> b +echo "" >> b +echo "" >> b +echo "" >> b +echo "" >> b + +diff -u b a + +echo +echo % hgweb filerevision, raw +("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/get-with-headers.py?style=raw') \ + > a + +echo "200 Script output follows" > b +echo "" >> b +hg cat get-with-headers.py >> b + +diff -u b a + +echo echo % hgweb highlightcss friendly "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/highlightcss' > out head -n 4 out
--- a/tests/test-highlight.out Fri Sep 05 11:03:34 2008 +0200 +++ b/tests/test-highlight.out Fri Sep 05 11:04:36 2008 +0200 @@ -1,6 +1,6 @@ adding get-with-headers.py % hg serve -% hgweb filerevision +% hgweb filerevision, html 200 Script output follows <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> @@ -63,7 +63,7 @@ </body> </html> -% hgweb fileannotate +% hgweb fileannotate, html 200 Script output follows <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> @@ -130,6 +130,10 @@ </body> </html> +% hgweb fileannotate, raw + +% hgweb filerevision, raw + % hgweb highlightcss friendly 200 Script output follows