def init(self): DirectoryHTMLBuilder.init(self) # Pull project data from conf.py if it exists context = self.config.html_context if context.has_key("current_version"): self.version = context["current_version"] if context.has_key("slug"): self.project = context["slug"] # Put in our media files instead of putting them in the docs. for index, file in enumerate(self.script_files): if file in MEDIA_MAPPING.keys(): self.script_files[index] = MEDIA_MAPPING[file] % context["MEDIA_URL"] if file == "_static/jquery.js": self.script_files.insert( index + 1, "%sjavascript/jquery/jquery-migrate-1.2.1.min.js" % context["MEDIA_URL"] ) if context.has_key("html_theme") and context["html_theme"] == "sphinx_rtd_theme": self.css_files.append("%scss/sphinx_rtd_theme.css" % context["MEDIA_URL"]) else: self.css_files.append("%scss/badge_only.css" % context["MEDIA_URL"]) # Analytics codes # self.script_files.append('_static/readthedocs-ext.js') # self.script_files.append('%sjavascript/analytics.js' % context['MEDIA_URL']) # We include the media servers version here so we can update rtd.js across all # documentation without rebuilding every one. # If this script is embedded in each build, # then updating the file across all docs is basically impossible. self.script_files.append("%sjavascript/readthedocs-doc-embed.js" % context["MEDIA_URL"]) self.css_files.append("%scss/readthedocs-doc-embed.css" % context["MEDIA_URL"])
def update_page_context(self, pagename, templatename, ctx, event_arg): '''Extends builder context to make the function available at build time.''' DirectoryHTMLBuilder.update_page_context(self, pagename, templatename, \ ctx, event_arg) def md5(fname): '''Calculates MD5 for a file relative to source directory.''' pathname = self.srcdir + '/' + fname hash = hashlib_md5() with open(pathname, 'rb') as f: for chunk in iter(lambda: f.read(65536), b''): hash.update(chunk) return hash.hexdigest() ctx['md5'] = md5
def update_page_context(self, pagename: str, templatename: str, ctx: Dict, event_arg: Any) -> None: """Extends builder context to make the MD5 function available at build time. """ def md5(fname: str) -> str: """Calculates MD5 for a file relative to source directory.""" pathname = self.srcdir + '/' + fname hsh = hashlib_md5() with open(pathname, 'rb') as hashed_file: for chunk in iter(lambda: hashed_file.read(65536), b''): hsh.update(chunk) return hsh.hexdigest() DirectoryHTMLBuilder.update_page_context(self, pagename, templatename, ctx, event_arg) ctx['md5'] = md5
def handle_page( self, docname, addctx, templatename="page.html", outfilename=None, event_arg=None, ): self.toctree.initialize(self.env) lineage = self._get_page_lineage(docname) processed_lineage = self._process_page_lineage(docname, lineage) addctx["lineage"] = processed_lineage DirectoryHTMLBuilder.handle_page( self, docname, addctx, templatename=templatename, outfilename=outfilename, event_arg=event_arg, )
def __init__(self, app): DirectoryHTMLBuilder.__init__(self, app)
def init(self): DirectoryHTMLBuilder.init(self) finalize_media(self)
def init(self): DirectoryHTMLBuilder.init(self) self.toctree = Toctree(self._render_title, self.get_relative_uri)
def handle_page(self, pagename, addctx, templatename='page.html', outfilename=None, event_arg=None): self.toctree.initialize(self.env) DirectoryHTMLBuilder.handle_page(self, pagename, addctx, templatename=templatename, outfilename=outfilename, event_arg=event_arg)
def init(self): DirectoryHTMLBuilder.init(self) finalize_comment_media(self)