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,-]+)\}/;
|
||||
|
||||
// Supported types of highlight comments
|
||||
const commentPatterns = {
|
||||
const popularCommentPatterns = {
|
||||
js: {start: '\\/\\/', end: ''},
|
||||
jsBlock: {start: '\\/\\*', end: '\\*\\/'},
|
||||
jsx: {start: '\\{\\s*\\/\\*', end: '\\*\\/\\s*\\}'},
|
||||
bash: {start: '#', end: ''},
|
||||
html: {start: '<!--', end: '-->'},
|
||||
} as const;
|
||||
|
||||
const commentPatterns = {
|
||||
...popularCommentPatterns, // shallow copy is sufficient
|
||||
// minor comment styles
|
||||
lua: {start: '--', end: ''},
|
||||
wasm: {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;
|
||||
const popularCommentTypes = Object.keys(
|
||||
popularCommentPatterns,
|
||||
) as CommentType[];
|
||||
|
||||
export type MagicCommentConfig = {
|
||||
className: string;
|
||||
|
@ -99,15 +112,34 @@ function getAllMagicCommentDirectiveStyles(
|
|||
case 'wasm':
|
||||
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:
|
||||
// All comment types except lua, wasm and matlab
|
||||
return getCommentPattern(
|
||||
Object.keys(commentPatterns).filter(
|
||||
(pattern) =>
|
||||
!['lua', 'wasm', 'tex', 'latex', 'matlab'].includes(pattern),
|
||||
) as CommentType[],
|
||||
magicCommentDirectives,
|
||||
);
|
||||
// All popular comment types
|
||||
return getCommentPattern(popularCommentTypes, magicCommentDirectives);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -257,6 +257,7 @@ precaching
|
|||
preconfigured
|
||||
prerendered
|
||||
prerendering
|
||||
printfn
|
||||
println
|
||||
prismjs
|
||||
producthunt
|
||||
|
@ -303,6 +304,7 @@ sebastienlorber
|
|||
sensical
|
||||
setaf
|
||||
setext
|
||||
setlocal
|
||||
Shiki
|
||||
shiki
|
||||
shortcodes
|
||||
|
@ -373,6 +375,7 @@ unswizzle
|
|||
upvotes
|
||||
urlset
|
||||
Vannicatte
|
||||
vbnet
|
||||
Vetter
|
||||
vetter
|
||||
vfile
|
||||
|
|
|
@ -384,6 +384,61 @@ y = times2(x);
|
|||
\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
|
||||
|
||||
See https://github.com/facebook/docusaurus/issues/9517
|
||||
|
|
Loading…
Add table
Reference in a new issue