From 5acc7f9b0a3b6ed411714eed54216b4e22a363f1 Mon Sep 17 00:00:00 2001 From: tatianamac Date: Thu, 28 May 2020 16:26:44 -0700 Subject: [PATCH] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Updates=20content=20warnin?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eleventy.js | 312 +++++++++--------- 11ty/_includes/components/content-warning.njk | 18 +- 11ty/definitions/fr_FR/signe-ok.md | 2 +- 11ty/definitions/ok-hand.md | 4 + 11ty/definitions/suicide.md | 3 +- 5 files changed, 170 insertions(+), 169 deletions(-) diff --git a/.eleventy.js b/.eleventy.js index 6443a5d1..1e0da1ad 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -1,193 +1,181 @@ -const definitionPermalink = require('./11ty/helpers/definitionPermalink'); -const renderDefinitionContentNextEntries = require('./11ty/shortcodes/renderDefinitionContentNextEntries'); -const findExistingDefinition = require('./11ty/filters/helpers/findExistingDefinition'); +const definitionPermalink = require('./11ty/helpers/definitionPermalink') +const renderDefinitionContentNextEntries = require('./11ty/shortcodes/renderDefinitionContentNextEntries') +const findExistingDefinition = require('./11ty/filters/helpers/findExistingDefinition') module.exports = function(config) { - // Add a filter using the Config API - config.addFilter('linkTarget', definitionPermalink); + // Add a filter using the Config API + config.addFilter('linkTarget', definitionPermalink) - config.addFilter('linkIfExistsInCollection', (word, collection) => { - const existingDefinition = findExistingDefinition(word, collection); + config.addFilter('linkIfExistsInCollection', (word, collection) => { + const existingDefinition = findExistingDefinition(word, collection) - if (existingDefinition) { - return `${word}`; - } + if (existingDefinition) { + return `${word}` + } - return `${word}`; - }); + return `${word}` + }) - config.addFilter('linkSubTermIfDefined', (subTermData, collection) => { - const existingDefinition = findExistingDefinition( - subTermData.full_title, - collection - ); + config.addFilter('linkSubTermIfDefined', (subTermData, collection) => { + const existingDefinition = findExistingDefinition(subTermData.full_title, collection) - if (existingDefinition) { - return `${subTermData.text}`; - } + if (existingDefinition) { + return `${subTermData.text}` + } - return `${subTermData.text}`; - }); + return `${subTermData.text}` + }) - // just a debug filter to lazily inspect the content of anything in a template - config.addFilter('postInspect', function(post) { - console.log(post); - }); + // just a debug filter to lazily inspect the content of anything in a template + config.addFilter('postInspect', function(post) { + console.log(post) + }) - config.addShortcode('definitionFlag', (flag) => { - const cleanText = new Map([ - [ - 'avoid', - { - class: 'avoid', - text: 'Avoid' - } - ], - [ - 'better-alternative', - { - class: 'better', - text: 'Better alternate' - } - ], - [ - 'tool', - { - class: 'tool', - text: '' - } - ], - [ - 'warning', - { - class: 'warning', - text: 'Content warning' - } - ] - ]); + config.addShortcode('definitionFlag', (flag) => { + const cleanText = new Map([ + [ + 'avoid', + { + class: 'avoid', + text: 'Avoid' + } + ], + [ + 'better-alternative', + { + class: 'better', + text: 'Better alternate' + } + ], + [ + 'tool', + { + class: 'tool', + text: '' + } + ], + [ + 'warning', + { + class: 'warning', + text: '' + } + ] + ]) - if (flag) { - const info = cleanText.get(flag.level.toLowerCase()); + if (flag) { + const info = cleanText.get(flag.level.toLowerCase()) - const sep = flag.text && info.text ? '—' : ''; - const text = flag.text ? [info.text, flag.text].join(sep) : info.text; + const sep = flag.text && info.text ? '—' : '' + const text = flag.text ? [ info.text, flag.text ].join(sep) : info.text - return `

${text}

`; - } + return `

${text}

` + } - return '

'; - }); + return '

' + }) - config.addShortcode( - 'renderDefinitionContentNextEntries', - renderDefinitionContentNextEntries - ); + config.addShortcode('renderDefinitionContentNextEntries', renderDefinitionContentNextEntries) - // NOTE (ovlb): this will not be remembered as the best code i’ve written. if anyone seeing this has a better solution then the following to achieve sub groups of the definitions: i am happy to get rid of it - config.addCollection('tableOfContent', (collection) => { - const allItems = collection - .getFilteredByGlob('./11ty/definitions/*.md') - .filter((word) => !word.data.skip_in_table_of_content) - .sort((a, b) => { - const { title: firstTitle } = a.data; - const { title: secondTitle } = b.data; - const sortA = firstTitle.toLowerCase().replace(/^-/, ''); - const sortB = secondTitle.toLowerCase().replace(/^-/, ''); + // NOTE (ovlb): this will not be remembered as the best code i’ve written. if anyone seeing this has a better solution then the following to achieve sub groups of the definitions: i am happy to get rid of it + config.addCollection('tableOfContent', (collection) => { + const allItems = collection + .getFilteredByGlob('./11ty/definitions/*.md') + .filter((word) => !word.data.skip_in_table_of_content) + .sort((a, b) => { + const { title: firstTitle } = a.data + const { title: secondTitle } = b.data + const sortA = firstTitle.toLowerCase().replace(/^-/, '') + const sortB = secondTitle.toLowerCase().replace(/^-/, '') - // `localeCompare()` is super cool: http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare - return sortA.localeCompare(sortB); - }); + // `localeCompare()` is super cool: http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare + return sortA.localeCompare(sortB) + }) - const split = { - notLetters: { - title: '#', - definitions: [] - }, - aToE: { - title: 'A–E', - definitions: [] - }, - fToL: { - title: 'F–L', - definitions: [] - }, - mToS: { - title: 'M–S', - definitions: [] - }, - tToZ: { - title: 'T–Z', - definitions: [] - } - }; + const split = { + notLetters: { + title: '#', + definitions: [] + }, + aToE: { + title: 'A–E', + definitions: [] + }, + fToL: { + title: 'F–L', + definitions: [] + }, + mToS: { + title: 'M–S', + definitions: [] + }, + tToZ: { + title: 'T–Z', + definitions: [] + } + } - allItems.forEach((word) => { - const { title } = word.data; - const { notLetters, aToE, fToL, mToS, tToZ } = split; - const sortableTitle = title.replace(/^-/, ''); + allItems.forEach((word) => { + const { title } = word.data + const { notLetters, aToE, fToL, mToS, tToZ } = split + const sortableTitle = title.replace(/^-/, '') - if (/^[a-e]/gim.test(sortableTitle)) { - return aToE.definitions.push(word); - } + if (/^[a-e]/gim.test(sortableTitle)) { + return aToE.definitions.push(word) + } - if (/^[f-l]/i.test(sortableTitle)) { - return fToL.definitions.push(word); - } + if (/^[f-l]/i.test(sortableTitle)) { + return fToL.definitions.push(word) + } - if (/^[m-s]/i.test(sortableTitle)) { - return mToS.definitions.push(word); - } + if (/^[m-s]/i.test(sortableTitle)) { + return mToS.definitions.push(word) + } - if (/^[t-z]/i.test(sortableTitle)) { - return tToZ.definitions.push(word); - } + if (/^[t-z]/i.test(sortableTitle)) { + return tToZ.definitions.push(word) + } - // no reg ex as the fallback to avoid testing for emojis and numbers - notLetters.definitions.push(word); - }); + // no reg ex as the fallback to avoid testing for emojis and numbers + notLetters.definitions.push(word) + }) - return Object.keys(split).map((key) => { - const { title, definitions } = split[key]; + return Object.keys(split).map((key) => { + const { title, definitions } = split[key] - return { title, definitions }; - }); - }); + return { title, definitions } + }) + }) - config.addCollection('definedWords', (collection) => { - return collection - .getFilteredByGlob('./11ty/definitions/*.md') - .filter((word) => word.data.defined) - .sort((a, b) => { - // `localeCompare()` is super cool: http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare - return a.data.title - .toLowerCase() - .localeCompare(b.data.title.toLowerCase()); - }); - }); + config.addCollection('definedWords', (collection) => { + return collection + .getFilteredByGlob('./11ty/definitions/*.md') + .filter((word) => word.data.defined) + .sort((a, b) => { + // `localeCompare()` is super cool: http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare + return a.data.title.toLowerCase().localeCompare(b.data.title.toLowerCase()) + }) + }) - const mdIt = require('markdown-it')({ - html: true - }); - const prism = require('markdown-it-prism'); - const anchor = require('markdown-it-anchor'); + const mdIt = require('markdown-it')({ + html: true + }) + const prism = require('markdown-it-prism') + const anchor = require('markdown-it-anchor') - mdIt.use(prism); - mdIt.use(anchor); + mdIt.use(prism) + mdIt.use(anchor) - config.setLibrary('md', mdIt); + config.setLibrary('md', mdIt) - // You can return your Config object (optional). - return { - dir: { - input: '11ty', - output: 'dist' - }, - templateFormats: ['njk', 'md'], - htmlTemplateEngine: 'njk', - markdownTemplateEngine: 'njk' - }; -}; + // You can return your Config object (optional). + return { + dir: { + input: '11ty', + output: 'dist' + }, + templateFormats: [ 'njk', 'md' ], + htmlTemplateEngine: 'njk', + markdownTemplateEngine: 'njk' + } +} diff --git a/11ty/_includes/components/content-warning.njk b/11ty/_includes/components/content-warning.njk index fff98e78..5187dc15 100644 --- a/11ty/_includes/components/content-warning.njk +++ b/11ty/_includes/components/content-warning.njk @@ -3,8 +3,12 @@ flag.text and (flag.level == 'avoid') -%}
-

You may want to add a content warning before discussing or showing imagery involving this topic, as it is a topic that can elicit negative feelings and visceral reactions like a panic attack or trauma.

-

Content warnings usually take the form of "Content warning: {{ title }}" or "CW: {{ title }}. We recommend the former when possible.

+

You may want to add a content warning before discussing or showing imagery involving this topic, as it is a topic that can elicit unnecessary harm through inducing negative feelings, anxiety, or trauma.

+

+ Content warnings usually take the form of "Content warning: + {{ title }}" or "CW: + {{ title }}. We recommend the former when possible. +

Content warnings should be given at the earliest possible opportunity. Examples of where you can do this are: