mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-05 13:17:23 +02:00
feat(theme-common): code block MagicComments support for Lua/Haskell -- and WebAssembly ;; (#8870)
Co-authored-by: Tarun Chauhan <tarun.chauhan@tripjack.com> Co-authored-by: Sébastien Lorber <slorber@users.noreply.github.com>
This commit is contained in:
parent
08cfe4e3c9
commit
b169404efd
2 changed files with 61 additions and 2 deletions
|
@ -19,6 +19,8 @@ const commentPatterns = {
|
||||||
jsx: {start: '\\{\\s*\\/\\*', end: '\\*\\/\\s*\\}'},
|
jsx: {start: '\\{\\s*\\/\\*', end: '\\*\\/\\s*\\}'},
|
||||||
bash: {start: '#', end: ''},
|
bash: {start: '#', end: ''},
|
||||||
html: {start: '<!--', end: '-->'},
|
html: {start: '<!--', end: '-->'},
|
||||||
|
lua: {start: '--', end: ''},
|
||||||
|
wasm: {start: '\\;\\;', end: ''},
|
||||||
};
|
};
|
||||||
|
|
||||||
type CommentType = keyof typeof commentPatterns;
|
type CommentType = keyof typeof commentPatterns;
|
||||||
|
@ -83,10 +85,20 @@ function getAllMagicCommentDirectiveStyles(
|
||||||
// Text uses HTML, front matter uses bash
|
// Text uses HTML, front matter uses bash
|
||||||
return getCommentPattern(['html', 'jsx', 'bash'], magicCommentDirectives);
|
return getCommentPattern(['html', 'jsx', 'bash'], magicCommentDirectives);
|
||||||
|
|
||||||
|
case 'lua':
|
||||||
|
case 'haskell':
|
||||||
|
case 'sql':
|
||||||
|
return getCommentPattern(['lua'], magicCommentDirectives);
|
||||||
|
|
||||||
|
case 'wasm':
|
||||||
|
return getCommentPattern(['wasm'], magicCommentDirectives);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// All comment types
|
// All comment types except lua and wasm
|
||||||
return getCommentPattern(
|
return getCommentPattern(
|
||||||
Object.keys(commentPatterns) as CommentType[],
|
Object.keys(commentPatterns).filter(
|
||||||
|
(pattern) => !['lua', 'wasm'].includes(pattern),
|
||||||
|
) as CommentType[],
|
||||||
magicCommentDirectives,
|
magicCommentDirectives,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -267,3 +267,50 @@ export default function MyReactPage() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Magic comments tests
|
||||||
|
|
||||||
|
```lua title="lua_sum.lua"
|
||||||
|
function sum(n)
|
||||||
|
-- highlight-next-line
|
||||||
|
local result = 0
|
||||||
|
for i = 1, n do
|
||||||
|
-- highlight-start
|
||||||
|
result = result + i
|
||||||
|
end
|
||||||
|
-- highlight-end
|
||||||
|
print(result)
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
```haskell title="haskell.hs"
|
||||||
|
stringLength :: String -> Int
|
||||||
|
-- highlight-next-line
|
||||||
|
stringLength [] = 0
|
||||||
|
stringLength (x:xs) = 1 + stringLength xs
|
||||||
|
```
|
||||||
|
|
||||||
|
```wasm title="sum_webAssembly.wasm"
|
||||||
|
(module
|
||||||
|
;; highlight-next-line
|
||||||
|
(func $add (param $a i32) (param $b i32) (result i32)
|
||||||
|
local.get $a
|
||||||
|
;; highlight-start
|
||||||
|
local.get $b
|
||||||
|
i32.add)
|
||||||
|
;; highlight-end
|
||||||
|
(export "add" (func $add)))
|
||||||
|
```
|
||||||
|
|
||||||
|
```sql title="sql_query.sql"
|
||||||
|
-- highlight-start
|
||||||
|
SELECT *
|
||||||
|
FROM orders
|
||||||
|
-- highlight-end
|
||||||
|
WHERE customer_id IN (
|
||||||
|
SELECT customer_id
|
||||||
|
-- highlight-next-line
|
||||||
|
FROM customers
|
||||||
|
WHERE country = 'USA'
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
Loading…
Add table
Reference in a new issue