diff --git a/Gmeek.py b/Gmeek.py index 4464f250..cd90c4d1 100644 --- a/Gmeek.py +++ b/Gmeek.py @@ -30,7 +30,9 @@ "upload":"M2.75 14A1.75 1.75 0 0 1 1 12.25v-2.5a.75.75 0 0 1 1.5 0v2.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-2.5a.75.75 0 0 1 1.5 0v2.5A1.75 1.75 0 0 1 13.25 14Z M11.78 4.72a.749.749 0 1 1-1.06 1.06L8.75 3.811V9.5a.75.75 0 0 1-1.5 0V3.811L5.28 5.78a.749.749 0 1 1-1.06-1.06l3.25-3.25a.749.749 0 0 1 1.06 0l3.25 3.25Z", "github":"M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z", "home":"M6.906.664a1.749 1.749 0 0 1 2.187 0l5.25 4.2c.415.332.657.835.657 1.367v7.019A1.75 1.75 0 0 1 13.25 15h-3.5a.75.75 0 0 1-.75-.75V9H7v5.25a.75.75 0 0 1-.75.75h-3.5A1.75 1.75 0 0 1 1 13.25V6.23c0-.531.242-1.034.657-1.366l5.25-4.2Zm1.25 1.171a.25.25 0 0 0-.312 0l-5.25 4.2a.25.25 0 0 0-.094.196v7.019c0 .138.112.25.25.25H5.5V8.25a.75.75 0 0 1 .75-.75h3.5a.75.75 0 0 1 .75.75v5.25h2.75a.25.25 0 0 0 .25-.25V6.23a.25.25 0 0 0-.094-.195Z", - "sync":"M1.705 8.005a.75.75 0 0 1 .834.656 5.5 5.5 0 0 0 9.592 2.97l-1.204-1.204a.25.25 0 0 1 .177-.427h3.646a.25.25 0 0 1 .25.25v3.646a.25.25 0 0 1-.427.177l-1.38-1.38A7.002 7.002 0 0 1 1.05 8.84a.75.75 0 0 1 .656-.834ZM8 2.5a5.487 5.487 0 0 0-4.131 1.869l1.204 1.204A.25.25 0 0 1 4.896 6H1.25A.25.25 0 0 1 1 5.75V2.104a.25.25 0 0 1 .427-.177l1.38 1.38A7.002 7.002 0 0 1 14.95 7.16a.75.75 0 0 1-1.49.178A5.5 5.5 0 0 0 8 2.5Z" + "sync":"M1.705 8.005a.75.75 0 0 1 .834.656 5.5 5.5 0 0 0 9.592 2.97l-1.204-1.204a.25.25 0 0 1 .177-.427h3.646a.25.25 0 0 1 .25.25v3.646a.25.25 0 0 1-.427.177l-1.38-1.38A7.002 7.002 0 0 1 1.05 8.84a.75.75 0 0 1 .656-.834ZM8 2.5a5.487 5.487 0 0 0-4.131 1.869l1.204 1.204A.25.25 0 0 1 4.896 6H1.25A.25.25 0 0 1 1 5.75V2.104a.25.25 0 0 1 .427-.177l1.38 1.38A7.002 7.002 0 0 1 14.95 7.16a.75.75 0 0 1-1.49.178A5.5 5.5 0 0 0 8 2.5Z", + "copy":"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z", + "check":"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z" } ###################################################################################### class GMEEK(): @@ -191,15 +193,19 @@ def createPostHtml(self,issue): postBase["postSourceUrl"]=issue["postSourceUrl"] postBase["repoName"]=options.repo_name - if "highlight" in post_body: - postBase["highlight"]=1 - else: - postBase["highlight"]=0 - if issue["labels"][0] in self.blogBase["singlePage"]: postBase["bottomText"]='' - keys=['sun','moon','sync','home','github'] + if '
' in post_body:
+            keys=['sun','moon','sync','home','github','copy','check']
+            if '
{{ blogBase['style'] }} @@ -115,6 +127,74 @@

{{ blogBase['postTitle'] }}

} } {%- endif %} + +{% if blogBase['highlight']!=0 -%} +document.addEventListener('DOMContentLoaded', () => { + const createClipboardHTML = (codeContent, additionalClasses = '') => ` +
${codeContent}
+
+ + + + +
Copied!
+
+ `; + + const handleCodeElements = (selector = '') => { + document.querySelectorAll(selector).forEach(codeElement => { + const codeContent = codeElement.innerHTML; + const newStructure = document.createElement('div'); + newStructure.className = 'snippet-clipboard-content position-relative overflow-auto'; + newStructure.innerHTML = createClipboardHTML(codeContent); + + const parentElement = codeElement.parentElement; + if (selector.includes('highlight')) { + parentElement.insertBefore(newStructure, codeElement.nextSibling); + parentElement.removeChild(codeElement); + } else { + parentElement.parentElement.replaceChild(newStructure, parentElement); + } + }); + }; + + handleCodeElements('pre.notranslate > code.notranslate'); + handleCodeElements('div.highlight > pre.notranslate'); + + let currentFeedback = null; + document.querySelectorAll('clipboard-copy').forEach(copyButton => { + copyButton.addEventListener('click', () => { + const codeContent = copyButton.closest('.snippet-clipboard-content').innerText; + const tempTextArea = document.createElement('textarea'); + tempTextArea.value = codeContent; + document.body.appendChild(tempTextArea); + tempTextArea.select(); + document.execCommand('copy'); + document.body.removeChild(tempTextArea); + + const copyIcon = copyButton.querySelector('.octicon-copy'); + const checkIcon = copyButton.querySelector('.octicon-check'); + const copyFeedback = copyButton.nextElementSibling; + + if (currentFeedback && currentFeedback !== copyFeedback) {currentFeedback.style.display = 'none';} + currentFeedback = copyFeedback; + + copyIcon.classList.add('d-none'); + checkIcon.classList.remove('d-none'); + copyFeedback.style.display = 'block'; + copyButton.style.borderColor = 'var(--color-success-fg)'; + + setTimeout(() => { + copyIcon.classList.remove('d-none'); + checkIcon.classList.add('d-none'); + copyFeedback.style.display = 'none'; + copyButton.style.borderColor = ''; + }, 2000); + }); + }); +}); +{%- endif %} + {{ blogBase['script'] }} {% endblock %}