Skip to content

Repo sync #26260

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/actions-scripts/rendered-content-link-checker.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ import contextualize from '../../middleware/context.js'
import features from '../../middleware/contextualizers/features.js'
import getRedirect from '../../lib/get-redirect.js'
import warmServer from '../../lib/warm-server.js'
import liquid from '../../lib/render-content/liquid.js'
import { liquid } from '../../src/content-render/index.js'
import { deprecated } from '../../lib/enterprise-server-releases.js'
import excludedLinks from '../../lib/excluded-links.js'
import { getEnvInputs, boolEnvVar } from './lib/get-env-inputs.js'
import { debugTimeEnd, debugTimeStart } from './lib/debug-time-taken.js'
import { uploadArtifact as uploadArtifactLib } from './lib/upload-artifact.js'
import github from '../../script/helpers/github.js'
import { getActionContext } from './lib/action-context.js'
import { createMinimalProcessor } from '../../lib/render-content/create-processor.js'
import { createMinimalProcessor } from '../../src/content-render/unified/processor.js'

const STATIC_PREFIXES = {
assets: path.resolve('assets'),
Expand Down
2 changes: 1 addition & 1 deletion lib/get-mini-toc-items.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import cheerio from 'cheerio'
import { range } from 'lodash-es'

import renderContent from './render-content/index.js'
import { renderContent } from '#src/content-render/index.js'

// Keep maxHeadingLevel=2 for accessibility reasons, see docs-engineering#2701 for more info
export default function getMiniTocItems(html, maxHeadingLevel = 2, headingScope = '') {
Expand Down
2 changes: 1 addition & 1 deletion lib/page.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import getTocItems from './get-toc-items.js'
import pathUtils from './path-utils.js'
import Permalink from './permalink.js'
import languages from './languages.js'
import renderContent from './render-content/index.js'
import { renderContent } from '#src/content-render/index.js'
import processLearningTracks from '#src/learning-track/lib/process-learning-tracks.js'
import { productMap } from './all-products.js'
import slash from 'slash'
Expand Down
2 changes: 1 addition & 1 deletion lib/release-notes-utils.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import semver from 'semver'
import renderContent from './render-content/index.js'
import { renderContent } from '#src/content-render/index.js'

/**
* Create an array of release note objects and sort them by number.
Expand Down
48 changes: 0 additions & 48 deletions lib/render-content/README.md

This file was deleted.

46 changes: 0 additions & 46 deletions lib/render-content/index.js

This file was deleted.

8 changes: 0 additions & 8 deletions lib/render-content/liquid.js

This file was deleted.

79 changes: 0 additions & 79 deletions lib/render-content/renderContent.js

This file was deleted.

4 changes: 2 additions & 2 deletions lib/render-with-fallback.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import renderContent from './render-content/index.js'
import { renderContent } from '#src/content-render/index.js'
import Page from './page.js'
import { TitleFromAutotitleError } from './render-content/plugins/rewrite-local-links.js'
import { TitleFromAutotitleError } from '#src/content-render/unified/rewrite-local-links.js'

class EmptyTitleError extends Error {}

Expand Down
2 changes: 1 addition & 1 deletion middleware/contextualizers/current-product-tree.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import path from 'path'
import liquid from '../../lib/render-content/liquid.js'
import { liquid } from '#src/content-render/index.js'
import findPageInSiteTree from '../../lib/find-page-in-site-tree.js'
import removeFPTFromPath from '../../lib/remove-fpt-from-path.js'
import { executeWithFallback } from '../../lib/render-with-fallback.js'
Expand Down
2 changes: 1 addition & 1 deletion middleware/contextualizers/glossaries.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { getDataByLanguage } from '../../lib/get-data.js'
import liquid from '../../lib/render-content/liquid.js'
import { liquid } from '#src/content-render/index.js'
import { executeWithFallback } from '../../lib/render-with-fallback.js'
import { correctTranslatedContentStrings } from '../../lib/correct-translation-content.js'

Expand Down
2 changes: 1 addition & 1 deletion script/dev-toc/generate.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { execSync } from 'child_process'
import { program } from 'commander'
import fpt from '../../lib/non-enterprise-default-version.js'
import { allVersionKeys } from '../../lib/all-versions.js'
import { liquid } from '../../lib/render-content/index.js'
import { liquid } from '#src/content-render/index.js'
import contextualize from '../../middleware/context.js'

const layoutFilename = path.posix.join(process.cwd(), 'script/dev-toc/layout.html')
Expand Down
2 changes: 1 addition & 1 deletion script/reconcile-category-dirs-with-ids.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import walk from 'walk-sync'
import slash from 'slash'
import GithubSlugger from 'github-slugger'
import { decode } from 'html-entities'
import renderContent from '../lib/render-content/index.js'
import { renderContent } from '#src/content-render/index.js'

const slugger = new GithubSlugger()

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { addError, forEachInlineChild } from 'markdownlint-rule-helpers'
import renderContent from '../../../../lib/render-content/index.js'
import { renderContent } from '#src/content-render/index.js'

export const incorrectAltTextLength = {
names: ['MD111', 'incorrect-alt-text-length'],
Expand Down
2 changes: 1 addition & 1 deletion src/content-linter/tests/category-pages.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import GithubSlugger from 'github-slugger'
import { decode } from 'html-entities'

import matter from '../../../lib/read-frontmatter.js'
import renderContent from '../../../lib/render-content/index.js'
import { renderContent } from '#src/content-render/index.js'
import getApplicableVersions from '../../../lib/get-applicable-versions.js'
import contextualize from '../../../middleware/context.js'
import shortVersions from '../../../middleware/contextualizers/short-versions.js'
Expand Down
4 changes: 2 additions & 2 deletions src/content-linter/tests/lint-files.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ import { jest } from '@jest/globals'

import { frontmatter, deprecatedProperties } from '../../../lib/frontmatter.js'
import languages from '../../../lib/languages.js'
import { tags } from '../../../lib/liquid-tags/extended-markdown.js'
import { tags } from '#src/content-render/liquid/extended-markdown.js'
import releaseNotesSchema from '../lib/release-notes-schema.js'
import learningTracksSchema from '../lib/learning-tracks-schema.js'
import renderContent from '../../../lib/render-content/index.js'
import { renderContent } from '#src/content-render/index.js'
import getApplicableVersions from '../../../lib/get-applicable-versions.js'
import { allVersions } from '../../../lib/all-versions.js'
import { getDiffFiles } from '../lib/diff-files.js'
Expand Down
2 changes: 1 addition & 1 deletion src/content-linter/tests/lint-versioning.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import semver from 'semver'
import { allVersions, allVersionShortnames } from '../../../lib/all-versions.js'
import { supported, next, nextNext, deprecated } from '../../../lib/enterprise-server-releases.js'
import { getLiquidConditionals } from '../../../script/helpers/get-liquid-conditionals.js'
import allowedVersionOperators from '../../../lib/liquid-tags/ifversion-supported-operators.js'
import allowedVersionOperators from '#src/content-render/liquid/ifversion-supported-operators.js'
import featureVersionsSchema from '../lib/feature-versions-schema.js'
import walkFiles from '../../../script/helpers/walk-files.js'
import { getDeepDataByLanguage } from '../../../lib/get-data.js'
Expand Down
55 changes: 53 additions & 2 deletions lib/liquid-tags/README.md → src/content-render/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,55 @@
# Liquid Tags
# Render content

In this directory is the main pipeline that converts our content from Liquid, Markdown and YAML into HTML. This directory _does not include React components_.

## Usage

```js
const renderContent = require('.')

const html = await renderContent(`
# Beep
{{ foo }}
`, {
foo: 'bar'
})
```

Creates:

```html
<h1 id="beep"><a href="#beep">Beep</a></h1>
<p>bar</p>
```

## API

### renderContent(markdown, context = {}, options = {})

Render a string of `markdown` with optional `context`. Returns a `Promise`.

Liquid will be looking for includes in `${process.cwd()}/includes`.

Options:

- `fileName`: File name for debugging purposes.
- `textOnly`: Output text instead of html using [cheerio](https://ghub.io/cheerio).

### .liquid

The [Liquid](https://ghub.io/liquidjs) instance used internally.

### Code block headers

You can add a header to code blocks by adding the ` copy` annotation after the code fences, and a specified language:

```js copy
const copyMe = true
```

The un-highlighted text is available as `button.js-btn-copy`'s `data-clipboard-text` attribute.

## Liquid tags

See also [contributing/liquid-helpers.md](../../contributing/liquid-helpers.md)

Expand Down Expand Up @@ -36,7 +87,7 @@ Each custom tag has the following:

The class and the template should have corresponding names, like `lib/liquid-tags/my-tag.js` and `includes/liquid-tags/my-tag.html`

You must also register the new tag in `lib/render-content/index.js` with a line like this:
You must also register the new tag in `src/content-render/liquid/engine.js` with a line like this:

```
renderContent.liquid.registerTag('my_tag', require('./liquid-tags/my-tag'))
Expand Down
22 changes: 22 additions & 0 deletions src/content-render/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { renderLiquid } from './liquid/index.js'
import { renderUnified } from './unified/index.js'
import { engine } from './liquid/engine.js'

// parse multiple times because some templates contain more templates. :]
export async function renderContent(template = '', context = {}, options = {}) {
// If called with a falsy template, it can't ever become something
// when rendered. We can exit early to save some pointless work.
if (!template) return template
try {
template = await renderLiquid(template, context)
const html = await renderUnified(template, context, options)
return html
} catch (error) {
if (options.filename) {
console.error(`renderContent failed on file: ${options.filename}`)
}
throw error
}
}

export const liquid = engine
Loading