From 30214f78b9eb4df16dacf94856afe976799da174 Mon Sep 17 00:00:00 2001 From: Lara Aigmueller Date: Wed, 29 Jan 2020 18:12:55 +0000 Subject: [PATCH] barista: Added transformer that removes content marked as internal from pages. --- tools/barista/src/main.ts | 11 +++++++++++ tools/barista/src/transform.ts | 26 ++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/tools/barista/src/main.ts b/tools/barista/src/main.ts index 18f37800d2..6c57fe21c4 100644 --- a/tools/barista/src/main.ts +++ b/tools/barista/src/main.ts @@ -34,6 +34,7 @@ import { overviewBuilder } from './generators/category-navigation'; import { internalLinksTransformerFactory, exampleInlineSourcesTransformerFactory, + internalContentTransformerFactory, } from './transform'; // Add your page-builder to this map to register it. @@ -56,6 +57,15 @@ function createInternalLinksTransformer(): BaPageTransformer { return internalLinksTransformerFactory(isPublic, internalLinkParts); } +/** + * Creates the internalContentTransformer via a factory because we need to read + * one argument from the process environment. + */ +function createInternalContentTransformer(): BaPageTransformer { + const isPublic = isPublicBuild(); + return internalContentTransformerFactory(isPublic); +} + /** * Creates the exampleInlineSourcesTransformer by loading the example * metadata-json and calling the factory with it. @@ -83,6 +93,7 @@ async function buildPages(): Promise { const globalTransformers = [ await createExampleInlineSourcesTransformer(), createInternalLinksTransformer(), + createInternalContentTransformer(), ]; const builders = Array.from(BUILDERS.values()); diff --git a/tools/barista/src/transform.ts b/tools/barista/src/transform.ts index 99d94ca245..95949fd39c 100644 --- a/tools/barista/src/transform.ts +++ b/tools/barista/src/transform.ts @@ -226,6 +226,7 @@ export function internalLinksTransformerFactory( return transformed; }; } + export function exampleInlineSourcesTransformerFactory( metadata: BaAllExamplesMetadata, ): BaPageTransformer { @@ -251,3 +252,28 @@ export function exampleInlineSourcesTransformerFactory( return source; }; } + +/** + * Removes internal content wrapped with + * from Strapi pages on public build. + */ +export function internalContentTransformerFactory( + isPublic: boolean, +): BaPageTransformer { + return async source => { + const transformed = { ...source }; + + transformed.content = runWithCheerio(source.content, ($: CheerioStatic) => { + $('ba-internal-content').each((_, content) => { + if (isPublic) { + $(content).remove(); + } else { + const innerHtml = $(content).html(); + $(content).replaceWith($(innerHtml)); + } + }); + }); + + return transformed; + }; +}