mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-04 20:57:17 +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*\\}'},
|
||||
bash: {start: '#', end: ''},
|
||||
html: {start: '<!--', end: '-->'},
|
||||
lua: {start: '--', end: ''},
|
||||
wasm: {start: '\\;\\;', end: ''},
|
||||
};
|
||||
|
||||
type CommentType = keyof typeof commentPatterns;
|
||||
|
@ -83,10 +85,20 @@ function getAllMagicCommentDirectiveStyles(
|
|||
// Text uses HTML, front matter uses bash
|
||||
return getCommentPattern(['html', 'jsx', 'bash'], magicCommentDirectives);
|
||||
|
||||
case 'lua':
|
||||
case 'haskell':
|
||||
case 'sql':
|
||||
return getCommentPattern(['lua'], magicCommentDirectives);
|
||||
|
||||
case 'wasm':
|
||||
return getCommentPattern(['wasm'], magicCommentDirectives);
|
||||
|
||||
default:
|
||||
// All comment types
|
||||
// All comment types except lua and wasm
|
||||
return getCommentPattern(
|
||||
Object.keys(commentPatterns) as CommentType[],
|
||||
Object.keys(commentPatterns).filter(
|
||||
(pattern) => !['lua', 'wasm'].includes(pattern),
|
||||
) as CommentType[],
|
||||
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