diff options
author | Georg Brandl <georg@python.org> | 2009-02-24 13:38:15 +0100 |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2009-02-24 13:38:15 +0100 |
commit | fb511a015aa47c943c5dc1286f58743fca307b1c (patch) | |
tree | 737f4a288eaaf69898c3139fdb0c79499c4bf910 /sphinx | |
parent | 29247f0896fc66a54d2fe77d05d32b0786c84a18 (diff) | |
download | sphinx-git-fb511a015aa47c943c5dc1286f58743fca307b1c.tar.gz |
Paths to literal include files and download files can now be absolute too.
Diffstat (limited to 'sphinx')
-rw-r--r-- | sphinx/directives/code.py | 12 | ||||
-rw-r--r-- | sphinx/environment.py | 16 |
2 files changed, 15 insertions, 13 deletions
diff --git a/sphinx/directives/code.py b/sphinx/directives/code.py index 70aecd83e..645bc7844 100644 --- a/sphinx/directives/code.py +++ b/sphinx/directives/code.py @@ -7,6 +7,7 @@ :license: BSD, see LICENSE for details. """ +import os import sys import codecs from os import path @@ -95,11 +96,12 @@ class LiteralInclude(Directive): return [document.reporter.warning('File insertion disabled', line=self.lineno)] env = document.settings.env - rel_fn = filename - sourcename = self.state_machine.input_lines.source( - self.lineno - self.state_machine.input_offset - 1) - source_dir = path.dirname(path.abspath(sourcename)) - fn = path.normpath(path.join(source_dir, rel_fn)) + if filename.startswith('/') or filename.startswith(os.sep): + rel_fn = filename[1:] + else: + docdir = path.dirname(env.doc2path(env.docname, base=None)) + rel_fn = path.normpath(path.join(docdir, filename)) + fn = path.join(env.srcdir, rel_fn) if 'pyobject' in self.options and 'lines' in self.options: return [document.reporter.warning( diff --git a/sphinx/environment.py b/sphinx/environment.py index 6d34eb61e..6deea1d5d 100644 --- a/sphinx/environment.py +++ b/sphinx/environment.py @@ -24,12 +24,10 @@ from glob import glob from string import ascii_uppercase as uppercase from itertools import izip, groupby try: - import hashlib - md5 = hashlib.md5 + from hashlib import md5 except ImportError: # 2.4 compatibility - import md5 - md5 = md5.new + from md5 import md5 from docutils import nodes from docutils.io import FileInput, NullOutput @@ -682,7 +680,12 @@ class BuildEnvironment: """ docdir = path.dirname(self.doc2path(docname, base=None)) for node in doctree.traverse(addnodes.download_reference): - filepath = path.normpath(path.join(docdir, node['reftarget'])) + targetname = node['reftarget'] + if targetname.startswith('/') or targetname.startswith(os.sep): + # absolute + filepath = targetname[1:] + else: + filepath = path.normpath(path.join(docdir, node['reftarget'])) self.dependencies.setdefault(docname, set()).add(filepath) if not os.access(path.join(self.srcdir, filepath), os.R_OK): self.warn(docname, 'Download file not readable: %s' % filepath, @@ -952,9 +955,6 @@ class BuildEnvironment: node.astext())) def note_dependency(self, filename): - basename = path.dirname(self.doc2path(self.docname, base=None)) - # this will do the right thing when filename is absolute too - filename = path.join(basename, filename) self.dependencies.setdefault(self.docname, set()).add(filename) # ------- |