diff --git a/plugins/remark-codeblock-language-as-title/src/index.js b/plugins/remark-codeblock-language-as-title/src/index.js index 1b57e664bcf..c2fbbfb52c4 100644 --- a/plugins/remark-codeblock-language-as-title/src/index.js +++ b/plugins/remark-codeblock-language-as-title/src/index.js @@ -6,6 +6,410 @@ */ export default function codeblockLanguageAsTitleRemarkPlugin() { + const languagesMap = { + markup: 'Markup', + html: 'HTML', + xml: 'XML', + svg: 'SVG', + mathml: 'MathML', + ssml: 'SSML', + atom: 'Atom', + rss: 'RSS', + css: 'CSS', + clike: 'C-like', + javascript: 'JavaScript', + js: 'JavaScript', + abap: 'ABAP', + abnf: 'ABNF', + actionscript: 'ActionScript', + ada: 'Ada', + agda: 'Agda', + al: 'AL', + antlr4: 'ANTLR4', + g4: 'ANTLR4', + apacheconf: 'Apache Configuration', + apex: 'Apex', + apl: 'APL', + applescript: 'AppleScript', + aql: 'AQL', + arduino: 'Arduino', + ino: 'Arduino', + arff: 'ARFF', + armasm: 'ARM Assembly', + 'arm-asm': 'ARM Assembly', + arturo: 'Arturo', + art: 'Arturo', + asciidoc: 'AsciiDoc', + adoc: 'AsciiDoc', + aspnet: 'ASP.NET (C#)', + asm6502: '6502 Assembly', + asmatmel: 'Atmel AVR Assembly', + autohotkey: 'AutoHotkey', + autoit: 'AutoIt', + avisynth: 'AviSynth', + avs: 'AviSynth', + 'avro-idl': 'Avro IDL', + avdl: 'Avro IDL', + awk: 'AWK', + gawk: 'GAWK', + bash: 'Bash', + sh: 'Shell', + shell: 'Shell', + basic: 'BASIC', + batch: 'Batch', + bbcode: 'BBcode', + shortcode: 'Shortcode', + bbj: 'BBj', + bicep: 'Bicep', + birb: 'Birb', + bison: 'Bison', + bnf: 'BNF', + rbnf: 'RBNF', + bqn: 'BQN', + brainfuck: 'Brainfuck', + brightscript: 'BrightScript', + bro: 'Bro', + bsl: 'BSL (1C:Enterprise)', + oscript: 'OneScript', + c: 'C', + csharp: 'C#', + cs: 'C#', + dotnet: 'C#', + cpp: 'C++', + cfscript: 'CFScript', + cfc: 'CFScript', + chaiscript: 'ChaiScript', + cil: 'CIL', + cilkc: 'Cilk/C', + 'cilk-c': 'Cilk/C', + cilkcpp: 'Cilk/C++', + 'cilk-cpp': 'Cilk/C++', + cilk: 'Cilk/C++', + clojure: 'Clojure', + cmake: 'CMake', + cobol: 'COBOL', + coffeescript: 'CoffeeScript', + coffee: 'CoffeeScript', + concurnas: 'Concurnas', + conc: 'Concurnas', + csp: 'Content-Security-Policy', + cooklang: 'Cooklang', + coq: 'Coq', + crystal: 'Crystal', + 'css-extras': 'CSS Extras', + csv: 'CSV', + cue: 'CUE', + cypher: 'Cypher', + d: 'D', + dart: 'Dart', + dataweave: 'DataWeave', + dax: 'DAX', + dhall: 'Dhall', + diff: 'Diff', + django: 'Django/Jinja2', + jinja2: 'Django/Jinja2', + 'dns-zone-file': 'DNS zone file', + 'dns-zone': 'DNS zone file', + docker: 'Docker', + dockerfile: 'Docker', + dot: 'DOT (Graphviz)', + gv: 'DOT (Graphviz)', + ebnf: 'EBNF', + editorconfig: 'EditorConfig', + eiffel: 'Eiffel', + ejs: 'EJS', + eta: 'Eta', + elixir: 'Elixir', + elm: 'Elm', + etlua: 'Embedded Lua templating', + erb: 'ERB', + erlang: 'Erlang', + 'excel-formula': 'Excel Formula', + xlsx: 'Excel Formula', + xls: 'Excel Formula', + fsharp: 'F#', + factor: 'Factor', + false: 'False', + 'firestore-security-rules': 'Firestore security rules', + flow: 'Flow', + fortran: 'Fortran', + ftl: 'FreeMarker Template Language', + gml: 'GameMaker Language', + gamemakerlanguage: 'GameMaker Language', + gap: 'GAP (CAS)', + gcode: 'G-code', + gdscript: 'GDScript', + gedcom: 'GEDCOM', + gettext: 'gettext', + po: 'gettext', + gherkin: 'Gherkin', + git: 'Git', + glsl: 'GLSL', + gn: 'GN', + gni: 'GN', + 'linker-script': 'GNU Linker Script', + ld: 'GNU Linker Script', + go: 'Go', + 'go-module': 'Go module', + 'go-mod': 'Go module', + gradle: 'Gradle', + graphql: 'GraphQL', + groovy: 'Groovy', + haml: 'Haml', + handlebars: 'Handlebars', + mustache: 'Mustache', + hbs: 'Handlebars', + haskell: 'Haskell', + hs: 'Haskell', + haxe: 'Haxe', + hcl: 'HCL', + hlsl: 'HLSL', + hoon: 'Hoon', + http: 'HTTP', + hpkp: 'HTTP Public-Key-Pins', + hsts: 'HTTP Strict-Transport-Security', + ichigojam: 'IchigoJam', + icon: 'Icon', + 'icu-message-format': 'ICU Message Format', + idris: 'Idris', + idr: 'Idris', + ignore: '.ignore', + gitignore: '.gitignore', + hgignore: '.hgignore', + npmignore: '.npmignore', + inform7: 'Inform 7', + ini: 'Ini', + io: 'Io', + j: 'J', + java: 'Java', + javadoc: 'JavaDoc', + javadoclike: 'JavaDoc-like', + javastacktrace: 'Java stack trace', + jexl: 'Jexl', + jolie: 'Jolie', + jq: 'JQ', + jsdoc: 'JSDoc', + 'js-extras': 'JS Extras', + json: 'JSON', + webmanifest: 'Web App Manifest', + json5: 'JSON5', + jsonp: 'JSONP', + jsstacktrace: 'JS stack trace', + 'js-templates': 'JS Templates', + julia: 'Julia', + keepalived: 'Keepalived Configure', + keyman: 'Keyman', + kotlin: 'Kotlin', + kts: 'Kotlin Script', + kt: 'Kotlin', + kumir: 'KuMir (КуМир)', + kum: 'KuMir (КуМир)', + kusto: 'Kusto', + latex: 'LaTeX', + tex: 'TeX', + context: 'ConTeXt', + latte: 'Latte', + less: 'Less', + lilypond: 'LilyPond', + ly: 'LilyPond', + liquid: 'Liquid', + lisp: 'Lisp', + emacs: 'Lisp', + elisp: 'Lisp', + 'emacs-lisp': 'Lisp', + livescript: 'LiveScript', + llvm: 'LLVM IR', + log: 'Log file', + lolcode: 'LOLCODE', + lua: 'Lua', + magma: 'Magma (CAS)', + makefile: 'Makefile', + markdown: 'Markdown', + md: 'Markdown', + 'markup-templating': 'Markup templating', + mata: 'Mata', + matlab: 'MATLAB', + maxscript: 'MAXScript', + mel: 'MEL', + mermaid: 'Mermaid', + metafont: 'METAFONT', + mizar: 'Mizar', + mongodb: 'MongoDB', + monkey: 'Monkey', + moonscript: 'MoonScript', + moon: 'MoonScript', + n1ql: 'N1QL', + n4js: 'N4JS', + n4jsd: 'N4JS', + 'nand2tetris-hdl': 'Nand To Tetris HDL', + naniscript: 'Naninovel Script', + nani: 'Naninovel Script', + nasm: 'NASM', + neon: 'NEON', + nevod: 'Nevod', + nginx: 'nginx', + nim: 'Nim', + nix: 'Nix', + nsis: 'NSIS', + objectivec: 'Objective-C', + objc: 'Objective-C', + ocaml: 'OCaml', + odin: 'Odin', + opencl: 'OpenCL', + openqasm: 'OpenQasm', + qasm: 'OpenQasm', + oz: 'Oz', + parigp: 'PARI/GP', + parser: 'Parser', + pascal: 'Pascal', + objectpascal: 'Object Pascal', + pascaligo: 'Pascaligo', + psl: 'PATROL Scripting Language', + pcaxis: 'PC-Axis', + px: 'PC-Axis', + peoplecode: 'PeopleCode', + pcode: 'PeopleCode', + perl: 'Perl', + php: 'PHP', + phpdoc: 'PHPDoc', + 'php-extras': 'PHP Extras', + 'plant-uml': 'PlantUML', + plantuml: 'PlantUML', + plsql: 'PL/SQL', + powerquery: 'PowerQuery', + pq: 'PowerQuery', + mscript: 'PowerQuery', + powershell: 'PowerShell', + processing: 'Processing', + prolog: 'Prolog', + promql: 'PromQL', + properties: '.properties', + protobuf: 'Protocol Buffers', + pug: 'Pug', + puppet: 'Puppet', + pure: 'Pure', + purebasic: 'PureBasic', + pbfasm: 'PureBasic', + purescript: 'PureScript', + purs: 'PureScript', + python: 'Python', + py: 'Python', + qsharp: 'Q#', + qs: 'Q#', + q: 'Q (kdb+ database)', + qml: 'QML', + qore: 'Qore', + r: 'R', + racket: 'Racket', + rkt: 'Racket', + cshtml: 'Razor C#', + razor: 'Razor C#', + jsx: 'React JSX', + tsx: 'React TSX', + reason: 'Reason', + regex: 'Regex', + rego: 'Rego', + renpy: "Ren'py", + rpy: "Ren'py", + rescript: 'ReScript', + res: 'ReScript', + rest: 'reST (reStructuredText)', + rip: 'Rip', + roboconf: 'Roboconf', + robotframework: 'Robot Framework', + robot: 'Robot Framework', + ruby: 'Ruby', + rb: 'Ruby', + rust: 'Rust', + sas: 'SAS', + sass: 'Sass (Sass)', + scss: 'Sass (SCSS)', + scala: 'Scala', + scheme: 'Scheme', + 'shell-session': 'Shell session', + 'sh-session': 'Shell session', + shellsession: 'Shell session', + smali: 'Smali', + smalltalk: 'Smalltalk', + smarty: 'Smarty', + sml: 'SML', + smlnj: 'SML/NJ', + solidity: 'Solidity (Ethereum)', + sol: 'Solidity (Ethereum)', + 'solution-file': 'Solution file', + sln: 'Solution file', + soy: 'Soy (Closure Template)', + sparql: 'SPARQL', + rq: 'SPARQL', + 'splunk-spl': 'Splunk SPL', + sqf: 'SQF: Status Quo Function (Arma 3)', + sql: 'SQL', + squirrel: 'Squirrel', + stan: 'Stan', + stata: 'Stata Ado', + iecst: 'Structured Text (IEC 61131-3)', + stylus: 'Stylus', + supercollider: 'SuperCollider', + sclang: 'SuperCollider', + swift: 'Swift', + systemd: 'Systemd configuration file', + 't4-templating': 'T4 templating', + 't4-cs': 'T4 Text Templates (C#)', + t4: 'T4 Text Templates (C#)', + 't4-vb': 'T4 Text Templates (VB)', + tap: 'TAP', + tcl: 'Tcl', + tt2: 'Template Toolkit 2', + textile: 'Textile', + toml: 'TOML', + tremor: 'Tremor', + trickle: 'trickle', + troy: 'troy', + turtle: 'Turtle', + trig: 'TriG', + twig: 'Twig', + typescript: 'TypeScript', + ts: 'TypeScript', + typoscript: 'TypoScript', + tsconfig: 'TSConfig', + unrealscript: 'UnrealScript', + uscript: 'UnrealScript', + uc: 'UnrealScript', + uorazor: 'UO Razor Script', + uri: 'URI', + url: 'URL', + v: 'V', + vala: 'Vala', + vbnet: 'VB.Net', + velocity: 'Velocity', + verilog: 'Verilog', + vhdl: 'VHDL', + vim: 'vim', + 'visual-basic': 'Visual Basic', + vba: 'VBA', + vb: 'Visual Basic', + warpscript: 'WarpScript', + wasm: 'WebAssembly', + 'web-idl': 'Web IDL', + webidl: 'Web IDL', + wgsl: 'WGSL', + wiki: 'Wiki markup', + wolfram: 'Wolfram language', + mathematica: 'Mathematica', + nb: 'Mathematica Notebook', + wl: 'Wolfram language', + wren: 'Wren', + xeora: 'Xeora', + xeoracube: 'XeoraCube', + 'xml-doc': 'XML doc (.net)', + xojo: 'Xojo (REALbasic)', + xquery: 'XQuery', + yaml: 'YAML', + yml: 'YAML', + yang: 'YANG', + zig: 'Zig', + }; + /** * @param {import('mdast').Root} root - The root node of the Markdown AST * @returns {Promise} @@ -14,13 +418,14 @@ export default function codeblockLanguageAsTitleRemarkPlugin() { const {visit} = await import('unist-util-visit'); visit(root, 'code', node => { if (node.lang) { + const title = languagesMap[node.lang] || node.lang; if (node.meta) { if (node.meta.includes('title=')) { return; } - node.meta = `title="${node.lang}" ${node.meta}`; + node.meta = `title="${title}" ${node.meta}`; } else { - node.meta = `title="${node.lang}"`; + node.meta = `title="${title}"`; } } });