Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2022-11-04 00:09:06 +00:00
parent 9432ed8112
commit bc1574b93a
26 changed files with 966 additions and 940 deletions

View File

@ -3,14 +3,14 @@
class ProjectEntity < Grape::Entity class ProjectEntity < Grape::Entity
include RequestAwareEntity include RequestAwareEntity
expose :id expose :id, documentation: { type: 'integer', example: 1 }
expose :name expose :name, documentation: { type: 'string', example: 'GitLab' }
expose :full_path do |project| expose :full_path, documentation: { type: 'string', example: 'gitlab-org/gitlab' } do |project|
project_path(project) project_path(project)
end end
expose :full_name do |project| expose :full_name, documentation: { type: 'string', example: 'GitLab Org / GitLab' } do |project|
project.full_name project.full_name
end end
end end

View File

@ -30,6 +30,7 @@ ActiveSupport::Inflector.inflections do |inflect|
pipeline_artifact_registry pipeline_artifact_registry
project_auto_devops project_auto_devops
project_registry project_registry
project_wiki_repository_registry
project_statistics project_statistics
snippet_repository_registry snippet_repository_registry
system_note_metadata system_note_metadata

View File

@ -43,6 +43,8 @@ metadata:
description: Operations related to metadata of the GitLab instance description: Operations related to metadata of the GitLab instance
- name: project_hooks - name: project_hooks
description: Operations related to project hooks description: Operations related to project hooks
- name: project_import_bitbucket
description: Operations related to import BitBucket projects
- name: release_links - name: release_links
description: Operations related to release assets (links) description: Operations related to release assets (links)
- name: releases - name: releases

View File

@ -201,8 +201,7 @@ successfully, you must replicate their data using some other means.
|[CI job artifacts](../../../ci/pipelines/job_artifacts.md) | **Yes** (10.4) | **Yes** (14.10) | [**Yes** (15.1)](https://gitlab.com/groups/gitlab-org/-/epics/5551) | [No](object_storage.md#verification-of-files-in-object-storage) | Verification is behind the feature flag `geo_job_artifact_replication`, enabled by default in 14.10. | |[CI job artifacts](../../../ci/pipelines/job_artifacts.md) | **Yes** (10.4) | **Yes** (14.10) | [**Yes** (15.1)](https://gitlab.com/groups/gitlab-org/-/epics/5551) | [No](object_storage.md#verification-of-files-in-object-storage) | Verification is behind the feature flag `geo_job_artifact_replication`, enabled by default in 14.10. |
|[CI Pipeline Artifacts](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/models/ci/pipeline_artifact.rb) | [**Yes** (13.11)](https://gitlab.com/gitlab-org/gitlab/-/issues/238464) | [**Yes** (13.11)](https://gitlab.com/gitlab-org/gitlab/-/issues/238464) | [**Yes** (15.1)](https://gitlab.com/groups/gitlab-org/-/epics/5551) | [No](object_storage.md#verification-of-files-in-object-storage) | Persists additional artifacts after a pipeline completes. | |[CI Pipeline Artifacts](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/models/ci/pipeline_artifact.rb) | [**Yes** (13.11)](https://gitlab.com/gitlab-org/gitlab/-/issues/238464) | [**Yes** (13.11)](https://gitlab.com/gitlab-org/gitlab/-/issues/238464) | [**Yes** (15.1)](https://gitlab.com/groups/gitlab-org/-/epics/5551) | [No](object_storage.md#verification-of-files-in-object-storage) | Persists additional artifacts after a pipeline completes. |
|[CI Secure Files](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/models/ci/secure_file.rb) | [**Yes** (15.3)](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91430) | [**Yes** (15.3)](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91430) | [**Yes** (15.3)](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91430) | [No](object_storage.md#verification-of-files-in-object-storage) | Verification is behind the feature flag `geo_ci_secure_file_replication`, enabled by default in 15.3. | |[CI Secure Files](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/models/ci/secure_file.rb) | [**Yes** (15.3)](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91430) | [**Yes** (15.3)](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91430) | [**Yes** (15.3)](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91430) | [No](object_storage.md#verification-of-files-in-object-storage) | Verification is behind the feature flag `geo_ci_secure_file_replication`, enabled by default in 15.3. |
|[Container Registry](../../packages/container_registry.md) | **Yes** (12.3)* | No | No | No | Replication is behind feature flag `geo_container_repository_replication`, enabled by default. |[Container Registry](../../packages/container_registry.md) | **Yes** (12.3)* | No | No | No | Replication is behind feature flag `geo_container_repository_replication`, enabled by default. Requires additional configuration. See [instructions](container_registry.md) to set up the Container Registry replication. |
Requires additional configuration. See [instructions](container_registry.md) to set up the Container Registry replication. |
|[Infrastructure Registry](../../../user/packages/infrastructure_registry/index.md) | **Yes** (14.0) | **Yes** (14.0) | [**Yes** (15.1)](https://gitlab.com/groups/gitlab-org/-/epics/5551) | [No](object_storage.md#verification-of-files-in-object-storage) | Behind feature flag `geo_package_file_replication`, enabled by default. | |[Infrastructure Registry](../../../user/packages/infrastructure_registry/index.md) | **Yes** (14.0) | **Yes** (14.0) | [**Yes** (15.1)](https://gitlab.com/groups/gitlab-org/-/epics/5551) | [No](object_storage.md#verification-of-files-in-object-storage) | Behind feature flag `geo_package_file_replication`, enabled by default. |
|[Project designs repository](../../../user/project/issues/design_management.md) | **Yes** (12.7) | [No](https://gitlab.com/gitlab-org/gitlab/-/issues/32467) | N/A | N/A | Designs also require replication of LFS objects and Uploads. | |[Project designs repository](../../../user/project/issues/design_management.md) | **Yes** (12.7) | [No](https://gitlab.com/gitlab-org/gitlab/-/issues/32467) | N/A | N/A | Designs also require replication of LFS objects and Uploads. |
|[Package Registry](../../../user/packages/package_registry/index.md) | **Yes** (13.2) | **Yes** (13.10) | [**Yes** (15.1)](https://gitlab.com/groups/gitlab-org/-/epics/5551) | [No](object_storage.md#verification-of-files-in-object-storage) | Behind feature flag `geo_package_file_replication`, enabled by default. | |[Package Registry](../../../user/packages/package_registry/index.md) | **Yes** (13.2) | **Yes** (13.10) | [**Yes** (15.1)](https://gitlab.com/groups/gitlab-org/-/epics/5551) | [No](object_storage.md#verification-of-files-in-object-storage) | Behind feature flag `geo_package_file_replication`, enabled by default. |

View File

@ -60,6 +60,13 @@ To make submodules work correctly in CI/CD jobs:
GIT_SUBMODULE_STRATEGY: recursive GIT_SUBMODULE_STRATEGY: recursive
``` ```
1. Use `GIT_SUBMODULE_DEPTH` to configure the cloning depth of submodules independently of the [`GIT_DEPTH`](runners/configure_runners.md#shallow-cloning) variable:
```yaml
variables:
GIT_SUBMODULE_DEPTH: 1
```
1. You can filter or exclude specific submodules to control which submodules will be synced using 1. You can filter or exclude specific submodules to control which submodules will be synced using
[`GIT_SUBMODULE_PATHS`](runners/configure_runners.md#git-submodule-paths). [`GIT_SUBMODULE_PATHS`](runners/configure_runners.md#git-submodule-paths).

View File

@ -312,6 +312,7 @@ globally or for individual jobs:
- [`GIT_SUBMODULE_PATHS`](#git-submodule-paths) - [`GIT_SUBMODULE_PATHS`](#git-submodule-paths)
- [`GIT_SUBMODULE_UPDATE_FLAGS`](#git-submodule-update-flags) - [`GIT_SUBMODULE_UPDATE_FLAGS`](#git-submodule-update-flags)
- [`GIT_DEPTH`](#shallow-cloning) (shallow cloning) - [`GIT_DEPTH`](#shallow-cloning) (shallow cloning)
- [`GIT_SUBMODULE_DEPTH`](#git-submodule-depth)
- [`GIT_CLONE_PATH`](#custom-build-directories) (custom build directories) - [`GIT_CLONE_PATH`](#custom-build-directories) (custom build directories)
- [`TRANSFER_METER_FREQUENCY`](#artifact-and-cache-settings) (artifact/cache meter update frequency) - [`TRANSFER_METER_FREQUENCY`](#artifact-and-cache-settings) (artifact/cache meter update frequency)
- [`ARTIFACT_COMPRESSION_LEVEL`](#artifact-and-cache-settings) (artifact archiver compression level) - [`ARTIFACT_COMPRESSION_LEVEL`](#artifact-and-cache-settings) (artifact archiver compression level)
@ -597,6 +598,24 @@ variables:
You can set it globally or per-job in the [`variables`](../yaml/index.md#variables) section. You can set it globally or per-job in the [`variables`](../yaml/index.md#variables) section.
### Git submodule depth
> [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/3651) in GitLab Runner 15.5.
Use the `GIT_SUBMODULE_DEPTH` variable to specify the depth of fetching and cloning submodules
when [`GIT_SUBMODULE_STRATEGY`](#git-submodule-strategy) is set to either `normal` or `recursive`.
You can set it globally or for a specific job in the [`variables`](../yaml/index.md#variables) section.
When you set the `GIT_SUBMODULE_DEPTH` variable, it overwrites the [`GIT_DEPTH`](#shallow-cloning) setting
for the submodules only.
To fetch or clone only the last 3 commits:
```yaml
variables:
GIT_SUBMODULE_DEPTH: 3
```
### Custom build directories ### Custom build directories
> [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/issues/2211) in GitLab Runner 11.10. > [Introduced](https://gitlab.com/gitlab-org/gitlab-runner/-/issues/2211) in GitLab Runner 11.10.
@ -759,7 +778,7 @@ variables:
NOTE: NOTE:
Zip archives are the only supported artifact type. Follow [the issue for details](https://gitlab.com/gitlab-org/gitlab/-/issues/367203). Zip archives are the only supported artifact type. Follow [the issue for details](https://gitlab.com/gitlab-org/gitlab/-/issues/367203).
GitLab Runner can generate and produce attestation metadata for all build artifacts. To enable this feature, you must set the `RUNNER_GENERATE_ARTIFACTS_METADATA` environment variable to `true`. This variable can either be set globally or it can be set for individual jobs. The metadata is in rendered in a plain text `.json` file that's stored with the artifact. The file name is as follows: `{JOB_ID}-artifacts-metadata.json`. GitLab Runner can generate and produce attestation metadata for all build artifacts. To enable this feature, you must set the `RUNNER_GENERATE_ARTIFACTS_METADATA` environment variable to `true`. This variable can either be set globally or it can be set for individual jobs. The metadata is in rendered in a plain text `.json` file that's stored with the artifact. The file name is as follows: `{ARTIFACT_FILE_NAME}-metadata.json`. The file name, however, defaults to `artifacts-metadata.json` if no name was given to the build artifacts.
### Attestation format ### Attestation format

View File

@ -138,7 +138,7 @@ With [Docker Compose](https://docs.docker.com/compose/) you can easily configure
install, and upgrade your Docker-based GitLab installation: install, and upgrade your Docker-based GitLab installation:
1. [Install Docker Compose](https://docs.docker.com/compose/install/). 1. [Install Docker Compose](https://docs.docker.com/compose/install/).
1. Create a `docker-compose.yml` file (or [download an example](https://gitlab.com/gitlab-org/omnibus-gitlab/raw/master/docker/docker-compose.yml)): 1. Create a `docker-compose.yml` file:
```yaml ```yaml
version: '3.6' version: '3.6'

View File

@ -77,6 +77,8 @@ With the [Customers Portal](https://customers.gitlab.com/) you can:
- [Change the namespace the subscription is linked to](#change-the-linked-namespace) - [Change the namespace the subscription is linked to](#change-the-linked-namespace)
- [Change customers portal account password](#change-customers-portal-account-password) - [Change customers portal account password](#change-customers-portal-account-password)
The Customers Portal is available only to customers who purchased their subscription from GitLab. If you made your purchase through a partner or reseller, you must contact them directly for assistance with your subscription.
### Change account owner information ### Change account owner information
Account owner personal details are used on invoices. The account owner email Account owner personal details are used on invoices. The account owner email

View File

@ -25,7 +25,7 @@ Otherwise, to add your license:
1. Select **Add license**. 1. Select **Add license**.
NOTE: NOTE:
For GitLab versions 14.1.x or newer, you can access the **Add License** page directly from the URL, `<YourGitLabURL>/admin/license/new`. In GitLab 14.1.x through 14.10.x, you can access the **Add License** page directly from the URL, `<YourGitLabURL>/admin/license/new`. In GitLab 15.0 and later, the path is `<YourGitLabURL>/admin/subscription`.
## Add your license file during installation ## Add your license file during installation

View File

@ -221,7 +221,7 @@ table.supported-languages ul {
<td>N</td> <td>N</td>
</tr> </tr>
<tr> <tr>
<td rowspan="2">JavaScript</td> <td rowspan="2">JavaScript and TypeScript</td>
<td>All versions</td> <td>All versions</td>
<td><a href="https://www.npmjs.com/">npm</a></td> <td><a href="https://www.npmjs.com/">npm</a></td>
<td> <td>
@ -624,7 +624,6 @@ The following variables allow configuration of global dependency scanning settin
| ----------------------------|------------ | | ----------------------------|------------ |
| `ADDITIONAL_CA_CERT_BUNDLE` | Bundle of CA certs to trust. The bundle of certificates provided here is also used by other tools during the scanning process, such as `git`, `yarn`, or `npm`. See [Using a custom SSL CA certificate authority](#using-a-custom-ssl-ca-certificate-authority) for more details. | | `ADDITIONAL_CA_CERT_BUNDLE` | Bundle of CA certs to trust. The bundle of certificates provided here is also used by other tools during the scanning process, such as `git`, `yarn`, or `npm`. See [Using a custom SSL CA certificate authority](#using-a-custom-ssl-ca-certificate-authority) for more details. |
| `DS_EXCLUDED_ANALYZERS` | Specify the analyzers (by name) to exclude from Dependency Scanning. For more information, see [Dependency Scanning Analyzers](analyzers.md). | | `DS_EXCLUDED_ANALYZERS` | Specify the analyzers (by name) to exclude from Dependency Scanning. For more information, see [Dependency Scanning Analyzers](analyzers.md). |
| `DS_DEFAULT_ANALYZERS` | This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/287691) in GitLab 14.0 and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/333299) in 15.0. Use `DS_EXCLUDED_ANALYZERS` instead. |
| `DS_EXCLUDED_PATHS` | Exclude files and directories from the scan based on the paths. A comma-separated list of patterns. Patterns can be globs (see [`doublestar.Match`](https://pkg.go.dev/github.com/bmatcuk/doublestar/v4@v4.0.2#Match) for supported patterns), or file or folder paths (for example, `doc,spec`). Parent directories also match patterns. Default: `"spec, test, tests, tmp"`. | | `DS_EXCLUDED_PATHS` | Exclude files and directories from the scan based on the paths. A comma-separated list of patterns. Patterns can be globs (see [`doublestar.Match`](https://pkg.go.dev/github.com/bmatcuk/doublestar/v4@v4.0.2#Match) for supported patterns), or file or folder paths (for example, `doc,spec`). Parent directories also match patterns. Default: `"spec, test, tests, tmp"`. |
| `DS_IMAGE_SUFFIX` | Suffix added to the image name. ([Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/354796) in GitLab 14.10.) Automatically set to `"-fips"` when FIPS mode is enabled. ([Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/357922) in GitLab 15.0.) | | `DS_IMAGE_SUFFIX` | Suffix added to the image name. ([Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/354796) in GitLab 14.10.) Automatically set to `"-fips"` when FIPS mode is enabled. ([Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/357922) in GitLab 15.0.) |
| `SECURE_ANALYZERS_PREFIX` | Override the name of the Docker registry providing the official default images (proxy). Read more about [customizing analyzers](analyzers.md). | | `SECURE_ANALYZERS_PREFIX` | Override the name of the Docker registry providing the official default images (proxy). Read more about [customizing analyzers](analyzers.md). |

View File

@ -2,22 +2,22 @@
02_01_00__preliminaries__tabs__001: 02_01_00__preliminaries__tabs__001:
canonical: "<pre><code>foo\tbaz\t\tbim\n</code></pre>\n" canonical: "<pre><code>foo\tbaz\t\tbim\n</code></pre>\n"
static: "<div class=\"gl-relative markdown-code-block js-markdown-code\">\n<pre static: "<div class=\"gl-relative markdown-code-block js-markdown-code\">\n<pre
data-sourcepos=\"1:2-1:13\" lang=\"plaintext\" class=\"code highlight js-syntax-highlight data-sourcepos=\"1:2-1:13\" class=\"code highlight js-syntax-highlight language-plaintext\"
language-plaintext\" data-canonical-lang=\"\" v-pre=\"true\"><code><span id=\"LC1\" lang=\"plaintext\" data-canonical-lang=\"\" v-pre=\"true\"><code><span id=\"LC1\"
class=\"line\" lang=\"plaintext\">foo\tbaz\t\tbim</span></code></pre>\n<copy-code></copy-code>\n</div>" class=\"line\" lang=\"plaintext\">foo\tbaz\t\tbim</span></code></pre>\n<copy-code></copy-code>\n</div>"
wysiwyg: "<pre class=\"content-editor-code-block undefined code highlight\"><code>foo\tbaz\t\tbim</code></pre>" wysiwyg: "<pre class=\"content-editor-code-block undefined code highlight\"><code>foo\tbaz\t\tbim</code></pre>"
02_01_00__preliminaries__tabs__002: 02_01_00__preliminaries__tabs__002:
canonical: "<pre><code>foo\tbaz\t\tbim\n</code></pre>\n" canonical: "<pre><code>foo\tbaz\t\tbim\n</code></pre>\n"
static: "<div class=\"gl-relative markdown-code-block js-markdown-code\">\n<pre static: "<div class=\"gl-relative markdown-code-block js-markdown-code\">\n<pre
data-sourcepos=\"1:4-1:15\" lang=\"plaintext\" class=\"code highlight js-syntax-highlight data-sourcepos=\"1:4-1:15\" class=\"code highlight js-syntax-highlight language-plaintext\"
language-plaintext\" data-canonical-lang=\"\" v-pre=\"true\"><code><span id=\"LC1\" lang=\"plaintext\" data-canonical-lang=\"\" v-pre=\"true\"><code><span id=\"LC1\"
class=\"line\" lang=\"plaintext\">foo\tbaz\t\tbim</span></code></pre>\n<copy-code></copy-code>\n</div>" class=\"line\" lang=\"plaintext\">foo\tbaz\t\tbim</span></code></pre>\n<copy-code></copy-code>\n</div>"
wysiwyg: "<pre class=\"content-editor-code-block undefined code highlight\"><code>foo\tbaz\t\tbim</code></pre>" wysiwyg: "<pre class=\"content-editor-code-block undefined code highlight\"><code>foo\tbaz\t\tbim</code></pre>"
02_01_00__preliminaries__tabs__003: 02_01_00__preliminaries__tabs__003:
canonical: "<pre><code>a\ta\nὐ\ta\n</code></pre>\n" canonical: "<pre><code>a\ta\nὐ\ta\n</code></pre>\n"
static: "<div class=\"gl-relative markdown-code-block js-markdown-code\">\n<pre static: "<div class=\"gl-relative markdown-code-block js-markdown-code\">\n<pre
data-sourcepos=\"1:5-2:9\" lang=\"plaintext\" class=\"code highlight js-syntax-highlight data-sourcepos=\"1:5-2:9\" class=\"code highlight js-syntax-highlight language-plaintext\"
language-plaintext\" data-canonical-lang=\"\" v-pre=\"true\"><code><span id=\"LC1\" lang=\"plaintext\" data-canonical-lang=\"\" v-pre=\"true\"><code><span id=\"LC1\"
class=\"line\" lang=\"plaintext\">a\ta</span>\n<span id=\"LC2\" class=\"line\" class=\"line\" lang=\"plaintext\">a\ta</span>\n<span id=\"LC2\" class=\"line\"
lang=\"plaintext\">ὐ\ta</span></code></pre>\n<copy-code></copy-code>\n</div>" lang=\"plaintext\">ὐ\ta</span></code></pre>\n<copy-code></copy-code>\n</div>"
wysiwyg: "<pre class=\"content-editor-code-block undefined code highlight\"><code>a\ta\nὐ\ta</code></pre>" wysiwyg: "<pre class=\"content-editor-code-block undefined code highlight\"><code>a\ta\nὐ\ta</code></pre>"
@ -52,7 +52,7 @@
<li data-sourcepos="1:1-3:5"> <li data-sourcepos="1:1-3:5">
<p data-sourcepos="1:3-1:5">foo</p> <p data-sourcepos="1:3-1:5">foo</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="3:2-3:5" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> bar</span></code></pre> <pre data-sourcepos="3:2-3:5" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> bar</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
</li> </li>
@ -68,7 +68,7 @@
static: |- static: |-
<blockquote data-sourcepos="1:1-1:6" dir="auto"> <blockquote data-sourcepos="1:1-1:6" dir="auto">
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:3-1:6" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> foo</span></code></pre> <pre data-sourcepos="1:3-1:6" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> foo</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
</blockquote> </blockquote>
@ -86,7 +86,7 @@
<ul data-sourcepos="1:1-1:6" dir="auto"> <ul data-sourcepos="1:1-1:6" dir="auto">
<li data-sourcepos="1:1-1:6"> <li data-sourcepos="1:1-1:6">
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:3-1:6" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> foo</span></code></pre> <pre data-sourcepos="1:3-1:6" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> foo</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
</li> </li>
@ -100,7 +100,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-2:4" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span> <pre data-sourcepos="1:5-2:4" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span>
<span id="LC2" class="line" lang="plaintext">bar</span></code></pre> <span id="LC2" class="line" lang="plaintext">bar</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -221,7 +221,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-1:7" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">***</span></code></pre> <pre data-sourcepos="1:5-1:7" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">***</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -464,7 +464,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-1:9" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"># foo</span></code></pre> <pre data-sourcepos="1:5-1:9" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"># foo</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -661,7 +661,7 @@
<hr /> <hr />
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-4:7" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">Foo</span> <pre data-sourcepos="1:5-4:7" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">Foo</span>
<span id="LC2" class="line" lang="plaintext">---</span> <span id="LC2" class="line" lang="plaintext">---</span>
<span id="LC3" class="line" lang="plaintext"></span> <span id="LC3" class="line" lang="plaintext"></span>
<span id="LC4" class="line" lang="plaintext">Foo</span></code></pre> <span id="LC4" class="line" lang="plaintext">Foo</span></code></pre>
@ -806,7 +806,7 @@
<p>Baz</p> <p>Baz</p>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-3:3" lang="yaml" class="code highlight js-syntax-highlight language-yaml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="yaml"><span class="s">Foo</span></span></code></pre> <pre data-sourcepos="1:1-3:3" class="code highlight js-syntax-highlight language-yaml" lang="yaml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="yaml"><span class="s">Foo</span></span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<h2 data-sourcepos="4:1-6:3" dir="auto"> <h2 data-sourcepos="4:1-6:3" dir="auto">
@ -829,7 +829,7 @@
<hr /> <hr />
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-2:3" lang="yaml" class="code highlight js-syntax-highlight language-yaml" data-lang-params="frontmatter" v-pre="true"><code></code></pre> <pre data-sourcepos="1:1-2:3" class="code highlight js-syntax-highlight language-yaml" lang="yaml" data-lang-params="frontmatter" v-pre="true"><code></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -855,7 +855,7 @@
<hr /> <hr />
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-1:7" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre> <pre data-sourcepos="1:5-1:7" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<hr data-sourcepos="2:1-2:3"> <hr data-sourcepos="2:1-2:3">
@ -953,7 +953,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-2:25" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">a simple</span> <pre data-sourcepos="1:5-2:25" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">a simple</span>
<span id="LC2" class="line" lang="plaintext"> indented code block</span></code></pre> <span id="LC2" class="line" lang="plaintext"> indented code block</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -1007,7 +1007,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-4:9" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">&lt;a/&gt;</span> <pre data-sourcepos="1:5-4:9" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">&lt;a/&gt;</span>
<span id="LC2" class="line" lang="plaintext">*hi*</span> <span id="LC2" class="line" lang="plaintext">*hi*</span>
<span id="LC3" class="line" lang="plaintext"></span> <span id="LC3" class="line" lang="plaintext"></span>
<span id="LC4" class="line" lang="plaintext">- one</span></code></pre> <span id="LC4" class="line" lang="plaintext">- one</span></code></pre>
@ -1030,7 +1030,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-7:10" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">chunk1</span> <pre data-sourcepos="1:5-7:10" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">chunk1</span>
<span id="LC2" class="line" lang="plaintext"></span> <span id="LC2" class="line" lang="plaintext"></span>
<span id="LC3" class="line" lang="plaintext">chunk2</span> <span id="LC3" class="line" lang="plaintext">chunk2</span>
<span id="LC4" class="line" lang="plaintext"></span> <span id="LC4" class="line" lang="plaintext"></span>
@ -1051,7 +1051,7 @@
canonical: "<pre><code>chunk1\n \n chunk2\n</code></pre>\n" canonical: "<pre><code>chunk1\n \n chunk2\n</code></pre>\n"
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-3:12" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">chunk1</span> <pre data-sourcepos="1:5-3:12" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">chunk1</span>
<span id="LC2" class="line" lang="plaintext"> </span> <span id="LC2" class="line" lang="plaintext"> </span>
<span id="LC3" class="line" lang="plaintext"> chunk2</span></code></pre> <span id="LC3" class="line" lang="plaintext"> chunk2</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
@ -1075,7 +1075,7 @@
<p>bar</p> <p>bar</p>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-1:7" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre> <pre data-sourcepos="1:5-1:7" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<p data-sourcepos="2:1-2:3" dir="auto">bar</p> <p data-sourcepos="2:1-2:3" dir="auto">bar</p>
@ -1095,13 +1095,13 @@
<h1 data-sourcepos="1:1-1:9" dir="auto"> <h1 data-sourcepos="1:1-1:9" dir="auto">
<a id="user-content-heading" class="anchor" href="#heading" aria-hidden="true"></a>Heading</h1> <a id="user-content-heading" class="anchor" href="#heading" aria-hidden="true"></a>Heading</h1>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="2:5-2:7" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre> <pre data-sourcepos="2:5-2:7" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<h2 data-sourcepos="3:1-5:7" dir="auto"> <h2 data-sourcepos="3:1-5:7" dir="auto">
<a id="user-content-heading-1" class="anchor" href="#heading-1" aria-hidden="true"></a>Heading</h2> <a id="user-content-heading-1" class="anchor" href="#heading-1" aria-hidden="true"></a>Heading</h2>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="5:5-5:7" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre> <pre data-sourcepos="5:5-5:7" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<hr data-sourcepos="6:1-6:4"> <hr data-sourcepos="6:1-6:4">
@ -1118,7 +1118,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-2:7" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> foo</span> <pre data-sourcepos="1:5-2:7" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> foo</span>
<span id="LC2" class="line" lang="plaintext">bar</span></code></pre> <span id="LC2" class="line" lang="plaintext">bar</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -1131,7 +1131,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="3:5-5:0" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre> <pre data-sourcepos="3:5-5:0" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -1140,7 +1140,7 @@
canonical: "<pre><code>foo \n</code></pre>\n" canonical: "<pre><code>foo \n</code></pre>\n"
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-1:9" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo </span></code></pre> <pre data-sourcepos="1:5-1:9" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo </span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -1152,7 +1152,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-4:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">&lt;</span> <pre data-sourcepos="1:1-4:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">&lt;</span>
<span id="LC2" class="line" lang="plaintext"> &gt;</span></code></pre> <span id="LC2" class="line" lang="plaintext"> &gt;</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -1166,7 +1166,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-4:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">&lt;</span> <pre data-sourcepos="1:1-4:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">&lt;</span>
<span id="LC2" class="line" lang="plaintext"> &gt;</span></code></pre> <span id="LC2" class="line" lang="plaintext"> &gt;</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -1187,7 +1187,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-4:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span> <pre data-sourcepos="1:1-4:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span>
<span id="LC2" class="line" lang="plaintext">~~~</span></code></pre> <span id="LC2" class="line" lang="plaintext">~~~</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -1201,7 +1201,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-4:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span> <pre data-sourcepos="1:1-4:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span>
<span id="LC2" class="line" lang="plaintext">```</span></code></pre> <span id="LC2" class="line" lang="plaintext">```</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -1215,7 +1215,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-4:6" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span> <pre data-sourcepos="1:1-4:6" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span>
<span id="LC2" class="line" lang="plaintext">```</span></code></pre> <span id="LC2" class="line" lang="plaintext">```</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -1229,7 +1229,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-4:4" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span> <pre data-sourcepos="1:1-4:4" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span>
<span id="LC2" class="line" lang="plaintext">~~~</span></code></pre> <span id="LC2" class="line" lang="plaintext">~~~</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -1241,7 +1241,7 @@
<pre><code></code></pre> <pre><code></code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-1:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code></code></pre> <pre data-sourcepos="1:1-1:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -1254,7 +1254,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-4:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"></span> <pre data-sourcepos="1:1-4:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"></span>
<span id="LC2" class="line" lang="plaintext">```</span> <span id="LC2" class="line" lang="plaintext">```</span>
<span id="LC3" class="line" lang="plaintext">aaa</span></code></pre> <span id="LC3" class="line" lang="plaintext">aaa</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
@ -1273,7 +1273,7 @@
static: |- static: |-
<blockquote data-sourcepos="1:1-2:5" dir="auto"> <blockquote data-sourcepos="1:1-2:5" dir="auto">
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:3-3:0" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span></code></pre> <pre data-sourcepos="1:3-3:0" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
</blockquote> </blockquote>
@ -1285,7 +1285,7 @@
canonical: "<pre><code>\n \n</code></pre>\n" canonical: "<pre><code>\n \n</code></pre>\n"
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-4:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"></span> <pre data-sourcepos="1:1-4:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"></span>
<span id="LC2" class="line" lang="plaintext"> </span></code></pre> <span id="LC2" class="line" lang="plaintext"> </span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -1296,7 +1296,7 @@
<pre><code></code></pre> <pre><code></code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-2:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code></code></pre> <pre data-sourcepos="1:1-2:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -1308,7 +1308,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:2-4:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span> <pre data-sourcepos="1:2-4:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span>
<span id="LC2" class="line" lang="plaintext">aaa</span></code></pre> <span id="LC2" class="line" lang="plaintext">aaa</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -1323,7 +1323,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:3-5:5" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span> <pre data-sourcepos="1:3-5:5" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span>
<span id="LC2" class="line" lang="plaintext">aaa</span> <span id="LC2" class="line" lang="plaintext">aaa</span>
<span id="LC3" class="line" lang="plaintext">aaa</span></code></pre> <span id="LC3" class="line" lang="plaintext">aaa</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
@ -1340,7 +1340,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:4-5:6" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span> <pre data-sourcepos="1:4-5:6" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span>
<span id="LC2" class="line" lang="plaintext"> aaa</span> <span id="LC2" class="line" lang="plaintext"> aaa</span>
<span id="LC3" class="line" lang="plaintext">aaa</span></code></pre> <span id="LC3" class="line" lang="plaintext">aaa</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
@ -1357,7 +1357,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-3:7" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">```</span> <pre data-sourcepos="1:5-3:7" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">```</span>
<span id="LC2" class="line" lang="plaintext">aaa</span> <span id="LC2" class="line" lang="plaintext">aaa</span>
<span id="LC3" class="line" lang="plaintext">```</span></code></pre> <span id="LC3" class="line" lang="plaintext">```</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
@ -1372,7 +1372,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-3:5" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span></code></pre> <pre data-sourcepos="1:1-3:5" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -1383,7 +1383,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:4-3:5" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span></code></pre> <pre data-sourcepos="1:4-3:5" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -1395,7 +1395,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-3:7" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span> <pre data-sourcepos="1:1-3:7" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span>
<span id="LC2" class="line" lang="plaintext"> ```</span></code></pre> <span id="LC2" class="line" lang="plaintext"> ```</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -1419,7 +1419,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-3:6" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span> <pre data-sourcepos="1:1-3:6" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span>
<span id="LC2" class="line" lang="plaintext">~~~ ~~</span></code></pre> <span id="LC2" class="line" lang="plaintext">~~~ ~~</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -1435,7 +1435,7 @@
static: |- static: |-
<p data-sourcepos="1:1-1:3" dir="auto">foo</p> <p data-sourcepos="1:1-1:3" dir="auto">foo</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="2:1-4:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">bar</span></code></pre> <pre data-sourcepos="2:1-4:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">bar</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<p data-sourcepos="5:1-5:3" dir="auto">baz</p> <p data-sourcepos="5:1-5:3" dir="auto">baz</p>
@ -1453,7 +1453,7 @@
<h2 data-sourcepos="1:1-3:3" dir="auto"> <h2 data-sourcepos="1:1-3:3" dir="auto">
<a id="user-content-foo" class="anchor" href="#foo" aria-hidden="true"></a>foo</h2> <a id="user-content-foo" class="anchor" href="#foo" aria-hidden="true"></a>foo</h2>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="3:1-5:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">bar</span></code></pre> <pre data-sourcepos="3:1-5:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">bar</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<h1 data-sourcepos="6:1-6:5" dir="auto"> <h1 data-sourcepos="6:1-6:5" dir="auto">
@ -1470,7 +1470,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-5:3" lang="ruby" class="code highlight js-syntax-highlight language-ruby" v-pre="true"><code><span id="LC1" class="line" lang="ruby"><span class="k">def</span> <span class="nf">foo</span><span class="p">(</span><span class="n">x</span><span class="p">)</span></span> <pre data-sourcepos="1:1-5:3" class="code highlight js-syntax-highlight language-ruby" lang="ruby" v-pre="true"><code><span id="LC1" class="line" lang="ruby"><span class="k">def</span> <span class="nf">foo</span><span class="p">(</span><span class="n">x</span><span class="p">)</span></span>
<span id="LC2" class="line" lang="ruby"> <span class="k">return</span> <span class="mi">3</span></span> <span id="LC2" class="line" lang="ruby"> <span class="k">return</span> <span class="mi">3</span></span>
<span id="LC3" class="line" lang="ruby"><span class="k">end</span></span></code></pre> <span id="LC3" class="line" lang="ruby"><span class="k">end</span></span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
@ -1487,7 +1487,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-5:7" lang="ruby" class="code highlight js-syntax-highlight language-ruby" v-pre="true"><code><span id="LC1" class="line" lang="ruby"><span class="k">def</span> <span class="nf">foo</span><span class="p">(</span><span class="n">x</span><span class="p">)</span></span> <pre data-sourcepos="1:1-5:7" class="code highlight js-syntax-highlight language-ruby" lang="ruby" v-pre="true"><code><span id="LC1" class="line" lang="ruby"><span class="k">def</span> <span class="nf">foo</span><span class="p">(</span><span class="n">x</span><span class="p">)</span></span>
<span id="LC2" class="line" lang="ruby"> <span class="k">return</span> <span class="mi">3</span></span> <span id="LC2" class="line" lang="ruby"> <span class="k">return</span> <span class="mi">3</span></span>
<span id="LC3" class="line" lang="ruby"><span class="k">end</span></span></code></pre> <span id="LC3" class="line" lang="ruby"><span class="k">end</span></span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
@ -1501,7 +1501,7 @@
<pre><code class="language-;"></code></pre> <pre><code class="language-;"></code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-2:4" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang=";" v-pre="true"><code></code></pre> <pre data-sourcepos="1:1-2:4" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang=";" v-pre="true"><code></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -1522,7 +1522,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-3:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="aa" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre> <pre data-sourcepos="1:1-3:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="aa" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -1533,7 +1533,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-3:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">``` aaa</span></code></pre> <pre data-sourcepos="1:1-3:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">``` aaa</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -1799,7 +1799,7 @@
<p>okay</p> <p>okay</p>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"></span> <pre class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"></span>
<span id="LC2" class="line" lang="plaintext">import Text.HTML.TagSoup</span> <span id="LC2" class="line" lang="plaintext">import Text.HTML.TagSoup</span>
<span id="LC3" class="line" lang="plaintext"></span> <span id="LC3" class="line" lang="plaintext"></span>
<span id="LC4" class="line" lang="plaintext">main :: IO ()</span> <span id="LC4" class="line" lang="plaintext">main :: IO ()</span>
@ -1989,8 +1989,8 @@
<pre><code>&lt;!-- foo --&gt; <pre><code>&lt;!-- foo --&gt;
</code></pre> </code></pre>
static: " \n<div class=\"gl-relative markdown-code-block js-markdown-code\">\n<pre static: " \n<div class=\"gl-relative markdown-code-block js-markdown-code\">\n<pre
data-sourcepos=\"3:5-3:16\" lang=\"plaintext\" class=\"code highlight js-syntax-highlight data-sourcepos=\"3:5-3:16\" class=\"code highlight js-syntax-highlight language-plaintext\"
language-plaintext\" data-canonical-lang=\"\" v-pre=\"true\"><code><span id=\"LC1\" lang=\"plaintext\" data-canonical-lang=\"\" v-pre=\"true\"><code><span id=\"LC1\"
class=\"line\" lang=\"plaintext\">&lt;!-- foo --&gt;</span></code></pre>\n<copy-code></copy-code>\n</div>" class=\"line\" lang=\"plaintext\">&lt;!-- foo --&gt;</span></code></pre>\n<copy-code></copy-code>\n</div>"
wysiwyg: |- wysiwyg: |-
<pre class="content-editor-code-block undefined code highlight"><code>&lt;!-- foo --&gt;</code></pre> <pre class="content-editor-code-block undefined code highlight"><code>&lt;!-- foo --&gt;</code></pre>
@ -2002,7 +2002,7 @@
static: |2- static: |2-
<div> <div>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="3:5-3:9" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">&lt;div&gt;</span></code></pre> <pre data-sourcepos="3:5-3:9" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">&lt;div&gt;</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
</div> </div>
@ -2113,7 +2113,7 @@
<table dir="auto"> <table dir="auto">
<tr> <tr>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="5:5-8:0" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">&lt;td&gt;</span> <pre data-sourcepos="5:5-8:0" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">&lt;td&gt;</span>
<span id="LC2" class="line" lang="plaintext"> Hi</span> <span id="LC2" class="line" lang="plaintext"> Hi</span>
<span id="LC3" class="line" lang="plaintext">&lt;/td&gt;</span></code></pre> <span id="LC3" class="line" lang="plaintext">&lt;/td&gt;</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
@ -2306,7 +2306,7 @@
<p>[foo]</p> <p>[foo]</p>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-2:0" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">[foo]: /url "title"</span></code></pre> <pre data-sourcepos="1:5-2:0" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">[foo]: /url "title"</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<p data-sourcepos="3:1-3:5" dir="auto">[foo]</p> <p data-sourcepos="3:1-3:5" dir="auto">[foo]</p>
@ -2320,7 +2320,7 @@
<p>[foo]</p> <p>[foo]</p>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-3:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">[foo]: /url</span></code></pre> <pre data-sourcepos="1:1-3:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">[foo]: /url</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<p data-sourcepos="5:1-5:5" dir="auto">[foo]</p> <p data-sourcepos="5:1-5:5" dir="auto">[foo]</p>
@ -2489,7 +2489,7 @@
<p>bbb</p> <p>bbb</p>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-1:7" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span></code></pre> <pre data-sourcepos="1:5-1:7" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">aaa</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<p data-sourcepos="2:1-2:3" dir="auto">bbb</p> <p data-sourcepos="2:1-2:3" dir="auto">bbb</p>
@ -2836,7 +2836,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-3:9" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">&gt; # Foo</span> <pre data-sourcepos="1:5-3:9" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">&gt; # Foo</span>
<span id="LC2" class="line" lang="plaintext">&gt; bar</span> <span id="LC2" class="line" lang="plaintext">&gt; bar</span>
<span id="LC3" class="line" lang="plaintext">&gt; baz</span></code></pre> <span id="LC3" class="line" lang="plaintext">&gt; baz</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
@ -2926,12 +2926,12 @@
static: |- static: |-
<blockquote data-sourcepos="1:1-1:9" dir="auto"> <blockquote data-sourcepos="1:1-1:9" dir="auto">
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:7-1:9" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre> <pre data-sourcepos="1:7-1:9" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
</blockquote> </blockquote>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="2:5-2:7" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">bar</span></code></pre> <pre data-sourcepos="2:5-2:7" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">bar</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -2947,13 +2947,13 @@
static: |- static: |-
<blockquote data-sourcepos="1:1-1:5" dir="auto"> <blockquote data-sourcepos="1:1-1:5" dir="auto">
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:3-2:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code></code></pre> <pre data-sourcepos="1:3-2:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
</blockquote> </blockquote>
<p data-sourcepos="2:1-2:3" dir="auto">foo</p> <p data-sourcepos="2:1-2:3" dir="auto">foo</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="3:1-3:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code></code></pre> <pre data-sourcepos="3:1-3:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -3184,7 +3184,7 @@
static: |- static: |-
<blockquote data-sourcepos="1:1-1:10" dir="auto"> <blockquote data-sourcepos="1:1-1:10" dir="auto">
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:7-1:10" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">code</span></code></pre> <pre data-sourcepos="1:7-1:10" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">code</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
</blockquote> </blockquote>
@ -3207,7 +3207,7 @@
<p data-sourcepos="1:1-2:15" dir="auto">A paragraph <p data-sourcepos="1:1-2:15" dir="auto">A paragraph
with two lines.</p> with two lines.</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="4:5-5:0" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">indented code</span></code></pre> <pre data-sourcepos="4:5-5:0" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">indented code</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<blockquote data-sourcepos="6:1-6:16" dir="auto"> <blockquote data-sourcepos="6:1-6:16" dir="auto">
@ -3237,7 +3237,7 @@
<p data-sourcepos="1:5-2:19">A paragraph <p data-sourcepos="1:5-2:19">A paragraph
with two lines.</p> with two lines.</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="4:9-5:0" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">indented code</span></code></pre> <pre data-sourcepos="4:9-5:0" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">indented code</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<blockquote data-sourcepos="6:5-6:20"> <blockquote data-sourcepos="6:5-6:20">
@ -3291,7 +3291,7 @@
<li data-sourcepos="1:2-2:0">one</li> <li data-sourcepos="1:2-2:0">one</li>
</ul> </ul>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="3:5-3:8" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> two</span></code></pre> <pre data-sourcepos="3:5-3:8" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> two</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -3405,7 +3405,7 @@
<li data-sourcepos="1:1-9:9"> <li data-sourcepos="1:1-9:9">
<p data-sourcepos="1:5-1:7">foo</p> <p data-sourcepos="1:5-1:7">foo</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="3:5-5:7" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">bar</span></code></pre> <pre data-sourcepos="3:5-5:7" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">bar</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<p data-sourcepos="7:5-7:7">baz</p> <p data-sourcepos="7:5-7:7">baz</p>
@ -3433,7 +3433,7 @@
<li data-sourcepos="1:1-6:9"> <li data-sourcepos="1:1-6:9">
<p data-sourcepos="1:3-1:5">Foo</p> <p data-sourcepos="1:3-1:5">Foo</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="3:7-6:9" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">bar</span> <pre data-sourcepos="3:7-6:9" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">bar</span>
<span id="LC2" class="line" lang="plaintext"></span> <span id="LC2" class="line" lang="plaintext"></span>
<span id="LC3" class="line" lang="plaintext"></span> <span id="LC3" class="line" lang="plaintext"></span>
<span id="LC4" class="line" lang="plaintext">baz</span></code></pre> <span id="LC4" class="line" lang="plaintext">baz</span></code></pre>
@ -3507,7 +3507,7 @@
<li data-sourcepos="1:1-3:9"> <li data-sourcepos="1:1-3:9">
<p data-sourcepos="1:3-1:5">foo</p> <p data-sourcepos="1:3-1:5">foo</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="3:7-3:9" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">bar</span></code></pre> <pre data-sourcepos="3:7-3:9" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">bar</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
</li> </li>
@ -3528,7 +3528,7 @@
<li data-sourcepos="1:3-3:14"> <li data-sourcepos="1:3-3:14">
<p data-sourcepos="1:8-1:10">foo</p> <p data-sourcepos="1:8-1:10">foo</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="3:12-3:14" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">bar</span></code></pre> <pre data-sourcepos="3:12-3:14" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">bar</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
</li> </li>
@ -3544,12 +3544,12 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-2:0" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">indented code</span></code></pre> <pre data-sourcepos="1:5-2:0" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">indented code</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<p data-sourcepos="3:1-3:9" dir="auto">paragraph</p> <p data-sourcepos="3:1-3:9" dir="auto">paragraph</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="5:5-5:13" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">more code</span></code></pre> <pre data-sourcepos="5:5-5:13" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">more code</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -3571,12 +3571,12 @@
<ol data-sourcepos="1:1-5:16" dir="auto"> <ol data-sourcepos="1:1-5:16" dir="auto">
<li data-sourcepos="1:1-5:16"> <li data-sourcepos="1:1-5:16">
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:8-2:0" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">indented code</span></code></pre> <pre data-sourcepos="1:8-2:0" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">indented code</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<p data-sourcepos="3:4-3:12">paragraph</p> <p data-sourcepos="3:4-3:12">paragraph</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="5:8-5:16" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">more code</span></code></pre> <pre data-sourcepos="5:8-5:16" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">more code</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
</li> </li>
@ -3598,12 +3598,12 @@
<ol data-sourcepos="1:1-5:16" dir="auto"> <ol data-sourcepos="1:1-5:16" dir="auto">
<li data-sourcepos="1:1-5:16"> <li data-sourcepos="1:1-5:16">
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:8-2:0" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> indented code</span></code></pre> <pre data-sourcepos="1:8-2:0" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> indented code</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<p data-sourcepos="3:4-3:12">paragraph</p> <p data-sourcepos="3:4-3:12">paragraph</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="5:8-5:16" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">more code</span></code></pre> <pre data-sourcepos="5:8-5:16" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">more code</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
</li> </li>
@ -3669,13 +3669,13 @@
<li data-sourcepos="1:1-2:5">foo</li> <li data-sourcepos="1:1-2:5">foo</li>
<li data-sourcepos="3:1-6:5"> <li data-sourcepos="3:1-6:5">
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="4:3-6:5" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">bar</span></code></pre> <pre data-sourcepos="4:3-6:5" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">bar</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
</li> </li>
<li data-sourcepos="7:1-8:9"> <li data-sourcepos="7:1-8:9">
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="8:7-8:9" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">baz</span></code></pre> <pre data-sourcepos="8:7-8:9" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">baz</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
</li> </li>
@ -3803,7 +3803,7 @@
<p data-sourcepos="1:6-2:20">A paragraph <p data-sourcepos="1:6-2:20">A paragraph
with two lines.</p> with two lines.</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="4:10-5:0" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">indented code</span></code></pre> <pre data-sourcepos="4:10-5:0" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">indented code</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<blockquote data-sourcepos="6:6-6:21"> <blockquote data-sourcepos="6:6-6:21">
@ -3833,7 +3833,7 @@
<p data-sourcepos="1:7-2:21">A paragraph <p data-sourcepos="1:7-2:21">A paragraph
with two lines.</p> with two lines.</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="4:11-5:0" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">indented code</span></code></pre> <pre data-sourcepos="4:11-5:0" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">indented code</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<blockquote data-sourcepos="6:7-6:22"> <blockquote data-sourcepos="6:7-6:22">
@ -3863,7 +3863,7 @@
<p data-sourcepos="1:8-2:22">A paragraph <p data-sourcepos="1:8-2:22">A paragraph
with two lines.</p> with two lines.</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="4:12-5:0" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">indented code</span></code></pre> <pre data-sourcepos="4:12-5:0" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">indented code</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<blockquote data-sourcepos="6:8-6:23"> <blockquote data-sourcepos="6:8-6:23">
@ -3885,7 +3885,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-6:24" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">1. A paragraph</span> <pre data-sourcepos="1:5-6:24" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">1. A paragraph</span>
<span id="LC2" class="line" lang="plaintext"> with two lines.</span> <span id="LC2" class="line" lang="plaintext"> with two lines.</span>
<span id="LC3" class="line" lang="plaintext"></span> <span id="LC3" class="line" lang="plaintext"></span>
<span id="LC4" class="line" lang="plaintext"> indented code</span> <span id="LC4" class="line" lang="plaintext"> indented code</span>
@ -3919,7 +3919,7 @@
<p data-sourcepos="1:7-2:15">A paragraph <p data-sourcepos="1:7-2:15">A paragraph
with two lines.</p> with two lines.</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="4:11-5:0" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">indented code</span></code></pre> <pre data-sourcepos="4:11-5:0" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">indented code</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<blockquote data-sourcepos="6:7-6:22"> <blockquote data-sourcepos="6:7-6:22">
@ -4345,7 +4345,7 @@
</ul> </ul>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="9:5-9:8" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">code</span></code></pre> <pre data-sourcepos="9:5-9:8" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">code</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -4443,7 +4443,7 @@
</li> </li>
</ol> </ol>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="5:5-5:8" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">3. c</span></code></pre> <pre data-sourcepos="5:5-5:8" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">3. c</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -4573,7 +4573,7 @@
<li data-sourcepos="1:1-1:3">a</li> <li data-sourcepos="1:1-1:3">a</li>
<li data-sourcepos="2:1-6:5"> <li data-sourcepos="2:1-6:5">
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="2:3-6:5" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">b</span> <pre data-sourcepos="2:3-6:5" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">b</span>
<span id="LC2" class="line" lang="plaintext"></span> <span id="LC2" class="line" lang="plaintext"></span>
<span id="LC3" class="line" lang="plaintext"></span></code></pre> <span id="LC3" class="line" lang="plaintext"></span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
@ -4650,7 +4650,7 @@
<p data-sourcepos="2:5-2:5">b</p> <p data-sourcepos="2:5-2:5">b</p>
</blockquote> </blockquote>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="3:3-5:5" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">c</span></code></pre> <pre data-sourcepos="3:3-5:5" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">c</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
</li> </li>
@ -4701,7 +4701,7 @@
<ol data-sourcepos="1:1-5:6" dir="auto"> <ol data-sourcepos="1:1-5:6" dir="auto">
<li data-sourcepos="1:1-5:6"> <li data-sourcepos="1:1-5:6">
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:4-3:6" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre> <pre data-sourcepos="1:4-3:6" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<p data-sourcepos="5:4-5:6">bar</p> <p data-sourcepos="5:4-5:6">bar</p>
@ -4848,7 +4848,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-1:8" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">\[\]</span></code></pre> <pre data-sourcepos="1:5-1:8" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">\[\]</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -4859,7 +4859,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-3:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">\[\]</span></code></pre> <pre data-sourcepos="1:1-3:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">\[\]</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -4899,7 +4899,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-3:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="foo+bar" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre> <pre data-sourcepos="1:1-3:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="foo+bar" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -4989,7 +4989,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-3:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="föö" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre> <pre data-sourcepos="1:1-3:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="föö" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">foo</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -5007,7 +5007,7 @@
</code></pre> </code></pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:5-1:18" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">f&amp;ouml;f&amp;ouml;</span></code></pre> <pre data-sourcepos="1:5-1:18" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">f&amp;ouml;f&amp;ouml;</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -7741,7 +7741,7 @@
</pre> </pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-3:3" lang="yaml" class="code highlight js-syntax-highlight language-yaml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="yaml"><span class="na">title</span><span class="pi">:</span> <span class="s">YAML front matter</span></span></code></pre> <pre data-sourcepos="1:1-3:3" class="code highlight js-syntax-highlight language-yaml" lang="yaml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="yaml"><span class="na">title</span><span class="pi">:</span> <span class="s">YAML front matter</span></span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -7755,7 +7755,7 @@
</pre> </pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-3:3" lang="toml" class="code highlight js-syntax-highlight language-toml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="toml"><span class="err">title:</span> <span class="err">TOML</span> <span class="err">front</span> <span class="err">matter</span></span></code></pre> <pre data-sourcepos="1:1-3:3" class="code highlight js-syntax-highlight language-toml" lang="toml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="toml"><span class="err">title:</span> <span class="err">TOML</span> <span class="err">front</span> <span class="err">matter</span></span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
wysiwyg: |- wysiwyg: |-
@ -7771,7 +7771,7 @@
</pre> </pre>
static: |- static: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-5:3" lang="json" class="code highlight js-syntax-highlight language-json" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="json"><span class="p">{</span></span> <pre data-sourcepos="1:1-5:3" class="code highlight js-syntax-highlight language-json" lang="json" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="json"><span class="p">{</span></span>
<span id="LC2" class="line" lang="json"><span class="w"> </span><span class="nl">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"JSON front matter"</span></span> <span id="LC2" class="line" lang="json"><span class="w"> </span><span class="nl">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"JSON front matter"</span></span>
<span id="LC3" class="line" lang="json"><span class="p">}</span></span></code></pre> <span id="LC3" class="line" lang="json"><span class="p">}</span></span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-4:3" lang="yaml" class="code highlight js-syntax-highlight language-yaml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="yaml"><span class="na">title</span><span class="pi">:</span> <span class="s">GitLab Flavored Markdown (GLFM) Spec</span></span> <pre data-sourcepos="1:1-4:3" class="code highlight js-syntax-highlight language-yaml" lang="yaml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="yaml"><span class="na">title</span><span class="pi">:</span> <span class="s">GitLab Flavored Markdown (GLFM) Spec</span></span>
<span id="LC2" class="line" lang="yaml"><span class="na">version</span><span class="pi">:</span> <span class="s">alpha</span></span></code></pre> <span id="LC2" class="line" lang="yaml"><span class="na">version</span><span class="pi">:</span> <span class="s">alpha</span></span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -20,7 +20,7 @@ examples may be split into multiple top-level headings in the future.</p>
<p data-sourcepos="22:1-23:143" dir="auto">See <p data-sourcepos="22:1-23:143" dir="auto">See
<a href="https://docs.gitlab.com/ee/user/markdown.html#footnotes" rel="nofollow noreferrer noopener" target="_blank">the footnotes section of the user-facing documentation for GitLab Flavored Markdown</a>.</p> <a href="https://docs.gitlab.com/ee/user/markdown.html#footnotes" rel="nofollow noreferrer noopener" target="_blank">the footnotes section of the user-facing documentation for GitLab Flavored Markdown</a>.</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="25:1-49:32" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">footnote reference tag [^fortytwo]</span> <pre data-sourcepos="25:1-49:32" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">footnote reference tag [^fortytwo]</span>
<span id="LC2" class="line" lang="plaintext"></span> <span id="LC2" class="line" lang="plaintext"></span>
<span id="LC3" class="line" lang="plaintext">[^fortytwo]: footnote text</span> <span id="LC3" class="line" lang="plaintext">[^fortytwo]: footnote text</span>
<span id="LC4" class="line" lang="plaintext">.</span> <span id="LC4" class="line" lang="plaintext">.</span>
@ -57,7 +57,7 @@ GitLab Flavored Markdown specification.</p>
<p data-sourcepos="63:1-63:80" dir="auto">The following are some basic examples; more examples may be added in the future.</p> <p data-sourcepos="63:1-63:80" dir="auto">The following are some basic examples; more examples may be added in the future.</p>
<p data-sourcepos="65:1-65:16" dir="auto">Incomplete task:</p> <p data-sourcepos="65:1-65:16" dir="auto">Incomplete task:</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="67:1-77:32" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">- [ ] incomplete</span> <pre data-sourcepos="67:1-77:32" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">- [ ] incomplete</span>
<span id="LC2" class="line" lang="plaintext">.</span> <span id="LC2" class="line" lang="plaintext">.</span>
<span id="LC3" class="line" lang="plaintext">&lt;ul&gt;</span> <span id="LC3" class="line" lang="plaintext">&lt;ul&gt;</span>
<span id="LC4" class="line" lang="plaintext">&lt;li&gt;</span> <span id="LC4" class="line" lang="plaintext">&lt;li&gt;</span>
@ -70,7 +70,7 @@ GitLab Flavored Markdown specification.</p>
</div> </div>
<p data-sourcepos="79:1-79:15" dir="auto">Completed task:</p> <p data-sourcepos="79:1-79:15" dir="auto">Completed task:</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="81:1-91:32" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">- [x] completed</span> <pre data-sourcepos="81:1-91:32" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">- [x] completed</span>
<span id="LC2" class="line" lang="plaintext">.</span> <span id="LC2" class="line" lang="plaintext">.</span>
<span id="LC3" class="line" lang="plaintext">&lt;ul&gt;</span> <span id="LC3" class="line" lang="plaintext">&lt;ul&gt;</span>
<span id="LC4" class="line" lang="plaintext">&lt;li&gt;</span> <span id="LC4" class="line" lang="plaintext">&lt;li&gt;</span>
@ -83,7 +83,7 @@ GitLab Flavored Markdown specification.</p>
</div> </div>
<p data-sourcepos="93:1-93:18" dir="auto">Inapplicable task:</p> <p data-sourcepos="93:1-93:18" dir="auto">Inapplicable task:</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="95:1-107:32" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">- [~] inapplicable</span> <pre data-sourcepos="95:1-107:32" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">- [~] inapplicable</span>
<span id="LC2" class="line" lang="plaintext">.</span> <span id="LC2" class="line" lang="plaintext">.</span>
<span id="LC3" class="line" lang="plaintext">&lt;ul&gt;</span> <span id="LC3" class="line" lang="plaintext">&lt;ul&gt;</span>
<span id="LC4" class="line" lang="plaintext">&lt;li&gt;</span> <span id="LC4" class="line" lang="plaintext">&lt;li&gt;</span>
@ -99,7 +99,7 @@ GitLab Flavored Markdown specification.</p>
<p data-sourcepos="109:1-110:50" dir="auto">Inapplicable task in a "loose" list. Note that the <code>&lt;del&gt;</code> tag is not applied to the <p data-sourcepos="109:1-110:50" dir="auto">Inapplicable task in a "loose" list. Note that the <code>&lt;del&gt;</code> tag is not applied to the
loose text; it has strikethrough applied with CSS.</p> loose text; it has strikethrough applied with CSS.</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="112:1-131:32" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">- [~] inapplicable</span> <pre data-sourcepos="112:1-131:32" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">- [~] inapplicable</span>
<span id="LC2" class="line" lang="plaintext"></span> <span id="LC2" class="line" lang="plaintext"></span>
<span id="LC3" class="line" lang="plaintext"> text in loose list</span> <span id="LC3" class="line" lang="plaintext"> text in loose list</span>
<span id="LC4" class="line" lang="plaintext">.</span> <span id="LC4" class="line" lang="plaintext">.</span>
@ -127,7 +127,7 @@ loose text; it has strikethrough applied with CSS.</p>
This data can be used by static site generators like Jekyll, Hugo, and many other applications.</p> This data can be used by static site generators like Jekyll, Hugo, and many other applications.</p>
<p data-sourcepos="141:1-141:18" dir="auto">YAML front matter:</p> <p data-sourcepos="141:1-141:18" dir="auto">YAML front matter:</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="143:1-153:32" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">---</span> <pre data-sourcepos="143:1-153:32" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">---</span>
<span id="LC2" class="line" lang="plaintext">title: YAML front matter</span> <span id="LC2" class="line" lang="plaintext">title: YAML front matter</span>
<span id="LC3" class="line" lang="plaintext">---</span> <span id="LC3" class="line" lang="plaintext">---</span>
<span id="LC4" class="line" lang="plaintext">.</span> <span id="LC4" class="line" lang="plaintext">.</span>
@ -140,7 +140,7 @@ This data can be used by static site generators like Jekyll, Hugo, and many othe
</div> </div>
<p data-sourcepos="155:1-155:18" dir="auto">TOML front matter:</p> <p data-sourcepos="155:1-155:18" dir="auto">TOML front matter:</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="157:1-167:32" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">+++</span> <pre data-sourcepos="157:1-167:32" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">+++</span>
<span id="LC2" class="line" lang="plaintext">title: TOML front matter</span> <span id="LC2" class="line" lang="plaintext">title: TOML front matter</span>
<span id="LC3" class="line" lang="plaintext">+++</span> <span id="LC3" class="line" lang="plaintext">+++</span>
<span id="LC4" class="line" lang="plaintext">.</span> <span id="LC4" class="line" lang="plaintext">.</span>
@ -153,7 +153,7 @@ This data can be used by static site generators like Jekyll, Hugo, and many othe
</div> </div>
<p data-sourcepos="169:1-169:18" dir="auto">JSON front matter:</p> <p data-sourcepos="169:1-169:18" dir="auto">JSON front matter:</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="171:1-185:32" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">;;;</span> <pre data-sourcepos="171:1-185:32" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">;;;</span>
<span id="LC2" class="line" lang="plaintext">{</span> <span id="LC2" class="line" lang="plaintext">{</span>
<span id="LC3" class="line" lang="plaintext"> "title": "JSON front matter"</span> <span id="LC3" class="line" lang="plaintext"> "title": "JSON front matter"</span>
<span id="LC4" class="line" lang="plaintext">}</span> <span id="LC4" class="line" lang="plaintext">}</span>
@ -170,7 +170,7 @@ This data can be used by static site generators like Jekyll, Hugo, and many othe
</div> </div>
<p data-sourcepos="187:1-187:66" dir="auto">Front matter blocks should be inserted at the top of the document:</p> <p data-sourcepos="187:1-187:66" dir="auto">Front matter blocks should be inserted at the top of the document:</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="189:1-199:32" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">text</span> <pre data-sourcepos="189:1-199:32" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">text</span>
<span id="LC2" class="line" lang="plaintext"></span> <span id="LC2" class="line" lang="plaintext"></span>
<span id="LC3" class="line" lang="plaintext">---</span> <span id="LC3" class="line" lang="plaintext">---</span>
<span id="LC4" class="line" lang="plaintext">title: YAML front matter</span> <span id="LC4" class="line" lang="plaintext">title: YAML front matter</span>
@ -183,7 +183,7 @@ This data can be used by static site generators like Jekyll, Hugo, and many othe
</div> </div>
<p data-sourcepos="201:1-201:74" dir="auto">Front matter block delimiters shouldnt be preceded by space characters:</p> <p data-sourcepos="201:1-201:74" dir="auto">Front matter block delimiters shouldnt be preceded by space characters:</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="203:1-210:32" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> ---</span> <pre data-sourcepos="203:1-210:32" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> ---</span>
<span id="LC2" class="line" lang="plaintext">title: YAML front matter</span> <span id="LC2" class="line" lang="plaintext">title: YAML front matter</span>
<span id="LC3" class="line" lang="plaintext">---</span> <span id="LC3" class="line" lang="plaintext">---</span>
<span id="LC4" class="line" lang="plaintext">.</span> <span id="LC4" class="line" lang="plaintext">.</span>
@ -209,7 +209,7 @@ Add either the <code>[[_TOC_]]</code> or </p><ul class="section-nav">
</li> </li>
</ul> tag on its own line. </ul> tag on its own line.
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="221:1-238:32" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">[TOC]</span> <pre data-sourcepos="221:1-238:32" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">[TOC]</span>
<span id="LC2" class="line" lang="plaintext"></span> <span id="LC2" class="line" lang="plaintext"></span>
<span id="LC3" class="line" lang="plaintext"># Heading 1</span> <span id="LC3" class="line" lang="plaintext"># Heading 1</span>
<span id="LC4" class="line" lang="plaintext"></span> <span id="LC4" class="line" lang="plaintext"></span>
@ -228,7 +228,7 @@ Add either the <code>[[_TOC_]]</code> or </p><ul class="section-nav">
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="240:1-257:32" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">[[_TOC_]]</span> <pre data-sourcepos="240:1-257:32" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">[[_TOC_]]</span>
<span id="LC2" class="line" lang="plaintext"></span> <span id="LC2" class="line" lang="plaintext"></span>
<span id="LC3" class="line" lang="plaintext"># Heading 1</span> <span id="LC3" class="line" lang="plaintext"># Heading 1</span>
<span id="LC4" class="line" lang="plaintext"></span> <span id="LC4" class="line" lang="plaintext"></span>
@ -249,7 +249,7 @@ Add either the <code>[[_TOC_]]</code> or </p><ul class="section-nav">
<p data-sourcepos="259:1-260:5" dir="auto">A table of contents is a block element. It should preceded and followed by a blank <p data-sourcepos="259:1-260:5" dir="auto">A table of contents is a block element. It should preceded and followed by a blank
line.</p> line.</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="262:1-271:32" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">[[_TOC_]]</span> <pre data-sourcepos="262:1-271:32" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">[[_TOC_]]</span>
<span id="LC2" class="line" lang="plaintext">text</span> <span id="LC2" class="line" lang="plaintext">text</span>
<span id="LC3" class="line" lang="plaintext"></span> <span id="LC3" class="line" lang="plaintext"></span>
<span id="LC4" class="line" lang="plaintext">text</span> <span id="LC4" class="line" lang="plaintext">text</span>
@ -261,7 +261,7 @@ line.</p>
</div> </div>
<p data-sourcepos="273:1-273:60" dir="auto">A table of contents can be indented with up to three spaces.</p> <p data-sourcepos="273:1-273:60" dir="auto">A table of contents can be indented with up to three spaces.</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="275:1-286:32" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> [[_TOC_]]</span> <pre data-sourcepos="275:1-286:32" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> [[_TOC_]]</span>
<span id="LC2" class="line" lang="plaintext"></span> <span id="LC2" class="line" lang="plaintext"></span>
<span id="LC3" class="line" lang="plaintext"># Heading 1</span> <span id="LC3" class="line" lang="plaintext"># Heading 1</span>
<span id="LC4" class="line" lang="plaintext">.</span> <span id="LC4" class="line" lang="plaintext">.</span>

View File

@ -186,6 +186,7 @@ module API
mount ::API::Features mount ::API::Features
mount ::API::FreezePeriods mount ::API::FreezePeriods
mount ::API::Keys mount ::API::Keys
mount ::API::ImportBitbucketServer
mount ::API::Metadata mount ::API::Metadata
mount ::API::MergeRequestDiffs mount ::API::MergeRequestDiffs
mount ::API::ProjectHooks mount ::API::ProjectHooks
@ -260,7 +261,6 @@ module API
mount ::API::GroupVariables mount ::API::GroupVariables
mount ::API::Groups mount ::API::Groups
mount ::API::HelmPackages mount ::API::HelmPackages
mount ::API::ImportBitbucketServer
mount ::API::ImportGithub mount ::API::ImportGithub
mount ::API::Integrations mount ::API::Integrations
mount ::API::Integrations::JiraConnect::Subscriptions mount ::API::Integrations::JiraConnect::Subscriptions

View File

@ -22,6 +22,14 @@ module API
desc 'Import a BitBucket Server repository' do desc 'Import a BitBucket Server repository' do
detail 'This feature was introduced in GitLab 13.2.' detail 'This feature was introduced in GitLab 13.2.'
success ::ProjectEntity success ::ProjectEntity
failure [
{ code: 400, message: 'Bad request' },
{ code: 401, message: 'Unauthorized' },
{ code: 403, message: 'Forbidden' },
{ code: 422, message: 'Unprocessable entity' },
{ code: 503, message: 'Service unavailable' }
]
tags ['project_import_bitbucket']
end end
params do params do

View File

@ -10,7 +10,7 @@ module Banzai
# HTML filter that implements our math syntax, adding class="code math" # HTML filter that implements our math syntax, adding class="code math"
# #
class MathFilter < HTML::Pipeline::Filter class MathFilter < HTML::Pipeline::Filter
CSS_MATH = 'pre[lang="math"] > code' CSS_MATH = 'pre.code.language-math'
XPATH_MATH = Gitlab::Utils::Nokogiri.css_to_xpath(CSS_MATH).freeze XPATH_MATH = Gitlab::Utils::Nokogiri.css_to_xpath(CSS_MATH).freeze
CSS_CODE = 'code' CSS_CODE = 'code'
XPATH_CODE = Gitlab::Utils::Nokogiri.css_to_xpath(CSS_CODE).freeze XPATH_CODE = Gitlab::Utils::Nokogiri.css_to_xpath(CSS_CODE).freeze
@ -125,10 +125,9 @@ module Banzai
# corresponds to the "```math...```" syntax # corresponds to the "```math...```" syntax
def process_math_codeblock def process_math_codeblock
doc.xpath(XPATH_MATH).each do |node| doc.xpath(XPATH_MATH).each do |el|
pre_node = node.parent el[STYLE_ATTRIBUTE] = 'display'
pre_node[STYLE_ATTRIBUTE] = 'display' el[:class] += " #{TAG_CLASS}"
pre_node[:class] = TAG_CLASS
end end
end end

View File

@ -14,9 +14,8 @@ module Banzai
LANG_PARAMS_DELIMITER = ':' LANG_PARAMS_DELIMITER = ':'
LANG_PARAMS_ATTR = 'data-lang-params' LANG_PARAMS_ATTR = 'data-lang-params'
CSS_CLASSES = 'code highlight js-syntax-highlight'
CSS = 'pre:not([data-kroki-style]) > code:only-child' CSS = 'pre:not([data-math-style]):not([data-mermaid-style]):not([data-kroki-style]) > code:only-child'
XPATH = Gitlab::Utils::Nokogiri.css_to_xpath(CSS).freeze XPATH = Gitlab::Utils::Nokogiri.css_to_xpath(CSS).freeze
def call def call
@ -28,7 +27,9 @@ module Banzai
end end
def highlight_node(node) def highlight_node(node)
css_classes = +'code highlight js-syntax-highlight'
lang, lang_params = parse_lang_params(node) lang, lang_params = parse_lang_params(node)
sourcepos = node.parent.attr('data-sourcepos')
retried = false retried = false
if use_rouge?(lang) if use_rouge?(lang)
@ -41,6 +42,7 @@ module Banzai
begin begin
code = Rouge::Formatters::HTMLGitlab.format(lex(lexer, node.text), tag: language) code = Rouge::Formatters::HTMLGitlab.format(lex(lexer, node.text), tag: language)
css_classes << " language-#{language}" if language
rescue StandardError rescue StandardError
# Gracefully handle syntax highlighter bugs/errors to ensure users can # Gracefully handle syntax highlighter bugs/errors to ensure users can
# still access an issue/comment/etc. First, retry with the plain text # still access an issue/comment/etc. First, retry with the plain text
@ -55,26 +57,16 @@ module Banzai
retry retry
end end
# maintain existing attributes already added. e.g math and mermaid nodes sourcepos_attr = sourcepos ? "data-sourcepos=\"#{escape_once(sourcepos)}\"" : ''
node.children = code
pre_node = node.parent
# ensure there are no extra children, such as a text node that might highlighted = %(<div class="gl-relative markdown-code-block js-markdown-code"><pre #{sourcepos_attr} class="#{css_classes}"
# show up from an XSS attack lang="#{language}"
pre_node.children = node #{lang != language ? "data-canonical-lang=\"#{escape_once(lang)}\"" : ""}
#{lang_params}
pre_node[:lang] = language v-pre="true"><code>#{code}</code></pre><copy-code></copy-code></div>)
pre_node.add_class(CSS_CLASSES)
pre_node.add_class("language-#{language}") if language
pre_node.set_attribute('data-canonical-lang', escape_once(lang)) if lang != language
pre_node.set_attribute(LANG_PARAMS_ATTR, escape_once(lang_params)) if lang_params.present?
pre_node.set_attribute('v-pre', 'true')
pre_node.remove_attribute('data-meta')
highlighted = %(<div class="gl-relative markdown-code-block js-markdown-code">#{pre_node.to_html}<copy-code></copy-code></div>)
# Extracted to a method to measure it # Extracted to a method to measure it
replace_pre_element(pre_node, highlighted) replace_parent_pre_element(node, highlighted)
end end
private private
@ -102,8 +94,9 @@ module Banzai
language, language_params = language.split(LANG_PARAMS_DELIMITER, 2) language, language_params = language.split(LANG_PARAMS_DELIMITER, 2)
language_params = [node.attr('data-meta'), language_params].compact.join(' ') language_params = [node.attr('data-meta'), language_params].compact.join(' ')
formatted_language_params = format_language_params(language_params)
[language, language_params] [language, formatted_language_params]
end end
# Separate method so it can be instrumented. # Separate method so it can be instrumented.
@ -115,14 +108,20 @@ module Banzai
(Rouge::Lexer.find(language) || Rouge::Lexers::PlainText).new (Rouge::Lexer.find(language) || Rouge::Lexers::PlainText).new
end end
# Replace the `pre` element with the entire highlighted block # Replace the parent `pre` element with the entire highlighted block
def replace_pre_element(pre_node, highlighted) def replace_parent_pre_element(node, highlighted)
pre_node.replace(highlighted) node.parent.replace(highlighted)
end end
def use_rouge?(language) def use_rouge?(language)
(%w(math suggestion) + ::AsciidoctorExtensions::Kroki::SUPPORTED_DIAGRAM_NAMES).exclude?(language) (%w(math suggestion) + ::AsciidoctorExtensions::Kroki::SUPPORTED_DIAGRAM_NAMES).exclude?(language)
end end
def format_language_params(language_params)
return if language_params.blank?
%(#{LANG_PARAMS_ATTR}="#{escape_once(language_params)}")
end
end end
end end
end end

View File

@ -7,13 +7,13 @@ module Banzai
FilterArray[ FilterArray[
Filter::AsciiDocSanitizationFilter, Filter::AsciiDocSanitizationFilter,
Filter::AssetProxyFilter, Filter::AssetProxyFilter,
Filter::SyntaxHighlightFilter,
Filter::ExternalLinkFilter, Filter::ExternalLinkFilter,
Filter::PlantumlFilter, Filter::PlantumlFilter,
Filter::ColorFilter, Filter::ColorFilter,
Filter::ImageLazyLoadFilter, Filter::ImageLazyLoadFilter,
Filter::ImageLinkFilter, Filter::ImageLinkFilter,
Filter::WikiLinkFilter, Filter::WikiLinkFilter,
Filter::SyntaxHighlightFilter,
Filter::AsciiDocPostProcessingFilter Filter::AsciiDocPostProcessingFilter
] ]
end end

View File

@ -17,6 +17,7 @@ module Banzai
Filter::SanitizationFilter, Filter::SanitizationFilter,
Filter::KrokiFilter, Filter::KrokiFilter,
Filter::AssetProxyFilter, Filter::AssetProxyFilter,
Filter::SyntaxHighlightFilter,
Filter::MathFilter, Filter::MathFilter,
Filter::ColorFilter, Filter::ColorFilter,
Filter::MermaidFilter, Filter::MermaidFilter,
@ -36,8 +37,7 @@ module Banzai
Filter::CustomEmojiFilter, Filter::CustomEmojiFilter,
Filter::TaskListFilter, Filter::TaskListFilter,
Filter::InlineDiffFilter, Filter::InlineDiffFilter,
Filter::SetDirectionFilter, Filter::SetDirectionFilter
Filter::SyntaxHighlightFilter
] ]
end end

View File

@ -43580,6 +43580,9 @@ msgstr ""
msgid "UsageQuota|No CI minutes usage data available." msgid "UsageQuota|No CI minutes usage data available."
msgstr "" msgstr ""
msgid "UsageQuota|No projects to display."
msgstr ""
msgid "UsageQuota|Packages" msgid "UsageQuota|Packages"
msgstr "" msgstr ""
@ -43610,6 +43613,9 @@ msgstr ""
msgid "UsageQuota|Repository" msgid "UsageQuota|Repository"
msgstr "" msgstr ""
msgid "UsageQuota|Search"
msgstr ""
msgid "UsageQuota|Seats" msgid "UsageQuota|Seats"
msgstr "" msgstr ""

View File

@ -297,7 +297,7 @@
``` ```
html: |- html: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-3:3" lang="javascript" class="code highlight js-syntax-highlight language-javascript" v-pre="true"><code><span id="LC1" class="line" lang="javascript"> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">hello world</span><span class="dl">'</span><span class="p">)</span></span></code></pre> <pre data-sourcepos="1:1-3:3" class="code highlight js-syntax-highlight language-javascript" lang="javascript" v-pre="true"><code><span id="LC1" class="line" lang="javascript"> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">hello world</span><span class="dl">'</span><span class="p">)</span></span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -308,7 +308,7 @@
``` ```
html: |- html: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-3:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> plaintext</span></code></pre> <pre data-sourcepos="1:1-3:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> plaintext</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -319,7 +319,7 @@
``` ```
html: |- html: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-3:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="foobar" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> custom_language = &gt;&gt; this &lt;&lt;</span></code></pre> <pre data-sourcepos="1:1-3:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="foobar" v-pre="true"><code><span id="LC1" class="line" lang="plaintext"> custom_language = &gt;&gt; this &lt;&lt;</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -531,7 +531,7 @@
;;; ;;;
html: |- html: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-5:3" lang="json" class="code highlight js-syntax-highlight language-json" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="json"><span class="p">{</span></span> <pre data-sourcepos="1:1-5:3" class="code highlight js-syntax-highlight language-json" lang="json" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="json"><span class="p">{</span></span>
<span id="LC2" class="line" lang="json"><span class="w"> </span><span class="nl">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Page title"</span></span> <span id="LC2" class="line" lang="json"><span class="w"> </span><span class="nl">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Page title"</span></span>
<span id="LC3" class="line" lang="json"><span class="p">}</span></span></code></pre> <span id="LC3" class="line" lang="json"><span class="p">}</span></span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
@ -544,7 +544,7 @@
+++ +++
html: |- html: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-3:3" lang="toml" class="code highlight js-syntax-highlight language-toml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="toml"><span class="py">title</span> <span class="p">=</span> <span class="s">"Page title"</span></span></code></pre> <pre data-sourcepos="1:1-3:3" class="code highlight js-syntax-highlight language-toml" lang="toml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="toml"><span class="py">title</span> <span class="p">=</span> <span class="s">"Page title"</span></span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -555,7 +555,7 @@
--- ---
html: |- html: |-
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-3:3" lang="yaml" class="code highlight js-syntax-highlight language-yaml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="yaml"><span class="na">title</span><span class="pi">:</span> <span class="s">Page title</span></span></code></pre> <pre data-sourcepos="1:1-3:3" class="code highlight js-syntax-highlight language-yaml" lang="yaml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="yaml"><span class="na">title</span><span class="pi">:</span> <span class="s">Page title</span></span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -690,7 +690,7 @@
<p data-sourcepos="1:1-1:36" dir="auto">This math is inline <code class="code math js-render-math" data-math-style="inline">a^2+b^2=c^2</code>.</p> <p data-sourcepos="1:1-1:36" dir="auto">This math is inline <code class="code math js-render-math" data-math-style="inline">a^2+b^2=c^2</code>.</p>
<p data-sourcepos="3:1-3:27" dir="auto">This is on a separate line:</p> <p data-sourcepos="3:1-3:27" dir="auto">This is on a separate line:</p>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="5:1-7:3" lang="math" data-math-style="display" class="js-render-math code highlight js-syntax-highlight language-math" v-pre="true"><code><span id="LC1" class="line" lang="math">a^2+b^2=c^2</span></code></pre> <pre data-sourcepos="5:1-7:3" class="code highlight js-syntax-highlight language-math js-render-math" lang="math" v-pre="true" data-math-style="display"><code><span id="LC1" class="line" lang="math">a^2+b^2=c^2</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>

View File

@ -111,35 +111,35 @@ RSpec.describe Banzai::Filter::MathFilter do
describe 'display math using ```math...``` syntax' do describe 'display math using ```math...``` syntax' do
it 'adds data-math-style display attribute to display math' do it 'adds data-math-style display attribute to display math' do
doc = filter('<pre lang="math"><code>2+2</code></pre>') doc = filter('<pre class="code highlight js-syntax-highlight language-math" v-pre="true"><code>2+2</code></pre>')
pre = doc.xpath('descendant-or-self::pre').first pre = doc.xpath('descendant-or-self::pre').first
expect(pre['data-math-style']).to eq 'display' expect(pre['data-math-style']).to eq 'display'
end end
it 'adds js-render-math class to display math' do it 'adds js-render-math class to display math' do
doc = filter('<pre lang="math"><code>2+2</code></pre>') doc = filter('<pre class="code highlight js-syntax-highlight language-math" v-pre="true"><code>2+2</code></pre>')
pre = doc.xpath('descendant-or-self::pre').first pre = doc.xpath('descendant-or-self::pre').first
expect(pre[:class]).to include("js-render-math") expect(pre[:class]).to include("js-render-math")
end end
it 'ignores code blocks that are not math' do it 'ignores code blocks that are not math' do
input = '<pre lang="plaintext"><code>2+2</code></pre>' input = '<pre class="code highlight js-syntax-highlight language-plaintext" v-pre="true"><code>2+2</code></pre>'
doc = filter(input) doc = filter(input)
expect(doc.to_s).to eq input expect(doc.to_s).to eq input
end end
it 'requires the pre to contain both code and math' do it 'requires the pre to contain both code and math' do
input = '<pre lang="math">something</pre>' input = '<pre class="highlight js-syntax-highlight language-plaintext language-math" v-pre="true"><code>2+2</code></pre>'
doc = filter(input) doc = filter(input)
expect(doc.to_s).to eq input expect(doc.to_s).to eq input
end end
it 'dollar signs around to display math' do it 'dollar signs around to display math' do
doc = filter('$<pre lang="math"><code>2+2</code></pre>$') doc = filter('$<pre class="code highlight js-syntax-highlight language-math" v-pre="true"><code>2+2</code></pre>$')
before = doc.xpath('descendant-or-self::text()[1]').first before = doc.xpath('descendant-or-self::text()[1]').first
after = doc.xpath('descendant-or-self::text()[3]').first after = doc.xpath('descendant-or-self::text()[3]').first

View File

@ -23,7 +23,7 @@ RSpec.describe Banzai::Filter::SyntaxHighlightFilter do
it "highlights as plaintext" do it "highlights as plaintext" do
result = filter('<pre><code>def fun end</code></pre>') result = filter('<pre><code>def fun end</code></pre>')
expect(result.to_html.delete("\n")).to eq('<div class="gl-relative markdown-code-block js-markdown-code"><pre lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">def fun end</span></code></pre><copy-code></copy-code></div>') expect(result.to_html.delete("\n")).to eq('<div class="gl-relative markdown-code-block js-markdown-code"><pre class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">def fun end</span></code></pre><copy-code></copy-code></div>')
end end
include_examples "XSS prevention", "" include_examples "XSS prevention", ""
@ -31,9 +31,9 @@ RSpec.describe Banzai::Filter::SyntaxHighlightFilter do
context "when contains mermaid diagrams" do context "when contains mermaid diagrams" do
it "ignores mermaid blocks" do it "ignores mermaid blocks" do
result = filter('<pre data-mermaid-style="display" lang="mermaid"><code class="js-render-mermaid">mermaid code</code></pre>') result = filter('<pre data-mermaid-style="display"><code>mermaid code</code></pre>')
expect(result.to_html.delete("\n")).to eq('<div class="gl-relative markdown-code-block js-markdown-code"><pre data-mermaid-style="display" lang="mermaid" class="code highlight js-syntax-highlight language-mermaid" v-pre="true"><code class="js-render-mermaid"><span id="LC1" class="line" lang="mermaid">mermaid code</span></code></pre><copy-code></copy-code></div>') expect(result.to_html).to eq('<pre data-mermaid-style="display"><code>mermaid code</code></pre>')
end end
end end
@ -49,7 +49,7 @@ RSpec.describe Banzai::Filter::SyntaxHighlightFilter do
it "highlights as that language" do it "highlights as that language" do
result = filter('<pre lang="ruby"><code>def fun end</code></pre>') result = filter('<pre lang="ruby"><code>def fun end</code></pre>')
expect(result.to_html.delete("\n")).to eq('<div class="gl-relative markdown-code-block js-markdown-code"><pre lang="ruby" class="code highlight js-syntax-highlight language-ruby" v-pre="true"><code><span id="LC1" class="line" lang="ruby"><span class="k">def</span> <span class="nf">fun</span> <span class="k">end</span></span></code></pre><copy-code></copy-code></div>') expect(result.to_html.delete("\n")).to eq('<div class="gl-relative markdown-code-block js-markdown-code"><pre class="code highlight js-syntax-highlight language-ruby" lang="ruby" v-pre="true"><code><span id="LC1" class="line" lang="ruby"><span class="k">def</span> <span class="nf">fun</span> <span class="k">end</span></span></code></pre><copy-code></copy-code></div>')
end end
include_examples "XSS prevention", "ruby" include_examples "XSS prevention", "ruby"
@ -59,7 +59,7 @@ RSpec.describe Banzai::Filter::SyntaxHighlightFilter do
it "highlights as plaintext" do it "highlights as plaintext" do
result = filter('<pre lang="gnuplot"><code>This is a test</code></pre>') result = filter('<pre lang="gnuplot"><code>This is a test</code></pre>')
expect(result.to_html.delete("\n")).to eq('<div class="gl-relative markdown-code-block js-markdown-code"><pre lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="gnuplot" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">This is a test</span></code></pre><copy-code></copy-code></div>') expect(result.to_html.delete("\n")).to eq('<div class="gl-relative markdown-code-block js-markdown-code"><pre class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="gnuplot" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">This is a test</span></code></pre><copy-code></copy-code></div>')
end end
include_examples "XSS prevention", "gnuplot" include_examples "XSS prevention", "gnuplot"
@ -74,7 +74,7 @@ RSpec.describe Banzai::Filter::SyntaxHighlightFilter do
it "highlights as plaintext but with the correct language attribute and class" do it "highlights as plaintext but with the correct language attribute and class" do
result = filter(%{<pre lang="#{lang}"><code>This is a test</code></pre>}) result = filter(%{<pre lang="#{lang}"><code>This is a test</code></pre>})
expect(result.to_html.delete("\n")).to eq(%{<div class="gl-relative markdown-code-block js-markdown-code"><pre lang="#{lang}" class="code highlight js-syntax-highlight language-#{lang}" v-pre="true"><code><span id="LC1" class="line" lang="#{lang}">This is a test</span></code></pre><copy-code></copy-code></div>}) expect(result.to_html.delete("\n")).to eq(%{<div class="gl-relative markdown-code-block js-markdown-code"><pre class="code highlight js-syntax-highlight language-#{lang}" lang="#{lang}" v-pre="true"><code><span id="LC1" class="line" lang="#{lang}">This is a test</span></code></pre><copy-code></copy-code></div>})
end end
include_examples "XSS prevention", lang include_examples "XSS prevention", lang
@ -87,7 +87,7 @@ RSpec.describe Banzai::Filter::SyntaxHighlightFilter do
it "includes data-lang-params tag with extra information" do it "includes data-lang-params tag with extra information" do
result = filter(%{<pre lang="#{lang}" data-meta="#{lang_params}"><code>This is a test</code></pre>}) result = filter(%{<pre lang="#{lang}" data-meta="#{lang_params}"><code>This is a test</code></pre>})
expect(result.to_html.delete("\n")).to eq(%{<div class="gl-relative markdown-code-block js-markdown-code"><pre lang="#{lang}" class="code highlight js-syntax-highlight language-#{lang}" #{data_attr}="#{lang_params}" v-pre="true"><code><span id="LC1" class="line" lang="#{lang}">This is a test</span></code></pre><copy-code></copy-code></div>}) expect(result.to_html.delete("\n")).to eq(%{<div class="gl-relative markdown-code-block js-markdown-code"><pre class="code highlight js-syntax-highlight language-#{lang}" lang="#{lang}" #{data_attr}="#{lang_params}" v-pre="true"><code><span id="LC1" class="line" lang="#{lang}">This is a test</span></code></pre><copy-code></copy-code></div>})
end end
include_examples "XSS prevention", lang include_examples "XSS prevention", lang
@ -105,7 +105,7 @@ RSpec.describe Banzai::Filter::SyntaxHighlightFilter do
let(:lang_params) { '-1+10' } let(:lang_params) { '-1+10' }
let(:expected_result) do let(:expected_result) do
%{<div class="gl-relative markdown-code-block js-markdown-code"><pre lang="#{lang}" class="code highlight js-syntax-highlight language-#{lang}" #{data_attr}="#{lang_params} more-things" v-pre="true"><code><span id="LC1" class="line" lang="#{lang}">This is a test</span></code></pre><copy-code></copy-code></div>} %{<div class="gl-relative markdown-code-block js-markdown-code"><pre class="code highlight js-syntax-highlight language-#{lang}" lang="#{lang}" #{data_attr}="#{lang_params} more-things" v-pre="true"><code><span id="LC1" class="line" lang="#{lang}">This is a test</span></code></pre><copy-code></copy-code></div>}
end end
context 'when delimiter is space' do context 'when delimiter is space' do
@ -130,13 +130,13 @@ RSpec.describe Banzai::Filter::SyntaxHighlightFilter do
it "includes it in the highlighted code block" do it "includes it in the highlighted code block" do
result = filter('<pre data-sourcepos="1:1-3:3"><code lang="plaintext">This is a test</code></pre>') result = filter('<pre data-sourcepos="1:1-3:3"><code lang="plaintext">This is a test</code></pre>')
expect(result.to_html.delete("\n")).to eq('<div class="gl-relative markdown-code-block js-markdown-code"><pre data-sourcepos="1:1-3:3" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code lang="plaintext"><span id="LC1" class="line" lang="plaintext">This is a test</span></code></pre><copy-code></copy-code></div>') expect(result.to_html.delete("\n")).to eq('<div class="gl-relative markdown-code-block js-markdown-code"><pre data-sourcepos="1:1-3:3" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">This is a test</span></code></pre><copy-code></copy-code></div>')
end end
it "escape sourcepos metadata to prevent XSS" do it "escape sourcepos metadata to prevent XSS" do
result = filter('<pre data-sourcepos="&#34;%22 href=&#34;x&#34;></pre><base href=http://unsafe-website.com/><pre x=&#34;"><code></code></pre>') result = filter('<pre data-sourcepos="&#34;%22 href=&#34;x&#34;></pre><base href=http://unsafe-website.com/><pre x=&#34;"><code></code></pre>')
expect(result.to_html.delete("\n")).to eq('<div class="gl-relative markdown-code-block js-markdown-code"><pre data-sourcepos=\'"%22 href="x"&gt;&lt;/pre&gt;&lt;base href=http://unsafe-website.com/&gt;&lt;pre x="\' lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="" v-pre="true"><code></code></pre><copy-code></copy-code></div>') expect(result.to_html.delete("\n")).to eq('<div class="gl-relative markdown-code-block js-markdown-code"><pre data-sourcepos=\'"%22 href="x"&gt;&lt;/pre&gt;&lt;base href=http://unsafe-website.com/&gt;&lt;pre x="\' class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="" v-pre="true"><code></code></pre><copy-code></copy-code></div>')
end end
end end
@ -150,7 +150,7 @@ RSpec.describe Banzai::Filter::SyntaxHighlightFilter do
it "highlights as plaintext" do it "highlights as plaintext" do
result = filter('<pre lang="ruby"><code>This is a test</code></pre>') result = filter('<pre lang="ruby"><code>This is a test</code></pre>')
expect(result.to_html.delete("\n")).to eq('<div class="gl-relative markdown-code-block js-markdown-code"><pre lang="" class="code highlight js-syntax-highlight" data-canonical-lang="ruby" v-pre="true"><code><span id="LC1" class="line" lang="">This is a test</span></code></pre><copy-code></copy-code></div>') expect(result.to_html.delete("\n")).to eq('<div class="gl-relative markdown-code-block js-markdown-code"><pre class="code highlight js-syntax-highlight" lang="" data-canonical-lang="ruby" v-pre="true"><code><span id="LC1" class="line" lang="">This is a test</span></code></pre><copy-code></copy-code></div>')
end end
include_examples "XSS prevention", "ruby" include_examples "XSS prevention", "ruby"

View File

@ -94,18 +94,9 @@ module Gitlab
# Move this test back to the items hash when removing `use_cmark_renderer` feature flag. # Move this test back to the items hash when removing `use_cmark_renderer` feature flag.
it "does not convert dangerous fenced code with inline script into HTML" do it "does not convert dangerous fenced code with inline script into HTML" do
input = '```mypre"><script>alert(3)</script>' input = '```mypre"><script>alert(3)</script>'
output = <<~HTML output = "<div>\n<div>\n<div class=\"gl-relative markdown-code-block js-markdown-code\">\n<pre class=\"code highlight js-syntax-highlight language-plaintext\" lang=\"plaintext\" data-canonical-lang=\"mypre\" v-pre=\"true\"><code></code></pre>\n<copy-code></copy-code>\n</div>\n</div>\n</div>"
<div>
<div>
<div class=\"gl-relative markdown-code-block js-markdown-code\">
<pre lang=\"plaintext\" class=\"code highlight js-syntax-highlight language-plaintext\" data-canonical-lang=\"mypre\" v-pre=\"true\"><code></code></pre>
<copy-code></copy-code>
</div>
</div>
</div>
HTML
expect(render(input, context)).to include(output.strip) expect(render(input, context)).to include(output)
end end
it 'does not allow locked attributes to be overridden' do it 'does not allow locked attributes to be overridden' do
@ -369,7 +360,7 @@ module Gitlab
<div> <div>
<div> <div>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre lang="javascript" class="code highlight js-syntax-highlight language-javascript" data-canonical-lang="js" v-pre="true"><code><span id="LC1" class="line" lang="javascript"><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">hello world</span><span class="dl">'</span><span class="p">)</span></span></code></pre> <pre class="code highlight js-syntax-highlight language-javascript" lang="javascript" data-canonical-lang="js" v-pre="true"><code><span id="LC1" class="line" lang="javascript"><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">hello world</span><span class="dl">'</span><span class="p">)</span></span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
</div> </div>
@ -399,7 +390,7 @@ module Gitlab
<div>class.cpp</div> <div>class.cpp</div>
<div> <div>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre lang="cpp" class="code highlight js-syntax-highlight language-cpp" data-canonical-lang="c++" v-pre="true"><code><span id="LC1" class="line" lang="cpp"><span class="cp">#include</span> <span class="cpf">&lt;stdio.h&gt;</span></span> <pre class="code highlight js-syntax-highlight language-cpp" lang="cpp" data-canonical-lang="c++" v-pre="true"><code><span id="LC1" class="line" lang="cpp"><span class="cp">#include</span> <span class="cpf">&lt;stdio.h&gt;</span></span>
<span id="LC2" class="line" lang="cpp"></span> <span id="LC2" class="line" lang="cpp"></span>
<span id="LC3" class="line" lang="cpp"><span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">5</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></span> <span id="LC3" class="line" lang="cpp"><span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">5</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></span>
<span id="LC4" class="line" lang="cpp"> <span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="o">&lt;&lt;</span><span class="s">"*"</span><span class="o">&lt;&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span></span> <span id="LC4" class="line" lang="cpp"> <span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="o">&lt;&lt;</span><span class="s">"*"</span><span class="o">&lt;&lt;</span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span></span>
@ -457,7 +448,7 @@ module Gitlab
stem:[2+2] is 4 stem:[2+2] is 4
MD MD
expect(render(input, context)).to include('<pre data-math-style="display" lang="plaintext" class="code math js-render-math" data-canonical-lang="" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">eta_x gamma</span></code></pre>') expect(render(input, context)).to include('<pre data-math-style="display" class="code math js-render-math"><code>eta_x gamma</code></pre>')
expect(render(input, context)).to include('<p><code data-math-style="inline" class="code math js-render-math">2+2</code> is 4</p>') expect(render(input, context)).to include('<p><code data-math-style="inline" class="code math js-render-math">2+2</code> is 4</p>')
end end
end end

View File

@ -119,26 +119,20 @@ RSpec.describe User do
end end
end end
context 'when pbkdf2_password_encryption is disabled' do it 'calls default Devise encryptor and not the PBKDF2 encryptor' do
before do expect(Devise::Encryptor).to receive(:digest).at_least(:once).and_call_original
stub_feature_flags(pbkdf2_password_encryption: false) expect(Devise::Pbkdf2Encryptable::Encryptors::Pbkdf2Sha512).not_to receive(:digest)
end
it 'calls default Devise encryptor and not the PBKDF2 encryptor' do user.password = password
expect(Devise::Encryptor).to receive(:digest).at_least(:once).and_call_original end
expect(Devise::Pbkdf2Encryptable::Encryptors::Pbkdf2Sha512).not_to receive(:digest)
user.password = password it 'saves the password in BCrypt format' do
end user.password = password
user.save!
it 'saves the password in BCrypt format' do expect { compare_pbkdf2_password(user, password) }
user.password = password .to raise_error Devise::Pbkdf2Encryptable::Encryptors::InvalidHash
user.save! expect(compare_bcrypt_password(user, password)).to eq(true)
expect { compare_pbkdf2_password(user, password) }
.to raise_error Devise::Pbkdf2Encryptable::Encryptors::InvalidHash
expect(compare_bcrypt_password(user, password)).to eq(true)
end
end end
end end
end end

View File

@ -292,7 +292,7 @@ RSpec.describe Glfm::UpdateSpecification, '#process' do
expected_spec_html = <<~RENDERED_HTML expected_spec_html = <<~RENDERED_HTML
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-4:3" lang="yaml" class="code highlight js-syntax-highlight language-yaml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="yaml"><span class="na">title</span><span class="pi">:</span> <span class="s">GitLab Flavored Markdown (GLFM) Spec</span></span> <pre data-sourcepos="1:1-4:3" class="code highlight js-syntax-highlight language-yaml" lang="yaml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="yaml"><span class="na">title</span><span class="pi">:</span> <span class="s">GitLab Flavored Markdown (GLFM) Spec</span></span>
<span id="LC2" class="line" lang="yaml"><span class="na">version</span><span class="pi">:</span> <span class="s">alpha</span></span></code></pre> <span id="LC2" class="line" lang="yaml"><span class="na">version</span><span class="pi">:</span> <span class="s">alpha</span></span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -311,7 +311,7 @@ RSpec.describe Glfm::UpdateSpecification, '#process' do
expected_snapshot_spec_html = <<~RENDERED_HTML expected_snapshot_spec_html = <<~RENDERED_HTML
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="1:1-4:3" lang="yaml" class="code highlight js-syntax-highlight language-yaml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="yaml"><span class="na">title</span><span class="pi">:</span> <span class="s">GitLab Flavored Markdown (GLFM) Spec</span></span> <pre data-sourcepos="1:1-4:3" class="code highlight js-syntax-highlight language-yaml" lang="yaml" data-lang-params="frontmatter" v-pre="true"><code><span id="LC1" class="line" lang="yaml"><span class="na">title</span><span class="pi">:</span> <span class="s">GitLab Flavored Markdown (GLFM) Spec</span></span>
<span id="LC2" class="line" lang="yaml"><span class="na">version</span><span class="pi">:</span> <span class="s">alpha</span></span></code></pre> <span id="LC2" class="line" lang="yaml"><span class="na">version</span><span class="pi">:</span> <span class="s">alpha</span></span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>
</div> </div>
@ -320,7 +320,7 @@ RSpec.describe Glfm::UpdateSpecification, '#process' do
<h2 data-sourcepos="7:1-7:9" dir="auto"> <h2 data-sourcepos="7:1-7:9" dir="auto">
<a id="user-content-strong" class="anchor" href="#strong" aria-hidden="true"></a>Strong</h2> <a id="user-content-strong" class="anchor" href="#strong" aria-hidden="true"></a>Strong</h2>
<div class="gl-relative markdown-code-block js-markdown-code"> <div class="gl-relative markdown-code-block js-markdown-code">
<pre data-sourcepos="9:1-13:32" lang="plaintext" class="code highlight js-syntax-highlight language-plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">__bold__</span> <pre data-sourcepos="9:1-13:32" class="code highlight js-syntax-highlight language-plaintext" lang="plaintext" data-canonical-lang="example" v-pre="true"><code><span id="LC1" class="line" lang="plaintext">__bold__</span>
<span id="LC2" class="line" lang="plaintext">.</span> <span id="LC2" class="line" lang="plaintext">.</span>
<span id="LC3" class="line" lang="plaintext">&lt;p&gt;&lt;strong&gt;bold&lt;/strong&gt;&lt;/p&gt;</span></code></pre> <span id="LC3" class="line" lang="plaintext">&lt;p&gt;&lt;strong&gt;bold&lt;/strong&gt;&lt;/p&gt;</span></code></pre>
<copy-code></copy-code> <copy-code></copy-code>