diff --git a/docs/Changelog.html b/docs/Changelog.html index a5cf8920eb..15aecc1747 100644 --- a/docs/Changelog.html +++ b/docs/Changelog.html @@ -3,23 +3,22 @@ - - + Change log — Documentation - - - - - - - - - + + + + + + + + + @@ -37,7 +36,7 @@ -

cfdm 1.10.0.2

+

cfdm 1.10.0.3

@@ -65,7 +64,7 @@

Quick search

- + + +
+

Version 1.10.0.3

+

2023-03-10

+ +
+
+
+

Version 1.10.0.2

2023-01-26

- +

-
-

Version 1.10.0.1

+
+

Version 1.10.0.1

2022-10-31

-
+
-
-

Version 1.10.0.0

+
+

Version 1.10.0.0

2022-08-17

-
+
-
-

Version 1.9.0.4

+
+

Version 1.9.0.4

2022-07-18

-
-
-

Version 1.9.0.3

+ +
+

Version 1.9.0.3

2022-03-10

-
+
-
-

Version 1.9.0.2

+
+

Version 1.9.0.2

2022-01-31

-
+
-
-

Version 1.9.0.1

+
+

Version 1.9.0.1

2021-10-12

-
+
-
-

Version 1.9.0.0

+
+

Version 1.9.0.0

2021-09-21

-
+
-
-

Version 1.8.9.0

+
+

Version 1.8.9.0

2021-05-25

-
+
-
-

Version 1.8.8.0

+
+

Version 1.8.8.0

2020-12-18

-
+
-
-

Version 1.8.7.0

+
+

Version 1.8.7.0

2020-10-09

-
+
-
-

Version 1.8.6.0

+
+

Version 1.8.6.0

2020-07-24

-
+
-
-

Version 1.8.5

+
+

Version 1.8.5

2020-06-10

-
+
-
-

Version 1.8.4

+
+

Version 1.8.4

2020-06-08

-
+
-
-

Version 1.8.3

+
+

Version 1.8.3

2020-04-30

-
+
-
-

Version 1.8.2

+
+

Version 1.8.2

2020-04-24

-
+
-
-

Version 1.8.1

+
+

Version 1.8.1

2020-04-16

-
+
-
-

Version 1.8.0

+
+

Version 1.8.0

2020-03-23

-
+
-
-

Version 1.7.11

+
+

Version 1.7.11

2019-11-27

-
+
-
-

Version 1.7.10

+
+

Version 1.7.10

2019-11-14

-
+
-
-

Version 1.7.9

+
+

Version 1.7.9

2019-11-07

-
+
-
-

Version 1.7.8

+
+

Version 1.7.8

2019-10-04

-
+
-
-

Version 1.7.7

+
+

Version 1.7.7

2019-06-13

-
+
-
-

Version 1.7.6

+
+

Version 1.7.6

2019-06-05

-
+
-
-

Version 1.7.5

+
+

Version 1.7.5

2019-05-15

-
+
-
-

Version 1.7.4

+
+

Version 1.7.4

2019-05-14

-
+
-
-

Version 1.7.3

+
+

Version 1.7.3

2019-04-24

-
+
-
-

Version 1.7.2

+
+

Version 1.7.2

2019-04-05

-
+
-
-

Version 1.7.1

+
+

Version 1.7.1

2019-04-02

-
+
-
-

Version 1.7.0

+
+

Version 1.7.0

2019-04-02


-
- + + @@ -697,10 +714,10 @@

Version 1.7.0 diff --git a/docs/_downloads/cfdm_tutorial_files.zip b/docs/_downloads/cfdm_tutorial_files.zip index 7227789fde..824f0eeb4c 100644 Binary files a/docs/_downloads/cfdm_tutorial_files.zip and b/docs/_downloads/cfdm_tutorial_files.zip differ diff --git a/docs/_static/basic.css b/docs/_static/basic.css index 01192852b5..b04360d691 100644 --- a/docs/_static/basic.css +++ b/docs/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/docs/_static/clipboard.min.js b/docs/_static/clipboard.min.js index 54b3c46381..02c549e35c 100644 --- a/docs/_static/clipboard.min.js +++ b/docs/_static/clipboard.min.js @@ -1,7 +1,7 @@ /*! - * clipboard.js v2.0.8 - * https://clipboardjs.com/ - * + * clipboard.js v2.0.4 + * https://zenorocha.github.io/clipboard.js + * * Licensed MIT © Zeno Rocha */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + diff --git a/docs/_static/copybutton.css b/docs/_static/copybutton.css index f1916ec7d1..75b17a83d5 100644 --- a/docs/_static/copybutton.css +++ b/docs/_static/copybutton.css @@ -1,51 +1,30 @@ /* Copy buttons */ -button.copybtn { +a.copybtn { position: absolute; - display: flex; - top: .3em; - right: .3em; - width: 1.7em; - height: 1.7em; - opacity: 0; - transition: opacity 0.3s, border .3s, background-color .3s; - user-select: none; - padding: 0; + top: .2em; + right: .2em; + width: 1em; + height: 1em; + opacity: .3; + transition: opacity 0.5s; border: none; - outline: none; - border-radius: 0.4em; - /* The colors that GitHub uses */ - border: #1b1f2426 1px solid; - background-color: #f6f8fa; - color: #57606a; -} - -button.copybtn.success { - border-color: #22863a; - color: #22863a; -} - -button.copybtn svg { - stroke: currentColor; - width: 1.5em; - height: 1.5em; - padding: 0.1em; + user-select: none; } div.highlight { position: relative; } -/* Show the copybutton */ -.highlight:hover button.copybtn, button.copybtn.success { - opacity: 1; -} - -.highlight button.copybtn:hover { - background-color: rgb(235, 235, 235); +a.copybtn > img { + vertical-align: top; + margin: 0; + top: 0; + left: 0; + position: absolute; } -.highlight button.copybtn:active { - background-color: rgb(187, 187, 187); +.highlight:hover .copybtn { + opacity: 1; } /** @@ -65,10 +44,11 @@ div.highlight { visibility: hidden; position: absolute; content: attr(data-tooltip); - padding: .2em; - font-size: .8em; + padding: 2px; + top: 0; left: -.2em; background: grey; + font-size: 1rem; color: white; white-space: nowrap; z-index: 2; @@ -85,10 +65,3 @@ div.highlight { transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); transition-delay: .5s; } - -/* By default the copy button shouldn't show up when printing a page */ -@media print { - button.copybtn { - display: none; - } -} diff --git a/docs/_static/copybutton.js b/docs/_static/copybutton.js index 1cbc2e8277..f5f101a00e 100644 --- a/docs/_static/copybutton.js +++ b/docs/_static/copybutton.js @@ -17,30 +17,6 @@ const messages = { 'copy_to_clipboard': 'In die Zwischenablage kopieren', 'copy_success': 'Kopiert!', 'copy_failure': 'Fehler beim Kopieren', - }, - 'fr' : { - 'copy': 'Copier', - 'copy_to_clipboard': 'Copié dans le presse-papier', - 'copy_success': 'Copié !', - 'copy_failure': 'Échec de la copie', - }, - 'ru': { - 'copy': 'Скопировать', - 'copy_to_clipboard': 'Скопировать в буфер', - 'copy_success': 'Скопировано!', - 'copy_failure': 'Не удалось скопировать', - }, - 'zh-CN': { - 'copy': '复制', - 'copy_to_clipboard': '复制到剪贴板', - 'copy_success': '复制成功!', - 'copy_failure': '复制失败', - }, - 'it' : { - 'copy': 'Copiare', - 'copy_to_clipboard': 'Copiato negli appunti', - 'copy_success': 'Copiato!', - 'copy_failure': 'Errore durante la copia', } } @@ -50,31 +26,6 @@ if( document.documentElement.lang !== undefined locale = document.documentElement.lang } -let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; -if (doc_url_root == '#') { - doc_url_root = ''; -} - -/** - * SVG files for our copy buttons - */ -let iconCheck = ` - ${messages[locale]['copy_success']} - - -` - -// If the user specified their own SVG use that, otherwise use the default -let iconCopy = ``; -if (!iconCopy) { - iconCopy = ` - ${messages[locale]['copy_to_clipboard']} - - - -` -} - /** * Set up copy/paste for code blocks */ @@ -102,25 +53,11 @@ const clearSelection = () => { } } -// Changes tooltip text for a moment, then changes it back -// We want the timeout of our `success` class to be a bit shorter than the -// tooltip and icon change, so that we can hide the icon before changing back. -var timeoutIcon = 2000; -var timeoutSuccessClass = 1500; - -const temporarilyChangeTooltip = (el, oldText, newText) => { +// Changes tooltip text for two seconds, then changes it back +const temporarilyChangeTooltip = (el, newText) => { + const oldText = el.getAttribute('data-tooltip') el.setAttribute('data-tooltip', newText) - el.classList.add('success') - // Remove success a little bit sooner than we change the tooltip - // So that we can use CSS to hide the copybutton first - setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) - setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) -} - -// Changes the copy button icon for two seconds, then changes it back -const temporarilyChangeIcon = (el) => { - el.innerHTML = iconCheck; - setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) + setTimeout(() => el.setAttribute('data-tooltip', oldText), 2000) } const addCopyButtonToCodeCells = () => { @@ -132,16 +69,16 @@ const addCopyButtonToCodeCells = () => { } // Add copybuttons to all of our code cells - const COPYBUTTON_SELECTOR = 'div.highlight pre'; - const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + const codeCells = document.querySelectorAll('div.highlight pre') codeCells.forEach((codeCell, index) => { const id = codeCellId(index) codeCell.setAttribute('id', id) + const pre_bg = getComputedStyle(codeCell).backgroundColor; const clipboardButton = id => - `` + ` + ${messages[locale]['copy_to_clipboard']} + ` codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) }) @@ -149,32 +86,13 @@ function escapeRegExp(string) { return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string } -/** - * Removes excluded text from a Node. - * - * @param {Node} target Node to filter. - * @param {string} exclude CSS selector of nodes to exclude. - * @returns {DOMString} Text from `target` with text removed. - */ -function filterText(target, exclude) { - const clone = target.cloneNode(true); // clone as to not modify the live DOM - if (exclude) { - // remove excluded nodes - clone.querySelectorAll(exclude).forEach(node => node.remove()); - } - return clone.innerText; -} - // Callback when a copy button is clicked. Will be passed the node that was clicked // should then grab the text and replace pieces of text that shouldn't be used in output -function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true) { + var regexp; var match; - // Do we check for line continuation characters and "HERE-documents"? - var useLineCont = !!lineContinuationChar - var useHereDoc = !!hereDocDelim - // create regexp to capture prompt and remaining line if (isRegexp) { regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') @@ -184,31 +102,24 @@ function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onl const outputLines = []; var promptFound = false; - var gotLineCont = false; - var gotHereDoc = false; - const lineGotPrompt = []; for (const line of textContent.split('\n')) { match = line.match(regexp) - if (match || gotLineCont || gotHereDoc) { - promptFound = regexp.test(line) - lineGotPrompt.push(promptFound) - if (removePrompts && promptFound) { + if (match) { + promptFound = true + if (removePrompts) { outputLines.push(match[2]) } else { outputLines.push(line) } - gotLineCont = line.endsWith(lineContinuationChar) & useLineCont - if (line.includes(hereDocDelim) & useHereDoc) - gotHereDoc = !gotHereDoc - } else if (!onlyCopyPromptLines) { - outputLines.push(line) - } else if (copyEmptyLines && line.trim() === '') { - outputLines.push(line) + } else { + if (!onlyCopyPromptLines) { + outputLines.push(line) + } } } // If no lines with the prompt were found then just use original lines - if (lineGotPrompt.some(v => v === true)) { + if (promptFound) { textContent = outputLines.join('\n'); } @@ -222,12 +133,7 @@ function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onl var copyTargetText = (trigger) => { var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); - - // get filtered text - let exclude = '.linenos, .gp'; - - let text = filterText(target, exclude); - return formatCopyText(text, '$ ', false, true, true, true, '', '') + return formatCopyText(target.innerText, '$ ', false, true, true) } // Initialize with a callback so we can modify the text before copy @@ -236,12 +142,11 @@ var copyTargetText = (trigger) => { // Update UI with error/success messages clipboard.on('success', event => { clearSelection() - temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) - temporarilyChangeIcon(event.trigger) + temporarilyChangeTooltip(event.trigger, messages[locale]['copy_success']) }) clipboard.on('error', event => { - temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + temporarilyChangeTooltip(event.trigger, messages[locale]['copy_failure']) }) } diff --git a/docs/_static/copybutton_funcs.js b/docs/_static/copybutton_funcs.js index dbe1aaad79..57caa55854 100644 --- a/docs/_static/copybutton_funcs.js +++ b/docs/_static/copybutton_funcs.js @@ -2,32 +2,13 @@ function escapeRegExp(string) { return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string } -/** - * Removes excluded text from a Node. - * - * @param {Node} target Node to filter. - * @param {string} exclude CSS selector of nodes to exclude. - * @returns {DOMString} Text from `target` with text removed. - */ -export function filterText(target, exclude) { - const clone = target.cloneNode(true); // clone as to not modify the live DOM - if (exclude) { - // remove excluded nodes - clone.querySelectorAll(exclude).forEach(node => node.remove()); - } - return clone.innerText; -} - // Callback when a copy button is clicked. Will be passed the node that was clicked // should then grab the text and replace pieces of text that shouldn't be used in output -export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true) { + var regexp; var match; - // Do we check for line continuation characters and "HERE-documents"? - var useLineCont = !!lineContinuationChar - var useHereDoc = !!hereDocDelim - // create regexp to capture prompt and remaining line if (isRegexp) { regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') @@ -37,31 +18,24 @@ export function formatCopyText(textContent, copybuttonPromptText, isRegexp = fal const outputLines = []; var promptFound = false; - var gotLineCont = false; - var gotHereDoc = false; - const lineGotPrompt = []; for (const line of textContent.split('\n')) { match = line.match(regexp) - if (match || gotLineCont || gotHereDoc) { - promptFound = regexp.test(line) - lineGotPrompt.push(promptFound) - if (removePrompts && promptFound) { + if (match) { + promptFound = true + if (removePrompts) { outputLines.push(match[2]) } else { outputLines.push(line) } - gotLineCont = line.endsWith(lineContinuationChar) & useLineCont - if (line.includes(hereDocDelim) & useHereDoc) - gotHereDoc = !gotHereDoc - } else if (!onlyCopyPromptLines) { - outputLines.push(line) - } else if (copyEmptyLines && line.trim() === '') { - outputLines.push(line) + } else { + if (!onlyCopyPromptLines) { + outputLines.push(line) + } } } // If no lines with the prompt were found then just use original lines - if (lineGotPrompt.some(v => v === true)) { + if (promptFound) { textContent = outputLines.join('\n'); } diff --git a/docs/_static/doctools.js b/docs/_static/doctools.js index daccd209da..b33f87fcb2 100644 --- a/docs/_static/doctools.js +++ b/docs/_static/doctools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for all documentation. * - * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -283,11 +283,10 @@ var Documentation = { }, initOnKeyListeners: function() { - $(document).keydown(function(event) { + $(document).keyup(function(event) { var activeElementType = document.activeElement.tagName; // don't navigate when in search box or textarea - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' - && !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) { + if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { switch (event.keyCode) { case 37: // left var prevHref = $('link[rel="prev"]').prop('href'); diff --git a/docs/_static/documentation_options.js b/docs/_static/documentation_options.js index a3796f6996..7e2d255274 100644 --- a/docs/_static/documentation_options.js +++ b/docs/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '1.10.0.2', + VERSION: '1.10.0.3', LANGUAGE: 'None', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/_static/graphviz.css b/docs/_static/graphviz.css index 8ab69e0148..09288cbbd1 100644 --- a/docs/_static/graphviz.css +++ b/docs/_static/graphviz.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- graphviz extension. * - * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/docs/_static/language_data.js b/docs/_static/language_data.js index d2b4ee91b0..5266fb19ec 100644 --- a/docs/_static/language_data.js +++ b/docs/_static/language_data.js @@ -5,7 +5,7 @@ * This script contains the language-specific data used by searchtools.js, * namely the list of stopwords, stemmer, scorer and splitter. * - * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/docs/_static/pygments.css b/docs/_static/pygments.css index 9abe04ba55..87f8bd121b 100644 --- a/docs/_static/pygments.css +++ b/docs/_static/pygments.css @@ -54,7 +54,6 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: .highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #000000 } /* Name.Variable */ .highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */ -.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */ .highlight .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */ .highlight .mb { color: #990000 } /* Literal.Number.Bin */ .highlight .mf { color: #990000 } /* Literal.Number.Float */ diff --git a/docs/_static/searchtools.js b/docs/_static/searchtools.js index d11b33a78f..ad845872ee 100644 --- a/docs/_static/searchtools.js +++ b/docs/_static/searchtools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for the full-text search. * - * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -63,11 +63,6 @@ var Search = { htmlElement.innerHTML = htmlString; $(htmlElement).find('.headerlink').remove(); docContent = $(htmlElement).find('[role=main]')[0]; - if(docContent === undefined) { - console.warn("Content block not found. Sphinx search tries to obtain it " + - "via '[role=main]'. Could you check your theme or template."); - return ""; - } return docContent.textContent || docContent.innerText; }, @@ -250,7 +245,6 @@ var Search = { if (results.length) { var item = results.pop(); var listItem = $('
  • '); - var requestUrl = ""; if (DOCUMENTATION_OPTIONS.BUILDER === 'dirhtml') { // dirhtml builder var dirname = item[0] + '/'; @@ -259,15 +253,15 @@ var Search = { } else if (dirname == 'index/') { dirname = ''; } - requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + dirname; - + listItem.append($('').attr('href', + DOCUMENTATION_OPTIONS.URL_ROOT + dirname + + highlightstring + item[2]).html(item[1])); } else { // normal html builders - requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX; - } - listItem.append($('').attr('href', - requestUrl + + listItem.append($('').attr('href', + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX + highlightstring + item[2]).html(item[1])); + } if (item[3]) { listItem.append($(' (' + item[3] + ')')); Search.output.append(listItem); @@ -275,7 +269,7 @@ var Search = { displayNextItem(); }); } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) { - $.ajax({url: requestUrl, + $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX, dataType: "text", complete: function(jqxhr, textstatus) { var data = jqxhr.responseText; diff --git a/docs/_static/toggleprompt.js b/docs/_static/toggleprompt.js index 626489a7a3..6120d14312 100644 --- a/docs/_static/toggleprompt.js +++ b/docs/_static/toggleprompt.js @@ -71,7 +71,4 @@ $(document).ready(function() { button.data('hidden', 'false'); } }); - if ('false' === 'true') { - $('.copybutton').click(); // click once to hide - } }); \ No newline at end of file diff --git a/docs/api_reference.html b/docs/api_reference.html index d2f0f1ce60..5b828b7c58 100644 --- a/docs/api_reference.html +++ b/docs/api_reference.html @@ -3,23 +3,22 @@ - - + API reference — Documentation - - - - - - - - - + + + + + + + + + @@ -38,7 +37,7 @@ -

    cfdm 1.10.0.2

    +

    cfdm 1.10.0.3

    @@ -66,7 +65,7 @@

    Quick search

    - +