diff options
author | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2019-07-07 18:50:58 +0900 |
---|---|---|
committer | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2019-07-07 18:50:58 +0900 |
commit | 1c152d249c2f1845497dbc40b0c18113ac19663e (patch) | |
tree | 9a08faf7a3158188a10f069868ac60c4b006ad45 /sphinx/builders/html.py | |
parent | c9078fa8c80672354a1b1a078e12e2921d7e73ed (diff) | |
parent | 96fa46e7b36a4f7571169a76b42fffb547702952 (diff) | |
download | sphinx-git-1c152d249c2f1845497dbc40b0c18113ac19663e.tar.gz |
Merge branch '2.0'
Diffstat (limited to 'sphinx/builders/html.py')
-rw-r--r-- | sphinx/builders/html.py | 94 |
1 files changed, 54 insertions, 40 deletions
diff --git a/sphinx/builders/html.py b/sphinx/builders/html.py index fed558c22..2ce5c0315 100644 --- a/sphinx/builders/html.py +++ b/sphinx/builders/html.py @@ -712,52 +712,66 @@ class StandaloneHTMLBuilder(Builder): logger.warning(__('cannot copy downloadable file %r: %s'), path.join(self.srcdir, src), err) + def create_pygments_style_file(self) -> None: + """create a style file for pygments.""" + with open(path.join(self.outdir, '_static', 'pygments.css'), 'w') as f: + f.write(self.highlighter.get_stylesheet()) + + def copy_translation_js(self) -> None: + """Copy a JavaScript file for translations.""" + if self.config.language is not None: + jsfile = self._get_translations_js() + if jsfile: + copyfile(jsfile, path.join(self.outdir, '_static', 'translations.js')) + + def copy_stemmer_js(self) -> None: + """Copy a JavaScript file for stemmer.""" + if self.indexer is not None: + jsfile = self.indexer.get_js_stemmer_rawcode() + if jsfile: + copyfile(jsfile, path.join(self.outdir, '_static', '_stemmer.js')) + + def copy_theme_static_files(self, context: Dict) -> None: + if self.theme: + for entry in self.theme.get_theme_dirs()[::-1]: + copy_asset(path.join(entry, 'static'), + path.join(self.outdir, '_static'), + excluded=DOTFILES, context=context, renderer=self.templates) + + def copy_html_static_files(self, context: Dict) -> None: + excluded = Matcher(self.config.exclude_patterns + ["**/.*"]) + for entry in self.config.html_static_path: + copy_asset(path.join(self.confdir, entry), + path.join(self.outdir, '_static'), + excluded, context=context, renderer=self.templates) + + def copy_html_logo(self) -> None: + if self.config.html_logo: + copy_asset(path.join(self.confdir, self.config.html_logo), + path.join(self.outdir, '_static')) + + def copy_html_favicon(self) -> None: + if self.config.html_favicon: + copy_asset(path.join(self.confdir, self.config.html_favicon), + path.join(self.outdir, '_static')) + def copy_static_files(self) -> None: try: - # copy static files with progress_message(__('copying static files... ')): ensuredir(path.join(self.outdir, '_static')) - # first, create pygments style file - with open(path.join(self.outdir, '_static', 'pygments.css'), 'w') as f: - f.write(self.highlighter.get_stylesheet()) - # then, copy translations JavaScript file - if self.config.language is not None: - jsfile = self._get_translations_js() - if jsfile: - copyfile(jsfile, path.join(self.outdir, '_static', - 'translations.js')) - - # copy non-minified stemmer JavaScript file - if self.indexer is not None: - jsfile = self.indexer.get_js_stemmer_rawcode() - if jsfile: - copyfile(jsfile, path.join(self.outdir, '_static', '_stemmer.js')) - - ctx = self.globalcontext.copy() - # add context items for search function used in searchtools.js_t + # prepare context for templates + context = self.globalcontext.copy() if self.indexer is not None: - ctx.update(self.indexer.context_for_searchtool()) - - # then, copy over theme-supplied static files - if self.theme: - for theme_path in self.theme.get_theme_dirs()[::-1]: - entry = path.join(theme_path, 'static') - copy_asset(entry, path.join(self.outdir, '_static'), excluded=DOTFILES, - context=ctx, renderer=self.templates) - # then, copy over all user-supplied static files - excluded = Matcher(self.config.exclude_patterns + ["**/.*"]) - for static_path in self.config.html_static_path: - entry = path.join(self.confdir, static_path) - copy_asset(entry, path.join(self.outdir, '_static'), excluded, - context=ctx, renderer=self.templates) - # copy logo and favicon files if not already in static path - if self.config.html_logo: - entry = path.join(self.confdir, self.config.html_logo) - copy_asset(entry, path.join(self.outdir, '_static')) - if self.config.html_favicon: - entry = path.join(self.confdir, self.config.html_favicon) - copy_asset(entry, path.join(self.outdir, '_static')) + context.update(self.indexer.context_for_searchtool()) + + self.create_pygments_style_file() + self.copy_translation_js() + self.copy_stemmer_js() + self.copy_theme_static_files(context) + self.copy_html_static_files(context) + self.copy_html_logo() + self.copy_html_favicon() except OSError as err: logger.warning(__('cannot copy static file %r'), err) |