fixed some URL operations which don't work when hugos absolute root url is something like https://www.foo.bar (no slash at the end)
| | |
| | | } |
| | | |
| | | function closestInt(goal, collection) { |
| | | const closest = collection.reduce(function(prev, curr) { |
| | | return collection.reduce(function (prev, curr) { |
| | | return (Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev); |
| | | }); |
| | | return closest; |
| | | } |
| | | |
| | | function hasClasses(el) { |
| | |
| | | const hyperLinks = elems('a'); |
| | | if(hyperLinks) { |
| | | hyperLinks.forEach(function(link){ |
| | | const href = link.href.replaceAll(encodeURI(open), "").replaceAll(encodeURI(close), ""); |
| | | link.href = href; |
| | | link.href = link.href.replaceAll(encodeURI(open), "").replaceAll(encodeURI(close), ""); |
| | | }); |
| | | } |
| | | } |
| | | |
| | | function parseBoolean(string) { |
| | | let bool; |
| | | string = string.trim().toLowerCase(); |
| | | switch (string) { |
| | | case 'true': |
| | |
| | | default: |
| | | return undefined; |
| | | } |
| | | }; |
| | | } |
| | | |
| | | function loadSvg(file, parent, path = 'icons/') { |
| | | const link = `${parentURL}${path}${file}.svg`; |
| | | const link = new URL(`${path}${file}.svg`, rootURL).href; |
| | | fetch(link) |
| | | .then((response) => { |
| | | return response.text(); |
| | |
| | | Array.from(links).forEach(function(link, index){ |
| | | let target, rel, blank, noopener, attr1, attr2, url, isExternal; |
| | | url = elemAttribute(link, 'href'); |
| | | isExternal = (url && typeof url == 'string' && url.startsWith('http')) && !url.startsWith(parentURL) && link.closest(contentWrapperClass); |
| | | isExternal = (url && typeof url == 'string' && url.startsWith('http')) && !url.startsWith(rootURL) && link.closest(contentWrapperClass); |
| | | if(isExternal) { |
| | | target = 'target'; |
| | | rel = 'rel'; |
| | |
| | | searchField.addEventListener('search', function(){ |
| | | const searchTerm = searchField.value.trim().toLowerCase(); |
| | | if(searchTerm.length) { |
| | | window.location.href = `${parentURL}search/?query=${searchTerm}`; |
| | | window.location.href = new URL(`search/?query=${searchTerm}`, rootURL).href; |
| | | } |
| | | }); |
| | | } |
| | |
| | | const menu = 'menu'; |
| | | |
| | | // defined in config.toml |
| | | const parentURL = '{{ absURL "" }}'; |
| | | const rootURL = '{{ absURL "" }}'; |
| | | |
| | | // defined in i18n / translation files |
| | | const quickLinks = '{{ T "quick_links" }}'; |