.github/ISSUE_TEMPLATE/bug_report.md
@@ -4,7 +4,6 @@ title: '' labels: bug assignees: lxndrblz --- **Describe the bug** @@ -12,6 +11,7 @@ **To Reproduce** Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' @@ -24,12 +24,14 @@ If applicable, add screenshots to help explain your problem. **Desktop (please complete the following information):** - OS: [e.g. iOS] - Browser [e.g. chrome, safari] - Version of the Theme - Version of Hugo (run a `hugo version` if unsure) **Smartphone (please complete the following information):** - Device: [e.g. iPhone6] - OS: [e.g. iOS8.1] - Browser [e.g. stock browser, safari] .github/ISSUE_TEMPLATE/feature_request.md
@@ -4,7 +4,6 @@ title: '' labels: enhancement assignees: lxndrblz --- **Is your feature request related to a problem? Please describe.** .gitignore
@@ -2,3 +2,4 @@ demo/ .hugo/* !.hugo/version /node_modules README.md
@@ -513,7 +513,8 @@ mainSections = ["post", "docs"] ``` ### _index.md and post section header ### \_index.md and post section header You can place custom content, by creating `_index.md` markdown file within the content directory. An example can be found [here](https://github.com/lxndrblz/anatole/blob/exampleSite/content/english/_index.md). Uncomment the section as needed. This file `_index.md` also has a parameter called `mainSectionsTitle`, which lets you specify a header for the posts on the main page. This header will be styled and placed always after the content of the `_index.md` it self. ### Robots.txt @@ -603,6 +604,7 @@ ``` ### External Redirect URLs You can create pages, which redirect to another (external) URL with a short delay. This can be useful for migrating previously indexed URLs, which no longer exist, or for communicating complex external URLs to your readers. You will have to define a `redirectUrl` in the markdown header of the post or page, which you want to forward. An example can be found in the [redirect.md](https://github.com/lxndrblz/anatole/blob/master/exampleSite/content/english/post/redirect.md). The page will be automatically redirected with a delay of one second. assets/css/markupHighlight.css
@@ -132,85 +132,336 @@ --chr-gu-color: #75715e; } /* Background */ .chroma { color: var(--chr-def-color); background-color: var(--chr-def-bg-color) } /* Other */ .chroma .x { } /* Error */ .chroma .err { color: var(--chr-err-color); background-color: var(--chr-err-bg-color) } /* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } /* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; } /* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: var(--chr-hl-bg-color) } /* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: var(--chr-lnt-color) } /* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: var(--chr-ln-color) } /* Keyword */ .chroma .k { color: var(--chr-k-color) } /* KeywordConstant */ .chroma .kc { color: var(--chr-kc-color) } /* KeywordDeclaration */ .chroma .kd { color: var(--chr-kd-color) } /* KeywordNamespace */ .chroma .kn { color: var(--chr-kn-color) } /* KeywordPseudo */ .chroma .kp { color: var(--chr-kp-color) } /* KeywordReserved */ .chroma .kr { color: var(--chr-kr-color) } /* KeywordType */ .chroma .kt { color: var(--chr-kt-color) } /* Name */ .chroma .n { color: var(--chr-n-color) } /* NameAttribute */ .chroma .na { color: var(--chr-na-color) } /* NameBuiltin */ .chroma .nb { color: var(--chr-nb-color) } /* NameBuiltinPseudo */ .chroma .bp { color: var(--chr-bp-color) } /* NameClass */ .chroma .nc { color: var(--chr-nc-color) } /* NameConstant */ .chroma .no { color: var(--chr-no-color) } /* NameDecorator */ .chroma .nd { color: var(--chr-nd-color) } /* NameEntity */ .chroma .ni { color: var(--chr-ni-color) } /* NameException */ .chroma .ne { color: var(--chr-ne-color) } /* NameFunction */ .chroma .nf { color: var(--chr-nf-color) } /* NameFunctionMagic */ .chroma .fm { color: var(--chr-fm-color) } /* NameLabel */ .chroma .nl { color: var(--chr-nl-color) } /* NameNamespace */ .chroma .nn { color: var(--chr-nn-color) } /* NameOther */ .chroma .nx { color: var(--chr-nx-color) } /* NameProperty */ .chroma .py { color: var(--chr-py-color) } /* NameTag */ .chroma .nt { color: var(--chr-nt-color) } /* NameVariable */ .chroma .nv { color: var(--chr-nv-color) } /* NameVariableClass */ .chroma .vc { color: var(--chr-vc-color) } /* NameVariableGlobal */ .chroma .vg { color: var(--chr-vg-color) } /* NameVariableInstance */ .chroma .vi { color: var(--chr-vi-color) } /* NameVariableMagic */ .chroma .vm { color: var(--chr-vm-color) } /* Literal */ .chroma .l { color: var(--chr-l-color) } /* LiteralDate */ .chroma .ld { color: var(--chr-ld-color) } /* LiteralString */ .chroma .s { color: var(--chr-s-color) } /* LiteralStringAffix */ .chroma .sa { color: var(--chr-sa-color) } /* LiteralStringBacktick */ .chroma .sb { color: var(--chr-sb-color) } /* LiteralStringChar */ .chroma .sc { color: var(--chr-sc-color) } /* LiteralStringDelimiter */ .chroma .dl { color: var(--chr-dl-color) } /* LiteralStringDoc */ .chroma .sd { color: var(--chr-sd-color) } /* LiteralStringDouble */ .chroma .s2 { color: var(--chr-s2-color) } /* LiteralStringEscape */ .chroma .se { color: var(--chr-se-color) } /* LiteralStringHeredoc */ .chroma .sh { color: var(--chr-sh-color) } /* LiteralStringInterpol */ .chroma .si { color: var(--chr-si-color) } /* LiteralStringOther */ .chroma .sx { color: var(--chr-sx-color) } /* LiteralStringRegex */ .chroma .sr { color: var(--chr-sr-color) } /* LiteralStringSingle */ .chroma .s1 { color: var(--chr-s1-color) } /* LiteralStringSymbol */ .chroma .ss { color: var(--chr-ss-color) } /* LiteralNumber */ .chroma .m { color: var(--chr-m-color) } /* LiteralNumberBin */ .chroma .mb { color: var(--chr-mb-color) } /* LiteralNumberFloat */ .chroma .mf { color: var(--chr-mf-color) } /* LiteralNumberHex */ .chroma .mh { color: var(--chr-mh-color) } /* LiteralNumberInteger */ .chroma .mi { color: var(--chr-mi-color) } /* LiteralNumberIntegerLong */ .chroma .il { color: var(--chr-il-color) } /* LiteralNumberOct */ .chroma .mo { color: var(--chr-mo-color) } /* Operator */ .chroma .o { color: var(--chr-o-color) } /* OperatorWord */ .chroma .ow { color: var(--chr-ow-color) } /* Punctuation */ .chroma .p { color: var(--chr-p-color) } /* Comment */ .chroma .c { color: var(--chr-c-color) } /* CommentHashbang */ .chroma .ch { color: var(--chr-ch-color) } /* CommentMultiline */ .chroma .cm { color: var(--chr-cm-color) } /* CommentSingle */ .chroma .c1 { color: var(--chr-c1-color) } /* CommentSpecial */ .chroma .cs { color: var(--chr-cs-color) } /* CommentPreproc */ .chroma .cp { color: var(--chr-cp-color) } /* CommentPreprocFile */ .chroma .cpf { color: var(--chr-cpf-color) } /* Generic */ .chroma .g { } /* GenericDeleted */ .chroma .gd { } /* GenericEmph */ .chroma .ge { font-style: italic } /* GenericError */ .chroma .gr { } /* GenericHeading */ .chroma .gh { } /* GenericInserted */ .chroma .gi { } /* GenericOutput */ .chroma .go { } /* GenericPrompt */ .chroma .gp { } /* GenericStrong */ .chroma .gs { font-weight: bold } /* GenericSubheading */ .chroma .gu { } /* GenericTraceback */ .chroma .gt { } /* GenericUnderline */ .chroma .gl { } /* TextWhitespace */ .chroma .w { } /* Background */ .chroma { color: var(--chr-def-color); background-color: var(--chr-def-bg-color); } /* Other */ .chroma .x { } /* Error */ .chroma .err { color: var(--chr-err-color); background-color: var(--chr-err-bg-color); } /* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } /* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; } /* LineHighlight */ .chroma .hl { display: block; width: 100%; background-color: var(--chr-hl-bg-color); } /* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; color: var(--chr-lnt-color); } /* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; color: var(--chr-ln-color); } /* Keyword */ .chroma .k { color: var(--chr-k-color); } /* KeywordConstant */ .chroma .kc { color: var(--chr-kc-color); } /* KeywordDeclaration */ .chroma .kd { color: var(--chr-kd-color); } /* KeywordNamespace */ .chroma .kn { color: var(--chr-kn-color); } /* KeywordPseudo */ .chroma .kp { color: var(--chr-kp-color); } /* KeywordReserved */ .chroma .kr { color: var(--chr-kr-color); } /* KeywordType */ .chroma .kt { color: var(--chr-kt-color); } /* Name */ .chroma .n { color: var(--chr-n-color); } /* NameAttribute */ .chroma .na { color: var(--chr-na-color); } /* NameBuiltin */ .chroma .nb { color: var(--chr-nb-color); } /* NameBuiltinPseudo */ .chroma .bp { color: var(--chr-bp-color); } /* NameClass */ .chroma .nc { color: var(--chr-nc-color); } /* NameConstant */ .chroma .no { color: var(--chr-no-color); } /* NameDecorator */ .chroma .nd { color: var(--chr-nd-color); } /* NameEntity */ .chroma .ni { color: var(--chr-ni-color); } /* NameException */ .chroma .ne { color: var(--chr-ne-color); } /* NameFunction */ .chroma .nf { color: var(--chr-nf-color); } /* NameFunctionMagic */ .chroma .fm { color: var(--chr-fm-color); } /* NameLabel */ .chroma .nl { color: var(--chr-nl-color); } /* NameNamespace */ .chroma .nn { color: var(--chr-nn-color); } /* NameOther */ .chroma .nx { color: var(--chr-nx-color); } /* NameProperty */ .chroma .py { color: var(--chr-py-color); } /* NameTag */ .chroma .nt { color: var(--chr-nt-color); } /* NameVariable */ .chroma .nv { color: var(--chr-nv-color); } /* NameVariableClass */ .chroma .vc { color: var(--chr-vc-color); } /* NameVariableGlobal */ .chroma .vg { color: var(--chr-vg-color); } /* NameVariableInstance */ .chroma .vi { color: var(--chr-vi-color); } /* NameVariableMagic */ .chroma .vm { color: var(--chr-vm-color); } /* Literal */ .chroma .l { color: var(--chr-l-color); } /* LiteralDate */ .chroma .ld { color: var(--chr-ld-color); } /* LiteralString */ .chroma .s { color: var(--chr-s-color); } /* LiteralStringAffix */ .chroma .sa { color: var(--chr-sa-color); } /* LiteralStringBacktick */ .chroma .sb { color: var(--chr-sb-color); } /* LiteralStringChar */ .chroma .sc { color: var(--chr-sc-color); } /* LiteralStringDelimiter */ .chroma .dl { color: var(--chr-dl-color); } /* LiteralStringDoc */ .chroma .sd { color: var(--chr-sd-color); } /* LiteralStringDouble */ .chroma .s2 { color: var(--chr-s2-color); } /* LiteralStringEscape */ .chroma .se { color: var(--chr-se-color); } /* LiteralStringHeredoc */ .chroma .sh { color: var(--chr-sh-color); } /* LiteralStringInterpol */ .chroma .si { color: var(--chr-si-color); } /* LiteralStringOther */ .chroma .sx { color: var(--chr-sx-color); } /* LiteralStringRegex */ .chroma .sr { color: var(--chr-sr-color); } /* LiteralStringSingle */ .chroma .s1 { color: var(--chr-s1-color); } /* LiteralStringSymbol */ .chroma .ss { color: var(--chr-ss-color); } /* LiteralNumber */ .chroma .m { color: var(--chr-m-color); } /* LiteralNumberBin */ .chroma .mb { color: var(--chr-mb-color); } /* LiteralNumberFloat */ .chroma .mf { color: var(--chr-mf-color); } /* LiteralNumberHex */ .chroma .mh { color: var(--chr-mh-color); } /* LiteralNumberInteger */ .chroma .mi { color: var(--chr-mi-color); } /* LiteralNumberIntegerLong */ .chroma .il { color: var(--chr-il-color); } /* LiteralNumberOct */ .chroma .mo { color: var(--chr-mo-color); } /* Operator */ .chroma .o { color: var(--chr-o-color); } /* OperatorWord */ .chroma .ow { color: var(--chr-ow-color); } /* Punctuation */ .chroma .p { color: var(--chr-p-color); } /* Comment */ .chroma .c { color: var(--chr-c-color); } /* CommentHashbang */ .chroma .ch { color: var(--chr-ch-color); } /* CommentMultiline */ .chroma .cm { color: var(--chr-cm-color); } /* CommentSingle */ .chroma .c1 { color: var(--chr-c1-color); } /* CommentSpecial */ .chroma .cs { color: var(--chr-cs-color); } /* CommentPreproc */ .chroma .cp { color: var(--chr-cp-color); } /* CommentPreprocFile */ .chroma .cpf { color: var(--chr-cpf-color); } /* Generic */ .chroma .g { } /* GenericDeleted */ .chroma .gd { } /* GenericEmph */ .chroma .ge { font-style: italic; } /* GenericError */ .chroma .gr { } /* GenericHeading */ .chroma .gh { } /* GenericInserted */ .chroma .gi { } /* GenericOutput */ .chroma .go { } /* GenericPrompt */ .chroma .gp { } /* GenericStrong */ .chroma .gs { font-weight: bold; } /* GenericSubheading */ .chroma .gu { } /* GenericTraceback */ .chroma .gt { } /* GenericUnderline */ .chroma .gl { } /* TextWhitespace */ .chroma .w { } assets/css/spinner.css
@@ -4,7 +4,7 @@ } html[data-theme='dark'] { --sk-color: rgb(169, 169, 179) --sk-color: rgb(169, 169, 179); } .sk-wrapper { @@ -29,7 +29,7 @@ } .sk-fold-cube:before { content: ""; content: ''; position: absolute; top: 0; left: 0; @@ -82,6 +82,4 @@ transform: perspective(140px) rotateY(180deg); opacity: 0; } } assets/css/style.css
@@ -18,12 +18,13 @@ --thumbnail-height: 15em; scroll-padding-top: 100px; --body-max-width: 1920px; --content-ratio: {{ .Site.Params.contentratio | default 0.6 }}; --sidebar-ratio: calc(1 - var(--content-ratio)); --content-max-width: calc(var(--body-max-width) * var(--content-ratio)); --sidebar-max-width: calc(var(--body-max-width) - var(--content-max-width)); --content-width: calc(var(--content-ratio) * 100%); --sidebar-width: calc(var(--sidebar-ratio) * 100%); /* prettier-ignore */ --content-ratio: {{ .Site.Params.contentratio | default 0.6 }} } html[data-theme='dark'] { @@ -70,7 +71,7 @@ blockquote { padding: 0 1em; border-left: .25em solid var(--blockquote-border-color); border-left: 0.25em solid var(--blockquote-border-color); color: var(--blockquote-text-color); } @@ -83,8 +84,8 @@ } .tag::before { content: "#"; opacity: .5; content: '#'; opacity: 0.5; } .tag, @@ -121,7 +122,7 @@ /*animation starts*/ .animated { transition: top .8s linear; transition: top 0.8s linear; -webkit-animation-duration: 1s; -moz-animation-duration: 1s; -ms-animation-duration: 1s; @@ -390,7 +391,7 @@ } .post .post-content a:hover { color: #2F69B3; color: #2f69b3; } .post .post-content h3 { @@ -443,7 +444,7 @@ .post .post-footer .meta .info .date { margin-right: 10px; margin-left: 5px margin-left: 5px; } .post figure { @@ -525,8 +526,7 @@ box-shadow: #000; border-radius: 0.5em; overflow: hidden; transition: box-shadow .3s ease; transition: box-shadow 0.3s ease; } .post .post-thumbnail img { @@ -607,7 +607,7 @@ } .footer a { color: #A6A6A6; color: #a6a6a6; } .footer a:hover { @@ -622,7 +622,7 @@ } .footer__item:not(:first-of-type)::before { content: "\00B7"; content: '\00B7'; padding: 4px; } @@ -662,11 +662,11 @@ display: inline-block; max-width: 10%; text-align: right; color: #C5C5C5; color: #c5c5c5; } .list-with-title .listing .listing-post a { color: #8F8F8F; color: #8f8f8f; width: 90%; display: inline-block; } @@ -685,7 +685,7 @@ width: 32px; height: 32px; border-radius: 300px; background-color: #3E3E3E; background-color: #3e3e3e; margin-right: 5px; } @@ -696,7 +696,7 @@ } .evernote a:hover { color: #ED6243; color: #ed6243; padding: 11px; } @@ -704,7 +704,7 @@ width: 32px; height: 32px; border-radius: 300px; background-color: #ED6243; background-color: #ed6243; margin-right: 5px; } @@ -714,14 +714,14 @@ } .weibo a:hover { color: #BD4226; color: #bd4226; } .twitter { width: 32px; height: 32px; border-radius: 300px; background-color: #59C0FD; background-color: #59c0fd; margin-right: 5px; } @@ -731,7 +731,7 @@ } .twitter a:hover { color: #4B9ECE; color: #4b9ece; } /* about */ @@ -825,22 +825,22 @@ border-radius: 999em; } [role="back"] { [role='back'] { padding: 0.5em 1.25em; line-height: 1.666em; } [role="home"] { [role='home'] { padding: 0.5em 1.25em; line-height: 1.666em; } [role="navigation"] { [role='navigation'] { padding: 0.5em 1.25em; line-height: 1.666em; } [role="tags"] { [role='tags'] { padding: 6px 12px; } @@ -883,7 +883,7 @@ padding: 0.5em 1.25em; outline: 0; color: #fff; background: #3CBD10; background: #3cbd10; font-size: 14px; text-align: center; text-decoration: none; @@ -1013,7 +1013,6 @@ margin: 0; } .footer--sidebar { display: none; } @@ -1028,8 +1027,8 @@ header .nav__list { background-color: var(--secondary-bg-color); box-shadow: 0 8px 16px rgba(10, 10, 10, .1); padding: .5rem 0; box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1); padding: 0.5rem 0; width: 100%; margin-top: 0px; } @@ -1043,7 +1042,7 @@ flex-grow: 0; flex-shrink: 0; line-height: 2.5; padding: .5rem .75rem; padding: 0.5rem 0.75rem; position: relative; text-transform: uppercase; text-align: center; @@ -1213,8 +1212,8 @@ width: 100%; height: auto; } .form-style ul li input[type="button"], .form-style ul li input[type="submit"] { .form-style ul li input[type='button'], .form-style ul li input[type='submit'] { background-color: var(--bg-color); border: 1px solid var(--form-border-color); display: inline-block; @@ -1223,8 +1222,8 @@ text-decoration: none; width: 100%; } .form-style ul li input[type="button"]:hover, .form-style ul li input[type="submit"]:hover { .form-style ul li input[type='button']:hover, .form-style ul li input[type='submit']:hover { background-color: var(--bg-color); border: 1px solid var(--form-button-hover-border-color); } assets/css/style.rtl.css
@@ -1,7 +1,7 @@ @charset "UTF-8"; blockquote { border-right: .25em solid var(--blockquote-border-color); border-right: 0.25em solid var(--blockquote-border-color); border-left: inherit; } @@ -15,7 +15,6 @@ margin-right: inherit; } .sidebar { right: 0; border-left: 1px solid var(--border-color); @@ -33,7 +32,7 @@ } .post .post-footer .meta .info .date { margin-left: 10px; margin-right: 5px margin-right: 5px; } .post figure.right { @@ -74,7 +73,6 @@ text-align: left; } @media screen and (min-width: 960px), print { header { position: fixed; @@ -87,7 +85,6 @@ header .nav__list li:not(:last-of-type) { padding-right: inherit; } } @media (min-width: 1921px){ @@ -99,5 +96,4 @@ padding-right: inherit; padding-left: 20%; } } assets/js/anatole-header.js
@@ -1,17 +1,17 @@ document.addEventListener("DOMContentLoaded", function () { document.addEventListener('DOMContentLoaded', function () { // Get all "navbar-burger" elements var $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll(".navbar-burger"), 0); var nav = document.querySelector("nav"); var $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0); var nav = document.querySelector('nav'); // Check if there are any navbar burgers if ($navbarBurgers.length > 0) { // Add a click event on each of them $navbarBurgers.forEach(function ($el) { $el.addEventListener("click", function () { $el.addEventListener('click', function () { var target = $el.dataset.target; var $target = document.getElementById(target); $el.classList.toggle("is-active"); $target.classList.toggle("is-active"); nav.classList.toggle("is-active"); $el.classList.toggle('is-active'); $target.classList.toggle('is-active'); nav.classList.toggle('is-active'); }); }); } assets/js/anatole-theme-switcher.js
@@ -32,7 +32,6 @@ } } // switch themes function switchTheme() { const theme = getTheme(); @@ -44,10 +43,14 @@ } // Manual Switch document.addEventListener('DOMContentLoaded', function () { document.addEventListener( 'DOMContentLoaded', function () { const themeSwitcher = document.querySelector('.theme-switch'); themeSwitcher.addEventListener('click', switchTheme, false); }, false); }, false, ); // Automatic Switching window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', switchTheme, false); assets/js/medium-zoom.js
@@ -1,10 +1,15 @@ /*!medium-zoom 1.0.5 | MIT License | https://github.com/francoischalifour/medium-zoom*/ (function (global, factory) { typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global = global || self, global.mediumZoom = factory()); typeof exports === 'object' && typeof module !== 'undefined' ? (module.exports = factory()) : typeof define === 'function' && define.amd ? define(factory) : ((global = global || self), (global.mediumZoom = factory())); })(this, function () { "use strict"; var _extends = Object.assign || function (target) { 'use strict'; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { @@ -16,7 +21,7 @@ return target; }; var isSupported = function isSupported(node) { return node.tagName === "IMG"; return node.tagName === 'IMG'; }; var isNodeList = function isNodeList(selector) { return NodeList.prototype.isPrototypeOf(selector); @@ -26,7 +31,7 @@ }; var isSvg = function isSvg(image) { var source = image.currentSrc || image.src; return source.substr(-4).toLowerCase() === ".svg"; return source.substr(-4).toLowerCase() === '.svg'; }; var getImagesFromSelector = function getImagesFromSelector(selector) { try { @@ -39,53 +44,63 @@ if (isNode(selector)) { return [selector].filter(isSupported); } if (typeof selector === "string") { if (typeof selector === 'string') { return [].slice.call(document.querySelectorAll(selector)).filter(isSupported); } return []; } catch (err) { throw new TypeError("The provided selector is invalid.\n" + "Expects a CSS selector, a Node element, a NodeList or an array.\n" + "See: https://github.com/francoischalifour/medium-zoom"); throw new TypeError( 'The provided selector is invalid.\n' + 'Expects a CSS selector, a Node element, a NodeList or an array.\n' + 'See: https://github.com/francoischalifour/medium-zoom', ); } }; var createOverlay = function createOverlay() { var overlay = document.createElement("div"); overlay.classList.add("medium-zoom-overlay"); var overlay = document.createElement('div'); overlay.classList.add('medium-zoom-overlay'); return overlay; }; var cloneTarget = function cloneTarget(template) { var _template$getBounding = template.getBoundingClientRect(), top = _template$getBounding.top, left = _template$getBounding.left, width = _template$getBounding.width, var _template$getBounding = template.getBoundingClientRect(), top = _template$getBounding.top, left = _template$getBounding.left, width = _template$getBounding.width, height = _template$getBounding.height; var clone = template.cloneNode(); var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; clone.removeAttribute("id"); clone.style.position = "absolute"; clone.style.top = top + scrollTop + "px"; clone.style.left = left + scrollLeft + "px"; clone.style.width = width + "px"; clone.style.height = height + "px"; clone.style.transform = ""; clone.removeAttribute('id'); clone.style.position = 'absolute'; clone.style.top = top + scrollTop + 'px'; clone.style.left = left + scrollLeft + 'px'; clone.style.width = width + 'px'; clone.style.height = height + 'px'; clone.style.transform = ''; return clone; }; var createCustomEvent = function createCustomEvent(type, params) { var eventParams = _extends({ var eventParams = _extends( { bubbles: false, cancelable: false, detail: undefined }, params); if (typeof window.CustomEvent === "function") { detail: undefined, }, params, ); if (typeof window.CustomEvent === 'function') { return new CustomEvent(type, eventParams); } var customEvent = document.createEvent("CustomEvent"); var customEvent = document.createEvent('CustomEvent'); customEvent.initCustomEvent(type, eventParams.bubbles, eventParams.cancelable, eventParams.detail); return customEvent; }; var mediumZoom = function mediumZoom(selector) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var Promise = window.Promise || function Promise(fn) { function noop() { } var Promise = window.Promise || function Promise(fn) { function noop() {} fn(noop, noop); }; @@ -99,7 +114,7 @@ return; } toggle({ target: target target: target, }); }; var _handleScroll = function _handleScroll() { @@ -113,7 +128,7 @@ }; var _handleKeyUp = function _handleKeyUp(event) { var key = event.key || event.keyCode; if (key === "Escape" || key === "Esc" || key === 27) { if (key === 'Escape' || key === 'Esc' || key === 27) { close(); } }; @@ -129,11 +144,13 @@ } zoomOptions = _extends({}, zoomOptions, newOptions); images.forEach(function (image) { image.dispatchEvent(createCustomEvent("medium-zoom:update", { image.dispatchEvent( createCustomEvent('medium-zoom:update', { detail: { zoom: zoom } })); zoom: zoom, }, }), ); }); return zoom; }; @@ -148,14 +165,18 @@ var newImages = selectors.reduce(function (imagesAccumulator, currentSelector) { return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector)); }, []); newImages.filter(function (newImage) { newImages .filter(function (newImage) { return images.indexOf(newImage) === -1; }).forEach(function (newImage) { }) .forEach(function (newImage) { images.push(newImage); newImage.classList.add("medium-zoom-image"); newImage.classList.add('medium-zoom-image'); }); eventListeners.forEach(function (_ref) { var type = _ref.type, listener = _ref.listener, options = _ref.options; var type = _ref.type, listener = _ref.listener, options = _ref.options; newImages.forEach(function (image) { image.addEventListener(type, listener, options); }); @@ -169,16 +190,21 @@ if (active.zoomed) { close(); } var imagesToDetach = selectors.length > 0 ? selectors.reduce(function (imagesAccumulator, currentSelector) { var imagesToDetach = selectors.length > 0 ? selectors.reduce(function (imagesAccumulator, currentSelector) { return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector)); }, []) : images; }, []) : images; imagesToDetach.forEach(function (image) { image.classList.remove("medium-zoom-image"); image.dispatchEvent(createCustomEvent("medium-zoom:detach", { image.classList.remove('medium-zoom-image'); image.dispatchEvent( createCustomEvent('medium-zoom:detach', { detail: { zoom: zoom } })); zoom: zoom, }, }), ); }); images = images.filter(function (image) { return imagesToDetach.indexOf(image) === -1; @@ -188,27 +214,30 @@ var on = function on(type, listener) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; images.forEach(function (image) { image.addEventListener("medium-zoom:" + type, listener, options); image.addEventListener('medium-zoom:' + type, listener, options); }); eventListeners.push({ type: "medium-zoom:" + type, type: 'medium-zoom:' + type, listener: listener, options: options options: options, }); return zoom; }; var off = function off(type, listener) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; images.forEach(function (image) { image.removeEventListener("medium-zoom:" + type, listener, options); image.removeEventListener('medium-zoom:' + type, listener, options); }); eventListeners = eventListeners.filter(function (eventListener) { return !(eventListener.type === "medium-zoom:" + type && eventListener.listener.toString() === listener.toString()); return !( eventListener.type === 'medium-zoom:' + type && eventListener.listener.toString() === listener.toString() ); }); return zoom; }; var open = function open() { var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, target = _ref2.target; var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, target = _ref2.target; var _animate = function _animate() { var container = { width: document.documentElement.clientWidth, @@ -216,7 +245,7 @@ left: 0, top: 0, right: 0, bottom: 0 bottom: 0, }; var viewportWidth = void 0; var viewportHeight = void 0; @@ -226,15 +255,19 @@ viewportWidth = container.width - container.left - container.right - zoomOptions.margin * 2; viewportHeight = container.height - container.top - container.bottom - zoomOptions.margin * 2; } else { var zoomContainer = isNode(zoomOptions.container) ? zoomOptions.container : document.querySelector(zoomOptions.container); var zoomContainer = isNode(zoomOptions.container) ? zoomOptions.container : document.querySelector(zoomOptions.container); var _zoomContainer$getBou = zoomContainer.getBoundingClientRect(), _width = _zoomContainer$getBou.width, _height = _zoomContainer$getBou.height, _left = _zoomContainer$getBou.left, _top = _zoomContainer$getBou.top; _width = _zoomContainer$getBou.width, _height = _zoomContainer$getBou.height, _left = _zoomContainer$getBou.left, _top = _zoomContainer$getBou.top; container = _extends({}, container, { width: _width, height: _height, left: _left, top: _top top: _top, }); } } @@ -243,15 +276,17 @@ var zoomTarget = active.zoomedHd || active.original; var naturalWidth = isSvg(zoomTarget) ? viewportWidth : zoomTarget.naturalWidth || viewportWidth; var naturalHeight = isSvg(zoomTarget) ? viewportHeight : zoomTarget.naturalHeight || viewportHeight; var _zoomTarget$getBoundi = zoomTarget.getBoundingClientRect(), top = _zoomTarget$getBoundi.top, left = _zoomTarget$getBoundi.left, width = _zoomTarget$getBoundi.width, var _zoomTarget$getBoundi = zoomTarget.getBoundingClientRect(), top = _zoomTarget$getBoundi.top, left = _zoomTarget$getBoundi.left, width = _zoomTarget$getBoundi.width, height = _zoomTarget$getBoundi.height; var scaleX = Math.min(naturalWidth, viewportWidth) / width; var scaleY = Math.min(naturalHeight, viewportHeight) / height; var scale = Math.min(scaleX, scaleY); var translateX = (-left + (viewportWidth - width) / 2 + zoomOptions.margin + container.left) / scale; var translateY = (-top + (viewportHeight - height) / 2 + zoomOptions.margin + container.top) / scale; var transform = "scale(" + scale + ") translate3d(" + translateX + "px, " + translateY + "px, 0)"; var transform = 'scale(' + scale + ') translate3d(' + translateX + 'px, ' + translateY + 'px, 0)'; active.zoomed.style.transform = transform; if (active.zoomedHd) { active.zoomedHd.style.transform = transform; @@ -264,12 +299,14 @@ } var _handleOpenEnd = function _handleOpenEnd() { isAnimating = false; active.zoomed.removeEventListener("transitionend", _handleOpenEnd); active.original.dispatchEvent(createCustomEvent("medium-zoom:opened", { active.zoomed.removeEventListener('transitionend', _handleOpenEnd); active.original.dispatchEvent( createCustomEvent('medium-zoom:opened', { detail: { zoom: zoom } })); zoom: zoom, }, }), ); resolve(zoom); }; if (active.zoomed) { @@ -285,56 +322,60 @@ resolve(zoom); return; } active.original.dispatchEvent(createCustomEvent("medium-zoom:open", { active.original.dispatchEvent( createCustomEvent('medium-zoom:open', { detail: { zoom: zoom } })); zoom: zoom, }, }), ); scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; isAnimating = true; active.zoomed = cloneTarget(active.original); document.body.appendChild(overlay); if (zoomOptions.template) { var template = isNode(zoomOptions.template) ? zoomOptions.template : document.querySelector(zoomOptions.template); active.template = document.createElement("div"); var template = isNode(zoomOptions.template) ? zoomOptions.template : document.querySelector(zoomOptions.template); active.template = document.createElement('div'); active.template.appendChild(template.content.cloneNode(true)); document.body.appendChild(active.template); } document.body.appendChild(active.zoomed); window.requestAnimationFrame(function () { document.body.classList.add("medium-zoom--opened"); document.body.classList.add('medium-zoom--opened'); }); active.original.classList.add("medium-zoom-image--hidden"); active.zoomed.classList.add("medium-zoom-image--opened"); active.zoomed.addEventListener("click", close); active.zoomed.addEventListener("transitionend", _handleOpenEnd); if (active.original.getAttribute("data-zoom-src")) { active.original.classList.add('medium-zoom-image--hidden'); active.zoomed.classList.add('medium-zoom-image--opened'); active.zoomed.addEventListener('click', close); active.zoomed.addEventListener('transitionend', _handleOpenEnd); if (active.original.getAttribute('data-zoom-src')) { active.zoomedHd = active.zoomed.cloneNode(); active.zoomedHd.removeAttribute("srcset"); active.zoomedHd.removeAttribute("sizes"); active.zoomedHd.src = active.zoomed.getAttribute("data-zoom-src"); active.zoomedHd.removeAttribute('srcset'); active.zoomedHd.removeAttribute('sizes'); active.zoomedHd.src = active.zoomed.getAttribute('data-zoom-src'); active.zoomedHd.onerror = function () { clearInterval(getZoomTargetSize); console.warn("Unable to reach the zoom image target " + active.zoomedHd.src); console.warn('Unable to reach the zoom image target ' + active.zoomedHd.src); active.zoomedHd = null; _animate(); }; var getZoomTargetSize = setInterval(function () { if (active.zoomedHd.complete) { clearInterval(getZoomTargetSize); active.zoomedHd.classList.add("medium-zoom-image--opened"); active.zoomedHd.addEventListener("click", close); active.zoomedHd.classList.add('medium-zoom-image--opened'); active.zoomedHd.addEventListener('click', close); document.body.appendChild(active.zoomedHd); _animate(); } }, 10); } else if (active.original.hasAttribute("srcset")) { } else if (active.original.hasAttribute('srcset')) { active.zoomedHd = active.zoomed.cloneNode(); active.zoomedHd.removeAttribute("sizes"); var loadEventListener = active.zoomedHd.addEventListener("load", function () { active.zoomedHd.removeEventListener("load", loadEventListener); active.zoomedHd.classList.add("medium-zoom-image--opened"); active.zoomedHd.addEventListener("click", close); active.zoomedHd.removeAttribute('sizes'); var loadEventListener = active.zoomedHd.addEventListener('load', function () { active.zoomedHd.removeEventListener('load', loadEventListener); active.zoomedHd.classList.add('medium-zoom-image--opened'); active.zoomedHd.addEventListener('click', close); document.body.appendChild(active.zoomedHd); _animate(); }); @@ -350,23 +391,25 @@ return; } var _handleCloseEnd = function _handleCloseEnd() { active.original.classList.remove("medium-zoom-image--hidden"); active.original.classList.remove('medium-zoom-image--hidden'); document.body.removeChild(active.zoomed); if (active.zoomedHd) { document.body.removeChild(active.zoomedHd); } document.body.removeChild(overlay); active.zoomed.classList.remove("medium-zoom-image--opened"); active.zoomed.classList.remove('medium-zoom-image--opened'); if (active.template) { document.body.removeChild(active.template); } isAnimating = false; active.zoomed.removeEventListener("transitionend", _handleCloseEnd); active.original.dispatchEvent(createCustomEvent("medium-zoom:closed", { active.zoomed.removeEventListener('transitionend', _handleCloseEnd); active.original.dispatchEvent( createCustomEvent('medium-zoom:closed', { detail: { zoom: zoom } })); zoom: zoom, }, }), ); active.original = null; active.zoomed = null; active.zoomedHd = null; @@ -374,30 +417,33 @@ resolve(zoom); }; isAnimating = true; document.body.classList.remove("medium-zoom--opened"); active.zoomed.style.transform = ""; document.body.classList.remove('medium-zoom--opened'); active.zoomed.style.transform = ''; if (active.zoomedHd) { active.zoomedHd.style.transform = ""; active.zoomedHd.style.transform = ''; } if (active.template) { active.template.style.transition = "opacity 150ms"; active.template.style.transition = 'opacity 150ms'; active.template.style.opacity = 0; } active.original.dispatchEvent(createCustomEvent("medium-zoom:close", { active.original.dispatchEvent( createCustomEvent('medium-zoom:close', { detail: { zoom: zoom } })); active.zoomed.addEventListener("transitionend", _handleCloseEnd); zoom: zoom, }, }), ); active.zoomed.addEventListener('transitionend', _handleCloseEnd); }); }; var toggle = function toggle() { var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, target = _ref3.target; var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, target = _ref3.target; if (active.original) { return close(); } return open({ target: target target: target, }); }; var getOptions = function getOptions() { @@ -418,24 +464,27 @@ original: null, zoomed: null, zoomedHd: null, template: null template: null, }; if (Object.prototype.toString.call(selector) === "[object Object]") { if (Object.prototype.toString.call(selector) === '[object Object]') { zoomOptions = selector; } else if (selector || typeof selector === "string") { } else if (selector || typeof selector === 'string') { attach(selector); } zoomOptions = _extends({ zoomOptions = _extends( { margin: 0, scrollOffset: 40, container: null, template: null }, zoomOptions); template: null, }, zoomOptions, ); var overlay = createOverlay(); document.addEventListener("click", _handleClick); document.addEventListener("keyup", _handleKeyUp); document.addEventListener("scroll", _handleScroll); window.addEventListener("resize", close); document.addEventListener('click', _handleClick); document.addEventListener('keyup', _handleKeyUp); document.addEventListener('scroll', _handleScroll); window.addEventListener('resize', close); var zoom = { open: open, close: close, @@ -448,7 +497,7 @@ off: off, getOptions: getOptions, getImages: getImages, getZoomedImage: getZoomedImage getZoomedImage: getZoomedImage, }; return zoom; }; exampleSite/content/arabic/about.md
exampleSite/content/arabic/archives.md
@@ -1,5 +1,5 @@ --- date: 2019-05-28 type: section layout: "archives" layout: 'archives' --- exampleSite/content/arabic/post/arabic_example.md
@@ -7,6 +7,7 @@ "عربي", ] +++ من مولد النص العربى، حيث يمكنك أن تولد مثل هذا النص أو العديد من النصوص الأخرى إضافة إلى زيادة عدد الحروف التى يولدها التطبيق. إذا كنت تحتاج إلى عدد أكبر من الفقرات يتيح لك مولد النص العربى زيادة عدد الفقرات كما تريد، النص لن يبدو مقسما ولا يحوي أخطاء لغوية، مولد النص العربى مفيد لمصممي المواقع على وجه الخصوص، حيث يحتاج العميل فى كثير من الأحيان أن يطلع على صورة حقيقية لتصميم الموقع. ومن هنا وجب على المصمم أن يضع نصوصا مؤقتة على التصميم ليظهر للعميل الشكل كاملاً،دور مولد النص العربى أن يوفر على المصمم عناء البحث عن نص بديل لا علاقة له بالموضوع الذى يتحدث عنه التصميم فيظهر بشكل لا يليق. exampleSite/content/english/about.md
@@ -10,11 +10,11 @@ Hugo makes use of a variety of open source projects including: * https://github.com/yuin/goldmark * https://github.com/alecthomas/chroma * https://github.com/muesli/smartcrop * https://github.com/spf13/cobra * https://github.com/spf13/viper - https://github.com/yuin/goldmark - https://github.com/alecthomas/chroma - https://github.com/muesli/smartcrop - https://github.com/spf13/cobra - https://github.com/spf13/viper Hugo is ideal for blogs, corporate websites, creative portfolios, online magazines, single page applications or even a website with thousands of pages. exampleSite/content/english/archives.md
@@ -1,5 +1,5 @@ --- date: 2019-05-28 type: section layout: "archives" layout: 'archives' --- exampleSite/content/english/post/emoji-support.md
@@ -9,7 +9,9 @@ +++ Emoji can be enabled in a Hugo project in a number of ways. <!--more--> The [`emojify`](https://gohugo.io/functions/emojify/) function can be called directly in templates or [Inline Shortcodes](https://gohugo.io/templates/shortcode-templates/#inline-shortcodes). To enable emoji globally, set `enableEmoji` to `true` in your site's [configuration](https://gohugo.io/getting-started/configuration/) and then you can type emoji shorthand codes directly in content files; e.g. @@ -19,7 +21,7 @@ The [Emoji cheat sheet](http://www.emoji-cheat-sheet.com/) is a useful reference for emoji shorthand codes. *** --- **N.B.** The above steps enable Unicode Standard emoji characters and sequences in Hugo, however the rendering of these glyphs depends on the browser and the platform. To style the emoji you can either use a third party emoji font or a font stack; e.g. @@ -30,6 +32,7 @@ {{< /highlight >}} {{< css.inline >}} <style> .emojify { font-family: Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols; @@ -43,4 +46,5 @@ } } </style> {{< /css.inline >}} exampleSite/content/english/post/figure-shortcode.md
@@ -13,9 +13,9 @@ This theme has 3 CSS classes made for figure elements: * `big`: images will break the width limit of main content area. * `left`: images will float to the left. * `right`: images will float to the right. - `big`: images will break the width limit of main content area. - `left`: images will float to the left. - `right`: images will float to the right. If a figure has no class set, the image will behave just like a normal markdown image: `![]()`. exampleSite/content/english/post/image-test.md
@@ -8,6 +8,7 @@ ] thumbnail= "images/landscape.jpg" +++ Thumbnails can be enabled easily by setting the `thumbnail` parameter in the frontmatter to an image such as `"images/landscape.jpg"`. Make sure to copy the image the `static/images/` directory. @@ -26,5 +27,3 @@ thumbnail= "images/landscape.jpg" +++ ``` exampleSite/content/english/post/markdown-syntax.md
@@ -17,6 +17,7 @@ +++ This article offers a sample of basic Markdown syntax that can be used in Hugo content files, also it shows whether basic HTML elements are decorated with CSS in a Hugo theme. <!--more--> ## Headings @@ -24,10 +25,15 @@ The following HTML `<h1>`—`<h6>` elements represent six levels of section headings. `<h1>` is the highest section level while `<h6>` is the lowest. # H1 ## H2 ### H3 #### H4 ##### H5 ###### H6 ## Paragraph @@ -43,7 +49,7 @@ #### Blockquote without attribution > Tiam, ad mint andaepu dandae nostion secatur sequo quae. > **Note** that you can use *Markdown syntax* within a blockquote. > **Note** that you can use _Markdown syntax_ within a blockquote. #### Blockquote with attribution @@ -56,26 +62,26 @@ Tables aren't part of the core Markdown spec, but Hugo supports supports them out-of-the-box. Name | Age --------|------ Bob | 27 Alice | 23 | Name | Age | | ----- | --- | | Bob | 27 | | Alice | 23 | #### Inline Markdown within tables | Italics | Bold | Code | | -------- | -------- | ------ | | *italics* | **bold** | `code` | | --------- | -------- | ------ | | _italics_ | **bold** | `code` | ## Code Blocks #### Code block with backticks ```html <!doctype html> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta charset="utf-8" /> <title>Example HTML5 Document</title> </head> <body> @@ -98,7 +104,9 @@ </html> #### Code block with Hugo's internal highlight shortcode {{< highlight html >}} <!doctype html> <html lang="en"> <head> @@ -121,19 +129,19 @@ #### Unordered List * List item * Another item * And another item - List item - Another item - And another item #### Nested list * Fruit * Apple * Orange * Banana * Dairy * Milk * Cheese - Fruit - Apple - Orange - Banana - Dairy - Milk - Cheese ## Other Elements — abbr, sub, sup, kbd, mark exampleSite/content/english/post/math-typesetting.md
@@ -7,6 +7,7 @@ --- Mathematical notation in a Hugo project can be enabled by using third party JavaScript libraries. <!--more--> In this example we will be using [KaTeX](https://katex.org/) @@ -28,6 +29,7 @@ {{< math.inline >}} {{ if or .Page.Params.math .Site.Params.math }} <!-- KaTeX --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css" integrity="sha384-zB1R0rpPzHqg7Kpt0Aljp8JPLqbXI3bhnPWROx27a9N0Ll6ZP/+DiW/UqRcLbRjq" crossorigin="anonymous"> <script defer src="https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.js" integrity="sha384-y23I5Q6l+B6vatafAwxRu/0oK/79VlbSz7Q9aiSZUvyWYIYsd+qj+o24G5ZU2zJz" crossorigin="anonymous"></script> @@ -37,10 +39,10 @@ ### Examples Inline math: \\(\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…\\) Block math: $$ \varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } } $$ exampleSite/content/english/post/placeholder-text.md
@@ -36,10 +36,12 @@ Iubar proles corpore raptos vero auctor imperium; sed et huic: manus caeli Lelegas tu lux. Verbis obstitit intus oblectamina fixis linguisque ausus sperare Echionides cornuaque tenent clausit possit. Omnia putatur. Praeteritae refert ausus; ferebant e primus lora nutat, vici quae mea ipse. Et iter nil spectatae vulnus haerentia iuste et exercebat, sui et. Eurytus Hector, materna ipsumque ut Politen, nec, nate, ignari, vernum cohaesit sequitur. Vel **mitis temploque** vocatus, inque alis, *oculos nomen* non silvis corpore coniunx ne displicet illa. Crescunt non unus, vidit visa quantum inmiti flumina mortis facto sic: undique a alios vincula sunt iactata abdita! Suspenderat ego fuit tendit: luna, ante urbem Propoetides **parte**. Eurytus Hector, materna ipsumque ut Politen, nec, nate, ignari, vernum cohaesit sequitur. Vel **mitis temploque** vocatus, inque alis, _oculos nomen_ non silvis corpore coniunx ne displicet illa. Crescunt non unus, vidit visa quantum inmiti flumina mortis facto sic: undique a alios vincula sunt iactata abdita! Suspenderat ego fuit tendit: luna, ante urbem Propoetides **parte**. {{< css.inline >}} <style> .canon { background: white; width: 100%; height: auto; } </style> {{< /css.inline >}} exampleSite/content/english/post/redirect.md
exampleSite/content/english/post/rich-content.md
@@ -10,8 +10,8 @@ +++ Hugo ships with several [Built-in Shortcodes](https://gohugo.io/content-management/shortcodes/#use-hugos-built-in-shortcodes) for rich content, along with a [Privacy Config](https://gohugo.io/about/hugo-and-gdpr/) and a set of Simple Shortcodes that enable static and no-JS versions of various social media embeds. <!--more--> --- ## <!--more--> ## YouTube Privacy Enhanced Shortcode layouts/404.html
@@ -5,4 +5,5 @@ <p>{{ i18n "page_does_not_exist" }}</p> <p>{{ i18n "head_back" .Site.BaseURL | safeHTML }}</p> </div> {{ end }} layouts/_default/baseof.html
@@ -1,5 +1,9 @@ <!DOCTYPE html> <html dir="{{ .Site.Language.LanguageDirection | default "ltr" }}" lang="{{- site.Language.Lang -}}" data-theme="{{- .Site.Params.displayMode -}}"> <html dir="{{ .Site.Language.LanguageDirection | default "ltr" }}" lang="{{- site.Language.Lang -}}" data-theme="{{- .Site.Params.displayMode -}}" > {{- partial "head.html" . -}} <body> <header>{{ partial "navbar.html" . }}</header> @@ -20,7 +24,8 @@ {{- if (eq .Site.Params.simpleAnalytics.enable true) -}} {{- partial "analytics/simpleanalytics.html" . -}} {{- end -}} </body> </html> layouts/_default/list.html
@@ -1,21 +1,43 @@ {{ define "main" }} <div class="archive {{ with .Site.Params.doNotLoadAnimations }} . {{ else }} animated fadeInDown {{ end }}"> <div class="archive {{ with .Site.Params.doNotLoadAnimations }} . {{ else }} animated fadeInDown {{ end }}" > <ul class="list-with-title"> {{ range .Data.Pages.GroupByDate "2006" }} <div class="listing-title">{{ .Key }}</div> {{ range .Pages }} <ul class="listing"> <div class="listing-item"> <div class="listing-post"><a href="{{ .RelPermalink }}" title="{{ .Title }}">{{ .Title }}</a> <div class="post-time"><span class="date">{{ if isset .Site.Params "listdateformat" }} <div class="listing-post"> <a href="{{ .RelPermalink }}" title="{{ .Title }}">{{ .Title }}</a> <div class="post-time"> <span class="date" >{{ if isset .Site.Params "listdateformat" }} {{ .Date.Format .Site.Params.listDateFormat }} {{ else }} {{.Date.Format "Jan 2"}} {{ end }}</span></div> {{ else }} {{ .Date.Format "Jan 2" }} {{ end }}</span > </div> </div> </div> </ul> {{ end }} {{ end }} </ul> </div> {{ end }} layouts/_default/single.html
@@ -1,21 +1,38 @@ {{ define "main" }} <div class="post {{ with .Site.Params.doNotLoadAnimations }} . {{ else }} animated fadeInDown {{ end }}"> <div class="post {{ with .Site.Params.doNotLoadAnimations }} . {{ else }} animated fadeInDown {{ end }}" > <div class="post-content"> {{ if .Params.thumbnail }} <img class="post-thumbnail" src="{{ .Params.thumbnail | relURL }}" alt="Thumbnail image"> <img class="post-thumbnail" src="{{ .Params.thumbnail | relURL }}" alt="Thumbnail image" /> {{ end }} <div class="post-title"> <h1>{{ .Title }}</h1> {{ if or (eq .Type "post") (eq .Type .Site.Params.postSectionName) }} <div class="info"> <em class="fas fa-calendar-day"></em> <span class="date">{{ if isset .Site.Params "singledateformat" }} <span class="date" >{{ if isset .Site.Params "singledateformat" }} {{ .Date.Format .Site.Params.singleDateFormat }} {{ else }} {{.Date.Format "Mon, Jan 2, 2006"}} {{ end }}</span> {{ else }} {{ .Date.Format "Mon, Jan 2, 2006" }} {{ end }}</span > <em class="fas fa-stopwatch"></em> <span class="reading-time">{{ i18n "reading_time" .ReadingTime }}</span> </div> {{ end }} </div> @@ -23,13 +40,23 @@ {{- if (eq .Params.contact true) -}} {{- partial "contact.html" . -}} {{- end -}} {{- end -}} </div> <div class="post-footer"> <div class="info"> {{ with .Page.Params.Categories }}{{ partial "taxonomy/categories.html" . }}{{ end }} {{ with .Page.Params.Tags }}{{ partial "taxonomy/tags.html" . }}{{ end }} {{ with .Page.Params.Categories }} {{ partial "taxonomy/categories.html" . }} {{ end }} {{ with .Page.Params.Tags }} {{ partial "taxonomy/tags.html" . }} {{ end }} </div> </div> @@ -39,19 +66,24 @@ <h2>{{ i18n "comments" }}</h2> {{ template "_internal/disqus.html" . }} </div> {{- end -}} {{- if .Site.Params.utterances.repo -}} <div id="fb_comments_container"> <h2>{{ i18n "comments" }}</h2> {{ partial "comments/utterances.html" . }} </div> {{- end -}} {{- if .Site.Params.CommentoURL -}} <div id="fb_comments_container"> <h2>{{ i18n "comments" }}</h2> {{ partial "comments/commento.html" . }} </div> {{- end -}} {{ end }} </div> layouts/index.html
@@ -1,5 +1,13 @@ {{ define "main" }} <div class="post {{ with .Site.Params.doNotLoadAnimations }} . {{ else }} animated fadeInDown {{ end }}"> <div class="post {{ with .Site.Params.doNotLoadAnimations }} . {{ else }} animated fadeInDown {{ end }}" > <div class="post-title post-content"> {{ .Content }} </div> @@ -13,34 +21,61 @@ </div> {{ if .Params.mainSectionsTitle }} <div class="post {{ with .Site.Params.doNotLoadAnimations }} . {{ else }} animated fadeInDown {{ end }}"> <div class="post {{ with .Site.Params.doNotLoadAnimations }} . {{ else }} animated fadeInDown {{ end }}" > <div class="post-title post-content"> <h2>{{ .Params.mainSectionsTitle }}</h2> </div> </div> {{ end }} {{ $paginator := .Paginate (where .Site.RegularPages "Type" "in" .Site.Params.mainSections) }} {{ range $paginator.Pages }} <div class="post {{ with .Site.Params.doNotLoadAnimations }} . <div class="post {{ with .Site.Params.doNotLoadAnimations }} . {{ else }} animated fadeInDown {{ end }}"> {{ else }} animated fadeInDown {{ end }}" > {{ if .Params.thumbnail }} <div class="post-thumbnail"> <a href="{{ .RelPermalink }}"> <img src="{{ .Params.thumbnail | relURL }}" alt="Thumbnail image" loading="lazy"> <img src="{{ .Params.thumbnail | relURL }}" alt="Thumbnail image" loading="lazy" /> </a> </div> {{ end }} <div class="post-title"> <h3><a href="{{ .RelPermalink }}">{{ .Title }}</a> </h3> <h3><a href="{{ .RelPermalink }}">{{ .Title }}</a></h3> </div> <div class="post-content"> <div class="p_part"> <p>{{ if .Site.Params.fullPostContent }}{{ .Content }}{{ else }}{{ .Summary }}{{ end }}</p> <p> {{ if .Site.Params.fullPostContent }} {{ .Content }} {{ else }} {{ .Summary }} {{ end }} </p> <!-- add read more --> {{- if and (.Truncated) (.Site.Params.readMore) -}} <a href='{{ .RelPermalink }}' class="read_more">{{ i18n "read_more" }}</a> <a href="{{ .RelPermalink }}" class="read_more">{{ i18n "read_more" }}</a> {{- end -}} </div> </div> @@ -50,18 +85,36 @@ <div class="meta"> <div class="info"> <em class="fas fa-calendar-day"></em> <span class="date">{{ if isset .Site.Params "indexdateformat" }} <span class="date" >{{ if isset .Site.Params "indexdateformat" }} {{ .Date.Format .Site.Params.indexDateFormat }} {{ else }} {{.Date.Format "Mon, Jan 2, 2006"}} {{ end }}</span> {{ with .Page.Params.Categories }}{{ partial "taxonomy/categories.html" . }}{{ end }} {{ with .Page.Params.Tags }}{{ partial "taxonomy/tags.html" . }}{{ end }} {{ else }} {{ .Date.Format "Mon, Jan 2, 2006" }} {{ end }}</span > {{ with .Page.Params.Categories }} {{ partial "taxonomy/categories.html" . }} {{ end }} {{ with .Page.Params.Tags }} {{ partial "taxonomy/tags.html" . }} {{ end }} </div> </div> </div> </div> {{ end }} <div class="pagination"> {{ template "_internal/pagination.html" . }} </div> {{ end }} layouts/partials/analytics/simpleanalytics.html
@@ -1,7 +1,9 @@ {{ with .Site.Params.simpleAnalytics.customUrl }} <script async defer src="{{ . | relURL }}/latest.js"></script> <noscript><img src="{{ . | relURL }}/noscript.gif" alt=""/></noscript> {{ else }} <script async defer src=" https://scripts.simpleanalyticscdn.com/latest.js"></script> <noscript><img src="https://queue.simpleanalyticscdn.com/noscript.gif" alt=""/></noscript> {{ end }} layouts/partials/comments/commento.html
@@ -1,4 +1,3 @@ <div id="commento"></div> <script defer src="{{ .Site.Params.CommentoURL }}"> </script> <script defer src="{{ .Site.Params.CommentoURL }}"></script> <noscript>Please enable JavaScript to load the comments.</noscript> layouts/partials/comments/utterances.html
@@ -1,10 +1,12 @@ <script src="https://utteranc.es/client.js" <script src="https://utteranc.es/client.js" repo="{{ .Site.Params.utterances.repo }}" issue-term="{{ .Site.Params.utterances.issueTerm }}" theme="{{ .Site.Params.utterances.theme }}" {{ with .Site.Params.utterances.label }} label="{{ . }}" {{ end }} crossorigin="anonymous" async> </script> async ></script> layouts/partials/footer.html
@@ -1,19 +1,32 @@ <footer class="footer footer--{{ .footerClassModifier }}"> <div class="by_farbox"> <ul class="footer__list"> <li class="footer__item">© <li class="footer__item"> © {{ if isset .context.Site.Params "copyright" }} {{ replace .context.Site.Params.copyright "{{ YEAR }}" (now.Format "2006") | markdownify }} {{ else }} {{ .context.Site.Params.author }} {{ now.Format "2006"}} {{ .context.Site.Params.author }} {{ now.Format "2006" }} {{end}} </li> {{ range .context.Site.Menus.footer }} <li class="footer__item"> <a href="{{ .URL }}" {{ if strings.HasPrefix .URL "http" }} target="_blank" rel="noopener noreferrer" {{ end }} title="{{ .Title }}"> <a href="{{ .URL }}" {{ if strings.HasPrefix .URL "http" }} target="_blank" rel="noopener noreferrer" {{ end }} title="{{ .Title }}" > {{ .Name }} </a> </li> {{ end }} </ul> </div> @@ -23,4 +36,6 @@ {{- template "_internal/google_analytics_async.html" .context -}} {{- if and (hugo.IsProduction) (.Site.Params.gtagId) -}} {{ partial "google-analytics-gtag-async.html" .context }} {{- end -}} layouts/partials/google-analytics-gtag-async.html
@@ -2,7 +2,9 @@ <script async src="https://www.googletagmanager.com/gtag/js?id={{ .Site.Params.gtagId }}"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', '{{ .Site.Params.gtagId }}'); </script> layouts/partials/head.html
@@ -1,125 +1,188 @@ <head> <title> {{.Site.Params.author}}{{ with .Title }} | {{ . }}{{ end }} </title> <title> {{ .Site.Params.author }}{{ with .Title }} | {{ . }} {{ end }} </title> <!-- Meta --> <meta charset="utf-8"> <meta charset="utf-8" /> {{- hugo.Generator -}} <meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover"> <meta name="description" content="{{ if .Params.description }}{{ .Params.description }}{{ else }}{{ .Site.Params.description }}{{ end }}"> <meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover" /> <meta name="description" content="{{ if .Params.description }} {{ .Params.description }} {{ else }} {{ .Site.Params.description }} {{ end }}" /> {{ if .Params.redirectUrl }} <meta http-equiv="refresh" content="1; url={{ .Params.redirectUrl }}" /> {{ end }} {{- if .Site.Params.googleSiteVerify }} <meta name="google-site-verification" content="{{ .Site.Params.googleSiteVerify }}"> <meta name="google-site-verification" content="{{ .Site.Params.googleSiteVerify }}" /> {{- end -}} <!-- CSS --> {{ $templateStyle := resources.Get "css/style.css" }} {{ $style := $templateStyle | resources.ExecuteAsTemplate "css/main.css" . | resources.Minify | resources.Fingerprint }} <link rel="stylesheet" <link rel="stylesheet" href="{{ $style.RelPermalink }}" integrity="{{ $style.Data.Integrity }}" crossorigin="anonymous" type="text/css"> type="text/css" /> {{ if eq .Site.Language.LanguageDirection "rtl"}} {{ $templateStyle := resources.Get "css/style.rtl.css" }} {{ $style := $templateStyle | resources.ExecuteAsTemplate "css/main.rtl.css" . | resources.Minify | resources.Fingerprint }} <link rel="stylesheet" <link rel="stylesheet" href="{{ $style.RelPermalink }}" integrity="{{ $style.Data.Integrity }}" crossorigin="anonymous" type="text/css"> type="text/css" /> {{end}} {{ $markupHighlightStyle := resources.Get "css/markupHighlight.css" | resources.Minify | resources.Fingerprint }} <link rel="stylesheet" <link rel="stylesheet" href="{{ $markupHighlightStyle.RelPermalink }}" integrity="{{ $markupHighlightStyle.Data.Integrity }}" crossorigin="anonymous" type="text/css"> type="text/css" /> {{ range .Site.Params.customCss }} {{ $minstyles := resources.Get . }} {{ $styles := $minstyles | resources.Minify | resources.Fingerprint }} <link rel="stylesheet" <link rel="stylesheet" href="{{ $styles.RelPermalink }}" integrity="{{ $styles.Data.Integrity }}" crossorigin="anonymous" media="screen" /> media="screen" /> {{ end }} <link rel="stylesheet" <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css" integrity="sha512-+4zCK9k+qNFUR5X+cKL9EIR+ZOhtIloNl9GIKS57V1MyNsYpYcUrUeQc9vNfzsWfV28IaLL3i96P9sdNyeRssA==" crossorigin="anonymous" /> crossorigin="anonymous" /> {{ if .Params.redirectUrl }} {{ $style := resources.Get "css/spinner.css" | resources.Minify | resources.Fingerprint }} <link rel="stylesheet" <link rel="stylesheet" href="{{ $style.RelPermalink }}" integrity="{{ $style.Data.Integrity }}" crossorigin="anonymous" type="text/css"> type="text/css" /> {{- end -}} <!-- Favicons --> <link rel="shortcut icon" href="{{ .Site.Params.favicon | relURL }}favicon.ico" type="image/x-icon"> <link rel="apple-touch-icon" sizes="180x180" href="{{ .Site.Params.favicon | relURL }}apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="{{ .Site.Params.favicon | relURL }}favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="{{ .Site.Params.favicon | relURL }}favicon-16x16.png"> <link rel="shortcut icon" href="{{ .Site.Params.favicon | relURL }}favicon.ico" type="image/x-icon" /> <link rel="apple-touch-icon" sizes="180x180" href="{{ .Site.Params.favicon | relURL }}apple-touch-icon.png" /> <link rel="icon" type="image/png" sizes="32x32" href="{{ .Site.Params.favicon | relURL }}favicon-32x32.png" /> <link rel="icon" type="image/png" sizes="16x16" href="{{ .Site.Params.favicon | relURL }}favicon-16x16.png" /> <link rel="canonical" href="{{ .RelPermalink }}"> <link rel="canonical" href="{{ .RelPermalink }}" /> <!-- RSS --> {{ with .OutputFormats.Get "rss" -}} {{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .RelPermalink $.Site.Title | safeHTML }} {{ end -}} <!-- JavaScript --> {{ $anatoleHeader := resources.Get "js/anatole-header.js" }} {{ $secureHeaderJS := $anatoleHeader | resources.Minify | resources.Fingerprint }} <script type="text/javascript" <script type="text/javascript" src="{{ $secureHeaderJS.RelPermalink }}" integrity="{{ $secureHeaderJS.Data.Integrity }}" crossorigin="anonymous"></script> crossorigin="anonymous" ></script> {{ if not .Site.Params.disableThemeSwitcher }} {{ $anatoleThemeSwitcher := resources.Get "js/anatole-theme-switcher.js" }} {{ $secureThemeSwitcherJS := $anatoleThemeSwitcher | resources.Minify | resources.Fingerprint }} <script type="text/javascript" <script type="text/javascript" src="{{ $secureThemeSwitcherJS.RelPermalink }}" integrity="{{ $secureThemeSwitcherJS.Data.Integrity }}" crossorigin="anonymous"></script> crossorigin="anonymous" ></script> {{ end }} {{- $js := "" -}} {{- range .Site.Params.customJs -}} {{- if or (in . "http://") (in . "https://") -}} <script src="{{ . | relURL }}"></script> {{- else -}} {{- $customJS := resources.Get . -}} {{- if $customJS -}} {{- if eq $js "" -}} {{- $js = $customJS -}} {{- else -}} {{- $js = slice $js $customJS | resources.Concat "js/custom.js" -}} {{- end -}} {{- end -}} {{- end -}} {{- end -}} {{- if ne $js "" -}} {{- $secureJS := $js | resources.Minify | resources.Fingerprint -}} <script type="text/javascript" <script type="text/javascript" src="{{ $secureJS.RelPermalink }}" integrity="{{ $secureJS.Data.Integrity }}" crossorigin="anonymous"></script> crossorigin="anonymous" ></script> {{- end -}} <!-- Twitter Cards --> {{ template "_internal/twitter_cards.html" . }} <!-- Open Graph --> {{- if isset .Site.Taxonomies "series" }} {{- if not (eq (len .Site.Taxonomies.series) 0) -}} {{ template "_internal/opengraph.html" . }} {{- end -}} {{- end }} {{- end -}} {{- end }} </head> layouts/partials/math.html
@@ -4,41 +4,41 @@ {{- with site.Params.math -}} {{- if and (isset . "use") (eq (.use | lower) "mathjax") -}} {{- $use = "mathjax" -}} {{- end -}} {{- end -}} {{- if eq $use "mathjax" -}} {{- $url := "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS-MML_HTMLorMML" -}} {{- $hash := "sha384-e/4/LvThKH1gwzXhdbY2AsjR3rm7LHWyhIG5C0jiRfn8AN2eTN5ILeztWw0H9jmN" -}} <script defer type="text/javascript" src="{{- $url -}}" integrity="{{- $hash -}}" crossorigin="anonymous"></script> <script defer type="text/javascript" src="{{- $url -}}" integrity="{{- $hash -}}" crossorigin="anonymous"></script> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ['\\(','\\)']] } }); </script> {{- else -}} {{- $url := "https://cdn.jsdelivr.net/npm/katex@0.13.0/dist/katex.min.css" -}} {{- $hash := "sha384-t5CR+zwDAROtph0PXGte6ia8heboACF9R5l/DiY+WZ3P2lxNgvJkQk5n7GPvLMYw" -}} <link rel="stylesheet" href="{{- $url -}}" integrity="{{- $hash -}}" crossorigin="anonymous"> <link rel="stylesheet" href="{{- $url -}}" integrity="{{- $hash -}}" crossorigin="anonymous" /> {{- $url := "https://cdn.jsdelivr.net/npm/katex@0.13.0/dist/katex.min.js" -}} {{- $hash := "sha384-FaFLTlohFghEIZkw6VGwmf9ISTubWAVYW8tG8+w2LAIftJEULZABrF9PPFv+tVkH" -}} <script defer src="{{- $url -}}" integrity="{{- $hash -}}" crossorigin="anonymous"></script> <script defer src="{{- $url -}}" integrity="{{- $hash -}}" crossorigin="anonymous"></script> {{- $url := "https://cdn.jsdelivr.net/npm/katex@0.13.0/dist/contrib/auto-render.min.js" -}} {{- $hash := "sha384-bHBqxz8fokvgoJ/sc17HODNxa42TlaEhB+w8ZJXTc2nZf1VgEaFZeZvT4Mznfz0v" -}} <script defer <script defer src="{{- $url -}}" integrity="{{- $hash -}}" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script> onload="renderMathInElement(document.body);" ></script> {{- end -}} {{- end -}} layouts/partials/medium-zoom.html
@@ -2,8 +2,11 @@ {{- if eq $enableMediumZoom true -}} {{ $js := resources.Get "js/medium-zoom.js" }} {{ $secureJS := $js | resources.Minify | resources.Fingerprint }} <script type="text/javascript" <script type="text/javascript" src="{{ $secureJS.RelPermalink }}" integrity="{{ $secureJS.Data.Integrity }}" crossorigin="anonymous"></script> crossorigin="anonymous" ></script> {{- end -}} layouts/partials/navbar.html
@@ -1,4 +1,12 @@ <div class="page-top {{ with .Site.Params.doNotLoadAnimations }} . {{ else }}animated fadeInDown{{ end }}"> <div class="page-top {{ with .Site.Params.doNotLoadAnimations }} . {{ else }} animated fadeInDown {{ end }}" > <a role="button" class="navbar-burger" data-target="navMenu" aria-label="menu" aria-expanded="false"> <span aria-hidden="true"></span> <span aria-hidden="true"></span> @@ -10,20 +18,30 @@ {{ $url := .RelPermalink }} {{ range .Site.Menus.main }} {{ $active := eq $url .URL }} <li><a {{if $active }}class="current"{{end}} <li> <a {{ if $active }} class="current" {{ end }} href="{{ .URL }}" {{ if strings.HasPrefix .URL "http" }} target="_blank" rel="noopener noreferrer" target="_blank" rel="noopener noreferrer" {{ end }} title="{{ .Title }}">{{ .Name }}</a></li> title="{{ .Title }}" >{{ .Name }}</a > </li> {{ end }} {{ if .Site.IsMultiLingual }} {{ range $.Site.Home.AllTranslations }} <li><a href="{{ .RelPermalink }}" title="{{ .Language.LanguageName }}">{{ .Language.LanguageName }}</a> </li> <li><a href="{{ .RelPermalink }}" title="{{ .Language.LanguageName }}">{{ .Language.LanguageName }}</a></li> {{ end }} {{ end }} </div> <li> @@ -31,6 +49,7 @@ <a class="theme-switch" title="Switch Theme"> <i class="fas fa-adjust fa-fw" aria-hidden="true"></i> </a> {{ end }} </li> </ul> layouts/partials/sidebar.html
@@ -1,11 +1,19 @@ <div class="sidebar{{ with .Site.Params.doNotLoadAnimations }} . {{ else }} animated fadeInDown {{ end }}"> <div class="sidebar{{ with .Site.Params.doNotLoadAnimations }} . {{ else }} animated fadeInDown {{ end }}" > <div class="sidebar__content"> <div class="logo-title"> <div class="title"> <img src="{{ .Site.Params.profilePicture | relURL }}" alt="profile picture"> <img src="{{ .Site.Params.profilePicture | relURL }}" alt="profile picture" /> <h3 title=""><a href="/">{{ .Site.Params.Title }}</a></h3> <div class="description"> <p>{{ replace .Site.Params.description "\n" "<br>" | safeHTML }}</p> <p>{{ replace .Site.Params.description "\n" "<br />" | safeHTML }}</p> </div> </div> </div> @@ -16,6 +24,7 @@ <i class="{{ $item.icon }} fa-2x" aria-hidden="true"></i> </a> </li> {{ end }} </ul> </div> layouts/partials/taxonomy/categories.html
layouts/partials/taxonomy/tags.html
layouts/partials/taxonomy/template.html
@@ -1,6 +1,7 @@ {{- $linkClass := .linkClass -}} {{- $linkBase := .linkBase -}} <span class="separator"> {{- range $index, $el := .items -}} <!-- Replace certain special characters with their URL encoded counterparts --> @@ -8,5 +9,6 @@ {{- $item = replace $item "." "%2e" -}} {{- $link := ( printf "%s/%s/" $linkBase ( $item | urlize ) ) | relLangURL -}} <a class="{{$linkClass}}" href="{{$link}}">{{- . -}}</a> {{- end -}} </span> layouts/shortcodes/loading.html