From a50b0214bbf2ccab26b0e8fe9820c292c26edd1f Mon Sep 17 00:00:00 2001 From: Anson Date: Thu, 8 Aug 2019 22:39:11 -0700 Subject: [PATCH] Initial commit --- .gitlab-ci.yml | 15 + .gitmodules | 3 + Sites/blog/archetypes/default.md | 6 + Sites/blog/config.toml | 16 + Sites/blog/content/posts/my-first-post.md | 78 ++ Sites/blog/data/authors.yml | 4 + Sites/blog/data/designer.yml | 2 + Sites/blog/data/menu.yml | 10 + ...s_a64a8f41489dfe65eddbff8447bd69ed.content | 339 +++++ ...x.js_a64a8f41489dfe65eddbff8447bd69ed.json | 1 + ...s_65b0252c4a2fb050308e79c52b2c1909.content | 1244 +++++++++++++++++ ...scss_65b0252c4a2fb050308e79c52b2c1909.json | 1 + Sites/blog/themes/hugo-swift-theme | 1 + bin/LICENSE | 201 +++ bin/README.md | 187 +++ bin/hugo.exe | Bin 0 -> 36102656 bytes 16 files changed, 2108 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 .gitmodules create mode 100644 Sites/blog/archetypes/default.md create mode 100644 Sites/blog/config.toml create mode 100644 Sites/blog/content/posts/my-first-post.md create mode 100644 Sites/blog/data/authors.yml create mode 100644 Sites/blog/data/designer.yml create mode 100644 Sites/blog/data/menu.yml create mode 100644 Sites/blog/resources/_gen/assets/js/js/index.js_a64a8f41489dfe65eddbff8447bd69ed.content create mode 100644 Sites/blog/resources/_gen/assets/js/js/index.js_a64a8f41489dfe65eddbff8447bd69ed.json create mode 100644 Sites/blog/resources/_gen/assets/scss/scss/main.scss_65b0252c4a2fb050308e79c52b2c1909.content create mode 100644 Sites/blog/resources/_gen/assets/scss/scss/main.scss_65b0252c4a2fb050308e79c52b2c1909.json create mode 160000 Sites/blog/themes/hugo-swift-theme create mode 100644 bin/LICENSE create mode 100644 bin/README.md create mode 100644 bin/hugo.exe diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..6c2ce27 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,15 @@ + +image: monachus/hugo + +variables: + GIT_SUBMODULE_STRATEGY: recursive + +pages: + script: + - cd exampleSite + - hugo --themesDir=../.. -d ../public + artifacts: + paths: + - public + only: + - master \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..25e3e2e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "Sites/blog/themes/hugo-swift-theme"] + path = Sites/blog/themes/hugo-swift-theme + url = https://github.com/onweru/hugo-swift-theme.git diff --git a/Sites/blog/archetypes/default.md b/Sites/blog/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/Sites/blog/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/Sites/blog/config.toml b/Sites/blog/config.toml new file mode 100644 index 0000000..3ec51d0 --- /dev/null +++ b/Sites/blog/config.toml @@ -0,0 +1,16 @@ +baseURL = "blog.ansonbiggs.com" +languageCode = "en-us" +title = "Anson 3D" +theme = "hugo-swift-theme" +pygmentsCodefences = true +pygmentsCodefencesGuessSyntax = true + +[params] + twitter = 'https://twitter.com/Anson_3D' + +# [Params.staticman] +# endpoint = "https://api.staticman.net" +# gitProvider = "gitlab" +# username = "MisterBiggs" +# repository = "hugo-swift-theme" +# branch = "master" \ No newline at end of file diff --git a/Sites/blog/content/posts/my-first-post.md b/Sites/blog/content/posts/my-first-post.md new file mode 100644 index 0000000..bf38a2b --- /dev/null +++ b/Sites/blog/content/posts/my-first-post.md @@ -0,0 +1,78 @@ +--- +title: "My First Post" +date: 2019-08-08T21:56:14-07:00 +draft: true +image: https://i.imgur.com/q7V9tC5.jpg +author: Anson Biggs +--- + +# Nec retia pavet vultus ligati maesta + +## Postquam te vulnere lucoque ferunt + +```python3 +numbers = [1, 2, 3, 4, 5, 6,] + +for number in numbers: + print(number) +``` + +Lorem markdownum miserande hanc et Midan ostendit artis vertuntur lingua. Thoona +de finibus celeres nec animam, dumque constituunt fila cognataque narrat verba. +Ille animi vertuntur liquores bobus, caput _virentes regnum eduxit_ totumque in +saxa, fortis _vela_ vertere auguror recisum. Revelli et maxima veniat tuorum +[matris](http://parsnec.org/fide.html) curaque, praemiaque corripit quid hoc +tendunt haec, et parens rates haut et! Caput annos, _in fasque albescere_ manu: +natae origine palmis; et [illa simulat](http://aevoque-arserunt.org/sit), vix +mares! + +- Decuit curam Iovis +- Dant ille plumas lora omnes nota +- Amborum hoc Abas temptatae ferat enodisque viveret + +## Respicit lacertos + +Factum est dictoque relinqui a tantae nulla adquirit mercede quamquam, aliquid +recepit: **exigit levatus**: est. Ergo sentit lora. Tamen fulvo traherent servo +edidicitque longa, seducta invenio vertitur. Carinas et edita in mihi oculus +populisque, motu duorum atque nullos herbis flumina iunctum fecisse corpus! +Capistris vitam sed super ferunt. + +> Atque fama alvum idem post negat virga illis terque, animos vestigia ut peti. +> Amnem mulcet **fretum** dat cursus fuit Iunonia de amplexus auctor corpore est +> corpore: annis est nubila probat: quod. Nostri fixurus Haemoniis frondem +> [excedam forte](http://si.io/minos.html); luserit pueri iam quae **repetens +> Quirini vulgarunt** inter **residunt**. + +## Invida potest in oleis + +Foret vitae in ensis profanus, pia cum procul, de septem _exstat_. Interdum +_revocamina_ datis divulsere: tenentem **sustinet cervice cursus**, populo, +parentem virorum. Freta et odit mitius hostem solitas carmine mihi non in +classe, ab dixerat perque caperet inclusum furialibus nunc. + +1. Pretium feris ictus horto certamina quem alteraque +2. Stantes tutaeque iussit tenet +3. Discordia Dianae agmen inque + +## Percussit Latonia + +Socii ululasse inquiri lumina, sum Aeolides cecinisse Nonacria habent exigui +inque **et** silvae trementi conplexa dextraeque, ut. Iunctura volumina venisse +imagine tumidum: **frequentat** dum dolor positae sponsa extemplo magnos Nestor +et limenque: nunc effetum certe. + +Dicta spectare arbitrium feres: coniungere imperat puero perdere steterat +temperat me umbramque. Altera est Iovis iam, praeduraque rector atque cara, +canities. Cervicibus certeque quid propioraque adest genuisse pectore cuius +petit, dignare. Et meorum effugiam socer, _nunc_ vel, feris artus merum videri. +Et videt lora sacras cursu furta quas pro onerata Maeandros, amori soleat apri +pendebat vetitum, ex crescentemque usus? + +Dei cede campoque vel Pallas pererrat ante meo. [Quisque +quamquam](http://nudare.org/vindexque-dilexit) tempus, erat molis a feror +marmore ut Zephyro [contentus vanis](http://aequor.org/qui). _Puto res_ +cervicibus vires benefacta neque rigidas attonitus fumabant alta, accipe +habitataque vacuus. Mea tenere, vulgata, te adspexit, in interdum bibebatur +debet Dictys te fugit te quoque! Orbem gerit prius altae nec quid irae Cinyras +Anguemque iacent; cum hoc qui ubi. diff --git a/Sites/blog/data/authors.yml b/Sites/blog/data/authors.yml new file mode 100644 index 0000000..a52621c --- /dev/null +++ b/Sites/blog/data/authors.yml @@ -0,0 +1,4 @@ +- name: Anson Biggs + twitter: Anson_3D + photo: '.jpg' + url: https://www.linkedin.com/in/ansonbiggs/ \ No newline at end of file diff --git a/Sites/blog/data/designer.yml b/Sites/blog/data/designer.yml new file mode 100644 index 0000000..9dd77b1 --- /dev/null +++ b/Sites/blog/data/designer.yml @@ -0,0 +1,2 @@ +name: Anson Biggs +url: https://www.linkedin.com/in/ansonbiggs/ \ No newline at end of file diff --git a/Sites/blog/data/menu.yml b/Sites/blog/data/menu.yml new file mode 100644 index 0000000..43a1f6c --- /dev/null +++ b/Sites/blog/data/menu.yml @@ -0,0 +1,10 @@ +- item: About + url: about/ +- item: Blog + url: "" +- item: Category A + url: categories/development/ +- item: Category B + url: categories/golang/ +- item: Tag B + url: tags/go/ \ No newline at end of file diff --git a/Sites/blog/resources/_gen/assets/js/js/index.js_a64a8f41489dfe65eddbff8447bd69ed.content b/Sites/blog/resources/_gen/assets/js/js/index.js_a64a8f41489dfe65eddbff8447bd69ed.content new file mode 100644 index 0000000..649a1b3 --- /dev/null +++ b/Sites/blog/resources/_gen/assets/js/js/index.js_a64a8f41489dfe65eddbff8447bd69ed.content @@ -0,0 +1,339 @@ +function createEl(element) { + return document.createElement(element); +} + +function elem(selector, parent = document){ + let elem = document.querySelector(selector); + return elem != false ? elem : false; +} + +function elems(selector) { + let elems = document.querySelectorAll(selector); + return elems.length ? elems : false; +} + +function pushClass(el, targetClass) { + // equivalent to addClass + if (el && typeof el == 'object' && targetClass) { + elClass = el.classList; + elClass.contains(targetClass) ? false : elClass.add(targetClass); + } +} + +function deleteClass(el, targetClass) { + // equivalent to removeClass + if (el && typeof el == 'object' && targetClass) { + elClass = el.classList; + elClass.contains(targetClass) ? elClass.remove(targetClass) : false; + } +} + +function modifyClass(el, targetClass) { + if (el && typeof el == 'object' && targetClass) { + elClass = el.classList; + elClass.contains(targetClass) ? elClass.remove(targetClass) : elClass.add(targetClass); + } +} + +function containsClass(el, targetClass) { + if (el && typeof el == 'object' && targetClass) { + return el.classList.contains(targetClass) ? true : false; + } +} + +function isChild(node, parentClass) { + let objectsAreValid = node && typeof node == 'object' && parentClass && typeof parentClass == 'string'; + return (objectsAreValid && node.closest(parentClass)) ? true : false; +} + +(function updateDate() { + var date = new Date(); + var year = date.getFullYear(); + elem('.year').innerHTML = year; +})(); + +(function() { + let bar = 'nav_bar-wrap'; + let navBar = elem(`.${bar}`); + let nav = elem('.nav-body'); + let open = 'nav-open'; + let exit = 'nav-exit'; + let drop = 'nav-drop'; + let pop = 'nav-pop'; + let navDrop = elem(`.${drop}`); + let hidden = 'hidden'; + + function toggleMenu(){ + modifyClass(navDrop, pop); + modifyClass(navBar, hidden); + let menuOpen = containsClass(nav, open); + let menuPulled = containsClass(nav, exit); + + let status = menuOpen || menuPulled ? true : false; + + status ? modifyClass(nav, exit) : modifyClass(nav, open); + status ? modifyClass(nav, open) : modifyClass(nav, exit); + } + + // $('.nav-bar, .nav-close').on('click', () => toggleMenu()); + navBar.addEventListener('click', function() { + toggleMenu(); + }); + elem('.nav-close').addEventListener('click', function() { + toggleMenu(); + }); + + elem('.nav-drop').addEventListener('click', function(e) { + e.target === this ? toggleMenu() : false; + }); + +})(); + +(function share(){ + let share = elem('.share'); + let open = 'share-open'; + let close = 'share-close'; + let button = elem('.share-trigger'); + + function showShare() { + pushClass(share, open); + deleteClass(share, close); + } + + function hideShare() { + pushClass(share, open); + deleteClass(share, close); + } + if (button) { + button.addEventListener('click', function() { + showShare(); + setTimeout(hideShare, 5000); + }); + } +})(); + +(function comments(){ + + let comments = elem('.js-comments'); + let form = elem('.form'); + let body = elem('body'); + let button = elem('.form_toggle'); + let loading = 'form-loading'; + let open = 'form-open'; + let show = 'modal_show' + let toggled = 'toggled'; + + let successOutput = [ + 'Review submitted', + 'Thanks for your review! It will show on the site once it has been approved.' + ]; + + let errorOutput = [ + 'Error', + 'Sorry, there was an error with the submission!' + ]; + + function handleForm(form) { + form.addEventListener('submit', function (event) { + pushClass(form, loading); + + function resetForm() { + deleteClass(form, loading); + // $("form").trigger("reset"); + } + + function formActions(message) { + showModal(...message) // array destructuring + resetForm(); + } + + event.preventDefault(); + + function formToJSON(obj) { + let rawData = Array.from(obj.elements); + let data = {}; + rawData.forEach(function(element){ + data[element.name] = element.value; + }); + + return JSON.stringify(data); + } + + let data = formToJSON(form); + let url = form.getAttribute('action').trim(); + fetch(url, { + method: "POST", + body: data, + headers: { + "Content-Type": "application/json" + } + }).then(function(res) { + if(res.ok) { + formActions(successOutput); + } else { + formActions(errorOutput); + } + }).catch(function(error) { + formActions(errorOutput); + console.error('Error:', error); + }); + }); + } + + form ? handleForm(form) : false; + function closeModal() { + elem('.modal_close').addEventListener('click', function () { + deleteClass(body, show); + deleteClass(form, loading); + deleteClass(form, open); + deleteClass(button, toggled); + }); + } + + containsClass(body, show) ? closeModal() : false; + + function showModal(title, message) { + elem('.modal_title').textContent = title; + elem('.modal_text').innerHTML = message; + + pushClass(body, show); + } + + + (function toggleForm() { + if(button) { + button.addEventListener('click', function() { + modifyClass(form, open); + modifyClass(this, toggled); + this.textContent = containsClass(this, toggled) ? 'cancel' : 'comment'; + }); + } + })(); + +})(); + +function elemAttribute(elem, attr, value = null) { + if (value) { + elem.setAttribute(attr, value); + } else { + value = elem.getAttribute(attr); + return value ? value : false; + } +} + +(function(){ + let links = document.querySelectorAll('a'); + if(links) { + Array.from(links).forEach(function(link){ + let target, rel, blank, noopener, attr1, attr2, url, isExternal; + url = elemAttribute(link, 'href'); + isExternal = (url && typeof url == 'string' && url.startsWith('http')) && !containsClass(link, 'nav_item') && !isChild(link, '.post_item') && !isChild(link, '.pager') ? true : false; + if(isExternal) { + target = 'target'; + rel = 'rel'; + blank = '_blank'; + noopener = 'noopener'; + attr1 = elemAttribute(link, target); + attr2 = elemAttribute(link, noopener); + + attr1 ? false : elemAttribute(link, target, blank); + attr2 ? false : elemAttribute(link, noopener, noopener); + } + }); + } +})(); + +let headingNodes = [], results, link, icon, current, id, +tags = ['h2', 'h3', 'h4', 'h5', 'h6']; + + +current = document.URL; + +tags.forEach(function(tag){ + results = document.getElementsByTagName(tag); + Array.prototype.push.apply(headingNodes, results); +}); + +headingNodes.forEach(function(node){ + link = createEl('a'); + icon = createEl('img'); + icon.src = 'http://localhost:1313/images/icons/link.svg'; + link.className = 'link'; + link.appendChild(icon); + id = node.getAttribute('id'); + if(id) { + link.href = `${current}#${id}`; + node.appendChild(link); + pushClass(node, 'link_owner'); + } +}); + +const copyToClipboard = str => { + // Create a