mirror of
https://github.com/facebook/docusaurus.git
synced 2025-04-29 18:27:56 +02:00
feat(theme-common): code block MagicComments support for (Visual) Basic/Batch/Fortran/COBOL/ML (#9671)
This commit is contained in:
parent
d9d700c54f
commit
bd7d64f455
3 changed files with 100 additions and 10 deletions
|
@ -13,18 +13,31 @@ const codeBlockTitleRegex = /title=(?<quote>["'])(?<title>.*?)\1/;
|
||||||
const metastringLinesRangeRegex = /\{(?<range>[\d,-]+)\}/;
|
const metastringLinesRangeRegex = /\{(?<range>[\d,-]+)\}/;
|
||||||
|
|
||||||
// Supported types of highlight comments
|
// Supported types of highlight comments
|
||||||
const commentPatterns = {
|
const popularCommentPatterns = {
|
||||||
js: {start: '\\/\\/', end: ''},
|
js: {start: '\\/\\/', end: ''},
|
||||||
jsBlock: {start: '\\/\\*', end: '\\*\\/'},
|
jsBlock: {start: '\\/\\*', end: '\\*\\/'},
|
||||||
jsx: {start: '\\{\\s*\\/\\*', end: '\\*\\/\\s*\\}'},
|
jsx: {start: '\\{\\s*\\/\\*', end: '\\*\\/\\s*\\}'},
|
||||||
bash: {start: '#', end: ''},
|
bash: {start: '#', end: ''},
|
||||||
html: {start: '<!--', end: '-->'},
|
html: {start: '<!--', end: '-->'},
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
const commentPatterns = {
|
||||||
|
...popularCommentPatterns, // shallow copy is sufficient
|
||||||
|
// minor comment styles
|
||||||
lua: {start: '--', end: ''},
|
lua: {start: '--', end: ''},
|
||||||
wasm: {start: '\\;\\;', end: ''},
|
wasm: {start: '\\;\\;', end: ''},
|
||||||
tex: {start: '%', end: ''},
|
tex: {start: '%', end: ''},
|
||||||
};
|
vb: {start: "['‘’]", end: ''},
|
||||||
|
rem: {start: '[Rr][Ee][Mm]\\b', end: ''},
|
||||||
|
f90: {start: '!', end: ''}, // Free format only
|
||||||
|
ml: {start: '\\(\\*', end: '\\*\\)'},
|
||||||
|
cobol: {start: '\\*>', end: ''}, // Free format only
|
||||||
|
} as const;
|
||||||
|
|
||||||
type CommentType = keyof typeof commentPatterns;
|
type CommentType = keyof typeof commentPatterns;
|
||||||
|
const popularCommentTypes = Object.keys(
|
||||||
|
popularCommentPatterns,
|
||||||
|
) as CommentType[];
|
||||||
|
|
||||||
export type MagicCommentConfig = {
|
export type MagicCommentConfig = {
|
||||||
className: string;
|
className: string;
|
||||||
|
@ -99,15 +112,34 @@ function getAllMagicCommentDirectiveStyles(
|
||||||
case 'wasm':
|
case 'wasm':
|
||||||
return getCommentPattern(['wasm'], magicCommentDirectives);
|
return getCommentPattern(['wasm'], magicCommentDirectives);
|
||||||
|
|
||||||
|
case 'vb':
|
||||||
|
case 'vbnet':
|
||||||
|
case 'vba':
|
||||||
|
case 'visual-basic':
|
||||||
|
return getCommentPattern(['vb', 'rem'], magicCommentDirectives);
|
||||||
|
|
||||||
|
case 'batch':
|
||||||
|
return getCommentPattern(['rem'], magicCommentDirectives);
|
||||||
|
|
||||||
|
case 'basic': // https://github.com/PrismJS/prism/blob/master/components/prism-basic.js#L3
|
||||||
|
return getCommentPattern(['rem', 'f90'], magicCommentDirectives);
|
||||||
|
|
||||||
|
case 'fsharp':
|
||||||
|
return getCommentPattern(['js', 'ml'], magicCommentDirectives);
|
||||||
|
|
||||||
|
case 'ocaml':
|
||||||
|
case 'sml':
|
||||||
|
return getCommentPattern(['ml'], magicCommentDirectives);
|
||||||
|
|
||||||
|
case 'fortran':
|
||||||
|
return getCommentPattern(['f90'], magicCommentDirectives);
|
||||||
|
|
||||||
|
case 'cobol':
|
||||||
|
return getCommentPattern(['cobol'], magicCommentDirectives);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// All comment types except lua, wasm and matlab
|
// All popular comment types
|
||||||
return getCommentPattern(
|
return getCommentPattern(popularCommentTypes, magicCommentDirectives);
|
||||||
Object.keys(commentPatterns).filter(
|
|
||||||
(pattern) =>
|
|
||||||
!['lua', 'wasm', 'tex', 'latex', 'matlab'].includes(pattern),
|
|
||||||
) as CommentType[],
|
|
||||||
magicCommentDirectives,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -257,6 +257,7 @@ precaching
|
||||||
preconfigured
|
preconfigured
|
||||||
prerendered
|
prerendered
|
||||||
prerendering
|
prerendering
|
||||||
|
printfn
|
||||||
println
|
println
|
||||||
prismjs
|
prismjs
|
||||||
producthunt
|
producthunt
|
||||||
|
@ -303,6 +304,7 @@ sebastienlorber
|
||||||
sensical
|
sensical
|
||||||
setaf
|
setaf
|
||||||
setext
|
setext
|
||||||
|
setlocal
|
||||||
Shiki
|
Shiki
|
||||||
shiki
|
shiki
|
||||||
shortcodes
|
shortcodes
|
||||||
|
@ -373,6 +375,7 @@ unswizzle
|
||||||
upvotes
|
upvotes
|
||||||
urlset
|
urlset
|
||||||
Vannicatte
|
Vannicatte
|
||||||
|
vbnet
|
||||||
Vetter
|
Vetter
|
||||||
vetter
|
vetter
|
||||||
vfile
|
vfile
|
||||||
|
|
|
@ -384,6 +384,61 @@ y = times2(x);
|
||||||
\end{document}
|
\end{document}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```vbnet title="vbnet.vb"
|
||||||
|
Dim languages As New Set(Of String) From {
|
||||||
|
' highlight-start
|
||||||
|
"C#",
|
||||||
|
"Visual Basic",
|
||||||
|
"F#",
|
||||||
|
' highlight-end
|
||||||
|
"PowerShell",
|
||||||
|
' highlight-next-line
|
||||||
|
"TypeScript"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```batch title="cmd.bat"
|
||||||
|
rem highlight-start
|
||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
Rem highlight-end
|
||||||
|
ipconfig
|
||||||
|
REM highlight-next-line
|
||||||
|
echo Docusaurus is awesome
|
||||||
|
netstat
|
||||||
|
```
|
||||||
|
|
||||||
|
```fortran title="fortran.f90"
|
||||||
|
! highlight-start
|
||||||
|
program hello
|
||||||
|
! highlight-end
|
||||||
|
implicit none
|
||||||
|
! highlight-next-line
|
||||||
|
print *, "Hello, World!"
|
||||||
|
end program hello
|
||||||
|
```
|
||||||
|
|
||||||
|
```cobol title="cobol.cob"
|
||||||
|
*> highlight-start
|
||||||
|
IDENTIFICATION DIVISION.
|
||||||
|
PROGRAM-ID. HELLO.
|
||||||
|
*> highlight-end
|
||||||
|
PROCEDURE DIVISION.
|
||||||
|
*> highlight-next-line
|
||||||
|
DISPLAY "Hello, World!".
|
||||||
|
END PROGRAM HELLO.
|
||||||
|
```
|
||||||
|
|
||||||
|
```fsharp title="fsharp.fsx"
|
||||||
|
(* highlight-start *)
|
||||||
|
[<EntryPoint>]
|
||||||
|
(* highlight-end *)
|
||||||
|
let main _ =
|
||||||
|
// highlight-next-line
|
||||||
|
printfn "Hello, World!"
|
||||||
|
0
|
||||||
|
```
|
||||||
|
|
||||||
## HTML - script + style highlighting
|
## HTML - script + style highlighting
|
||||||
|
|
||||||
See https://github.com/facebook/docusaurus/issues/9517
|
See https://github.com/facebook/docusaurus/issues/9517
|
||||||
|
|
Loading…
Add table
Reference in a new issue