summaryrefslogtreecommitdiff
path: root/sphinx
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2009-02-24 13:38:15 +0100
committerGeorg Brandl <georg@python.org>2009-02-24 13:38:15 +0100
commitfb511a015aa47c943c5dc1286f58743fca307b1c (patch)
tree737f4a288eaaf69898c3139fdb0c79499c4bf910 /sphinx
parent29247f0896fc66a54d2fe77d05d32b0786c84a18 (diff)
downloadsphinx-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.py12
-rw-r--r--sphinx/environment.py16
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)
# -------