diff --git a/config.js b/config.js index f384c2d78..7b090c929 100644 --- a/config.js +++ b/config.js @@ -12,6 +12,12 @@ module.exports = { pagePath: `src/docs/pages`, staticPartsPath: `src/static-parts`, // General information - language: `jsx`, - optionalLanguage: `css` + language: { + short: `jsx`, + long: `JSX (React)` + }, + optionalLanguage: { + short: `css`, + long: `CSS` + } }; diff --git a/scripts/build.js b/scripts/build.js index 7c4914924..dc0d186ba 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -92,13 +92,13 @@ try { output += snippet.attributes.text; if (snippet.attributes.codeBlocks.style !== '') - output += `\`\`\`${config.optionalLanguage}\n${snippet.attributes.codeBlocks.style}\n\`\`\`\n\n`; + output += `\`\`\`${config.optionalLanguage.short}\n${snippet.attributes.codeBlocks.style}\n\`\`\`\n\n`; - output += `\`\`\`${config.language}\n${snippet.attributes.codeBlocks.code}\n\`\`\``; + output += `\`\`\`${config.language.short}\n${snippet.attributes.codeBlocks.code}\n\`\`\``; output += misc.collapsible( 'Examples', - `\`\`\`${config.language}\n${snippet.attributes.codeBlocks.example}\n\`\`\`` + `\`\`\`${config.language.short}\n${snippet.attributes.codeBlocks.example}\n\`\`\`` ); output += '\n
' + misc.link('⬆ Back to top', misc.anchor('Contents')) + '\n'; diff --git a/scripts/extract.js b/scripts/extract.js index 383bc7cf1..8f5592f4b 100644 --- a/scripts/extract.js +++ b/scripts/extract.js @@ -42,7 +42,9 @@ const completeData = { data: [...snippetsArray], meta: { specification: 'http://jsonapi.org/format/', - type: 'snippetArray' + type: 'snippetArray', + language: config.language, + otherLanguages: [config.optionalLanguage] } }; let listingData = { @@ -60,7 +62,9 @@ let listingData = { })), meta: { specification: 'http://jsonapi.org/format/', - type: 'snippetListingArray' + type: 'snippetListingArray', + language: config.language, + otherLanguages: [config.optionalLanguage] } }; // Write files diff --git a/scripts/util/helpers.js b/scripts/util/helpers.js index 490be603a..4603f575b 100644 --- a/scripts/util/helpers.js +++ b/scripts/util/helpers.js @@ -35,10 +35,10 @@ const prepTaggedData = tagDbData => ); const makeExamples = data => { data = - data.slice(0, data.lastIndexOf(`\`\`\`${config.language}`)).trim() + + data.slice(0, data.lastIndexOf(`\`\`\`${config.language.short}`)).trim() + misc.collapsible( 'Examples', - data.slice(data.lastIndexOf(`\`\`\`${config.language}`), data.lastIndexOf('```')) + + data.slice(data.lastIndexOf(`\`\`\`${config.language.short}`), data.lastIndexOf('```')) + data.slice(data.lastIndexOf('```')) ); return `${data}\n
${misc.link('⬆ Back to top', misc.anchor('Contents'))}\n\n`; diff --git a/scripts/util/snippetParser.js b/scripts/util/snippetParser.js index 1c3b69ae7..62e8863bd 100644 --- a/scripts/util/snippetParser.js +++ b/scripts/util/snippetParser.js @@ -49,8 +49,8 @@ const getCodeBlocks = str => { results.push(match); }); } - const replacer = new RegExp(`\`\`\`${config.language}([\\s\\S]*?)\`\`\``, 'g'); - const optionalReplacer = new RegExp(`\`\`\`${config.optionalLanguage}([\\s\\S]*?)\`\`\``, 'g'); + const replacer = new RegExp(`\`\`\`${config.language.short}([\\s\\S]*?)\`\`\``, 'g'); + const optionalReplacer = new RegExp(`\`\`\`${config.optionalLanguage.short}([\\s\\S]*?)\`\`\``, 'g'); results = results.map(v => v .replace(replacer, '$1') @@ -103,7 +103,10 @@ const readSnippets = snippetsPath => { tags: data.attributes.tags.split(',').map(t => t.trim()) }, meta: { - hash: hashData(data.body) + hash: hashData(data.body), + firstSeen: execSync(`git log --diff-filter=A --pretty=format:%at -- snippets/${snippet}`).toString(), + lastUpdated: execSync(`git log -n 1 --pretty=format:%at -- snippets/${snippet}`).toString(), + updateCount: execSync(`git log --pretty=%H -- snippets/${snippet}`).toString().split('\n').length } }; } diff --git a/src/docs/components/SnippetCard.js b/src/docs/components/SnippetCard.js index 12a4628d5..d7114b57a 100644 --- a/src/docs/components/SnippetCard.js +++ b/src/docs/components/SnippetCard.js @@ -89,12 +89,12 @@ const FullCard = ({ snippetData, difficulty, isDarkMode }) => { */} { cardStyleHtml &&
         }