Workaround for RTD search

For details, see https://github.com/rtfd/readthedocs.org/issues/1487

FIX #153
This commit is contained in:
Adrien Crivelli 2017-05-05 11:56:18 +02:00
parent a80c680bc0
commit 5df66809bc
No known key found for this signature in database
GPG Key ID: B182FD79DC6DE92E
4 changed files with 77 additions and 1 deletions

8
docs/extra/extra.css Normal file
View File

@ -0,0 +1,8 @@
/* Make the huge table always visible */
table.features-cross-reference {
overflow: visible !important;
}
.rst-content table.features-cross-reference.docutils th,
.rst-content table.features-cross-reference.docutils td {
background-color: white;
}

57
docs/extra/extra.js Normal file
View File

@ -0,0 +1,57 @@
var nodemcu = nodemcu || {};
(function () {
'use strict';
$(document).ready(function () {
fixSearch();
});
/*
* RTD messes up MkDocs' search feature by tinkering with the search box defined in the theme, see
* https://github.com/rtfd/readthedocs.org/issues/1088. This function sets up a DOM4 MutationObserver
* to react to changes to the search form (triggered by RTD on doc ready). It then reverts everything
* the RTD JS code modified.
*/
function fixSearch() {
var target = document.getElementById('rtd-search-form');
var config = {attributes: true, childList: true};
var observer = new MutationObserver(function (mutations) {
// if it isn't disconnected it'll loop infinitely because the observed element is modified
observer.disconnect();
var form = $('#rtd-search-form');
form.empty();
form.attr('action', 'https://' + window.location.hostname + '/en/' + determineSelectedBranch() + '/search.html');
$('<input>').attr({
type: "text",
name: "q",
placeholder: "Search docs"
}).appendTo(form);
});
if (window.location.origin.indexOf('readthedocs') > -1) {
observer.observe(target, config);
}
}
/**
* Analyzes the URL of the current page to find out what the selected GitHub branch is. It's usually
* part of the location path. The code needs to distinguish between running MkDocs standalone
* and docs served from RTD. If no valid branch could be determined 'dev' returned.
*
* @returns GitHub branch name
*/
function determineSelectedBranch() {
var branch = 'dev', path = window.location.pathname;
if (window.location.origin.indexOf('readthedocs') > -1) {
// path is like /en/<branch>/<lang>/build/ -> extract 'lang'
// split[0] is an '' because the path starts with the separator
var thirdPathSegment = path.split('/')[2];
// 'latest' is an alias on RTD for the 'dev' branch - which is the default for 'branch' here
if (thirdPathSegment !== 'latest') {
branch = thirdPathSegment;
}
}
return branch;
}
}());

View File

@ -5,7 +5,7 @@
- <span style="text-align: center; color: red;"></span> Not supported - <span style="text-align: center; color: red;"></span> Not supported
- N/A Cannot be supported - N/A Cannot be supported
<table> <table class="features-cross-reference">
<tr> <tr>
<th></th> <th></th>
<th colspan="7">Readers</th> <th colspan="7">Readers</th>

11
mkdocs.yml Normal file
View File

@ -0,0 +1,11 @@
site_name: PhpSpreadsheet Documentation
repo_url: https://github.com/PHPOffice/phpspreadsheet
edit_uri: edit/develop/docs/
theme: readthedocs
extra_css:
- extra/extra.css
extra_javascript:
- extra/extra.js