From bec9dcca19db110a95f5422de3ae03feb425422d Mon Sep 17 00:00:00 2001 From: WouterJ Date: Fri, 31 Jul 2015 12:03:26 +0200 Subject: [PATCH 1/9] Use symfony.com theme on Platform.sh builds --- .gitignore | 1 + .platform/_exts/symfonycom/__init__.py | 0 .platform/_exts/symfonycom/sphinx/__init__.py | 167 ++++++++++++++++++ .platform/_templates/globaltoc.html | 20 +++ .platform/_templates/layout.html | 72 ++++++++ .platform/_templates/localtoc.html | 6 + conf.py | 10 +- 7 files changed, 273 insertions(+), 3 deletions(-) create mode 100644 .platform/_exts/symfonycom/__init__.py create mode 100644 .platform/_exts/symfonycom/sphinx/__init__.py create mode 100644 .platform/_templates/globaltoc.html create mode 100644 .platform/_templates/layout.html create mode 100644 .platform/_templates/localtoc.html diff --git a/.gitignore b/.gitignore index 805ea28a8f0..29a1d85cb56 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /_build /_exts +*.pyc diff --git a/.platform/_exts/symfonycom/__init__.py b/.platform/_exts/symfonycom/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/.platform/_exts/symfonycom/sphinx/__init__.py b/.platform/_exts/symfonycom/sphinx/__init__.py new file mode 100644 index 00000000000..1c08bcc11c8 --- /dev/null +++ b/.platform/_exts/symfonycom/sphinx/__init__.py @@ -0,0 +1,167 @@ +from sphinx.highlighting import lexers, PygmentsBridge +from pygments.style import Style +from pygments.formatters import HtmlFormatter +from pygments.token import Keyword, Name, Comment, String, Error, \ + Number, Operator, Generic, Whitespace, Punctuation, Other, Literal + +from sphinx.writers.html import HTMLTranslator +from docutils import nodes +from sphinx.locale import admonitionlabels, lazy_gettext + +customadmonitionlabels = admonitionlabels +l_ = lazy_gettext +customadmonitionlabels['best-practice'] = l_('Best Practice') + +def _getType(path): + return path[:path.find('/')] + +def _isIndex(path): + return 'index' in path + +class SensioHTMLTranslator(HTMLTranslator): + def __init__(self, builder, *args, **kwds): + HTMLTranslator.__init__(self, builder, *args, **kwds) + builder.templates.environment.filters['get_type'] = _getType + builder.templates.environment.tests['index'] = _isIndex + self.highlightlinenothreshold = 0 + + def visit_literal(self, node): + self.body.append(self.starttag(node, 'tt', '', CLASS='docutils literal')) + self.body.append('') + + def depart_literal(self, node): + self.body.append('') + self.body.append('') + + def visit_admonition(self, node, name=''): + self.body.append(self.starttag(node, 'div', CLASS=('admonition-wrapper'))) + self.body.append('
') + self.body.append('
') + if name and name != 'seealso': + node.insert(0, nodes.title(name, customadmonitionlabels[name])) + self.set_first_last(node) + + def depart_admonition(self, node=None): + self.body.append('
\n') + + def visit_sidebar(self, node): + self.body.append(self.starttag(node, 'div', CLASS=('admonition-wrapper'))) + self.body.append('') + self.body.append('
') + self.set_first_last(node) + self.in_sidebar = 1 + + def depart_sidebar(self, node): + self.body.append('
\n') + self.in_sidebar = None + + # overriden to add a new highlight div around each block + def visit_literal_block(self, node): + if node.rawsource != node.astext(): + # most probably a parsed-literal block -- don't highlight + return BaseTranslator.visit_literal_block(self, node) + lang = self.highlightlang + linenos = node.rawsource.count('\n') >= \ + self.highlightlinenothreshold - 1 + highlight_args = node.get('highlight_args', {}) + if node.has_key('language'): + # code-block directives + lang = node['language'] + highlight_args['force'] = True + if node.has_key('linenos'): + linenos = node['linenos'] + def warner(msg): + self.builder.warn(msg, (self.builder.current_docname, node.line)) + highlighted = self.highlighter.highlight_block( + node.rawsource, lang, warn=warner, linenos=linenos, + **highlight_args) + starttag = self.starttag(node, 'div', suffix='', + CLASS='highlight-%s' % lang) + self.body.append('
' + starttag + highlighted + '
\n') + raise nodes.SkipNode + +class SensioStyle(Style): + background_color = "#000000" + default_style = "" + + styles = { + # No corresponding class for the following: + #Text: "", # class: '' + Whitespace: "underline #f8f8f8", # class: 'w' + Error: "#a40000 border:#ef2929", # class: 'err' + Other: "#ffffff", # class 'x' + + Comment: "italic #B729D9", # class: 'c' + Comment.Single: "italic #B729D9", # class: 'c1' + Comment.Multiline: "italic #B729D9", # class: 'cm' + Comment.Preproc: "noitalic #aaa", # class: 'cp' + + Keyword: "#FF8400", # class: 'k' + Keyword.Constant: "#FF8400", # class: 'kc' + Keyword.Declaration: "#FF8400", # class: 'kd' + Keyword.Namespace: "#FF8400", # class: 'kn' + Keyword.Pseudo: "#FF8400", # class: 'kp' + Keyword.Reserved: "#FF8400", # class: 'kr' + Keyword.Type: "#FF8400", # class: 'kt' + + Operator: "#E0882F", # class: 'o' + Operator.Word: "#E0882F", # class: 'ow' - like keywords + + Punctuation: "#999999", # class: 'p' + + # because special names such as Name.Class, Name.Function, etc. + # are not recognized as such later in the parsing, we choose them + # to look the same as ordinary variables. + Name: "#ffffff", # class: 'n' + Name.Attribute: "#ffffff", # class: 'na' - to be revised + Name.Builtin: "#ffffff", # class: 'nb' + Name.Builtin.Pseudo: "#3465a4", # class: 'bp' + Name.Class: "#ffffff", # class: 'nc' - to be revised + Name.Constant: "#ffffff", # class: 'no' - to be revised + Name.Decorator: "#888", # class: 'nd' - to be revised + Name.Entity: "#ce5c00", # class: 'ni' + Name.Exception: "#cc0000", # class: 'ne' + Name.Function: "#ffffff", # class: 'nf' + Name.Property: "#ffffff", # class: 'py' + Name.Label: "#f57900", # class: 'nl' + Name.Namespace: "#ffffff", # class: 'nn' - to be revised + Name.Other: "#ffffff", # class: 'nx' + Name.Tag: "#cccccc", # class: 'nt' - like a keyword + Name.Variable: "#ffffff", # class: 'nv' - to be revised + Name.Variable.Class: "#ffffff", # class: 'vc' - to be revised + Name.Variable.Global: "#ffffff", # class: 'vg' - to be revised + Name.Variable.Instance: "#ffffff", # class: 'vi' - to be revised + + Number: "#1299DA", # class: 'm' + + Literal: "#ffffff", # class: 'l' + Literal.Date: "#ffffff", # class: 'ld' + + String: "#56DB3A", # class: 's' + String.Backtick: "#56DB3A", # class: 'sb' + String.Char: "#56DB3A", # class: 'sc' + String.Doc: "italic #B729D9", # class: 'sd' - like a comment + String.Double: "#56DB3A", # class: 's2' + String.Escape: "#56DB3A", # class: 'se' + String.Heredoc: "#56DB3A", # class: 'sh' + String.Interpol: "#56DB3A", # class: 'si' + String.Other: "#56DB3A", # class: 'sx' + String.Regex: "#56DB3A", # class: 'sr' + String.Single: "#56DB3A", # class: 's1' + String.Symbol: "#56DB3A", # class: 'ss' + + Generic: "#ffffff", # class: 'g' + Generic.Deleted: "#a40000", # class: 'gd' + Generic.Emph: "italic #ffffff", # class: 'ge' + Generic.Error: "#ef2929", # class: 'gr' + Generic.Heading: "#000080", # class: 'gh' + Generic.Inserted: "#00A000", # class: 'gi' + Generic.Output: "#888", # class: 'go' + Generic.Prompt: "#745334", # class: 'gp' + Generic.Strong: "bold #ffffff", # class: 'gs' + Generic.Subheading: "bold #800080", # class: 'gu' + Generic.Traceback: "bold #a40000", # class: 'gt' + } + +def setup(app): + app.set_translator('html', SensioHTMLTranslator) diff --git a/.platform/_templates/globaltoc.html b/.platform/_templates/globaltoc.html new file mode 100644 index 00000000000..0dfcc246dd7 --- /dev/null +++ b/.platform/_templates/globaltoc.html @@ -0,0 +1,20 @@ + diff --git a/.platform/_templates/layout.html b/.platform/_templates/layout.html new file mode 100644 index 00000000000..3264dbaf2dc --- /dev/null +++ b/.platform/_templates/layout.html @@ -0,0 +1,72 @@ +{% extends '!layout.html' %} + +{% set css_files = ['http://symfony.com/css/compiled/v5/all.css?v=4'] %} +{# make sure the Sphinx stylesheet isn't loaded #} +{% set style = '' %} +{% set isIndex = pagename is index %} + +{% block extrahead %} +{# add JS to support tabs #} + + +{# pygment's styles are still loaded, undo some unwanted styles #} + +{% endblock %} + +{% block header %} +{# ugly way, now we have 2 body tags, but styles rely on these classes #} + +{% endblock %} + +{% block content %} +
+
+ {%- if render_sidebar %} + + {%- endif %} + +
+ + +

{{ title }}

+ +
+ {% block body %}{% endblock %} +
+ + {% if prev and next %} + + {% endif %} +
+
+
+{% endblock %} + +{# relbar1 is at the top and should not render the quick navigation #} +{% block relbar1 %}{% endblock %} +{% block relbar2 %}{% endblock %} + +{# remove "generated by sphinx" footer #} +{% block footer %}{% endblock %} diff --git a/.platform/_templates/localtoc.html b/.platform/_templates/localtoc.html new file mode 100644 index 00000000000..0ffea6e1ecd --- /dev/null +++ b/.platform/_templates/localtoc.html @@ -0,0 +1,6 @@ +
+

{{ _('Table Of Contents') }}

+
+ {{ toc }} +
+
diff --git a/conf.py b/conf.py index ab4e823e384..db9676a43ed 100644 --- a/conf.py +++ b/conf.py @@ -19,6 +19,7 @@ #sys.path.insert(0, os.path.abspath('.')) sys.path.append(os.path.abspath('_exts')) +sys.path.append(os.path.abspath('.platform/_exts')) # adding PhpLexer from sphinx.highlighting import lexers @@ -34,11 +35,14 @@ # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', - 'sensio.sphinx.refinclude', 'sensio.sphinx.configurationblock', 'sensio.sphinx.phpcode', 'sensio.sphinx.bestpractice'] +extensions = [ + 'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', + 'sensio.sphinx.refinclude', 'sensio.sphinx.configurationblock', 'sensio.sphinx.phpcode', 'sensio.sphinx.bestpractice', 'sensio.sphinx.codeblock', + 'symfonycom.sphinx' +] # Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] +templates_path = ['.platform/_templates'] # The suffix of source filenames. source_suffix = '.rst' From 5847e4b380ddda671e107cb59c1cd819b5e1b8fa Mon Sep 17 00:00:00 2001 From: Wouter J Date: Tue, 18 Aug 2015 13:10:30 +0200 Subject: [PATCH 2/9] Temporary disable codeblock --- conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf.py b/conf.py index db9676a43ed..bff5cbee037 100644 --- a/conf.py +++ b/conf.py @@ -37,7 +37,7 @@ # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', - 'sensio.sphinx.refinclude', 'sensio.sphinx.configurationblock', 'sensio.sphinx.phpcode', 'sensio.sphinx.bestpractice', 'sensio.sphinx.codeblock', + 'sensio.sphinx.refinclude', 'sensio.sphinx.configurationblock', 'sensio.sphinx.phpcode', 'sensio.sphinx.bestpractice', #'sensio.sphinx.codeblock', 'symfonycom.sphinx' ] From 4da6c47266fe6b87567f3e686bf1fda7018c5fe9 Mon Sep 17 00:00:00 2001 From: Wouter J Date: Tue, 18 Aug 2015 13:16:17 +0200 Subject: [PATCH 3/9] Use a more recent version of Sphinx --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 667ca86fa50..3ad82398f25 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,7 @@ cache: - $HOME/.cache/pip - _build -install: pip install sphinx==1.1.3 +install: pip install sphinx~=1.3 script: sphinx-build -nW -b html -d _build/doctrees . _build/html From 5f952b038962fa304b1ae16b1858b89d320162b2 Mon Sep 17 00:00:00 2001 From: Wouter J Date: Tue, 18 Aug 2015 13:19:43 +0200 Subject: [PATCH 4/9] Update config --- conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf.py b/conf.py index bff5cbee037..c9f5ce633ac 100644 --- a/conf.py +++ b/conf.py @@ -130,7 +130,7 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -html_theme = 'default' +html_theme = 'classic' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the From e24cb5672220e875155dead4cc611a27785f9441 Mon Sep 17 00:00:00 2001 From: WouterJ Date: Tue, 18 Aug 2015 18:57:11 +0200 Subject: [PATCH 5/9] Move Sphinx files to _theme --- {.platform => _theme}/_exts/symfonycom/__init__.py | 0 {.platform => _theme}/_exts/symfonycom/sphinx/__init__.py | 0 {.platform => _theme}/_templates/globaltoc.html | 0 {.platform => _theme}/_templates/layout.html | 0 {.platform => _theme}/_templates/localtoc.html | 0 conf.py | 6 +++--- 6 files changed, 3 insertions(+), 3 deletions(-) rename {.platform => _theme}/_exts/symfonycom/__init__.py (100%) rename {.platform => _theme}/_exts/symfonycom/sphinx/__init__.py (100%) rename {.platform => _theme}/_templates/globaltoc.html (100%) rename {.platform => _theme}/_templates/layout.html (100%) rename {.platform => _theme}/_templates/localtoc.html (100%) diff --git a/.platform/_exts/symfonycom/__init__.py b/_theme/_exts/symfonycom/__init__.py similarity index 100% rename from .platform/_exts/symfonycom/__init__.py rename to _theme/_exts/symfonycom/__init__.py diff --git a/.platform/_exts/symfonycom/sphinx/__init__.py b/_theme/_exts/symfonycom/sphinx/__init__.py similarity index 100% rename from .platform/_exts/symfonycom/sphinx/__init__.py rename to _theme/_exts/symfonycom/sphinx/__init__.py diff --git a/.platform/_templates/globaltoc.html b/_theme/_templates/globaltoc.html similarity index 100% rename from .platform/_templates/globaltoc.html rename to _theme/_templates/globaltoc.html diff --git a/.platform/_templates/layout.html b/_theme/_templates/layout.html similarity index 100% rename from .platform/_templates/layout.html rename to _theme/_templates/layout.html diff --git a/.platform/_templates/localtoc.html b/_theme/_templates/localtoc.html similarity index 100% rename from .platform/_templates/localtoc.html rename to _theme/_templates/localtoc.html diff --git a/conf.py b/conf.py index c9f5ce633ac..797ee53f18f 100644 --- a/conf.py +++ b/conf.py @@ -19,7 +19,7 @@ #sys.path.insert(0, os.path.abspath('.')) sys.path.append(os.path.abspath('_exts')) -sys.path.append(os.path.abspath('.platform/_exts')) +sys.path.append(os.path.abspath('_theme/_exts')) # adding PhpLexer from sphinx.highlighting import lexers @@ -42,7 +42,7 @@ ] # Add any paths that contain templates here, relative to this directory. -templates_path = ['.platform/_templates'] +templates_path = ['_theme/_templates'] # The suffix of source filenames. source_suffix = '.rst' @@ -78,7 +78,7 @@ # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. -# exclude_patterns = ['_build', 'bundles'] +exclude_patterns = ['_theme'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None From 4acea028a830249c0d3b2cc40e71e0aaa5bc912e Mon Sep 17 00:00:00 2001 From: Wouter J Date: Wed, 19 Aug 2015 12:26:04 +0200 Subject: [PATCH 6/9] Add demo warning --- _theme/_templates/layout.html | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/_theme/_templates/layout.html b/_theme/_templates/layout.html index 3264dbaf2dc..2696efbeeed 100644 --- a/_theme/_templates/layout.html +++ b/_theme/_templates/layout.html @@ -13,6 +13,13 @@ {% endblock %} @@ -27,11 +34,17 @@ {%- if render_sidebar %} {%- endif %} @@ -59,6 +72,10 @@

{{ title }}

{{ next.title|striptags|e }} »
{% endif %} + +
+

This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.

+
From 07ab5b0d82b103de022e1a68ac8e8843f5877640 Mon Sep 17 00:00:00 2001 From: WouterJ Date: Wed, 19 Aug 2015 22:32:27 +0200 Subject: [PATCH 7/9] Use numbered code block --- _exts | 2 +- conf.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_exts b/_exts index 52f7bd2216c..1b7c4b794d7 160000 --- a/_exts +++ b/_exts @@ -1 +1 @@ -Subproject commit 52f7bd2216cc22ef52494f346c5643bb2a74513f +Subproject commit 1b7c4b794d75f7b0eb6749cadccc58f87e3158a0 diff --git a/conf.py b/conf.py index 797ee53f18f..9e846b32f84 100644 --- a/conf.py +++ b/conf.py @@ -37,7 +37,7 @@ # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', - 'sensio.sphinx.refinclude', 'sensio.sphinx.configurationblock', 'sensio.sphinx.phpcode', 'sensio.sphinx.bestpractice', #'sensio.sphinx.codeblock', + 'sensio.sphinx.refinclude', 'sensio.sphinx.configurationblock', 'sensio.sphinx.phpcode', 'sensio.sphinx.bestpractice', 'sensio.sphinx.codeblock', 'symfonycom.sphinx' ] From 328901f4f20902757e221db57acaf729991d8188 Mon Sep 17 00:00:00 2001 From: WouterJ Date: Wed, 19 Aug 2015 23:13:31 +0200 Subject: [PATCH 8/9] Use pip instead of submodules --- .gitmodules | 3 --- .travis.yml | 2 +- _exts | 1 - conf.py | 3 --- 4 files changed, 1 insertion(+), 8 deletions(-) delete mode 100644 .gitmodules delete mode 160000 _exts diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 486727b665d..00000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "sphinx-php"] - path = _exts - url = http://github.com/fabpot/sphinx-php diff --git a/.travis.yml b/.travis.yml index 3ad82398f25..29682488140 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,7 @@ cache: - $HOME/.cache/pip - _build -install: pip install sphinx~=1.3 +install: pip install sphinx~=1.3 git+https://github.com/fabpot/sphinx-php.git script: sphinx-build -nW -b html -d _build/doctrees . _build/html diff --git a/_exts b/_exts deleted file mode 160000 index 1b7c4b794d7..00000000000 --- a/_exts +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1b7c4b794d75f7b0eb6749cadccc58f87e3158a0 diff --git a/conf.py b/conf.py index 9e846b32f84..e7c6b9d1800 100644 --- a/conf.py +++ b/conf.py @@ -16,9 +16,6 @@ # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) - -sys.path.append(os.path.abspath('_exts')) sys.path.append(os.path.abspath('_theme/_exts')) # adding PhpLexer From aca9a0706029fa1509134a67524b9e86f1364632 Mon Sep 17 00:00:00 2001 From: WouterJ Date: Wed, 19 Aug 2015 23:24:48 +0200 Subject: [PATCH 9/9] Reset some more pygments styles --- _theme/_templates/layout.html | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/_theme/_templates/layout.html b/_theme/_templates/layout.html index 2696efbeeed..01bce31b749 100644 --- a/_theme/_templates/layout.html +++ b/_theme/_templates/layout.html @@ -11,7 +11,16 @@ {# pygment's styles are still loaded, undo some unwanted styles #}