From 2a7fe6c1e7189219d0cd42895163a277671b0276 Mon Sep 17 00:00:00 2001 From: Corbin Crutchley Date: Sat, 1 Jun 2019 04:28:41 -0700 Subject: [PATCH] Initial commit to blog site code. Ensured author data is populated based on ID --- .gitignore | 2 +- authors.js | 33 ++++ content/assets/authors/crutchcorn/info.js | 11 ++ .../assets/authors/crutchcorn/profile_pic.png | Bin 0 -> 542703 bytes content/blog/hello-world/index.md | 2 + content/blog/hi-folks/index.md | 1 + content/blog/my-second-post/file.txt | 1 + content/blog/my-second-post/index.md | 2 + gatsby-config.js | 23 ++- package-lock.json | 179 +++++++++++++++--- package.json | 2 + src/components/bio.js | 86 +++------ src/components/seo.js | 3 +- src/data/author.yaml | 24 +++ src/data/crutchcorn.png | Bin 0 -> 542703 bytes src/pages/index.js | 18 +- src/templates/blog-post.js | 20 +- utils/pronoun-helper.js | 42 ++++ utils/pronouns.tab | 40 ++++ 19 files changed, 389 insertions(+), 100 deletions(-) create mode 100644 authors.js create mode 100644 content/assets/authors/crutchcorn/info.js create mode 100644 content/assets/authors/crutchcorn/profile_pic.png create mode 100644 content/blog/my-second-post/file.txt create mode 100644 src/data/author.yaml create mode 100644 src/data/crutchcorn.png create mode 100644 utils/pronoun-helper.js create mode 100644 utils/pronouns.tab diff --git a/.gitignore b/.gitignore index e86fe255..a4724ca5 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,7 @@ logs npm-debug.log* yarn-debug.log* yarn-error.log* - +.idea/ # Runtime data pids *.pid diff --git a/authors.js b/authors.js new file mode 100644 index 00000000..3ee31618 --- /dev/null +++ b/authors.js @@ -0,0 +1,33 @@ +const { lstatSync, readdirSync } = require('fs') +const { join, basename } = require('path') + +const isDirectory = source => lstatSync(source).isDirectory() +const getDirectories = source => + readdirSync(source).map(name => join(source, name)).filter(isDirectory) + +const authorFolders = getDirectories(join(__dirname, 'content', 'assets', 'authors')) + +/** + * @typedef {object} socials + * @prop {string} socials.twitter - Their Twitter handle, sans `@` + */ + +/** + * @typedef {object} authorInfo + * @prop {string} authorInfo.name - Their name they wish to have displayed on the page + * @prop {string} authorInfo.blurbet - The short form description of author, shown at the bottom of every page + * @prop {string} authorInfo.description - The long form description of author + * @prop {socials} authorInfo.socials - Their social media links + * @prop {[string, string, string, string, string]} authorInfo.pronouns - their preferred pronouns. + * Should match order of data here https://github.com/witch-house/pronoun.is + */ + +/** + * + * @type {{[username: string]: authorInfo}} + */ +module.exports = authorFolders.reduce((prev, folder) => { + const username = basename(folder); + prev[username] = require(join(folder, 'info')); + return prev; +}, {}) diff --git a/content/assets/authors/crutchcorn/info.js b/content/assets/authors/crutchcorn/info.js new file mode 100644 index 00000000..c5692aeb --- /dev/null +++ b/content/assets/authors/crutchcorn/info.js @@ -0,0 +1,11 @@ +const { findPronouns } = require("../../../../utils/pronoun-helper"); + +module.exports = { + name: 'Corbin Crutchley', + blurbet: 'Is a cool dood', + description: 'Is a super mega rad human being', + socials: { + twitter: 'crutchcorn' + }, + pronouns: findPronouns('they') +}; diff --git a/content/assets/authors/crutchcorn/profile_pic.png b/content/assets/authors/crutchcorn/profile_pic.png new file mode 100644 index 0000000000000000000000000000000000000000..a13a87198f00ce968318414c4e6b13567e41b0b1 GIT binary patch literal 542703 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