Skip to content

Commit d80c236

Browse files
authored
Replace tree-sitter binding (#2707)
1 parent 320c0b4 commit d80c236

File tree

5 files changed

+74
-305
lines changed

5 files changed

+74
-305
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
"build:storybook-16": "build-storybook -c .storybook -o dist/$(git rev-parse HEAD)/storybook-16",
2222
"start:chromatic": "NODE_ENV=storybook start-storybook -p 9004 --ci -c '.chromatic'",
2323
"build:chromatic": "build-storybook -c .chromatic -o dist/$(git rev-parse HEAD)/chromatic",
24-
"start:docs": "PARCEL_WORKER_BACKEND=process DOCS_ENV=dev parcel 'packages/@react-{spectrum,aria,stately}/*/docs/*.mdx' 'packages/dev/docs/pages/**/*.mdx'",
25-
"build:docs": "PARCEL_WORKER_BACKEND=process DOCS_ENV=staging parcel build 'packages/@react-{spectrum,aria,stately}/*/docs/*.mdx' 'packages/dev/docs/pages/**/*.mdx'",
24+
"start:docs": "DOCS_ENV=dev parcel 'packages/@react-{spectrum,aria,stately}/*/docs/*.mdx' 'packages/dev/docs/pages/**/*.mdx'",
25+
"build:docs": "DOCS_ENV=staging parcel build 'packages/@react-{spectrum,aria,stately}/*/docs/*.mdx' 'packages/dev/docs/pages/**/*.mdx'",
2626
"test": "yarn jest",
2727
"build": "make build",
2828
"test:ssr": "yarn jest --config jest.ssr.config.js",

packages/dev/docs/src/syntax-highlight.css

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@
114114
text-decoration: underline;
115115
}
116116

117-
:global(.source) {
117+
:global(.source),
118+
:global(.embedded) {
118119
display: block;
119120
padding: 0.5em;
120121
color: var(--hljs-color);
@@ -135,56 +136,57 @@
135136
hyphens: none;
136137
}
137138

138-
:global(.embedded.source) {
139+
:global(.embedded) {
139140
display: inline;
140141
padding: 0;
141142
}
142143

143-
:global(.constant) {
144+
:global(.constant),
145+
:global(.number),
146+
:global(.number .type) {
144147
color: var(--hljs-literal-color);
145148
}
146149

147-
:global(.storage.type),
148-
:global(.storage.modifier),
149-
:global(.constant.color),
150-
:global(.support.property-value.css) {
151-
color: var(--hljs-keyword-color);
152-
}
153-
154-
:global(.entity.function),
155-
:global(.support.function) {
150+
:global(.function) {
156151
color: var(--hljs-function-color);
157152
}
158153

159-
:global(.keyword.control) {
154+
:global(.keyword) {
160155
color: var(--hljs-keyword-color);
161156
}
162157

163-
:global(.class-name) {
164-
color: var(--hljs-class-color);
165-
}
166-
167-
:global(.entity.attribute-name) {
158+
:global(.attribute) {
168159
color: var(--hljs-attribute-color);
169160
}
170-
:global(.entity.name.tag),
171-
:global(.support.type) {
161+
:global(.tag),
162+
:global(.type) {
172163
color: var(--hljs-section-color);
173164
}
174165

175-
:global(.punctuation.section) {
166+
:global(.punctuation.special) {
176167
color: var(--hljs-title-color);
177168
}
178169

179-
:global(.variable.other.object.property) {
170+
:global(.property) {
180171
color: var(--hljs-variable-color);
181172
}
182173

183-
:global(.string.quoted) {
174+
:global(.string) {
184175
color: var(--hljs-string-color);
185176
}
186177

187178
:global(.comment) {
188179
color: var(--hljs-comment-color);
189180
font-style: italic;
190181
}
182+
183+
/* regex */
184+
:global(.string.special) {
185+
:global(.operator) {
186+
color: var(--hljs-keyword-color);
187+
}
188+
189+
:global(.punctuation.bracket) {
190+
color: var(--hljs-attribute-color);
191+
}
192+
}

packages/dev/parcel-transformer-mdx-docs/MDXTransformer.js

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
const {Transformer} = require('@parcel/plugin');
1414
const flatMap = require('unist-util-flatmap');
15-
const treeSitter = require('remark-tree-sitter');
15+
const treeSitter = require('tree-sitter-highlight');
1616
const {fragmentUnWrap, fragmentWrap} = require('./MDXFragments');
1717
const yaml = require('js-yaml');
1818
const dprint = require('dprint-node');
@@ -257,6 +257,27 @@ module.exports = new Transformer({
257257
);
258258
}
259259

260+
let visit = (await import('unist-util-visit')).visit;
261+
function highlight(options) {
262+
return (tree) => {
263+
visit(tree, 'code', node => {
264+
if (!node.lang) {
265+
return;
266+
}
267+
let language = treeSitter.Language[node.lang.toUpperCase()];
268+
if (!language) {
269+
return;
270+
}
271+
if (!node.data) {
272+
node.data = {};
273+
}
274+
let highlighted = treeSitter.highlightHast(node.value, language);
275+
node.data.hChildren = [highlighted];
276+
});
277+
return tree;
278+
};
279+
}
280+
260281
let {compile} = await import('@mdx-js/mdx');
261282
let frontmatter = (await import('remark-frontmatter')).default;
262283
let slug = (await import('remark-slug')).default;
@@ -268,15 +289,7 @@ module.exports = new Transformer({
268289
extractExamples,
269290
fragmentWrap,
270291
[frontmatter, {type: 'yaml', anywhere: true, marker: '-'}],
271-
[
272-
treeSitter,
273-
{
274-
grammarPackages: [
275-
'@atom-languages/language-typescript',
276-
'@atom-languages/language-css'
277-
]
278-
}
279-
],
292+
highlight,
280293
fragmentUnWrap
281294
],
282295
rehypePlugins: [

packages/dev/parcel-transformer-mdx-docs/package.json

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,16 @@
77
"parcel": "2.0.0-nightly.949"
88
},
99
"dependencies": {
10-
"@atom-languages/language-typescript": "atom/language-typescript#v0.6.2",
11-
"@atom-languages/language-css": "atom/language-css#v0.44.4",
1210
"@mdx-js/mdx": "next",
1311
"@mdx-js/react": "next",
1412
"@parcel/plugin": "2.0.0-nightly.951",
15-
"dprint-node": "^1.0.3",
13+
"dprint-node": "^1.0.5",
1614
"js-yaml": "^3.13.1",
1715
"mdast-util-toc": "^6.1.0",
1816
"remark-frontmatter": "^4.0.1",
1917
"remark-slug": "^7.0.1",
20-
"remark-tree-sitter": "^1.0.3",
21-
"unist-util-flatmap": "^1.0.0"
18+
"tree-sitter-highlight": "^1.0.1",
19+
"unist-util-flatmap": "^1.0.0",
20+
"unist-util-visit": "^4.0.0"
2221
}
2322
}

0 commit comments

Comments
 (0)