mirror of
https://github.com/withastro/astro.git
synced 2025-01-20 22:12:38 -05:00
ccafa8d230
* Update highlight.ts * Create cold-snakes-train.md * Update Code.astro Solution for use-case described in withastro/roadmap#276 (https://github.com/withastro/roadmap/discussions/276) * roll-back initial fix * new fix * update changeset * Update packages/markdown/remark/src/rehype-prism.ts * Update .changeset/cold-snakes-train.md Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * Update .changeset/cold-snakes-train.md Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * Update .changeset/cold-snakes-train.md Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * Update .changeset/cold-snakes-train.md Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> --------- Co-authored-by: Bjorn Lu <bjornlu.dev@gmail.com> Co-authored-by: Matthew Phillips <matthew@matthewphillips.info> Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
42 lines
999 B
Markdown
42 lines
999 B
Markdown
---
|
|
"@astrojs/markdown-remark": minor
|
|
---
|
|
|
|
Adds a `data-language` attribute on the rendered `pre` elements to expose the highlighted syntax language.
|
|
|
|
For example, the following Markdown code block will expose `data-language="python"`:
|
|
```
|
|
\```python
|
|
def func():
|
|
print('Hello Astro!')
|
|
\```
|
|
```
|
|
|
|
This allows retrieving the language in a rehype plugin from `node.properties.dataLanguage` by accessing the `<pre>` element using `{ tagName: "pre" }`:
|
|
```js
|
|
// myRehypePre.js
|
|
import { visit } from "unist-util-visit";
|
|
export default function myRehypePre() {
|
|
return (tree) => {
|
|
visit(tree, { tagName: "pre" }, (node) => {
|
|
const lang = node.properties.dataLanguage;
|
|
[...]
|
|
});
|
|
};
|
|
}
|
|
```
|
|
|
|
Note: The `<pre>` element is not exposed when using Astro's `<Code />` component which outputs flattened HTML.
|
|
|
|
|
|
The `data-language` attribute may also be used in css rules:
|
|
```css
|
|
pre::before {
|
|
content: attr(data-language);
|
|
}
|
|
|
|
pre[data-language="javascript"] {
|
|
font-size: 2rem;
|
|
}
|
|
```
|
|
|