From 180d8cadef1b8a03f798effa11b167dd37efa1fa Mon Sep 17 00:00:00 2001 From: Dmitry Sharabin Date: Mon, 2 Jun 2025 18:40:40 +0200 Subject: [PATCH 01/16] Ditch the `prism-` prefix from the names of the files with examples --- examples/{prism-abap.html => abap.html} | 0 examples/{prism-abnf.html => abnf.html} | 0 examples/{prism-actionscript.html => actionscript.html} | 0 examples/{prism-ada.html => ada.html} | 0 examples/{prism-agda.html => agda.html} | 0 examples/{prism-al.html => al.html} | 0 examples/{prism-antlr4.html => antlr4.html} | 0 examples/{prism-apacheconf.html => apacheconf.html} | 0 examples/{prism-apex.html => apex.html} | 0 examples/{prism-apl.html => apl.html} | 0 examples/{prism-applescript.html => applescript.html} | 0 examples/{prism-aql.html => aql.html} | 0 examples/{prism-arduino.html => arduino.html} | 0 examples/{prism-arff.html => arff.html} | 0 examples/{prism-armasm.html => armasm.html} | 0 examples/{prism-arturo.html => arturo.html} | 0 examples/{prism-asciidoc.html => asciidoc.html} | 0 examples/{prism-asm6502.html => asm6502.html} | 0 examples/{prism-asmatmel.html => asmatmel.html} | 0 examples/{prism-aspnet.html => aspnet.html} | 0 examples/{prism-autohotkey.html => autohotkey.html} | 0 examples/{prism-autoit.html => autoit.html} | 0 examples/{prism-avisynth.html => avisynth.html} | 0 examples/{prism-avro-idl.html => avro-idl.html} | 0 examples/{prism-awk.html => awk.html} | 0 examples/{prism-bash.html => bash.html} | 0 examples/{prism-basic.html => basic.html} | 0 examples/{prism-batch.html => batch.html} | 0 examples/{prism-bbcode.html => bbcode.html} | 0 examples/{prism-bbj.html => bbj.html} | 0 examples/{prism-bicep.html => bicep.html} | 0 examples/{prism-birb.html => birb.html} | 0 examples/{prism-bison.html => bison.html} | 0 examples/{prism-bnf.html => bnf.html} | 0 examples/{prism-bqn.html => bqn.html} | 0 examples/{prism-brainfuck.html => brainfuck.html} | 0 examples/{prism-brightscript.html => brightscript.html} | 0 examples/{prism-bro.html => bro.html} | 0 examples/{prism-bsl.html => bsl.html} | 0 examples/{prism-c.html => c.html} | 0 examples/{prism-cfscript.html => cfscript.html} | 0 examples/{prism-chaiscript.html => chaiscript.html} | 0 examples/{prism-cil.html => cil.html} | 0 examples/{prism-cilkc.html => cilkc.html} | 0 examples/{prism-cilkcpp.html => cilkcpp.html} | 0 examples/{prism-clike.html => clike.html} | 0 examples/{prism-clojure.html => clojure.html} | 0 examples/{prism-cmake.html => cmake.html} | 0 examples/{prism-cobol.html => cobol.html} | 0 examples/{prism-coffeescript.html => coffeescript.html} | 0 examples/{prism-concurnas.html => concurnas.html} | 0 examples/{prism-cooklang.html => cooklang.html} | 0 examples/{prism-coq.html => coq.html} | 0 examples/{prism-cpp.html => cpp.html} | 0 examples/{prism-crystal.html => crystal.html} | 0 examples/{prism-csharp.html => csharp.html} | 0 examples/{prism-cshtml.html => cshtml.html} | 0 examples/{prism-csp.html => csp.html} | 0 examples/{prism-css-extras.html => css-extras.html} | 0 examples/{prism-css.html => css.html} | 0 examples/{prism-csv.html => csv.html} | 0 examples/{prism-cue.html => cue.html} | 0 examples/{prism-cypher.html => cypher.html} | 0 examples/{prism-d.html => d.html} | 0 examples/{prism-dart.html => dart.html} | 0 examples/{prism-dataweave.html => dataweave.html} | 0 examples/{prism-dax.html => dax.html} | 0 examples/{prism-dhall.html => dhall.html} | 0 examples/{prism-diff.html => diff.html} | 0 examples/{prism-django.html => django.html} | 0 examples/{prism-dns-zone-file.html => dns-zone-file.html} | 0 examples/{prism-docker.html => docker.html} | 0 examples/{prism-dot.html => dot.html} | 0 examples/{prism-ebnf.html => ebnf.html} | 0 examples/{prism-editorconfig.html => editorconfig.html} | 0 examples/{prism-eiffel.html => eiffel.html} | 0 examples/{prism-ejs.html => ejs.html} | 0 examples/{prism-elixir.html => elixir.html} | 0 examples/{prism-elm.html => elm.html} | 0 examples/{prism-erb.html => erb.html} | 0 examples/{prism-erlang.html => erlang.html} | 0 examples/{prism-etlua.html => etlua.html} | 0 examples/{prism-excel-formula.html => excel-formula.html} | 0 examples/{prism-factor.html => factor.html} | 0 examples/{prism-false.html => false.html} | 0 ...irestore-security-rules.html => firestore-security-rules.html} | 0 examples/{prism-flow.html => flow.html} | 0 examples/{prism-fortran.html => fortran.html} | 0 examples/{prism-fsharp.html => fsharp.html} | 0 examples/{prism-ftl.html => ftl.html} | 0 examples/{prism-gap.html => gap.html} | 0 examples/{prism-gcode.html => gcode.html} | 0 examples/{prism-gdscript.html => gdscript.html} | 0 examples/{prism-gedcom.html => gedcom.html} | 0 examples/{prism-gettext.html => gettext.html} | 0 examples/{prism-gherkin.html => gherkin.html} | 0 examples/{prism-git.html => git.html} | 0 examples/{prism-glsl.html => glsl.html} | 0 examples/{prism-gml.html => gml.html} | 0 examples/{prism-gn.html => gn.html} | 0 examples/{prism-go-module.html => go-module.html} | 0 examples/{prism-go.html => go.html} | 0 examples/{prism-gradle.html => gradle.html} | 0 examples/{prism-graphql.html => graphql.html} | 0 examples/{prism-groovy.html => groovy.html} | 0 examples/{prism-haml.html => haml.html} | 0 examples/{prism-handlebars.html => handlebars.html} | 0 examples/{prism-haskell.html => haskell.html} | 0 examples/{prism-haxe.html => haxe.html} | 0 examples/{prism-hcl.html => hcl.html} | 0 examples/{prism-hlsl.html => hlsl.html} | 0 examples/{prism-hoon.html => hoon.html} | 0 examples/{prism-hpkp.html => hpkp.html} | 0 examples/{prism-hsts.html => hsts.html} | 0 examples/{prism-http.html => http.html} | 0 examples/{prism-ichigojam.html => ichigojam.html} | 0 examples/{prism-icon.html => icon.html} | 0 .../{prism-icu-message-format.html => icu-message-format.html} | 0 examples/{prism-idris.html => idris.html} | 0 examples/{prism-iecst.html => iecst.html} | 0 examples/{prism-ignore.html => ignore.html} | 0 examples/{prism-inform7.html => inform7.html} | 0 examples/{prism-ini.html => ini.html} | 0 examples/{prism-io.html => io.html} | 0 examples/{prism-j.html => j.html} | 0 examples/{prism-java.html => java.html} | 0 examples/{prism-javadoc.html => javadoc.html} | 0 examples/{prism-javascript.html => javascript.html} | 0 examples/{prism-javastacktrace.html => javastacktrace.html} | 0 examples/{prism-jexl.html => jexl.html} | 0 examples/{prism-jolie.html => jolie.html} | 0 examples/{prism-jq.html => jq.html} | 0 examples/{prism-js-extras.html => js-extras.html} | 0 examples/{prism-js-templates.html => js-templates.html} | 0 examples/{prism-jsdoc.html => jsdoc.html} | 0 examples/{prism-json.html => json.html} | 0 examples/{prism-json5.html => json5.html} | 0 examples/{prism-jsonp.html => jsonp.html} | 0 examples/{prism-jsstacktrace.html => jsstacktrace.html} | 0 examples/{prism-jsx.html => jsx.html} | 0 examples/{prism-julia.html => julia.html} | 0 examples/{prism-keepalived.html => keepalived.html} | 0 examples/{prism-keyman.html => keyman.html} | 0 examples/{prism-kotlin.html => kotlin.html} | 0 examples/{prism-kumir.html => kumir.html} | 0 examples/{prism-kusto.html => kusto.html} | 0 examples/{prism-latex.html => latex.html} | 0 examples/{prism-latte.html => latte.html} | 0 examples/{prism-less.html => less.html} | 0 examples/{prism-lilypond.html => lilypond.html} | 0 examples/{prism-linker-script.html => linker-script.html} | 0 examples/{prism-liquid.html => liquid.html} | 0 examples/{prism-lisp.html => lisp.html} | 0 examples/{prism-livescript.html => livescript.html} | 0 examples/{prism-llvm.html => llvm.html} | 0 examples/{prism-log.html => log.html} | 0 examples/{prism-lolcode.html => lolcode.html} | 0 examples/{prism-lua.html => lua.html} | 0 examples/{prism-magma.html => magma.html} | 0 examples/{prism-makefile.html => makefile.html} | 0 examples/{prism-markdown.html => markdown.html} | 0 examples/{prism-markup.html => markup.html} | 0 examples/{prism-mata.html => mata.html} | 0 examples/{prism-matlab.html => matlab.html} | 0 examples/{prism-maxscript.html => maxscript.html} | 0 examples/{prism-mel.html => mel.html} | 0 examples/{prism-mermaid.html => mermaid.html} | 0 examples/{prism-metafont.html => metafont.html} | 0 examples/{prism-mizar.html => mizar.html} | 0 examples/{prism-mongodb.html => mongodb.html} | 0 examples/{prism-monkey.html => monkey.html} | 0 examples/{prism-moonscript.html => moonscript.html} | 0 examples/{prism-n1ql.html => n1ql.html} | 0 examples/{prism-n4js.html => n4js.html} | 0 examples/{prism-nand2tetris-hdl.html => nand2tetris-hdl.html} | 0 examples/{prism-naniscript.html => naniscript.html} | 0 examples/{prism-nasm.html => nasm.html} | 0 examples/{prism-neon.html => neon.html} | 0 examples/{prism-nevod.html => nevod.html} | 0 examples/{prism-nginx.html => nginx.html} | 0 examples/{prism-nim.html => nim.html} | 0 examples/{prism-nix.html => nix.html} | 0 examples/{prism-nsis.html => nsis.html} | 0 examples/{prism-objectivec.html => objectivec.html} | 0 examples/{prism-ocaml.html => ocaml.html} | 0 examples/{prism-odin.html => odin.html} | 0 examples/{prism-opencl.html => opencl.html} | 0 examples/{prism-openqasm.html => openqasm.html} | 0 examples/{prism-oz.html => oz.html} | 0 examples/{prism-parigp.html => parigp.html} | 0 examples/{prism-parser.html => parser.html} | 0 examples/{prism-pascal.html => pascal.html} | 0 examples/{prism-pascaligo.html => pascaligo.html} | 0 examples/{prism-pcaxis.html => pcaxis.html} | 0 examples/{prism-peoplecode.html => peoplecode.html} | 0 examples/{prism-perl.html => perl.html} | 0 examples/{prism-php-extras.html => php-extras.html} | 0 examples/{prism-php.html => php.html} | 0 examples/{prism-phpdoc.html => phpdoc.html} | 0 examples/{prism-plant-uml.html => plant-uml.html} | 0 examples/{prism-plsql.html => plsql.html} | 0 examples/{prism-powerquery.html => powerquery.html} | 0 examples/{prism-powershell.html => powershell.html} | 0 examples/{prism-processing.html => processing.html} | 0 examples/{prism-prolog.html => prolog.html} | 0 examples/{prism-promql.html => promql.html} | 0 examples/{prism-properties.html => properties.html} | 0 examples/{prism-protobuf.html => protobuf.html} | 0 examples/{prism-psl.html => psl.html} | 0 examples/{prism-pug.html => pug.html} | 0 examples/{prism-puppet.html => puppet.html} | 0 examples/{prism-pure.html => pure.html} | 0 examples/{prism-purebasic.html => purebasic.html} | 0 examples/{prism-purescript.html => purescript.html} | 0 examples/{prism-python.html => python.html} | 0 examples/{prism-q.html => q.html} | 0 examples/{prism-qml.html => qml.html} | 0 examples/{prism-qore.html => qore.html} | 0 examples/{prism-qsharp.html => qsharp.html} | 0 examples/{prism-r.html => r.html} | 0 examples/{prism-racket.html => racket.html} | 0 examples/{prism-reason.html => reason.html} | 0 examples/{prism-regex.html => regex.html} | 0 examples/{prism-rego.html => rego.html} | 0 examples/{prism-renpy.html => renpy.html} | 0 examples/{prism-rescript.html => rescript.html} | 0 examples/{prism-rest.html => rest.html} | 0 examples/{prism-rip.html => rip.html} | 0 examples/{prism-roboconf.html => roboconf.html} | 0 examples/{prism-robotframework.html => robotframework.html} | 0 examples/{prism-ruby.html => ruby.html} | 0 examples/{prism-rust.html => rust.html} | 0 examples/{prism-sas.html => sas.html} | 0 examples/{prism-sass.html => sass.html} | 0 examples/{prism-scala.html => scala.html} | 0 examples/{prism-scheme.html => scheme.html} | 0 examples/{prism-scss.html => scss.html} | 0 examples/{prism-shell-session.html => shell-session.html} | 0 examples/{prism-smali.html => smali.html} | 0 examples/{prism-smalltalk.html => smalltalk.html} | 0 examples/{prism-smarty.html => smarty.html} | 0 examples/{prism-sml.html => sml.html} | 0 examples/{prism-solidity.html => solidity.html} | 0 examples/{prism-solution-file.html => solution-file.html} | 0 examples/{prism-soy.html => soy.html} | 0 examples/{prism-sparql.html => sparql.html} | 0 examples/{prism-splunk-spl.html => splunk-spl.html} | 0 examples/{prism-sqf.html => sqf.html} | 0 examples/{prism-sql.html => sql.html} | 0 examples/{prism-squirrel.html => squirrel.html} | 0 examples/{prism-stan.html => stan.html} | 0 examples/{prism-stata.html => stata.html} | 0 examples/{prism-stylus.html => stylus.html} | 0 examples/{prism-supercollider.html => supercollider.html} | 0 examples/{prism-swift.html => swift.html} | 0 examples/{prism-systemd.html => systemd.html} | 0 examples/{prism-t4-cs.html => t4-cs.html} | 0 examples/{prism-t4-vb.html => t4-vb.html} | 0 examples/{prism-tap.html => tap.html} | 0 examples/{prism-tcl.html => tcl.html} | 0 examples/{prism-textile.html => textile.html} | 0 examples/{prism-toml.html => toml.html} | 0 examples/{prism-tremor.html => tremor.html} | 0 examples/{prism-tsx.html => tsx.html} | 0 examples/{prism-tt2.html => tt2.html} | 0 examples/{prism-turtle.html => turtle.html} | 0 examples/{prism-twig.html => twig.html} | 0 examples/{prism-typescript.html => typescript.html} | 0 examples/{prism-typoscript.html => typoscript.html} | 0 examples/{prism-unrealscript.html => unrealscript.html} | 0 examples/{prism-uorazor.html => uorazor.html} | 0 examples/{prism-uri.html => uri.html} | 0 examples/{prism-v.html => v.html} | 0 examples/{prism-vala.html => vala.html} | 0 examples/{prism-vbnet.html => vbnet.html} | 0 examples/{prism-velocity.html => velocity.html} | 0 examples/{prism-verilog.html => verilog.html} | 0 examples/{prism-vhdl.html => vhdl.html} | 0 examples/{prism-vim.html => vim.html} | 0 examples/{prism-visual-basic.html => visual-basic.html} | 0 examples/{prism-warpscript.html => warpscript.html} | 0 examples/{prism-wasm.html => wasm.html} | 0 examples/{prism-web-idl.html => web-idl.html} | 0 examples/{prism-wgsl.html => wgsl.html} | 0 examples/{prism-wiki.html => wiki.html} | 0 examples/{prism-wolfram.html => wolfram.html} | 0 examples/{prism-wren.html => wren.html} | 0 examples/{prism-xeora.html => xeora.html} | 0 examples/{prism-xml-doc.html => xml-doc.html} | 0 examples/{prism-xojo.html => xojo.html} | 0 examples/{prism-xquery.html => xquery.html} | 0 examples/{prism-yaml.html => yaml.html} | 0 examples/{prism-yang.html => yang.html} | 0 examples/{prism-zig.html => zig.html} | 0 294 files changed, 0 insertions(+), 0 deletions(-) rename examples/{prism-abap.html => abap.html} (100%) rename examples/{prism-abnf.html => abnf.html} (100%) rename examples/{prism-actionscript.html => actionscript.html} (100%) rename examples/{prism-ada.html => ada.html} (100%) rename examples/{prism-agda.html => agda.html} (100%) rename examples/{prism-al.html => al.html} (100%) rename examples/{prism-antlr4.html => antlr4.html} (100%) rename examples/{prism-apacheconf.html => apacheconf.html} (100%) rename examples/{prism-apex.html => apex.html} (100%) rename examples/{prism-apl.html => apl.html} (100%) rename examples/{prism-applescript.html => applescript.html} (100%) rename examples/{prism-aql.html => aql.html} (100%) rename examples/{prism-arduino.html => arduino.html} (100%) rename examples/{prism-arff.html => arff.html} (100%) rename examples/{prism-armasm.html => armasm.html} (100%) rename examples/{prism-arturo.html => arturo.html} (100%) rename examples/{prism-asciidoc.html => asciidoc.html} (100%) rename examples/{prism-asm6502.html => asm6502.html} (100%) rename examples/{prism-asmatmel.html => asmatmel.html} (100%) rename examples/{prism-aspnet.html => aspnet.html} (100%) rename examples/{prism-autohotkey.html => autohotkey.html} (100%) rename examples/{prism-autoit.html => autoit.html} (100%) rename examples/{prism-avisynth.html => avisynth.html} (100%) rename examples/{prism-avro-idl.html => avro-idl.html} (100%) rename examples/{prism-awk.html => awk.html} (100%) rename examples/{prism-bash.html => bash.html} (100%) rename examples/{prism-basic.html => basic.html} (100%) rename examples/{prism-batch.html => batch.html} (100%) rename examples/{prism-bbcode.html => bbcode.html} (100%) rename examples/{prism-bbj.html => bbj.html} (100%) rename examples/{prism-bicep.html => bicep.html} (100%) rename examples/{prism-birb.html => birb.html} (100%) rename examples/{prism-bison.html => bison.html} (100%) rename examples/{prism-bnf.html => bnf.html} (100%) rename examples/{prism-bqn.html => bqn.html} (100%) rename examples/{prism-brainfuck.html => brainfuck.html} (100%) rename examples/{prism-brightscript.html => brightscript.html} (100%) rename examples/{prism-bro.html => bro.html} (100%) rename examples/{prism-bsl.html => bsl.html} (100%) rename examples/{prism-c.html => c.html} (100%) rename examples/{prism-cfscript.html => cfscript.html} (100%) rename examples/{prism-chaiscript.html => chaiscript.html} (100%) rename examples/{prism-cil.html => cil.html} (100%) rename examples/{prism-cilkc.html => cilkc.html} (100%) rename examples/{prism-cilkcpp.html => cilkcpp.html} (100%) rename examples/{prism-clike.html => clike.html} (100%) rename examples/{prism-clojure.html => clojure.html} (100%) rename examples/{prism-cmake.html => cmake.html} (100%) rename examples/{prism-cobol.html => cobol.html} (100%) rename examples/{prism-coffeescript.html => coffeescript.html} (100%) rename examples/{prism-concurnas.html => concurnas.html} (100%) rename examples/{prism-cooklang.html => cooklang.html} (100%) rename examples/{prism-coq.html => coq.html} (100%) rename examples/{prism-cpp.html => cpp.html} (100%) rename examples/{prism-crystal.html => crystal.html} (100%) rename examples/{prism-csharp.html => csharp.html} (100%) rename examples/{prism-cshtml.html => cshtml.html} (100%) rename examples/{prism-csp.html => csp.html} (100%) rename examples/{prism-css-extras.html => css-extras.html} (100%) rename examples/{prism-css.html => css.html} (100%) rename examples/{prism-csv.html => csv.html} (100%) rename examples/{prism-cue.html => cue.html} (100%) rename examples/{prism-cypher.html => cypher.html} (100%) rename examples/{prism-d.html => d.html} (100%) rename examples/{prism-dart.html => dart.html} (100%) rename examples/{prism-dataweave.html => dataweave.html} (100%) rename examples/{prism-dax.html => dax.html} (100%) rename examples/{prism-dhall.html => dhall.html} (100%) rename examples/{prism-diff.html => diff.html} (100%) rename examples/{prism-django.html => django.html} (100%) rename examples/{prism-dns-zone-file.html => dns-zone-file.html} (100%) rename examples/{prism-docker.html => docker.html} (100%) rename examples/{prism-dot.html => dot.html} (100%) rename examples/{prism-ebnf.html => ebnf.html} (100%) rename examples/{prism-editorconfig.html => editorconfig.html} (100%) rename examples/{prism-eiffel.html => eiffel.html} (100%) rename examples/{prism-ejs.html => ejs.html} (100%) rename examples/{prism-elixir.html => elixir.html} (100%) rename examples/{prism-elm.html => elm.html} (100%) rename examples/{prism-erb.html => erb.html} (100%) rename examples/{prism-erlang.html => erlang.html} (100%) rename examples/{prism-etlua.html => etlua.html} (100%) rename examples/{prism-excel-formula.html => excel-formula.html} (100%) rename examples/{prism-factor.html => factor.html} (100%) rename examples/{prism-false.html => false.html} (100%) rename examples/{prism-firestore-security-rules.html => firestore-security-rules.html} (100%) rename examples/{prism-flow.html => flow.html} (100%) rename examples/{prism-fortran.html => fortran.html} (100%) rename examples/{prism-fsharp.html => fsharp.html} (100%) rename examples/{prism-ftl.html => ftl.html} (100%) rename examples/{prism-gap.html => gap.html} (100%) rename examples/{prism-gcode.html => gcode.html} (100%) rename examples/{prism-gdscript.html => gdscript.html} (100%) rename examples/{prism-gedcom.html => gedcom.html} (100%) rename examples/{prism-gettext.html => gettext.html} (100%) rename examples/{prism-gherkin.html => gherkin.html} (100%) rename examples/{prism-git.html => git.html} (100%) rename examples/{prism-glsl.html => glsl.html} (100%) rename examples/{prism-gml.html => gml.html} (100%) rename examples/{prism-gn.html => gn.html} (100%) rename examples/{prism-go-module.html => go-module.html} (100%) rename examples/{prism-go.html => go.html} (100%) rename examples/{prism-gradle.html => gradle.html} (100%) rename examples/{prism-graphql.html => graphql.html} (100%) rename examples/{prism-groovy.html => groovy.html} (100%) rename examples/{prism-haml.html => haml.html} (100%) rename examples/{prism-handlebars.html => handlebars.html} (100%) rename examples/{prism-haskell.html => haskell.html} (100%) rename examples/{prism-haxe.html => haxe.html} (100%) rename examples/{prism-hcl.html => hcl.html} (100%) rename examples/{prism-hlsl.html => hlsl.html} (100%) rename examples/{prism-hoon.html => hoon.html} (100%) rename examples/{prism-hpkp.html => hpkp.html} (100%) rename examples/{prism-hsts.html => hsts.html} (100%) rename examples/{prism-http.html => http.html} (100%) rename examples/{prism-ichigojam.html => ichigojam.html} (100%) rename examples/{prism-icon.html => icon.html} (100%) rename examples/{prism-icu-message-format.html => icu-message-format.html} (100%) rename examples/{prism-idris.html => idris.html} (100%) rename examples/{prism-iecst.html => iecst.html} (100%) rename examples/{prism-ignore.html => ignore.html} (100%) rename examples/{prism-inform7.html => inform7.html} (100%) rename examples/{prism-ini.html => ini.html} (100%) rename examples/{prism-io.html => io.html} (100%) rename examples/{prism-j.html => j.html} (100%) rename examples/{prism-java.html => java.html} (100%) rename examples/{prism-javadoc.html => javadoc.html} (100%) rename examples/{prism-javascript.html => javascript.html} (100%) rename examples/{prism-javastacktrace.html => javastacktrace.html} (100%) rename examples/{prism-jexl.html => jexl.html} (100%) rename examples/{prism-jolie.html => jolie.html} (100%) rename examples/{prism-jq.html => jq.html} (100%) rename examples/{prism-js-extras.html => js-extras.html} (100%) rename examples/{prism-js-templates.html => js-templates.html} (100%) rename examples/{prism-jsdoc.html => jsdoc.html} (100%) rename examples/{prism-json.html => json.html} (100%) rename examples/{prism-json5.html => json5.html} (100%) rename examples/{prism-jsonp.html => jsonp.html} (100%) rename examples/{prism-jsstacktrace.html => jsstacktrace.html} (100%) rename examples/{prism-jsx.html => jsx.html} (100%) rename examples/{prism-julia.html => julia.html} (100%) rename examples/{prism-keepalived.html => keepalived.html} (100%) rename examples/{prism-keyman.html => keyman.html} (100%) rename examples/{prism-kotlin.html => kotlin.html} (100%) rename examples/{prism-kumir.html => kumir.html} (100%) rename examples/{prism-kusto.html => kusto.html} (100%) rename examples/{prism-latex.html => latex.html} (100%) rename examples/{prism-latte.html => latte.html} (100%) rename examples/{prism-less.html => less.html} (100%) rename examples/{prism-lilypond.html => lilypond.html} (100%) rename examples/{prism-linker-script.html => linker-script.html} (100%) rename examples/{prism-liquid.html => liquid.html} (100%) rename examples/{prism-lisp.html => lisp.html} (100%) rename examples/{prism-livescript.html => livescript.html} (100%) rename examples/{prism-llvm.html => llvm.html} (100%) rename examples/{prism-log.html => log.html} (100%) rename examples/{prism-lolcode.html => lolcode.html} (100%) rename examples/{prism-lua.html => lua.html} (100%) rename examples/{prism-magma.html => magma.html} (100%) rename examples/{prism-makefile.html => makefile.html} (100%) rename examples/{prism-markdown.html => markdown.html} (100%) rename examples/{prism-markup.html => markup.html} (100%) rename examples/{prism-mata.html => mata.html} (100%) rename examples/{prism-matlab.html => matlab.html} (100%) rename examples/{prism-maxscript.html => maxscript.html} (100%) rename examples/{prism-mel.html => mel.html} (100%) rename examples/{prism-mermaid.html => mermaid.html} (100%) rename examples/{prism-metafont.html => metafont.html} (100%) rename examples/{prism-mizar.html => mizar.html} (100%) rename examples/{prism-mongodb.html => mongodb.html} (100%) rename examples/{prism-monkey.html => monkey.html} (100%) rename examples/{prism-moonscript.html => moonscript.html} (100%) rename examples/{prism-n1ql.html => n1ql.html} (100%) rename examples/{prism-n4js.html => n4js.html} (100%) rename examples/{prism-nand2tetris-hdl.html => nand2tetris-hdl.html} (100%) rename examples/{prism-naniscript.html => naniscript.html} (100%) rename examples/{prism-nasm.html => nasm.html} (100%) rename examples/{prism-neon.html => neon.html} (100%) rename examples/{prism-nevod.html => nevod.html} (100%) rename examples/{prism-nginx.html => nginx.html} (100%) rename examples/{prism-nim.html => nim.html} (100%) rename examples/{prism-nix.html => nix.html} (100%) rename examples/{prism-nsis.html => nsis.html} (100%) rename examples/{prism-objectivec.html => objectivec.html} (100%) rename examples/{prism-ocaml.html => ocaml.html} (100%) rename examples/{prism-odin.html => odin.html} (100%) rename examples/{prism-opencl.html => opencl.html} (100%) rename examples/{prism-openqasm.html => openqasm.html} (100%) rename examples/{prism-oz.html => oz.html} (100%) rename examples/{prism-parigp.html => parigp.html} (100%) rename examples/{prism-parser.html => parser.html} (100%) rename examples/{prism-pascal.html => pascal.html} (100%) rename examples/{prism-pascaligo.html => pascaligo.html} (100%) rename examples/{prism-pcaxis.html => pcaxis.html} (100%) rename examples/{prism-peoplecode.html => peoplecode.html} (100%) rename examples/{prism-perl.html => perl.html} (100%) rename examples/{prism-php-extras.html => php-extras.html} (100%) rename examples/{prism-php.html => php.html} (100%) rename examples/{prism-phpdoc.html => phpdoc.html} (100%) rename examples/{prism-plant-uml.html => plant-uml.html} (100%) rename examples/{prism-plsql.html => plsql.html} (100%) rename examples/{prism-powerquery.html => powerquery.html} (100%) rename examples/{prism-powershell.html => powershell.html} (100%) rename examples/{prism-processing.html => processing.html} (100%) rename examples/{prism-prolog.html => prolog.html} (100%) rename examples/{prism-promql.html => promql.html} (100%) rename examples/{prism-properties.html => properties.html} (100%) rename examples/{prism-protobuf.html => protobuf.html} (100%) rename examples/{prism-psl.html => psl.html} (100%) rename examples/{prism-pug.html => pug.html} (100%) rename examples/{prism-puppet.html => puppet.html} (100%) rename examples/{prism-pure.html => pure.html} (100%) rename examples/{prism-purebasic.html => purebasic.html} (100%) rename examples/{prism-purescript.html => purescript.html} (100%) rename examples/{prism-python.html => python.html} (100%) rename examples/{prism-q.html => q.html} (100%) rename examples/{prism-qml.html => qml.html} (100%) rename examples/{prism-qore.html => qore.html} (100%) rename examples/{prism-qsharp.html => qsharp.html} (100%) rename examples/{prism-r.html => r.html} (100%) rename examples/{prism-racket.html => racket.html} (100%) rename examples/{prism-reason.html => reason.html} (100%) rename examples/{prism-regex.html => regex.html} (100%) rename examples/{prism-rego.html => rego.html} (100%) rename examples/{prism-renpy.html => renpy.html} (100%) rename examples/{prism-rescript.html => rescript.html} (100%) rename examples/{prism-rest.html => rest.html} (100%) rename examples/{prism-rip.html => rip.html} (100%) rename examples/{prism-roboconf.html => roboconf.html} (100%) rename examples/{prism-robotframework.html => robotframework.html} (100%) rename examples/{prism-ruby.html => ruby.html} (100%) rename examples/{prism-rust.html => rust.html} (100%) rename examples/{prism-sas.html => sas.html} (100%) rename examples/{prism-sass.html => sass.html} (100%) rename examples/{prism-scala.html => scala.html} (100%) rename examples/{prism-scheme.html => scheme.html} (100%) rename examples/{prism-scss.html => scss.html} (100%) rename examples/{prism-shell-session.html => shell-session.html} (100%) rename examples/{prism-smali.html => smali.html} (100%) rename examples/{prism-smalltalk.html => smalltalk.html} (100%) rename examples/{prism-smarty.html => smarty.html} (100%) rename examples/{prism-sml.html => sml.html} (100%) rename examples/{prism-solidity.html => solidity.html} (100%) rename examples/{prism-solution-file.html => solution-file.html} (100%) rename examples/{prism-soy.html => soy.html} (100%) rename examples/{prism-sparql.html => sparql.html} (100%) rename examples/{prism-splunk-spl.html => splunk-spl.html} (100%) rename examples/{prism-sqf.html => sqf.html} (100%) rename examples/{prism-sql.html => sql.html} (100%) rename examples/{prism-squirrel.html => squirrel.html} (100%) rename examples/{prism-stan.html => stan.html} (100%) rename examples/{prism-stata.html => stata.html} (100%) rename examples/{prism-stylus.html => stylus.html} (100%) rename examples/{prism-supercollider.html => supercollider.html} (100%) rename examples/{prism-swift.html => swift.html} (100%) rename examples/{prism-systemd.html => systemd.html} (100%) rename examples/{prism-t4-cs.html => t4-cs.html} (100%) rename examples/{prism-t4-vb.html => t4-vb.html} (100%) rename examples/{prism-tap.html => tap.html} (100%) rename examples/{prism-tcl.html => tcl.html} (100%) rename examples/{prism-textile.html => textile.html} (100%) rename examples/{prism-toml.html => toml.html} (100%) rename examples/{prism-tremor.html => tremor.html} (100%) rename examples/{prism-tsx.html => tsx.html} (100%) rename examples/{prism-tt2.html => tt2.html} (100%) rename examples/{prism-turtle.html => turtle.html} (100%) rename examples/{prism-twig.html => twig.html} (100%) rename examples/{prism-typescript.html => typescript.html} (100%) rename examples/{prism-typoscript.html => typoscript.html} (100%) rename examples/{prism-unrealscript.html => unrealscript.html} (100%) rename examples/{prism-uorazor.html => uorazor.html} (100%) rename examples/{prism-uri.html => uri.html} (100%) rename examples/{prism-v.html => v.html} (100%) rename examples/{prism-vala.html => vala.html} (100%) rename examples/{prism-vbnet.html => vbnet.html} (100%) rename examples/{prism-velocity.html => velocity.html} (100%) rename examples/{prism-verilog.html => verilog.html} (100%) rename examples/{prism-vhdl.html => vhdl.html} (100%) rename examples/{prism-vim.html => vim.html} (100%) rename examples/{prism-visual-basic.html => visual-basic.html} (100%) rename examples/{prism-warpscript.html => warpscript.html} (100%) rename examples/{prism-wasm.html => wasm.html} (100%) rename examples/{prism-web-idl.html => web-idl.html} (100%) rename examples/{prism-wgsl.html => wgsl.html} (100%) rename examples/{prism-wiki.html => wiki.html} (100%) rename examples/{prism-wolfram.html => wolfram.html} (100%) rename examples/{prism-wren.html => wren.html} (100%) rename examples/{prism-xeora.html => xeora.html} (100%) rename examples/{prism-xml-doc.html => xml-doc.html} (100%) rename examples/{prism-xojo.html => xojo.html} (100%) rename examples/{prism-xquery.html => xquery.html} (100%) rename examples/{prism-yaml.html => yaml.html} (100%) rename examples/{prism-yang.html => yang.html} (100%) rename examples/{prism-zig.html => zig.html} (100%) diff --git a/examples/prism-abap.html b/examples/abap.html similarity index 100% rename from examples/prism-abap.html rename to examples/abap.html diff --git a/examples/prism-abnf.html b/examples/abnf.html similarity index 100% rename from examples/prism-abnf.html rename to examples/abnf.html diff --git a/examples/prism-actionscript.html b/examples/actionscript.html similarity index 100% rename from examples/prism-actionscript.html rename to examples/actionscript.html diff --git a/examples/prism-ada.html b/examples/ada.html similarity index 100% rename from examples/prism-ada.html rename to examples/ada.html diff --git a/examples/prism-agda.html b/examples/agda.html similarity index 100% rename from examples/prism-agda.html rename to examples/agda.html diff --git a/examples/prism-al.html b/examples/al.html similarity index 100% rename from examples/prism-al.html rename to examples/al.html diff --git a/examples/prism-antlr4.html b/examples/antlr4.html similarity index 100% rename from examples/prism-antlr4.html rename to examples/antlr4.html diff --git a/examples/prism-apacheconf.html b/examples/apacheconf.html similarity index 100% rename from examples/prism-apacheconf.html rename to examples/apacheconf.html diff --git a/examples/prism-apex.html b/examples/apex.html similarity index 100% rename from examples/prism-apex.html rename to examples/apex.html diff --git a/examples/prism-apl.html b/examples/apl.html similarity index 100% rename from examples/prism-apl.html rename to examples/apl.html diff --git a/examples/prism-applescript.html b/examples/applescript.html similarity index 100% rename from examples/prism-applescript.html rename to examples/applescript.html diff --git a/examples/prism-aql.html b/examples/aql.html similarity index 100% rename from examples/prism-aql.html rename to examples/aql.html diff --git a/examples/prism-arduino.html b/examples/arduino.html similarity index 100% rename from examples/prism-arduino.html rename to examples/arduino.html diff --git a/examples/prism-arff.html b/examples/arff.html similarity index 100% rename from examples/prism-arff.html rename to examples/arff.html diff --git a/examples/prism-armasm.html b/examples/armasm.html similarity index 100% rename from examples/prism-armasm.html rename to examples/armasm.html diff --git a/examples/prism-arturo.html b/examples/arturo.html similarity index 100% rename from examples/prism-arturo.html rename to examples/arturo.html diff --git a/examples/prism-asciidoc.html b/examples/asciidoc.html similarity index 100% rename from examples/prism-asciidoc.html rename to examples/asciidoc.html diff --git a/examples/prism-asm6502.html b/examples/asm6502.html similarity index 100% rename from examples/prism-asm6502.html rename to examples/asm6502.html diff --git a/examples/prism-asmatmel.html b/examples/asmatmel.html similarity index 100% rename from examples/prism-asmatmel.html rename to examples/asmatmel.html diff --git a/examples/prism-aspnet.html b/examples/aspnet.html similarity index 100% rename from examples/prism-aspnet.html rename to examples/aspnet.html diff --git a/examples/prism-autohotkey.html b/examples/autohotkey.html similarity index 100% rename from examples/prism-autohotkey.html rename to examples/autohotkey.html diff --git a/examples/prism-autoit.html b/examples/autoit.html similarity index 100% rename from examples/prism-autoit.html rename to examples/autoit.html diff --git a/examples/prism-avisynth.html b/examples/avisynth.html similarity index 100% rename from examples/prism-avisynth.html rename to examples/avisynth.html diff --git a/examples/prism-avro-idl.html b/examples/avro-idl.html similarity index 100% rename from examples/prism-avro-idl.html rename to examples/avro-idl.html diff --git a/examples/prism-awk.html b/examples/awk.html similarity index 100% rename from examples/prism-awk.html rename to examples/awk.html diff --git a/examples/prism-bash.html b/examples/bash.html similarity index 100% rename from examples/prism-bash.html rename to examples/bash.html diff --git a/examples/prism-basic.html b/examples/basic.html similarity index 100% rename from examples/prism-basic.html rename to examples/basic.html diff --git a/examples/prism-batch.html b/examples/batch.html similarity index 100% rename from examples/prism-batch.html rename to examples/batch.html diff --git a/examples/prism-bbcode.html b/examples/bbcode.html similarity index 100% rename from examples/prism-bbcode.html rename to examples/bbcode.html diff --git a/examples/prism-bbj.html b/examples/bbj.html similarity index 100% rename from examples/prism-bbj.html rename to examples/bbj.html diff --git a/examples/prism-bicep.html b/examples/bicep.html similarity index 100% rename from examples/prism-bicep.html rename to examples/bicep.html diff --git a/examples/prism-birb.html b/examples/birb.html similarity index 100% rename from examples/prism-birb.html rename to examples/birb.html diff --git a/examples/prism-bison.html b/examples/bison.html similarity index 100% rename from examples/prism-bison.html rename to examples/bison.html diff --git a/examples/prism-bnf.html b/examples/bnf.html similarity index 100% rename from examples/prism-bnf.html rename to examples/bnf.html diff --git a/examples/prism-bqn.html b/examples/bqn.html similarity index 100% rename from examples/prism-bqn.html rename to examples/bqn.html diff --git a/examples/prism-brainfuck.html b/examples/brainfuck.html similarity index 100% rename from examples/prism-brainfuck.html rename to examples/brainfuck.html diff --git a/examples/prism-brightscript.html b/examples/brightscript.html similarity index 100% rename from examples/prism-brightscript.html rename to examples/brightscript.html diff --git a/examples/prism-bro.html b/examples/bro.html similarity index 100% rename from examples/prism-bro.html rename to examples/bro.html diff --git a/examples/prism-bsl.html b/examples/bsl.html similarity index 100% rename from examples/prism-bsl.html rename to examples/bsl.html diff --git a/examples/prism-c.html b/examples/c.html similarity index 100% rename from examples/prism-c.html rename to examples/c.html diff --git a/examples/prism-cfscript.html b/examples/cfscript.html similarity index 100% rename from examples/prism-cfscript.html rename to examples/cfscript.html diff --git a/examples/prism-chaiscript.html b/examples/chaiscript.html similarity index 100% rename from examples/prism-chaiscript.html rename to examples/chaiscript.html diff --git a/examples/prism-cil.html b/examples/cil.html similarity index 100% rename from examples/prism-cil.html rename to examples/cil.html diff --git a/examples/prism-cilkc.html b/examples/cilkc.html similarity index 100% rename from examples/prism-cilkc.html rename to examples/cilkc.html diff --git a/examples/prism-cilkcpp.html b/examples/cilkcpp.html similarity index 100% rename from examples/prism-cilkcpp.html rename to examples/cilkcpp.html diff --git a/examples/prism-clike.html b/examples/clike.html similarity index 100% rename from examples/prism-clike.html rename to examples/clike.html diff --git a/examples/prism-clojure.html b/examples/clojure.html similarity index 100% rename from examples/prism-clojure.html rename to examples/clojure.html diff --git a/examples/prism-cmake.html b/examples/cmake.html similarity index 100% rename from examples/prism-cmake.html rename to examples/cmake.html diff --git a/examples/prism-cobol.html b/examples/cobol.html similarity index 100% rename from examples/prism-cobol.html rename to examples/cobol.html diff --git a/examples/prism-coffeescript.html b/examples/coffeescript.html similarity index 100% rename from examples/prism-coffeescript.html rename to examples/coffeescript.html diff --git a/examples/prism-concurnas.html b/examples/concurnas.html similarity index 100% rename from examples/prism-concurnas.html rename to examples/concurnas.html diff --git a/examples/prism-cooklang.html b/examples/cooklang.html similarity index 100% rename from examples/prism-cooklang.html rename to examples/cooklang.html diff --git a/examples/prism-coq.html b/examples/coq.html similarity index 100% rename from examples/prism-coq.html rename to examples/coq.html diff --git a/examples/prism-cpp.html b/examples/cpp.html similarity index 100% rename from examples/prism-cpp.html rename to examples/cpp.html diff --git a/examples/prism-crystal.html b/examples/crystal.html similarity index 100% rename from examples/prism-crystal.html rename to examples/crystal.html diff --git a/examples/prism-csharp.html b/examples/csharp.html similarity index 100% rename from examples/prism-csharp.html rename to examples/csharp.html diff --git a/examples/prism-cshtml.html b/examples/cshtml.html similarity index 100% rename from examples/prism-cshtml.html rename to examples/cshtml.html diff --git a/examples/prism-csp.html b/examples/csp.html similarity index 100% rename from examples/prism-csp.html rename to examples/csp.html diff --git a/examples/prism-css-extras.html b/examples/css-extras.html similarity index 100% rename from examples/prism-css-extras.html rename to examples/css-extras.html diff --git a/examples/prism-css.html b/examples/css.html similarity index 100% rename from examples/prism-css.html rename to examples/css.html diff --git a/examples/prism-csv.html b/examples/csv.html similarity index 100% rename from examples/prism-csv.html rename to examples/csv.html diff --git a/examples/prism-cue.html b/examples/cue.html similarity index 100% rename from examples/prism-cue.html rename to examples/cue.html diff --git a/examples/prism-cypher.html b/examples/cypher.html similarity index 100% rename from examples/prism-cypher.html rename to examples/cypher.html diff --git a/examples/prism-d.html b/examples/d.html similarity index 100% rename from examples/prism-d.html rename to examples/d.html diff --git a/examples/prism-dart.html b/examples/dart.html similarity index 100% rename from examples/prism-dart.html rename to examples/dart.html diff --git a/examples/prism-dataweave.html b/examples/dataweave.html similarity index 100% rename from examples/prism-dataweave.html rename to examples/dataweave.html diff --git a/examples/prism-dax.html b/examples/dax.html similarity index 100% rename from examples/prism-dax.html rename to examples/dax.html diff --git a/examples/prism-dhall.html b/examples/dhall.html similarity index 100% rename from examples/prism-dhall.html rename to examples/dhall.html diff --git a/examples/prism-diff.html b/examples/diff.html similarity index 100% rename from examples/prism-diff.html rename to examples/diff.html diff --git a/examples/prism-django.html b/examples/django.html similarity index 100% rename from examples/prism-django.html rename to examples/django.html diff --git a/examples/prism-dns-zone-file.html b/examples/dns-zone-file.html similarity index 100% rename from examples/prism-dns-zone-file.html rename to examples/dns-zone-file.html diff --git a/examples/prism-docker.html b/examples/docker.html similarity index 100% rename from examples/prism-docker.html rename to examples/docker.html diff --git a/examples/prism-dot.html b/examples/dot.html similarity index 100% rename from examples/prism-dot.html rename to examples/dot.html diff --git a/examples/prism-ebnf.html b/examples/ebnf.html similarity index 100% rename from examples/prism-ebnf.html rename to examples/ebnf.html diff --git a/examples/prism-editorconfig.html b/examples/editorconfig.html similarity index 100% rename from examples/prism-editorconfig.html rename to examples/editorconfig.html diff --git a/examples/prism-eiffel.html b/examples/eiffel.html similarity index 100% rename from examples/prism-eiffel.html rename to examples/eiffel.html diff --git a/examples/prism-ejs.html b/examples/ejs.html similarity index 100% rename from examples/prism-ejs.html rename to examples/ejs.html diff --git a/examples/prism-elixir.html b/examples/elixir.html similarity index 100% rename from examples/prism-elixir.html rename to examples/elixir.html diff --git a/examples/prism-elm.html b/examples/elm.html similarity index 100% rename from examples/prism-elm.html rename to examples/elm.html diff --git a/examples/prism-erb.html b/examples/erb.html similarity index 100% rename from examples/prism-erb.html rename to examples/erb.html diff --git a/examples/prism-erlang.html b/examples/erlang.html similarity index 100% rename from examples/prism-erlang.html rename to examples/erlang.html diff --git a/examples/prism-etlua.html b/examples/etlua.html similarity index 100% rename from examples/prism-etlua.html rename to examples/etlua.html diff --git a/examples/prism-excel-formula.html b/examples/excel-formula.html similarity index 100% rename from examples/prism-excel-formula.html rename to examples/excel-formula.html diff --git a/examples/prism-factor.html b/examples/factor.html similarity index 100% rename from examples/prism-factor.html rename to examples/factor.html diff --git a/examples/prism-false.html b/examples/false.html similarity index 100% rename from examples/prism-false.html rename to examples/false.html diff --git a/examples/prism-firestore-security-rules.html b/examples/firestore-security-rules.html similarity index 100% rename from examples/prism-firestore-security-rules.html rename to examples/firestore-security-rules.html diff --git a/examples/prism-flow.html b/examples/flow.html similarity index 100% rename from examples/prism-flow.html rename to examples/flow.html diff --git a/examples/prism-fortran.html b/examples/fortran.html similarity index 100% rename from examples/prism-fortran.html rename to examples/fortran.html diff --git a/examples/prism-fsharp.html b/examples/fsharp.html similarity index 100% rename from examples/prism-fsharp.html rename to examples/fsharp.html diff --git a/examples/prism-ftl.html b/examples/ftl.html similarity index 100% rename from examples/prism-ftl.html rename to examples/ftl.html diff --git a/examples/prism-gap.html b/examples/gap.html similarity index 100% rename from examples/prism-gap.html rename to examples/gap.html diff --git a/examples/prism-gcode.html b/examples/gcode.html similarity index 100% rename from examples/prism-gcode.html rename to examples/gcode.html diff --git a/examples/prism-gdscript.html b/examples/gdscript.html similarity index 100% rename from examples/prism-gdscript.html rename to examples/gdscript.html diff --git a/examples/prism-gedcom.html b/examples/gedcom.html similarity index 100% rename from examples/prism-gedcom.html rename to examples/gedcom.html diff --git a/examples/prism-gettext.html b/examples/gettext.html similarity index 100% rename from examples/prism-gettext.html rename to examples/gettext.html diff --git a/examples/prism-gherkin.html b/examples/gherkin.html similarity index 100% rename from examples/prism-gherkin.html rename to examples/gherkin.html diff --git a/examples/prism-git.html b/examples/git.html similarity index 100% rename from examples/prism-git.html rename to examples/git.html diff --git a/examples/prism-glsl.html b/examples/glsl.html similarity index 100% rename from examples/prism-glsl.html rename to examples/glsl.html diff --git a/examples/prism-gml.html b/examples/gml.html similarity index 100% rename from examples/prism-gml.html rename to examples/gml.html diff --git a/examples/prism-gn.html b/examples/gn.html similarity index 100% rename from examples/prism-gn.html rename to examples/gn.html diff --git a/examples/prism-go-module.html b/examples/go-module.html similarity index 100% rename from examples/prism-go-module.html rename to examples/go-module.html diff --git a/examples/prism-go.html b/examples/go.html similarity index 100% rename from examples/prism-go.html rename to examples/go.html diff --git a/examples/prism-gradle.html b/examples/gradle.html similarity index 100% rename from examples/prism-gradle.html rename to examples/gradle.html diff --git a/examples/prism-graphql.html b/examples/graphql.html similarity index 100% rename from examples/prism-graphql.html rename to examples/graphql.html diff --git a/examples/prism-groovy.html b/examples/groovy.html similarity index 100% rename from examples/prism-groovy.html rename to examples/groovy.html diff --git a/examples/prism-haml.html b/examples/haml.html similarity index 100% rename from examples/prism-haml.html rename to examples/haml.html diff --git a/examples/prism-handlebars.html b/examples/handlebars.html similarity index 100% rename from examples/prism-handlebars.html rename to examples/handlebars.html diff --git a/examples/prism-haskell.html b/examples/haskell.html similarity index 100% rename from examples/prism-haskell.html rename to examples/haskell.html diff --git a/examples/prism-haxe.html b/examples/haxe.html similarity index 100% rename from examples/prism-haxe.html rename to examples/haxe.html diff --git a/examples/prism-hcl.html b/examples/hcl.html similarity index 100% rename from examples/prism-hcl.html rename to examples/hcl.html diff --git a/examples/prism-hlsl.html b/examples/hlsl.html similarity index 100% rename from examples/prism-hlsl.html rename to examples/hlsl.html diff --git a/examples/prism-hoon.html b/examples/hoon.html similarity index 100% rename from examples/prism-hoon.html rename to examples/hoon.html diff --git a/examples/prism-hpkp.html b/examples/hpkp.html similarity index 100% rename from examples/prism-hpkp.html rename to examples/hpkp.html diff --git a/examples/prism-hsts.html b/examples/hsts.html similarity index 100% rename from examples/prism-hsts.html rename to examples/hsts.html diff --git a/examples/prism-http.html b/examples/http.html similarity index 100% rename from examples/prism-http.html rename to examples/http.html diff --git a/examples/prism-ichigojam.html b/examples/ichigojam.html similarity index 100% rename from examples/prism-ichigojam.html rename to examples/ichigojam.html diff --git a/examples/prism-icon.html b/examples/icon.html similarity index 100% rename from examples/prism-icon.html rename to examples/icon.html diff --git a/examples/prism-icu-message-format.html b/examples/icu-message-format.html similarity index 100% rename from examples/prism-icu-message-format.html rename to examples/icu-message-format.html diff --git a/examples/prism-idris.html b/examples/idris.html similarity index 100% rename from examples/prism-idris.html rename to examples/idris.html diff --git a/examples/prism-iecst.html b/examples/iecst.html similarity index 100% rename from examples/prism-iecst.html rename to examples/iecst.html diff --git a/examples/prism-ignore.html b/examples/ignore.html similarity index 100% rename from examples/prism-ignore.html rename to examples/ignore.html diff --git a/examples/prism-inform7.html b/examples/inform7.html similarity index 100% rename from examples/prism-inform7.html rename to examples/inform7.html diff --git a/examples/prism-ini.html b/examples/ini.html similarity index 100% rename from examples/prism-ini.html rename to examples/ini.html diff --git a/examples/prism-io.html b/examples/io.html similarity index 100% rename from examples/prism-io.html rename to examples/io.html diff --git a/examples/prism-j.html b/examples/j.html similarity index 100% rename from examples/prism-j.html rename to examples/j.html diff --git a/examples/prism-java.html b/examples/java.html similarity index 100% rename from examples/prism-java.html rename to examples/java.html diff --git a/examples/prism-javadoc.html b/examples/javadoc.html similarity index 100% rename from examples/prism-javadoc.html rename to examples/javadoc.html diff --git a/examples/prism-javascript.html b/examples/javascript.html similarity index 100% rename from examples/prism-javascript.html rename to examples/javascript.html diff --git a/examples/prism-javastacktrace.html b/examples/javastacktrace.html similarity index 100% rename from examples/prism-javastacktrace.html rename to examples/javastacktrace.html diff --git a/examples/prism-jexl.html b/examples/jexl.html similarity index 100% rename from examples/prism-jexl.html rename to examples/jexl.html diff --git a/examples/prism-jolie.html b/examples/jolie.html similarity index 100% rename from examples/prism-jolie.html rename to examples/jolie.html diff --git a/examples/prism-jq.html b/examples/jq.html similarity index 100% rename from examples/prism-jq.html rename to examples/jq.html diff --git a/examples/prism-js-extras.html b/examples/js-extras.html similarity index 100% rename from examples/prism-js-extras.html rename to examples/js-extras.html diff --git a/examples/prism-js-templates.html b/examples/js-templates.html similarity index 100% rename from examples/prism-js-templates.html rename to examples/js-templates.html diff --git a/examples/prism-jsdoc.html b/examples/jsdoc.html similarity index 100% rename from examples/prism-jsdoc.html rename to examples/jsdoc.html diff --git a/examples/prism-json.html b/examples/json.html similarity index 100% rename from examples/prism-json.html rename to examples/json.html diff --git a/examples/prism-json5.html b/examples/json5.html similarity index 100% rename from examples/prism-json5.html rename to examples/json5.html diff --git a/examples/prism-jsonp.html b/examples/jsonp.html similarity index 100% rename from examples/prism-jsonp.html rename to examples/jsonp.html diff --git a/examples/prism-jsstacktrace.html b/examples/jsstacktrace.html similarity index 100% rename from examples/prism-jsstacktrace.html rename to examples/jsstacktrace.html diff --git a/examples/prism-jsx.html b/examples/jsx.html similarity index 100% rename from examples/prism-jsx.html rename to examples/jsx.html diff --git a/examples/prism-julia.html b/examples/julia.html similarity index 100% rename from examples/prism-julia.html rename to examples/julia.html diff --git a/examples/prism-keepalived.html b/examples/keepalived.html similarity index 100% rename from examples/prism-keepalived.html rename to examples/keepalived.html diff --git a/examples/prism-keyman.html b/examples/keyman.html similarity index 100% rename from examples/prism-keyman.html rename to examples/keyman.html diff --git a/examples/prism-kotlin.html b/examples/kotlin.html similarity index 100% rename from examples/prism-kotlin.html rename to examples/kotlin.html diff --git a/examples/prism-kumir.html b/examples/kumir.html similarity index 100% rename from examples/prism-kumir.html rename to examples/kumir.html diff --git a/examples/prism-kusto.html b/examples/kusto.html similarity index 100% rename from examples/prism-kusto.html rename to examples/kusto.html diff --git a/examples/prism-latex.html b/examples/latex.html similarity index 100% rename from examples/prism-latex.html rename to examples/latex.html diff --git a/examples/prism-latte.html b/examples/latte.html similarity index 100% rename from examples/prism-latte.html rename to examples/latte.html diff --git a/examples/prism-less.html b/examples/less.html similarity index 100% rename from examples/prism-less.html rename to examples/less.html diff --git a/examples/prism-lilypond.html b/examples/lilypond.html similarity index 100% rename from examples/prism-lilypond.html rename to examples/lilypond.html diff --git a/examples/prism-linker-script.html b/examples/linker-script.html similarity index 100% rename from examples/prism-linker-script.html rename to examples/linker-script.html diff --git a/examples/prism-liquid.html b/examples/liquid.html similarity index 100% rename from examples/prism-liquid.html rename to examples/liquid.html diff --git a/examples/prism-lisp.html b/examples/lisp.html similarity index 100% rename from examples/prism-lisp.html rename to examples/lisp.html diff --git a/examples/prism-livescript.html b/examples/livescript.html similarity index 100% rename from examples/prism-livescript.html rename to examples/livescript.html diff --git a/examples/prism-llvm.html b/examples/llvm.html similarity index 100% rename from examples/prism-llvm.html rename to examples/llvm.html diff --git a/examples/prism-log.html b/examples/log.html similarity index 100% rename from examples/prism-log.html rename to examples/log.html diff --git a/examples/prism-lolcode.html b/examples/lolcode.html similarity index 100% rename from examples/prism-lolcode.html rename to examples/lolcode.html diff --git a/examples/prism-lua.html b/examples/lua.html similarity index 100% rename from examples/prism-lua.html rename to examples/lua.html diff --git a/examples/prism-magma.html b/examples/magma.html similarity index 100% rename from examples/prism-magma.html rename to examples/magma.html diff --git a/examples/prism-makefile.html b/examples/makefile.html similarity index 100% rename from examples/prism-makefile.html rename to examples/makefile.html diff --git a/examples/prism-markdown.html b/examples/markdown.html similarity index 100% rename from examples/prism-markdown.html rename to examples/markdown.html diff --git a/examples/prism-markup.html b/examples/markup.html similarity index 100% rename from examples/prism-markup.html rename to examples/markup.html diff --git a/examples/prism-mata.html b/examples/mata.html similarity index 100% rename from examples/prism-mata.html rename to examples/mata.html diff --git a/examples/prism-matlab.html b/examples/matlab.html similarity index 100% rename from examples/prism-matlab.html rename to examples/matlab.html diff --git a/examples/prism-maxscript.html b/examples/maxscript.html similarity index 100% rename from examples/prism-maxscript.html rename to examples/maxscript.html diff --git a/examples/prism-mel.html b/examples/mel.html similarity index 100% rename from examples/prism-mel.html rename to examples/mel.html diff --git a/examples/prism-mermaid.html b/examples/mermaid.html similarity index 100% rename from examples/prism-mermaid.html rename to examples/mermaid.html diff --git a/examples/prism-metafont.html b/examples/metafont.html similarity index 100% rename from examples/prism-metafont.html rename to examples/metafont.html diff --git a/examples/prism-mizar.html b/examples/mizar.html similarity index 100% rename from examples/prism-mizar.html rename to examples/mizar.html diff --git a/examples/prism-mongodb.html b/examples/mongodb.html similarity index 100% rename from examples/prism-mongodb.html rename to examples/mongodb.html diff --git a/examples/prism-monkey.html b/examples/monkey.html similarity index 100% rename from examples/prism-monkey.html rename to examples/monkey.html diff --git a/examples/prism-moonscript.html b/examples/moonscript.html similarity index 100% rename from examples/prism-moonscript.html rename to examples/moonscript.html diff --git a/examples/prism-n1ql.html b/examples/n1ql.html similarity index 100% rename from examples/prism-n1ql.html rename to examples/n1ql.html diff --git a/examples/prism-n4js.html b/examples/n4js.html similarity index 100% rename from examples/prism-n4js.html rename to examples/n4js.html diff --git a/examples/prism-nand2tetris-hdl.html b/examples/nand2tetris-hdl.html similarity index 100% rename from examples/prism-nand2tetris-hdl.html rename to examples/nand2tetris-hdl.html diff --git a/examples/prism-naniscript.html b/examples/naniscript.html similarity index 100% rename from examples/prism-naniscript.html rename to examples/naniscript.html diff --git a/examples/prism-nasm.html b/examples/nasm.html similarity index 100% rename from examples/prism-nasm.html rename to examples/nasm.html diff --git a/examples/prism-neon.html b/examples/neon.html similarity index 100% rename from examples/prism-neon.html rename to examples/neon.html diff --git a/examples/prism-nevod.html b/examples/nevod.html similarity index 100% rename from examples/prism-nevod.html rename to examples/nevod.html diff --git a/examples/prism-nginx.html b/examples/nginx.html similarity index 100% rename from examples/prism-nginx.html rename to examples/nginx.html diff --git a/examples/prism-nim.html b/examples/nim.html similarity index 100% rename from examples/prism-nim.html rename to examples/nim.html diff --git a/examples/prism-nix.html b/examples/nix.html similarity index 100% rename from examples/prism-nix.html rename to examples/nix.html diff --git a/examples/prism-nsis.html b/examples/nsis.html similarity index 100% rename from examples/prism-nsis.html rename to examples/nsis.html diff --git a/examples/prism-objectivec.html b/examples/objectivec.html similarity index 100% rename from examples/prism-objectivec.html rename to examples/objectivec.html diff --git a/examples/prism-ocaml.html b/examples/ocaml.html similarity index 100% rename from examples/prism-ocaml.html rename to examples/ocaml.html diff --git a/examples/prism-odin.html b/examples/odin.html similarity index 100% rename from examples/prism-odin.html rename to examples/odin.html diff --git a/examples/prism-opencl.html b/examples/opencl.html similarity index 100% rename from examples/prism-opencl.html rename to examples/opencl.html diff --git a/examples/prism-openqasm.html b/examples/openqasm.html similarity index 100% rename from examples/prism-openqasm.html rename to examples/openqasm.html diff --git a/examples/prism-oz.html b/examples/oz.html similarity index 100% rename from examples/prism-oz.html rename to examples/oz.html diff --git a/examples/prism-parigp.html b/examples/parigp.html similarity index 100% rename from examples/prism-parigp.html rename to examples/parigp.html diff --git a/examples/prism-parser.html b/examples/parser.html similarity index 100% rename from examples/prism-parser.html rename to examples/parser.html diff --git a/examples/prism-pascal.html b/examples/pascal.html similarity index 100% rename from examples/prism-pascal.html rename to examples/pascal.html diff --git a/examples/prism-pascaligo.html b/examples/pascaligo.html similarity index 100% rename from examples/prism-pascaligo.html rename to examples/pascaligo.html diff --git a/examples/prism-pcaxis.html b/examples/pcaxis.html similarity index 100% rename from examples/prism-pcaxis.html rename to examples/pcaxis.html diff --git a/examples/prism-peoplecode.html b/examples/peoplecode.html similarity index 100% rename from examples/prism-peoplecode.html rename to examples/peoplecode.html diff --git a/examples/prism-perl.html b/examples/perl.html similarity index 100% rename from examples/prism-perl.html rename to examples/perl.html diff --git a/examples/prism-php-extras.html b/examples/php-extras.html similarity index 100% rename from examples/prism-php-extras.html rename to examples/php-extras.html diff --git a/examples/prism-php.html b/examples/php.html similarity index 100% rename from examples/prism-php.html rename to examples/php.html diff --git a/examples/prism-phpdoc.html b/examples/phpdoc.html similarity index 100% rename from examples/prism-phpdoc.html rename to examples/phpdoc.html diff --git a/examples/prism-plant-uml.html b/examples/plant-uml.html similarity index 100% rename from examples/prism-plant-uml.html rename to examples/plant-uml.html diff --git a/examples/prism-plsql.html b/examples/plsql.html similarity index 100% rename from examples/prism-plsql.html rename to examples/plsql.html diff --git a/examples/prism-powerquery.html b/examples/powerquery.html similarity index 100% rename from examples/prism-powerquery.html rename to examples/powerquery.html diff --git a/examples/prism-powershell.html b/examples/powershell.html similarity index 100% rename from examples/prism-powershell.html rename to examples/powershell.html diff --git a/examples/prism-processing.html b/examples/processing.html similarity index 100% rename from examples/prism-processing.html rename to examples/processing.html diff --git a/examples/prism-prolog.html b/examples/prolog.html similarity index 100% rename from examples/prism-prolog.html rename to examples/prolog.html diff --git a/examples/prism-promql.html b/examples/promql.html similarity index 100% rename from examples/prism-promql.html rename to examples/promql.html diff --git a/examples/prism-properties.html b/examples/properties.html similarity index 100% rename from examples/prism-properties.html rename to examples/properties.html diff --git a/examples/prism-protobuf.html b/examples/protobuf.html similarity index 100% rename from examples/prism-protobuf.html rename to examples/protobuf.html diff --git a/examples/prism-psl.html b/examples/psl.html similarity index 100% rename from examples/prism-psl.html rename to examples/psl.html diff --git a/examples/prism-pug.html b/examples/pug.html similarity index 100% rename from examples/prism-pug.html rename to examples/pug.html diff --git a/examples/prism-puppet.html b/examples/puppet.html similarity index 100% rename from examples/prism-puppet.html rename to examples/puppet.html diff --git a/examples/prism-pure.html b/examples/pure.html similarity index 100% rename from examples/prism-pure.html rename to examples/pure.html diff --git a/examples/prism-purebasic.html b/examples/purebasic.html similarity index 100% rename from examples/prism-purebasic.html rename to examples/purebasic.html diff --git a/examples/prism-purescript.html b/examples/purescript.html similarity index 100% rename from examples/prism-purescript.html rename to examples/purescript.html diff --git a/examples/prism-python.html b/examples/python.html similarity index 100% rename from examples/prism-python.html rename to examples/python.html diff --git a/examples/prism-q.html b/examples/q.html similarity index 100% rename from examples/prism-q.html rename to examples/q.html diff --git a/examples/prism-qml.html b/examples/qml.html similarity index 100% rename from examples/prism-qml.html rename to examples/qml.html diff --git a/examples/prism-qore.html b/examples/qore.html similarity index 100% rename from examples/prism-qore.html rename to examples/qore.html diff --git a/examples/prism-qsharp.html b/examples/qsharp.html similarity index 100% rename from examples/prism-qsharp.html rename to examples/qsharp.html diff --git a/examples/prism-r.html b/examples/r.html similarity index 100% rename from examples/prism-r.html rename to examples/r.html diff --git a/examples/prism-racket.html b/examples/racket.html similarity index 100% rename from examples/prism-racket.html rename to examples/racket.html diff --git a/examples/prism-reason.html b/examples/reason.html similarity index 100% rename from examples/prism-reason.html rename to examples/reason.html diff --git a/examples/prism-regex.html b/examples/regex.html similarity index 100% rename from examples/prism-regex.html rename to examples/regex.html diff --git a/examples/prism-rego.html b/examples/rego.html similarity index 100% rename from examples/prism-rego.html rename to examples/rego.html diff --git a/examples/prism-renpy.html b/examples/renpy.html similarity index 100% rename from examples/prism-renpy.html rename to examples/renpy.html diff --git a/examples/prism-rescript.html b/examples/rescript.html similarity index 100% rename from examples/prism-rescript.html rename to examples/rescript.html diff --git a/examples/prism-rest.html b/examples/rest.html similarity index 100% rename from examples/prism-rest.html rename to examples/rest.html diff --git a/examples/prism-rip.html b/examples/rip.html similarity index 100% rename from examples/prism-rip.html rename to examples/rip.html diff --git a/examples/prism-roboconf.html b/examples/roboconf.html similarity index 100% rename from examples/prism-roboconf.html rename to examples/roboconf.html diff --git a/examples/prism-robotframework.html b/examples/robotframework.html similarity index 100% rename from examples/prism-robotframework.html rename to examples/robotframework.html diff --git a/examples/prism-ruby.html b/examples/ruby.html similarity index 100% rename from examples/prism-ruby.html rename to examples/ruby.html diff --git a/examples/prism-rust.html b/examples/rust.html similarity index 100% rename from examples/prism-rust.html rename to examples/rust.html diff --git a/examples/prism-sas.html b/examples/sas.html similarity index 100% rename from examples/prism-sas.html rename to examples/sas.html diff --git a/examples/prism-sass.html b/examples/sass.html similarity index 100% rename from examples/prism-sass.html rename to examples/sass.html diff --git a/examples/prism-scala.html b/examples/scala.html similarity index 100% rename from examples/prism-scala.html rename to examples/scala.html diff --git a/examples/prism-scheme.html b/examples/scheme.html similarity index 100% rename from examples/prism-scheme.html rename to examples/scheme.html diff --git a/examples/prism-scss.html b/examples/scss.html similarity index 100% rename from examples/prism-scss.html rename to examples/scss.html diff --git a/examples/prism-shell-session.html b/examples/shell-session.html similarity index 100% rename from examples/prism-shell-session.html rename to examples/shell-session.html diff --git a/examples/prism-smali.html b/examples/smali.html similarity index 100% rename from examples/prism-smali.html rename to examples/smali.html diff --git a/examples/prism-smalltalk.html b/examples/smalltalk.html similarity index 100% rename from examples/prism-smalltalk.html rename to examples/smalltalk.html diff --git a/examples/prism-smarty.html b/examples/smarty.html similarity index 100% rename from examples/prism-smarty.html rename to examples/smarty.html diff --git a/examples/prism-sml.html b/examples/sml.html similarity index 100% rename from examples/prism-sml.html rename to examples/sml.html diff --git a/examples/prism-solidity.html b/examples/solidity.html similarity index 100% rename from examples/prism-solidity.html rename to examples/solidity.html diff --git a/examples/prism-solution-file.html b/examples/solution-file.html similarity index 100% rename from examples/prism-solution-file.html rename to examples/solution-file.html diff --git a/examples/prism-soy.html b/examples/soy.html similarity index 100% rename from examples/prism-soy.html rename to examples/soy.html diff --git a/examples/prism-sparql.html b/examples/sparql.html similarity index 100% rename from examples/prism-sparql.html rename to examples/sparql.html diff --git a/examples/prism-splunk-spl.html b/examples/splunk-spl.html similarity index 100% rename from examples/prism-splunk-spl.html rename to examples/splunk-spl.html diff --git a/examples/prism-sqf.html b/examples/sqf.html similarity index 100% rename from examples/prism-sqf.html rename to examples/sqf.html diff --git a/examples/prism-sql.html b/examples/sql.html similarity index 100% rename from examples/prism-sql.html rename to examples/sql.html diff --git a/examples/prism-squirrel.html b/examples/squirrel.html similarity index 100% rename from examples/prism-squirrel.html rename to examples/squirrel.html diff --git a/examples/prism-stan.html b/examples/stan.html similarity index 100% rename from examples/prism-stan.html rename to examples/stan.html diff --git a/examples/prism-stata.html b/examples/stata.html similarity index 100% rename from examples/prism-stata.html rename to examples/stata.html diff --git a/examples/prism-stylus.html b/examples/stylus.html similarity index 100% rename from examples/prism-stylus.html rename to examples/stylus.html diff --git a/examples/prism-supercollider.html b/examples/supercollider.html similarity index 100% rename from examples/prism-supercollider.html rename to examples/supercollider.html diff --git a/examples/prism-swift.html b/examples/swift.html similarity index 100% rename from examples/prism-swift.html rename to examples/swift.html diff --git a/examples/prism-systemd.html b/examples/systemd.html similarity index 100% rename from examples/prism-systemd.html rename to examples/systemd.html diff --git a/examples/prism-t4-cs.html b/examples/t4-cs.html similarity index 100% rename from examples/prism-t4-cs.html rename to examples/t4-cs.html diff --git a/examples/prism-t4-vb.html b/examples/t4-vb.html similarity index 100% rename from examples/prism-t4-vb.html rename to examples/t4-vb.html diff --git a/examples/prism-tap.html b/examples/tap.html similarity index 100% rename from examples/prism-tap.html rename to examples/tap.html diff --git a/examples/prism-tcl.html b/examples/tcl.html similarity index 100% rename from examples/prism-tcl.html rename to examples/tcl.html diff --git a/examples/prism-textile.html b/examples/textile.html similarity index 100% rename from examples/prism-textile.html rename to examples/textile.html diff --git a/examples/prism-toml.html b/examples/toml.html similarity index 100% rename from examples/prism-toml.html rename to examples/toml.html diff --git a/examples/prism-tremor.html b/examples/tremor.html similarity index 100% rename from examples/prism-tremor.html rename to examples/tremor.html diff --git a/examples/prism-tsx.html b/examples/tsx.html similarity index 100% rename from examples/prism-tsx.html rename to examples/tsx.html diff --git a/examples/prism-tt2.html b/examples/tt2.html similarity index 100% rename from examples/prism-tt2.html rename to examples/tt2.html diff --git a/examples/prism-turtle.html b/examples/turtle.html similarity index 100% rename from examples/prism-turtle.html rename to examples/turtle.html diff --git a/examples/prism-twig.html b/examples/twig.html similarity index 100% rename from examples/prism-twig.html rename to examples/twig.html diff --git a/examples/prism-typescript.html b/examples/typescript.html similarity index 100% rename from examples/prism-typescript.html rename to examples/typescript.html diff --git a/examples/prism-typoscript.html b/examples/typoscript.html similarity index 100% rename from examples/prism-typoscript.html rename to examples/typoscript.html diff --git a/examples/prism-unrealscript.html b/examples/unrealscript.html similarity index 100% rename from examples/prism-unrealscript.html rename to examples/unrealscript.html diff --git a/examples/prism-uorazor.html b/examples/uorazor.html similarity index 100% rename from examples/prism-uorazor.html rename to examples/uorazor.html diff --git a/examples/prism-uri.html b/examples/uri.html similarity index 100% rename from examples/prism-uri.html rename to examples/uri.html diff --git a/examples/prism-v.html b/examples/v.html similarity index 100% rename from examples/prism-v.html rename to examples/v.html diff --git a/examples/prism-vala.html b/examples/vala.html similarity index 100% rename from examples/prism-vala.html rename to examples/vala.html diff --git a/examples/prism-vbnet.html b/examples/vbnet.html similarity index 100% rename from examples/prism-vbnet.html rename to examples/vbnet.html diff --git a/examples/prism-velocity.html b/examples/velocity.html similarity index 100% rename from examples/prism-velocity.html rename to examples/velocity.html diff --git a/examples/prism-verilog.html b/examples/verilog.html similarity index 100% rename from examples/prism-verilog.html rename to examples/verilog.html diff --git a/examples/prism-vhdl.html b/examples/vhdl.html similarity index 100% rename from examples/prism-vhdl.html rename to examples/vhdl.html diff --git a/examples/prism-vim.html b/examples/vim.html similarity index 100% rename from examples/prism-vim.html rename to examples/vim.html diff --git a/examples/prism-visual-basic.html b/examples/visual-basic.html similarity index 100% rename from examples/prism-visual-basic.html rename to examples/visual-basic.html diff --git a/examples/prism-warpscript.html b/examples/warpscript.html similarity index 100% rename from examples/prism-warpscript.html rename to examples/warpscript.html diff --git a/examples/prism-wasm.html b/examples/wasm.html similarity index 100% rename from examples/prism-wasm.html rename to examples/wasm.html diff --git a/examples/prism-web-idl.html b/examples/web-idl.html similarity index 100% rename from examples/prism-web-idl.html rename to examples/web-idl.html diff --git a/examples/prism-wgsl.html b/examples/wgsl.html similarity index 100% rename from examples/prism-wgsl.html rename to examples/wgsl.html diff --git a/examples/prism-wiki.html b/examples/wiki.html similarity index 100% rename from examples/prism-wiki.html rename to examples/wiki.html diff --git a/examples/prism-wolfram.html b/examples/wolfram.html similarity index 100% rename from examples/prism-wolfram.html rename to examples/wolfram.html diff --git a/examples/prism-wren.html b/examples/wren.html similarity index 100% rename from examples/prism-wren.html rename to examples/wren.html diff --git a/examples/prism-xeora.html b/examples/xeora.html similarity index 100% rename from examples/prism-xeora.html rename to examples/xeora.html diff --git a/examples/prism-xml-doc.html b/examples/xml-doc.html similarity index 100% rename from examples/prism-xml-doc.html rename to examples/xml-doc.html diff --git a/examples/prism-xojo.html b/examples/xojo.html similarity index 100% rename from examples/prism-xojo.html rename to examples/xojo.html diff --git a/examples/prism-xquery.html b/examples/xquery.html similarity index 100% rename from examples/prism-xquery.html rename to examples/xquery.html diff --git a/examples/prism-yaml.html b/examples/yaml.html similarity index 100% rename from examples/prism-yaml.html rename to examples/yaml.html diff --git a/examples/prism-yang.html b/examples/yang.html similarity index 100% rename from examples/prism-yang.html rename to examples/yang.html diff --git a/examples/prism-zig.html b/examples/zig.html similarity index 100% rename from examples/prism-zig.html rename to examples/zig.html From c7a3bd8f11e7599f9bb0a2a13d2d2ea7ff7724fb Mon Sep 17 00:00:00 2001 From: Dmitry Sharabin Date: Mon, 2 Jun 2025 18:41:58 +0200 Subject: [PATCH 02/16] Add `postinstall.mjs` --- _build/postinstall.mjs | 98 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 _build/postinstall.mjs diff --git a/_build/postinstall.mjs b/_build/postinstall.mjs new file mode 100644 index 00000000..30b4c249 --- /dev/null +++ b/_build/postinstall.mjs @@ -0,0 +1,98 @@ +import fs from "fs/promises"; +import path from "path"; +import { fileURLToPath } from "url"; +import { execSync } from "child_process"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +const root = path.resolve(__dirname, "../node_modules"); +const prismPath = path.join(root, "prismjs"); + +let sourcePath, destPath; + +// --- Cloning & Installing Prism --- +console.log("[postinstall] Cloning Prism..."); +// Ensure we work with a fresh copy +await fs.rm(prismPath, { recursive: true, force: true }); +// FIXME: Remove “--branch v2” when Prism v2 is released to fallback to the default branch +execSync("git clone --branch v2 https://github.com/PrismJS/prism.git prismjs", { + cwd: root, + stdio: "inherit", +}); + +console.log("[postinstall] Installing Prism dependencies..."); +execSync("npm install", { + cwd: prismPath, + stdio: "inherit", +}); + +console.log("[postinstall] Building Prism..."); +execSync("npm run build", { + cwd: prismPath, + stdio: "inherit", +}); + +// --- Working with plugins --- +sourcePath = path.join(prismPath, "src/plugins"); +destPath = path.resolve(__dirname, "../plugins"); + +async function copy () { + // We need { recursive: true } so the script doesn't fail if the folder already exists + await fs.mkdir(destPath, { recursive: true }); + + let plugins = await fs.readdir(sourcePath, { withFileTypes: true }); + for (let plugin of plugins) { + if (!plugin.isDirectory()) { + continue; + } + + let source = path.join(sourcePath, plugin.name); + let dest = path.join(destPath, plugin.name); + await fs.mkdir(dest, { recursive: true }); + + let files = await fs.readdir(source, { withFileTypes: true }); + for (let file of files) { + if (!file.isFile()) { + continue; + } + + let name = path.parse(file.name).name; + // Copy only the README.md and demo.* files + if (["README", "demo"].includes(name)) { + await fs.copyFile(path.join(source, file.name), path.join(dest, file.name)); + } + } + } +} + +console.log("[postinstall] Copying Prism plugins docs..."); +try { + await copy(); +} +catch (error) { + console.error(`[postinstall] Failed to copy Prism plugins docs: ${error.message}`); +} + +// Create plugins.json in the plugins folder with global data +console.log("[postinstall] Creating plugins.json..."); +let json = { + permalink: "{{ page.filePathStem.replace('README', '/index') }}.html", + tags: ["plugin"], +}; + +await fs.writeFile(path.join(destPath, "plugins.json"), JSON.stringify(json, null, "\t")); + +// --- Copying other files (components.json, file-sizes.json, etc.) --- +sourcePath = path.join(prismPath, "dist"); +destPath = path.resolve(__dirname, ".."); + +let filenames = ["components.json", "file-sizes.json"]; +for (let file of filenames) { + console.log(`[postinstall] Copying ${file}...`); + try { + await fs.copyFile(path.join(sourcePath, file), path.join(destPath, file)); + } + catch (error) { + console.error(`[postinstall] Failed to copy ${file}: ${error.message}`); + } +} From 0adb80025db6e1346b4fa94d730c0f167ddb1ed2 Mon Sep 17 00:00:00 2001 From: Dmitry Sharabin Date: Mon, 2 Jun 2025 18:43:14 +0200 Subject: [PATCH 03/16] Remove redundant dependencies in favor of the `postinstall` script --- package-lock.json | 224 ---------------------------------------------- package.json | 5 +- 2 files changed, 1 insertion(+), 228 deletions(-) diff --git a/package-lock.json b/package-lock.json index e51455fa..af3224b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,6 @@ "license": "MIT", "devDependencies": { "@11ty/eleventy": "^3.1.0", - "@11ty/eleventy-fetch": "^5.0.2", "eleventy-plugin-toc": "^1.1.5", "markdown-it-anchor": "^9.2.0", "markdown-it-attrs": "^4.3.1", @@ -20,7 +19,6 @@ "prettier-plugin-brace-style": "^0.7.3", "prettier-plugin-merge": "^0.7.4", "prettier-plugin-space-before-function-paren": "^0.0.8", - "prismjs": "github:PrismJS/prism#v2", "typedoc": "^0.28.5", "typedoc-plugin-rename-defaults": "^0.7.3" } @@ -131,27 +129,6 @@ "url": "https://opencollective.com/11ty" } }, - "node_modules/@11ty/eleventy-fetch": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-fetch/-/eleventy-fetch-5.0.2.tgz", - "integrity": "sha512-yu7oZ5iv7zvFDawSYcN19cz7ddJB7OXPGZ47z/MzYmLa2LkpJm0KnZW2xGwpKvVrXd+tyb96ts6AqlkJT/ibwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rgrove/parse-xml": "^4.2.0", - "debug": "^4.3.7", - "flat-cache": "^6.1.1", - "graceful-fs": "^4.2.11", - "p-queue": "6.6.2" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, "node_modules/@11ty/eleventy-plugin-bundle": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-bundle/-/eleventy-plugin-bundle-3.0.6.tgz", @@ -258,26 +235,6 @@ "@shikijs/vscode-textmate": "^10.0.2" } }, - "node_modules/@keyv/serialize": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.3.tgz", - "integrity": "sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^6.0.3" - } - }, - "node_modules/@rgrove/parse-xml": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@rgrove/parse-xml/-/parse-xml-4.2.0.tgz", - "integrity": "sha512-UuBOt7BOsKVOkFXRe4Ypd/lADuNIfqJXv8GvHqtXaTYXPPKkj2nS2zPllVsrtRjcomDhIJVBnZwfmlI222WH8g==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@shikijs/engine-oniguruma": { "version": "3.4.2", "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.4.2.tgz", @@ -516,27 +473,6 @@ "dev": true, "license": "MIT" }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/bcp-47": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-2.1.0.tgz", @@ -623,42 +559,6 @@ "node": ">=8" } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/cacheable": { - "version": "1.8.9", - "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.9.tgz", - "integrity": "sha512-FicwAUyWnrtnd4QqYAoRlNs44/a1jTL7XDKqm5gJ90wz1DQPlC7U2Rd1Tydpv+E7WAr4sQHuw8Q8M3nZMAyecQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "hookified": "^1.7.1", - "keyv": "^5.3.1" - } - }, "node_modules/camelcase": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", @@ -1233,13 +1133,6 @@ "node": ">= 8" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true, - "license": "MIT" - }, "node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", @@ -1312,25 +1205,6 @@ "dev": true, "license": "MIT" }, - "node_modules/flat-cache": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.7.tgz", - "integrity": "sha512-qwZ4xf1v1m7Rc9XiORly31YaChvKt6oNVHuqqZcoED/7O+ToyNVGobKsIAopY9ODcWpEDKEBAbrSOCBHtNQvew==", - "dev": true, - "license": "MIT", - "dependencies": { - "cacheable": "^1.8.9", - "flatted": "^3.3.3", - "hookified": "^1.7.1" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, "node_modules/fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", @@ -1369,13 +1243,6 @@ "node": ">= 6" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, "node_modules/gray-matter": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", @@ -1416,13 +1283,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/hookified": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.8.1.tgz", - "integrity": "sha512-GrO2l93P8xCWBSTBX9l2BxI78VU/MAAYag+pG8curS3aBGy0++ZlxrQ7PdUOUVMbn5BwkGb6+eRrnf43ipnFEA==", - "dev": true, - "license": "MIT" - }, "node_modules/htmlparser2": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", @@ -1496,27 +1356,6 @@ "node": ">=0.10.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -1657,16 +1496,6 @@ "node": ">=8" } }, - "node_modules/keyv": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.1.tgz", - "integrity": "sha512-13hQT2q2VIwOoaJdJa7nY3J8UVbYtMTJFHnwm9LI+SaQRfUiM6Em9KZeOVTCKbMnGcRIL3NSUFpAdjZCq24nLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@keyv/serialize": "^1.0.3" - } - }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -2001,46 +1830,6 @@ "node": ">= 0.8" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/parse-srcset": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", @@ -2268,19 +2057,6 @@ "prettier": ">=3.0.0" } }, - "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "git+ssh://git@github.com/PrismJS/prism.git#19f8de66b0f3a79aedbbf096081a4060fc0e80af", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/prismjs" - } - }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", diff --git a/package.json b/package.json index d3ca1b19..071a4df4 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,7 @@ "description": "Prism website", "type": "module", "scripts": { - "postinstall": "node _build/copy-plugins.mjs", - "dependencies": "npm install --prefix node_modules/prismjs", + "postinstall": "node _build/postinstall.mjs", "dev": "netlify dev -p 8844", "serve": "npx @11ty/eleventy --config=_build/eleventy.js --serve --quiet", "build:html": "npx @11ty/eleventy --config=_build/eleventy.js --quiet", @@ -25,7 +24,6 @@ "license": "MIT", "devDependencies": { "@11ty/eleventy": "^3.1.0", - "@11ty/eleventy-fetch": "^5.0.2", "eleventy-plugin-toc": "^1.1.5", "markdown-it-anchor": "^9.2.0", "markdown-it-attrs": "^4.3.1", @@ -34,7 +32,6 @@ "prettier-plugin-brace-style": "^0.7.3", "prettier-plugin-merge": "^0.7.4", "prettier-plugin-space-before-function-paren": "^0.0.8", - "prismjs": "github:PrismJS/prism#v2", "typedoc": "^0.28.5", "typedoc-plugin-rename-defaults": "^0.7.3" } From 8db686032a9fec3d2065f58a368a9a731a6fc306 Mon Sep 17 00:00:00 2001 From: Dmitry Sharabin Date: Mon, 2 Jun 2025 18:44:15 +0200 Subject: [PATCH 04/16] Adjust 11ty settings accordingly --- _build/eleventy.js | 4 +++- _data/eleventyComputed.js | 7 ------- _data/tree.js | 14 -------------- 3 files changed, 3 insertions(+), 22 deletions(-) delete mode 100644 _data/tree.js diff --git a/_build/eleventy.js b/_build/eleventy.js index 83e7a33f..85d81cba 100644 --- a/_build/eleventy.js +++ b/_build/eleventy.js @@ -4,12 +4,14 @@ import markdownItDeflist from "markdown-it-deflist"; import pluginTOC from "eleventy-plugin-toc"; import * as filters from "./filters.js"; -import components from "../node_modules/prismjs/src/components.json" with { type: "json" }; +import components from "../components.json" with { type: "json" }; +import file_sizes from "../file-sizes.json" with { type: "json" }; /** @param {import("@11ty/eleventy").UserConfig} config */ export default config => { let data = { components, + file_sizes, layout: "page.njk", theme_switcher: true, toc: true, diff --git a/_data/eleventyComputed.js b/_data/eleventyComputed.js index d9c102f8..d63bdb0f 100644 --- a/_data/eleventyComputed.js +++ b/_data/eleventyComputed.js @@ -67,11 +67,4 @@ export default { return ret; }, - files_sizes (data) { - let ret = {}; - for (let file of data.tree) { - ret[file.path] = file.size; - } - return ret; - }, }; diff --git a/_data/tree.js b/_data/tree.js deleted file mode 100644 index 4adb7264..00000000 --- a/_data/tree.js +++ /dev/null @@ -1,14 +0,0 @@ -import Fetch from "@11ty/eleventy-fetch"; - -export default async () => { - let repo = await Fetch( - // TODO: Replace with "https://api.github.com/repos/PrismJS/prism/git/trees/main?recursive=1" when v2 is launched - "https://api.github.com/repos/PrismJS/prism/git/trees/master?recursive=1", - { - duration: "1d", - type: "json", - }, - ); - - return repo.tree; -}; From b8b32dad8bb31eaf975c0fb797a605dfcbc98021 Mon Sep 17 00:00:00 2001 From: Dmitry Sharabin Date: Mon, 2 Jun 2025 18:45:17 +0200 Subject: [PATCH 05/16] Update `.gitignore` --- .gitignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 5b2ce611..2b6cdeac 100644 --- a/.gitignore +++ b/.gitignore @@ -4,11 +4,15 @@ Thumbs.db # Generated files *.html +!examples/*.html api plugins +components.json +file-sizes.json # Cache .cache -# Local Netlify folder +# Local Netlify folders and files .netlify +deno.lock From fc09d1c4519fa9c791ba2f812631b3d7168f758c Mon Sep 17 00:00:00 2001 From: Dmitry Sharabin Date: Mon, 2 Jun 2025 18:45:43 +0200 Subject: [PATCH 06/16] Fix the API docs URL --- extending.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending.md b/extending.md index 9feb0f02..f160cd6e 100644 --- a/extending.md +++ b/extending.md @@ -620,6 +620,6 @@ Of course, to understand which hooks to use you would have to read Prism’s sou # API documentation -All public and stable parts of [Prism's API are documented here](https://prismjs.com/docs/). +All public and stable parts of [Prism's API are documented here](api/). From 436c29576ea4147e08d70836763d8726a9abfa83 Mon Sep 17 00:00:00 2001 From: Dmitry Sharabin Date: Mon, 2 Jun 2025 18:47:20 +0200 Subject: [PATCH 07/16] Update scripts - `examples.js` - `theme-swithcher.js` --- assets/examples.js | 2 +- assets/theme-switcher.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/examples.js b/assets/examples.js index 73994203..17fda732 100644 --- a/assets/examples.js +++ b/assets/examples.js @@ -4,7 +4,7 @@ import { toArray, getFileContents } from "./util.js"; -let components = await (await fetch("https://dev.prismjs.com/components.json")).json(); +let components = await (await fetch("/components.json")).json(); let languages = components.languages; let examples = {}; diff --git a/assets/theme-switcher.js b/assets/theme-switcher.js index 5b652e62..46668658 100644 --- a/assets/theme-switcher.js +++ b/assets/theme-switcher.js @@ -1,4 +1,4 @@ -let components = await (await fetch("https://dev.prismjs.com/components.json")).json(); +let components = await (await fetch("/components.json")).json(); let themes = components.themes; let currentTheme = (location.search.match(/theme=([\w-]+)/) ?? [])[1]; From df08f6b4e1cd2923015462f43dc66783622d8b78 Mon Sep 17 00:00:00 2001 From: Dmitry Sharabin Date: Mon, 2 Jun 2025 19:31:48 +0200 Subject: [PATCH 08/16] Make the theme switcher work correctly --- assets/theme-switcher.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/assets/theme-switcher.js b/assets/theme-switcher.js index 46668658..feed0412 100644 --- a/assets/theme-switcher.js +++ b/assets/theme-switcher.js @@ -17,12 +17,14 @@ document.querySelectorAll("input[name=theme]").forEach(input => { if (input.value === currentTheme) { input.checked = true; themeLink.href = - "https://dev.prismjs.com/" + themes.meta.path.replace(/\{id\}/g, input.value); + // FIXME: Remove “v2” when Prism v2 is released + "https://v2.dev.prismjs.com/dist/" + themes.meta.path.replace(/\{id\}/g, input.value); } input.addEventListener("change", () => { let id = input.value; - themeLink.href = "https://dev.prismjs.com/" + themes.meta.path.replace(/\{id\}/g, id); + // FIXME: Remove “v2” when Prism v2 is released + themeLink.href = "https://v2.dev.prismjs.com/dist/" + themes.meta.path.replace(/\{id\}/g, id); localStorage.setItem("theme", id); }); }); From a97a59ba30f382e1898036f040d4636bacf7f9ba Mon Sep 17 00:00:00 2001 From: Dmitry Sharabin Date: Mon, 2 Jun 2025 19:32:09 +0200 Subject: [PATCH 09/16] Adjust the download page --- assets/download.js | 68 +++++++++++++++++++--------------------------- download.njk | 23 +++++----------- 2 files changed, 35 insertions(+), 56 deletions(-) diff --git a/assets/download.js b/assets/download.js index 0249bced..47d1da65 100644 --- a/assets/download.js +++ b/assets/download.js @@ -4,14 +4,11 @@ import { getFileContents, toArray } from "./util.js"; -let components = await (await fetch("https://dev.prismjs.com/components.json")).json(); - -let treeURL = "https://api.github.com/repos/PrismJS/prism/git/trees/master?recursive=1"; -let tree = (await (await fetch(treeURL)).json()).tree; +let components = await (await fetch("/components.json")).json(); +let fileSizes = await (await fetch("/file-sizes.json")).json(); let cache = {}; let form = document.querySelector("form"); -let minified = true; let dependencies = {}; let timerId = 0; @@ -94,7 +91,13 @@ for (let category in components) { input.checked = checked; input.disabled = disabled; - let filepath = all.meta.path.replace(/\{id\}/g, id); + let filepath = all.meta.path; + if (category === "plugins") { + // When built, the plugins live in one directory called `plugins/`, not every plugin in its own directory + filepath = filepath.replace("{id}/", ""); + } + + filepath = filepath.replace(/\{id\}/g, id); let info = all[id] = { noCSS: all[id].noCSS || all.meta.noCSS, @@ -104,15 +107,9 @@ for (let category in components) { after: toArray(all[id].after), modify: toArray(all[id].modify), files: { - minified: { - paths: [], - size: 0 - }, - dev: { - paths: [], - size: 0 - } - } + paths: [], + size: 0, + }, }; info.require.forEach(v => { @@ -120,17 +117,11 @@ for (let category in components) { }); if (!all[id].noJS && !/\.css$/.test(filepath)) { - info.files.minified.paths.push(filepath.replace(/(\.js)?$/, ".min.js")); - info.files.dev.paths.push(filepath.replace(/(\.js)?$/, ".js")); + info.files.paths.push(filepath.replace(/(\.js)?$/, ".js")); } - if ((!all[id].noCSS && !/\.js$/.test(filepath)) || /\.css$/.test(filepath)) { - let cssFile = filepath.replace(/(\.css)?$/, ".css"); - let minCSSFile = cssFile.replace(/(?:\.css)$/, ".min.css"); - - info.files.minified.paths.push(minCSSFile); - info.files.dev.paths.push(cssFile); + info.files.paths.push(filepath.replace(/(\.css)?$/, ".css")); } input.addEventListener("change", ({ target }) => { @@ -170,20 +161,16 @@ for (let category in components) { } } -form.elements.compression[0].onclick = - form.elements.compression[1].onclick = function () { - minified = !!+this.value; - - getFilesSizes(); - }; - getFilesSizes(); -function getFileSize(filepath) { - for (let i = 0, l = tree.length; i < l; i++) { - if (tree[i].path === filepath) { - return tree[i].size; - } +function getFileSize (category, id, filepath) { + let type = filepath.match(/\.(css|js)$/)[1]; + + if (category === "core") { + return fileSizes.core.js; + } + else { + return fileSizes[category][id]?.[type] ?? 0; } } @@ -196,14 +183,14 @@ function getFilesSizes() { continue; } - let distro = all[id].files[minified ? "minified" : "dev"]; + let distro = all[id].files; let files = distro.paths; files.forEach(filepath => { let file = cache[filepath] = cache[filepath] || {}; if (!file.size) { - let size = getFileSize(filepath); + let size = getFileSize(category, id, filepath); if (size) { file.size = size; distro.size += file.size; @@ -235,7 +222,7 @@ function update(updatedCategory, updatedId) { let info = all[id]; if (info.enabled || id === updatedId) { - let distro = info.files[minified ? "minified" : "dev"]; + let distro = info.files; distro.paths.forEach(path => { if (cache[path]) { @@ -247,7 +234,8 @@ function update(updatedCategory, updatedId) { if (info.enabled) { if (!file.contentsPromise) { - file.contentsPromise = getFileContents("https://dev.prismjs.com/" + path); + // FIXME: Remove “v2” when Prism v2 is released + file.contentsPromise = getFileContents("https://v2.dev.prismjs.com/dist/" + path); } total[type] += size; @@ -331,7 +319,7 @@ async function generateCode() { redownload[category] = redownload[category] || []; redownload[category].push(id); } - info.files[minified ? "minified" : "dev"].paths.forEach(path => { + info.files.paths.forEach(path => { if (cache[path]) { let type = path.match(/\.(\w+)$/)[1]; diff --git a/download.njk b/download.njk index a638cc7c..8ad1c67b 100644 --- a/download.njk +++ b/download.njk @@ -26,18 +26,19 @@ resources: {%- set name = name + " + " + title -%} {%- endfor %} {%- endif %} - {%- set files_path = meta.path | replace("{id}", id) | replace(".css", "") | replace(".js", "") -%} {%- set option = component.option or meta.option -%} {% endif %} @@ -60,11 +56,6 @@ resources:
-

- Compression level: - - -

{%- for category, components in components -%} {{ list(category, components) }} From 375f0984aaf1721366fcd0565a4bafc09a0a8cff Mon Sep 17 00:00:00 2001 From: Dmitry Sharabin Date: Fri, 24 Oct 2025 18:13:54 +0200 Subject: [PATCH 10/16] Update deps --- package-lock.json | 121 +++++++++++++++++++++++++++------------------- package.json | 8 +-- 2 files changed, 76 insertions(+), 53 deletions(-) diff --git a/package-lock.json b/package-lock.json index af3224b6..f0226218 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,10 +16,10 @@ "markdown-it-attrs": "^4.3.1", "markdown-it-deflist": "^3.0.0", "prettier": "^3.5.3", - "prettier-plugin-brace-style": "^0.7.3", - "prettier-plugin-merge": "^0.7.4", - "prettier-plugin-space-before-function-paren": "^0.0.8", - "typedoc": "^0.28.5", + "prettier-plugin-brace-style": "^0.8.1", + "prettier-plugin-merge": "^0.8.0", + "prettier-plugin-space-before-function-paren": "^0.0.9", + "typedoc": "^0.28.14", "typedoc-plugin-rename-defaults": "^0.7.3" } }, @@ -222,54 +222,54 @@ } }, "node_modules/@gerrit0/mini-shiki": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.4.2.tgz", - "integrity": "sha512-3jXo5bNjvvimvdbIhKGfFxSnKCX+MA8wzHv55ptzk/cx8wOzT+BRcYgj8aFN3yTiTs+zvQQiaZFr7Jce1ZG3fw==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.13.1.tgz", + "integrity": "sha512-fDWM5QQc70jwBIt/WYMybdyXdyBmoJe7r1hpM+V/bHnyla79sygVDK2/LlVxIPc4n5FA3B5Wzt7AQH2+psNphg==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/engine-oniguruma": "^3.4.2", - "@shikijs/langs": "^3.4.2", - "@shikijs/themes": "^3.4.2", - "@shikijs/types": "^3.4.2", + "@shikijs/engine-oniguruma": "^3.13.0", + "@shikijs/langs": "^3.13.0", + "@shikijs/themes": "^3.13.0", + "@shikijs/types": "^3.13.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.4.2.tgz", - "integrity": "sha512-zcZKMnNndgRa3ORja6Iemsr3DrLtkX3cAF7lTJkdMB6v9alhlBsX9uNiCpqofNrXOvpA3h6lHcLJxgCIhVOU5Q==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.13.0.tgz", + "integrity": "sha512-O42rBGr4UDSlhT2ZFMxqM7QzIU+IcpoTMzb3W7AlziI1ZF7R8eS2M0yt5Ry35nnnTX/LTLXFPUjRFCIW+Operg==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.4.2", + "@shikijs/types": "3.13.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@shikijs/langs": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.4.2.tgz", - "integrity": "sha512-H6azIAM+OXD98yztIfs/KH5H4PU39t+SREhmM8LaNXyUrqj2mx+zVkr8MWYqjceSjDw9I1jawm1WdFqU806rMA==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.13.0.tgz", + "integrity": "sha512-672c3WAETDYHwrRP0yLy3W1QYB89Hbpj+pO4KhxK6FzIrDI2FoEXNiNCut6BQmEApYLfuYfpgOZaqbY+E9b8wQ==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.4.2" + "@shikijs/types": "3.13.0" } }, "node_modules/@shikijs/themes": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.4.2.tgz", - "integrity": "sha512-qAEuAQh+brd8Jyej2UDDf+b4V2g1Rm8aBIdvt32XhDPrHvDkEnpb7Kzc9hSuHUxz0Iuflmq7elaDuQAP9bHIhg==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.13.0.tgz", + "integrity": "sha512-Vxw1Nm1/Od8jyA7QuAenaV78BG2nSr3/gCGdBkLpfLscddCkzkL36Q5b67SrLLfvAJTOUzW39x4FHVCFriPVgg==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.4.2" + "@shikijs/types": "3.13.0" } }, "node_modules/@shikijs/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.4.2.tgz", - "integrity": "sha512-zHC1l7L+eQlDXLnxvM9R91Efh2V4+rN3oMVS2swCBssbj2U/FBwybD1eeLaq8yl/iwT+zih8iUbTBCgGZOYlVg==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.13.0.tgz", + "integrity": "sha512-oM9P+NCFri/mmQ8LoFGVfVyemm5Hi27330zuOBp0annwJdKH1kOLndw3zCtAVDehPLg9fKqoEx3Ht/wNZxolfw==", "dev": true, "license": "MIT", "dependencies": { @@ -2009,16 +2009,19 @@ } }, "node_modules/prettier-plugin-brace-style": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/prettier-plugin-brace-style/-/prettier-plugin-brace-style-0.7.3.tgz", - "integrity": "sha512-dpNenn3Dm4BdDmVE0azn0SLclTTcMgWjMGYsQgT5uV/mKNToYi97bT+SiAtSYb36SRQFlZ0nEs/2eD/tUI3maA==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-brace-style/-/prettier-plugin-brace-style-0.8.1.tgz", + "integrity": "sha512-nhyuc8ETHk/TDNegbH3t6xq+WRVsAqIRLfT3sqZZO+PU8dSQ8dZVhw9FBazFF7FwR0masRx/TbrSdS66IC37Zw==", "dev": true, "license": "MIT", + "dependencies": { + "zod": "3.22.4" + }, "engines": { - "node": ">=14" + "node": ">=18" }, "peerDependencies": { - "prettier": "^2 || ^3", + "prettier": "^3", "prettier-plugin-astro": "*", "prettier-plugin-svelte": "*" }, @@ -2032,26 +2035,36 @@ } }, "node_modules/prettier-plugin-merge": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/prettier-plugin-merge/-/prettier-plugin-merge-0.7.4.tgz", - "integrity": "sha512-cxuInnqaO8d/zZx/tk8PEKtab8QetiBsOlXH+kYqBF66lSwJoy491jQT3ocOdJ/8nzom40QGGq/wUblFe7zRxw==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-merge/-/prettier-plugin-merge-0.8.0.tgz", + "integrity": "sha512-4ovlPwwsuKB+NyQNlXrt2P4I/4dx0P2w2iBkYpgjJHFqglMndYbzYWyY5hHTQj0WFhZYeUjsHKRGKxWsf6tvag==", "dev": true, "license": "MIT", "dependencies": { "diff": "5.1.0" }, "engines": { - "node": ">=14" + "node": ">=18" }, "peerDependencies": { - "prettier": "^2 || ^3" + "prettier": "^3" } }, "node_modules/prettier-plugin-space-before-function-paren": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/prettier-plugin-space-before-function-paren/-/prettier-plugin-space-before-function-paren-0.0.8.tgz", - "integrity": "sha512-ZjtDtkF+oD0GsaIuaQBAlSkgx76/SPIrIhVxmTV8xXKsnr2yIAv2ZxCHhNmxyMNC5RlcmUbKHiMEJGRU1ivy8w==", + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/prettier-plugin-space-before-function-paren/-/prettier-plugin-space-before-function-paren-0.0.9.tgz", + "integrity": "sha512-JZMlayZSrfD1/GtZgGr3IpKubQDBCEYUNi6WXvmcJ5nxQ8ySZYKgGxEaludxEtF1jBv6zC6QYmvjz+LXfp+VyA==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/LeaVerou" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/leaverou" + } + ], "license": "MIT", "peerDependencies": { "prettier": ">=3.0.0" @@ -2297,17 +2310,17 @@ } }, "node_modules/typedoc": { - "version": "0.28.5", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.5.tgz", - "integrity": "sha512-5PzUddaA9FbaarUzIsEc4wNXCiO4Ot3bJNeMF2qKpYlTmM9TTaSHQ7162w756ERCkXER/+o2purRG6YOAv6EMA==", + "version": "0.28.14", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.14.tgz", + "integrity": "sha512-ftJYPvpVfQvFzpkoSfHLkJybdA/geDJ8BGQt/ZnkkhnBYoYW6lBgPQXu6vqLxO4X75dA55hX8Af847H5KXlEFA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@gerrit0/mini-shiki": "^3.2.2", + "@gerrit0/mini-shiki": "^3.12.0", "lunr": "^2.3.9", "markdown-it": "^14.1.0", "minimatch": "^9.0.5", - "yaml": "^2.7.1" + "yaml": "^2.8.1" }, "bin": { "typedoc": "bin/typedoc" @@ -2317,7 +2330,7 @@ "pnpm": ">= 10" }, "peerDependencies": { - "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x" + "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x" } }, "node_modules/typedoc-plugin-rename-defaults": { @@ -2454,16 +2467,26 @@ } }, "node_modules/yaml": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", - "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", "dev": true, "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { - "node": ">= 14" + "node": ">= 14.6" + } + }, + "node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" } } } diff --git a/package.json b/package.json index 071a4df4..ea328749 100644 --- a/package.json +++ b/package.json @@ -29,10 +29,10 @@ "markdown-it-attrs": "^4.3.1", "markdown-it-deflist": "^3.0.0", "prettier": "^3.5.3", - "prettier-plugin-brace-style": "^0.7.3", - "prettier-plugin-merge": "^0.7.4", - "prettier-plugin-space-before-function-paren": "^0.0.8", - "typedoc": "^0.28.5", + "prettier-plugin-brace-style": "^0.8.1", + "prettier-plugin-merge": "^0.8.0", + "prettier-plugin-space-before-function-paren": "^0.0.9", + "typedoc": "^0.28.14", "typedoc-plugin-rename-defaults": "^0.7.3" } } From 5e24bba63597d7f4633796f15f3bb35a3292027e Mon Sep 17 00:00:00 2001 From: Dmitry Sharabin Date: Fri, 24 Oct 2025 19:09:11 +0200 Subject: [PATCH 11/16] Improve plugin downloads --- README.json | 2 +- README.md | 6 +-- _data/eleventyComputed.js | 7 +-- _layouts/page.njk | 4 +- _redirects | 14 ++---- assets/download.js | 102 ++++++++++++++++++++++---------------- assets/examples.js | 48 +++++++++--------- assets/faq.js | 25 +++++----- assets/test-drive.js | 2 +- assets/theme-switcher.js | 7 +-- benchmark.md | 2 +- download.njk | 2 +- examples.md | 4 +- extending.md | 8 +-- faq.md | 4 +- known-failures.md | 4 +- test-suite.md | 6 +-- test.md | 5 +- tokens.md | 12 ++--- 19 files changed, 137 insertions(+), 127 deletions(-) diff --git a/README.json b/README.json index d0efc02c..4abebb76 100644 --- a/README.json +++ b/README.json @@ -1,4 +1,4 @@ { "layout": "home.njk", - "resources": ["plugins/keep-markup/prism-keep-markup.js", "https://dev.prismjs.com/components/prism-bash.js"] + "resources": ["/plugins/keep-markup.js { type=module }", "/languages/bash.js { type=module }"] } diff --git a/README.md b/README.md index 162e922c..cdb8f485 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Prism is used on several websites, small and large. Some of them are: # Examples The Prism source, highlighted with Prism (don’t you just love how meta this is?): -

+

 
 This page’s CSS code, highlighted with Prism:
 
@@ -56,7 +56,7 @@ If you’re still not sold, you can [view more examples](examples.html) or [try
 - Highlights embedded languages (e.g. CSS inside HTML, JavaScript inside HTML).
 - Highlights inline code as well, not just code blocks.
 - It doesn’t force you to use any Prism-specific markup, not even a Prism-specific class name, only standard markup you should be using anyway. So, you can just try it for a while, remove it if you don’t like it and leave no traces behind.
-- Highlight specific lines and/or line ranges (requires [plugin](plugins/line-highlight/)).
+- Highlight specific lines and/or line ranges (requires [plugin](plugins/line-highlight/index.html)).
 - Show invisible characters like tabs, line breaks etc (requires [plugin](plugins/show-invisibles/)).
 - Autolink URLs and emails, use Markdown links in comments (requires [plugin](plugins/autolinker/)).
 
@@ -221,7 +221,7 @@ This is the list of all {{ languages | length }} languages currently supported b
 
    {% for id, language in languages -%}
  • - {{ language.title }} — + {{ language.title }} — {%- for alias in language.alias -%} {{ alias }}{{ ", " if not loop.last }} {%- endfor %} diff --git a/_data/eleventyComputed.js b/_data/eleventyComputed.js index d63bdb0f..3f2e105e 100644 --- a/_data/eleventyComputed.js +++ b/_data/eleventyComputed.js @@ -13,7 +13,7 @@ export default { for (let id in languages) { let ret = [id]; - let alias = languages[id].alias; + let alias = Object.keys(languages[id].aliasTitles ?? {}); if (alias) { ret = ret.concat(Array.isArray(alias) ? alias : [alias]); } @@ -52,6 +52,7 @@ export default { let ret = []; resources = Array.isArray(resources) ? resources : [resources]; + resources = resources.map(r => r.replace(/^\/plugins\//, "/dist/plugins/")); ret.push(...resources); if (!id) { @@ -59,10 +60,10 @@ export default { } // We are working with plugin resources - ret.push(`./prism-${id}.js { type="module" }`); + ret.push(`/dist/plugins/${id}.js { type="module" }`); if (!data.noCSS) { - ret.push(`./prism-${id}.css`); + ret.push(`/dist/plugins/${id}.css`); } return ret; diff --git a/_layouts/page.njk b/_layouts/page.njk index 43234c0f..0104ade7 100644 --- a/_layouts/page.njk +++ b/_layouts/page.njk @@ -14,7 +14,7 @@ - + @@ -89,7 +89,7 @@ - + {% if theme_switcher -%} {%- endif %} diff --git a/_redirects b/_redirects index 80f349f9..0c6c6cb6 100644 --- a/_redirects +++ b/_redirects @@ -1,12 +1,4 @@ -# Do not redirect -/plugins/:plugin/index.html /plugins/:plugin/index.html 200 -/plugins/:plugin/demo.html /plugins/:plugin/demo.html 200 -/plugins/:plugin/demo.js /plugins/:plugin/demo.js 200 -/plugins/:plugin/demo.css /plugins/:plugin/demo.css 200 - # Components: languages, themes, plugins, etc. -/components/* https://dev.prismjs.com/components/:splat 200 -/plugins/:plugin/:file https://dev.prismjs.com/plugins/:plugin/:file 200 - -# Make the autoloader plugin work -/plugins/:plugin/components/* https://dev.prismjs.com/components/:splat 200 +/themes/:file https://v2.dev.prismjs.com/dist/themes/:file 301 +/languages/:file https://v2.dev.prismjs.com/dist/languages/:file 301 +/dist/plugins/:file https://v2.dev.prismjs.com/dist/plugins/:file 301 diff --git a/assets/download.js b/assets/download.js index 47d1da65..2984aacd 100644 --- a/assets/download.js +++ b/assets/download.js @@ -27,7 +27,7 @@ if (hstr) { } } if (category === "themes" && ids.length) { - let themeInput = document.querySelector(`#theme input[value="${ ids[0] }"]`); + let themeInput = document.querySelector(`#theme input[value="${ids[0]}"]`); if (themeInput) { themeInput.checked = true; themeInput.dispatchEvent(new Event("change")); @@ -60,7 +60,9 @@ for (let category in components) { let all = components[category]; all.meta.section = form.querySelector(`#category-${category}`); - all.meta.section.querySelector(`[name="check-all-${category}"]`)?.addEventListener("change", ({ target }) => { + all.meta.section.querySelector(`[name="check-all-${category}"]`)?.addEventListener("change", ({ + target, + }) => { all.meta.section.querySelectorAll(`input[name="download-${category}"]`).forEach(input => { all[input.value].enabled = input.checked = target.checked; }); @@ -80,8 +82,10 @@ for (let category in components) { let option = all[id].option || all.meta.option; switch (option) { - case "mandatory": disabled = true; // fallthrough - case "default": checked = true; + case "mandatory": + disabled = true; // fallthrough + case "default": + checked = true; } if (category === "themes" && storedTheme) { @@ -99,7 +103,7 @@ for (let category in components) { filepath = filepath.replace(/\{id\}/g, id); - let info = all[id] = { + let info = (all[id] = { noCSS: all[id].noCSS || all.meta.noCSS, noJS: all[id].noJS || all.meta.noJS, enabled: checked, @@ -110,7 +114,7 @@ for (let category in components) { paths: [], size: 0, }, - }; + }); info.require.forEach(v => { dependencies[v] = (dependencies[v] || []).concat(id); @@ -137,7 +141,8 @@ for (let category in components) { }); } - if (dependencies[id] && !target.checked) { // It’s required by others + if (dependencies[id] && !target.checked) { + // It’s required by others dependencies[id].forEach(dependent => { let input = form.querySelector(`label[data-id="${dependent}"] > input`); input.checked = false; @@ -174,7 +179,7 @@ function getFileSize (category, id, filepath) { } } -function getFilesSizes() { +function getFilesSizes () { for (let category in components) { let all = components[category]; @@ -187,7 +192,7 @@ function getFilesSizes() { let files = distro.paths; files.forEach(filepath => { - let file = cache[filepath] = cache[filepath] || {}; + let file = (cache[filepath] = cache[filepath] || {}); if (!file.size) { let size = getFileSize(category, id, filepath); @@ -206,13 +211,14 @@ function getFilesSizes() { } } -function prettySize(size) { - return Math.round(100 * size / 1024) / 100 + "KB"; +function prettySize (size) { + return Math.round((100 * size) / 1024) / 100 + "KB"; } -function update(updatedCategory, updatedId) { +function update (updatedCategory, updatedId) { // Update total size - let total = { js: 0, css: 0 }; let updated = { js: 0, css: 0 }; + let total = { js: 0, css: 0 }; + let updated = { js: 0, css: 0 }; for (let category in components) { let all = components[category]; @@ -232,10 +238,11 @@ function update(updatedCategory, updatedId) { let size = file.size || 0; if (info.enabled) { - if (!file.contentsPromise) { // FIXME: Remove “v2” when Prism v2 is released - file.contentsPromise = getFileContents("https://v2.dev.prismjs.com/dist/" + path); + file.contentsPromise = getFileContents( + "https://v2.dev.prismjs.com/dist/" + path, + ); } total[type] += size; @@ -273,36 +280,37 @@ function update(updatedCategory, updatedId) { Object.assign(form.querySelector(`label[data-id="${updatedId}"] .filesize`), { textContent: prettySize(updated.all), - title: (updated.js ? Math.round(100 * updated.js / updated.all) + "% JavaScript" : "") + + title: + (updated.js ? Math.round((100 * updated.js) / updated.all) + "% JavaScript" : "") + (updated.js && updated.css ? " + " : "") + - (updated.css ? Math.round(100 * updated.css / updated.all) + "% CSS" : "") + (updated.css ? Math.round((100 * updated.css) / updated.all) + "% CSS" : ""), }); } form.querySelector("#filesize").textContent = prettySize(total.all); Object.assign(form.querySelector("#percent-js"), { - textContent: Math.round(100 * total.js / total.all) + "%", - title: prettySize(total.js) + textContent: Math.round((100 * total.js) / total.all) + "%", + title: prettySize(total.js), }); Object.assign(form.querySelector("#percent-css"), { - textContent: Math.round(100 * total.css / total.all) + "%", - title: prettySize(total.css) + textContent: Math.round((100 * total.css) / total.all) + "%", + title: prettySize(total.css), }); delayedGenerateCode(); } // "debounce" multiple rapid requests to generate and highlight code -function delayedGenerateCode() { +function delayedGenerateCode () { if (timerId !== 0) { clearTimeout(timerId); } timerId = setTimeout(generateCode, 500); } -async function generateCode() { +async function generateCode () { /** @type {CodePromiseInfo[]} */ let promises = []; let redownload = {}; @@ -328,7 +336,7 @@ async function generateCode() { id: id, category: category, path: path, - type: type + type: type, }); } }); @@ -369,11 +377,14 @@ async function generateCode() { let newCode = Object.assign(document.createElement("code"), { className: codeElement.className, - textContent: text + textContent: text, }); - Prism.highlightElement(newCode, false, () => { - codeElement.replaceWith(newCode); + Prism.highlightElement(newCode, { + async: false, + callback: () => { + codeElement.replaceWith(newCode); + }, }); form.querySelector(`#download-${type} .download-button`).onclick = () => { @@ -395,7 +406,7 @@ async function generateCode() { * @property {string} path * @property {string} type */ -function buildCode(promises) { +function buildCode (promises) { // sort the promises /** @type {CodePromiseInfo[]} */ @@ -406,7 +417,8 @@ function buildCode(promises) { promises.forEach(p => { if (p.category === "core" || p.category === "themes") { finalPromises.push(p); - } else { + } + else { let infos = toSortMap[p.id]; if (!infos) { toSortMap[p.id] = infos = []; @@ -416,12 +428,14 @@ function buildCode(promises) { }); // this assumes that the ids in `toSortMap` are complete under transitive requirements - getLoader(components, Object.keys(toSortMap)).getIds().forEach(id => { - if (!toSortMap[id]) { - console.error(`${ id } not found.`); - } - finalPromises.push.apply(finalPromises, toSortMap[id]); - }); + getLoader(components, Object.keys(toSortMap)) + .getIds() + .forEach(id => { + if (!toSortMap[id]) { + console.error(`${id} not found.`); + } + finalPromises.push.apply(finalPromises, toSortMap[id]); + }); promises = finalPromises; // build @@ -434,18 +448,22 @@ function buildCode(promises) { if (i < l) { let p = promises[i]; p.contentsPromise.then(function (contents) { - code[p.type] += contents + (p.type === "js" && !/;\s*$/.test(contents) ? ";" : "") + "\n"; + code[p.type] += + contents + (p.type === "js" && !/;\s*$/.test(contents) ? ";" : "") + "\n"; i++; f(resolve); }); p.contentsPromise["catch"](function () { - errors.push(Object.assign(document.createElement("p"), { - textContent: `An error occurred while fetching the file "${ p.path }".` - })); + errors.push( + Object.assign(document.createElement("p"), { + textContent: `An error occurred while fetching the file "${p.path}".`, + }), + ); i++; f(resolve); }); - } else { + } + else { resolve({ code: code, errors: errors }); } }; @@ -456,7 +474,7 @@ function buildCode(promises) { /** * @returns {Promise} */ -async function getVersion() { - let packageJSON = await getFileContents("https://dev.prismjs.com/package.json"); +async function getVersion () { + let packageJSON = await getFileContents("https://v2.dev.prismjs.com/package.json"); return JSON.parse(packageJSON).version; } diff --git a/assets/examples.js b/assets/examples.js index 17fda732..1acae9c8 100644 --- a/assets/examples.js +++ b/assets/examples.js @@ -8,7 +8,8 @@ let components = await (await fetch("/components.json")).json(); let languages = components.languages; let examples = {}; -let treeURL = "https://api.github.com/repos/PrismJS/website/git/trees/main?recursive=1"; +// FIXME: Switch to the main branch when the Prism v2 is released +let treeURL = "https://api.github.com/repos/PrismJS/website/git/trees/v2?recursive=1"; let tree = (await (await fetch(treeURL)).json()).tree; async function fileExists (filepath) { @@ -33,22 +34,21 @@ async function fileExists (filepath) { function buildContentsHeader (id) { let language = languages[id]; - let header = `

    ${ language.title }

    `; - if (language.alias) { - let alias = toArray(language.alias); + let header = `

    ${language.title}

    `; + if (language.aliasTitles) { + let alias = Object.keys(language.aliasTitles); header += "

    To use this language, use one of the following classes:

    "; - header += `
    • "language-${ id }"
    • `; + header += `
      • "language-${id}"
      • `; alias.forEach(alias => { - header += `
      • "language-${ alias }"
      • `; + header += `
      • "language-${alias}"
      • `; }); header += "
      "; } else { - header += - `

      To use this language, use the class "language-${ id }".

      `; + header += `

      To use this language, use the class "language-${id}".

      `; } function wrapCode (text) { - return `${ text }`; + return `${text}`; } let deps = []; if (language.require) { @@ -65,13 +65,13 @@ function buildContentsHeader (id) { header += `Dependencies:`; header += " This component"; if (deps.length === 1) { - header += ` ${ deps[0] }.`; + header += ` ${deps[0]}.`; } else { header += ":"; header += "
        "; deps.forEach(text => { - header += `
      • ${ text }.
      • `; + header += `
      • ${text}.
      • `; }); header += "
      "; } @@ -100,7 +100,7 @@ async function update (id) { }, ); - Prism.highlightAllUnder(container); + Prism.highlightAll({ root: container }); } else { examples[id].innerHTML = ""; @@ -110,17 +110,19 @@ async function update (id) { let languagesSection = document.querySelector("#languages"); let examplesSection = document.querySelector("#examples"); -let res = await Promise.all(Object.keys(languages) - .filter(id => id !== "meta") - .map(async id => { - let language = languages[id]; - - language.enabled = language.option === "default"; - language.path = languages.meta.path.replace(/\{id\}/g, id) + ".js"; - language.examplesPath = languages.meta.examplesPath.replace(/\{id\}/g, id) + ".html"; - let exists = await fileExists(language.examplesPath); - return { id, exists }; - })); +let res = await Promise.all( + Object.keys(languages) + .filter(id => id !== "meta") + .map(async id => { + let language = languages[id]; + + language.enabled = language.option === "default"; + language.path = languages.meta.path.replace(/\{id\}/g, id) + ".js"; + language.examplesPath = languages.meta.examplesPath.replace(/\{id\}/g, id) + ".html"; + let exists = await fileExists(language.examplesPath); + return { id, exists }; + }), +); res.forEach(async ({ id, exists }) => { let language = languages[id]; diff --git a/assets/faq.js b/assets/faq.js index 60cc8939..a235b9a5 100644 --- a/assets/faq.js +++ b/assets/faq.js @@ -19,9 +19,10 @@ function printTokens (grammar) { let languageMap = new Map(); let languages = [...languageSelect.options].map(o => o.value); - Object.keys(Prism.languages) + Prism.components.entries + .keys() .filter(l => languages.includes(l)) - .forEach(l => languageMap.set(Prism.languages[l], `Prism.languages["${l}"]`)); + .forEach(l => languageMap.set(Prism.components.getLanguage(l), `Prism.languages["${l}"]`)); let stack = new Map(); @@ -70,25 +71,25 @@ function printTokens (grammar) { let loadedLanguages = {}; function showTokens () { let language = languageSelect.value; - if (Prism.languages[language]) { - tokensOutput.textContent = printTokens(Prism.languages[language]); + if (Prism.components.has(language)) { + tokensOutput.textContent = printTokens(Prism.components.getLanguage(language)); } else if (language in loadedLanguages) { tokensOutput.textContent = `"${language}" doesn't have any tokens.`; } else { // load grammar - Prism.plugins.autoloader.loadLanguages( - [language], - function () { + Prism.plugins.autoloader + .loadLanguages(language) + .then(() => { loadedLanguages[language] = true; showTokens(); - }, - function () { + }) + .catch(() => { tokensOutput.textContent = `Unable to load "${language}"`; - }, - ); + }); } } -showTokens(); +// Give Prism a chance to load +setTimeout(showTokens, 100); diff --git a/assets/test-drive.js b/assets/test-drive.js index 216967fd..531890cc 100644 --- a/assets/test-drive.js +++ b/assets/test-drive.js @@ -100,7 +100,7 @@ function highlightCode () { className: code.className, }); - Prism.highlightElement(newCode); + globalThis.Prism?.highlightElement(newCode); code.replaceWith(newCode); code = newCode; diff --git a/assets/theme-switcher.js b/assets/theme-switcher.js index feed0412..01a3de2b 100644 --- a/assets/theme-switcher.js +++ b/assets/theme-switcher.js @@ -16,15 +16,12 @@ let themeLink = document.querySelector(`link[href*="themes/prism"]`); document.querySelectorAll("input[name=theme]").forEach(input => { if (input.value === currentTheme) { input.checked = true; - themeLink.href = - // FIXME: Remove “v2” when Prism v2 is released - "https://v2.dev.prismjs.com/dist/" + themes.meta.path.replace(/\{id\}/g, input.value); + themeLink.href = "/" + themes.meta.path.replace(/\{id\}/g, input.value); } input.addEventListener("change", () => { let id = input.value; - // FIXME: Remove “v2” when Prism v2 is released - themeLink.href = "https://v2.dev.prismjs.com/dist/" + themes.meta.path.replace(/\{id\}/g, id); + themeLink.href = "/" + themes.meta.path.replace(/\{id\}/g, id); localStorage.setItem("theme", id); }); }); diff --git a/benchmark.md b/benchmark.md index 64ebc6d8..36d21f82 100644 --- a/benchmark.md +++ b/benchmark.md @@ -1,7 +1,7 @@ --- tagline: Prism has a benchmark suite which can be run and extended similar to the test suite. body_classes: language-javascript -resources: https://dev.prismjs.com/components/prism-bash.js +resources: /languages/bash.js { type="module" } ---
      diff --git a/download.njk b/download.njk index 8ad1c67b..773e336c 100644 --- a/download.njk +++ b/download.njk @@ -20,7 +20,7 @@ resources: {%- endif %} {% for id, component in components -%} {% if id != "meta" %} - {%- set name = component.title or id | replace("prism-", "") | capitalize -%} + {%- set name = component.title or id | capitalize -%} {%- if component.aliasTitles -%} {% for id, title in component.aliasTitles %} {%- set name = name + " + " + title -%} diff --git a/examples.md b/examples.md index 838ef2c9..ab5aa277 100644 --- a/examples.md +++ b/examples.md @@ -1,8 +1,8 @@ --- tagline: "The examples in this page serve a dual purpose: They act as unit tests, making it easy to spot bugs, and at the same time demonstrate what Prism can do, on simple and on edge cases." resources: - - assets/examples.js { type="module" } - - plugins/autoloader/prism-autoloader.js + - /assets/examples.js { type="module" } + - /plugins/autoloader.js { type="module" } ---
      diff --git a/extending.md b/extending.md index f160cd6e..33753ae6 100644 --- a/extending.md +++ b/extending.md @@ -3,9 +3,9 @@ title: Extending Prism tagline: Prism is awesome out of the box, but it’s even awesomer when it’s customized to your own needs. This section will help you write new language definitions, plugins and all-around Prism hacking. body_classes: language-javascript resources: - - plugins/line-highlight/prism-line-highlight.css - - plugins/line-highlight/prism-line-highlight.js - - plugins/autoloader/prism-autoloader.js + - /plugins/line-highlight.css + - /plugins/line-highlight.js { type="module" } + - /plugins/autoloader.js { type="module" } ---
      @@ -14,7 +14,7 @@ resources: Every language is defined as a set of tokens, which are expressed as [regular expressions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions). For example, this is the language definition for JSON: -
      
      +
      
       
       At its core, a language definition is just a JavaScript object, and a token is just an entry of the language definition. The simplest language definition is an empty object:
       
      diff --git a/faq.md b/faq.md
      index a5983f77..50c7a8eb 100644
      --- a/faq.md
      +++ b/faq.md
      @@ -4,8 +4,8 @@ tagline: Frequently Asked Questions, with a few Questions I want people to Frequ
       back_to_top: true
       body_classes: language-none
       resources:
      -  - assets/faq.js { type="module" }
      -  - plugins/autoloader/prism-autoloader.js
      +  - /assets/faq.js { type="module" }
      +  - /plugins/autoloader.js { type="module" }
       ---
       
       
      diff --git a/known-failures.md b/known-failures.md index 85297a06..1ca2bb5f 100644 --- a/known-failures.md +++ b/known-failures.md @@ -2,10 +2,10 @@ tagline: A list of rare edge cases where Prism highlights code incorrectly. back_to_top: true body_classes: language-none -resources: plugins/autoloader/prism-autoloader.js +resources: /plugins/autoloader.js { type="module" } --- -There are certain edge cases where Prism will fail. There are always such cases in every regex-based syntax highlighter. +There are certain edge cases where Prism will fail. There are always such cases in every regex-based syntax highlighter. However, Prism dares to be open and honest about them. If a failure is listed here, it doesn’t mean it will never be fixed. This is more of a “known bugs” list, just with a certain type of bug.
      diff --git a/test-suite.md b/test-suite.md index 722cba2f..7d7bc3bd 100644 --- a/test-suite.md +++ b/test-suite.md @@ -2,7 +2,7 @@ title: Running the test suite tagline: Prism has a test suite, that ensures that the correct tokens are matched. body_classes: language-javascript -resources: https://dev.prismjs.com/components/prism-bash.js +resources: /languages/bash.js { type="module" } ---
      @@ -88,8 +88,8 @@ You can use all conventions as a prefix, so `string_interpolation_feature_inline A test case file is built up of two or three sections separated by ten or more dashes `-` starting at the begin of the line. The sections are the following: 1. Your language snippet. The code you want to tokenize using Prism. (**required**) -2. The simplified token stream you expect. Needs to be valid JSON. (_optional_) - The test runner will automatically insert this if not present. **Carefully check** that the inserted token stream is what you expected. +2. The simplified token stream you expect. Needs to be valid JSON. (_optional_) + The test runner will automatically insert this if not present. **Carefully check** that the inserted token stream is what you expected. If the test case fails because the JSON is present but incorrect, then you can use the [`--update` flag](#updating-tests) to overwrite it. 3. A brief comment explaining the test case. (_optional_) diff --git a/test.md b/test.md index a43b30b4..efc0ebd7 100644 --- a/test.md +++ b/test.md @@ -2,9 +2,8 @@ title: Test drive tagline: Take Prism for a spin! resources: - - assets/test-drive.js - - plugins/autoloader/prism-autoloader.js - - + - /assets/test-drive.js + - /plugins/autoloader.js { type="module" } --- diff --git a/tokens.md b/tokens.md index f71d8bf1..fcce673d 100644 --- a/tokens.md +++ b/tokens.md @@ -3,12 +3,12 @@ title: Prism tokens tagline: Prism identifies tokens in your code, which are in turn styled by CSS to produce the syntax highlighting. This page provides an overview of the standard tokens and corresponding examples. body_classes: language-none resources: - - plugins/line-highlight/prism-line-highlight.css - - plugins/toolbar/prism-toolbar.css - - plugins/line-highlight/prism-line-highlight.js - - plugins/toolbar/prism-toolbar.js - - plugins/show-language/prism-show-language.js - - plugins/autoloader/prism-autoloader.js + - /plugins/line-highlight.css + - /plugins/toolbar.css + - /plugins/line-highlight.js { type="module" } + - /plugins/toolbar.js { type="module" } + - /plugins/show-language.js { type="module" } + - /plugins/autoloader.js { type="module" } ---
      From f0f5825117bbe72b666c4925723f856bf0becaa0 Mon Sep 17 00:00:00 2001 From: Dmitry Sharabin Date: Fri, 24 Oct 2025 17:50:45 +0200 Subject: [PATCH 12/16] Use the file highlight plugin --- _layouts/page.njk | 1 + 1 file changed, 1 insertion(+) diff --git a/_layouts/page.njk b/_layouts/page.njk index 0104ade7..14b287ce 100644 --- a/_layouts/page.njk +++ b/_layouts/page.njk @@ -90,6 +90,7 @@ + {% if theme_switcher -%} {%- endif %} From e10fac84591c763ba3a37c8b2262e1e829618720 Mon Sep 17 00:00:00 2001 From: Dmitry Sharabin Date: Fri, 24 Oct 2025 18:02:21 +0200 Subject: [PATCH 13/16] Use another Prism source file for the showcase --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cdb8f485..c53797ea 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Prism is used on several websites, small and large. Some of them are: # Examples The Prism source, highlighted with Prism (don’t you just love how meta this is?): -
      
      +
      
       
       This page’s CSS code, highlighted with Prism:
       
      
      From 90800f6a6bd5df4f40af99d6d2854f1a5201e28e Mon Sep 17 00:00:00 2001
      From: Dmitry Sharabin 
      Date: Fri, 24 Oct 2025 18:14:13 +0200
      Subject: [PATCH 14/16] Adjust API docs generation
      
      ---
       typedoc.json | 10 +++++-----
       1 file changed, 5 insertions(+), 5 deletions(-)
      
      diff --git a/typedoc.json b/typedoc.json
      index b353482c..e55a8dd1 100644
      --- a/typedoc.json
      +++ b/typedoc.json
      @@ -4,16 +4,16 @@
       	"json": "./api/docs.json",
       	"name": "Prism API",
       	"includeVersion": true,
      -	"entryPoints": ["node_modules/prismjs/src/**/*.ts"],
      +	"entryPoints": ["node_modules/prismjs/src/**/*.js"],
       	"exclude": [
      -		"node_modules/prismjs/src/plugins/**/*.ts",
      -		"node_modules/prismjs/src/languages/**/*.ts",
      -		"node_modules/prismjs/src/known-plugins.d.ts"
      +		"node_modules/prismjs/src/plugins/**/*.js",
      +		"node_modules/prismjs/src/languages/**/*.js"
       	],
       	"externalPattern": ["**/node_modules/**/node_modules/**"],
       	"compilerOptions": {
       		"skipLibCheck": true,
      -		"noCheck": true
      +		"noCheck": true,
      +		"allowJs": true
       	},
       	"markdownItOptions": {
       		"html": true,
      
      From f630126ba2b25289c969f8740919841b1efd29a5 Mon Sep 17 00:00:00 2001
      From: Dmitry Sharabin 
      Date: Sat, 25 Oct 2025 22:18:15 +0200
      Subject: [PATCH 15/16] Better handle plugin docs + generate `_redirects`
      
      ---
       .gitignore                |  1 +
       _build/copy-plugins.mjs   |  5 ++---
       _data/eleventyComputed.js |  5 ++---
       _layouts/page.njk         |  2 +-
       _redirects                |  4 ----
       _redirects.njk            | 22 ++++++++++++++++++++++
       6 files changed, 28 insertions(+), 11 deletions(-)
       delete mode 100644 _redirects
       create mode 100644 _redirects.njk
      
      diff --git a/.gitignore b/.gitignore
      index 2b6cdeac..3bed9a90 100644
      --- a/.gitignore
      +++ b/.gitignore
      @@ -9,6 +9,7 @@ api
       plugins
       components.json
       file-sizes.json
      +_redirects
       
       # Cache
       .cache
      diff --git a/_build/copy-plugins.mjs b/_build/copy-plugins.mjs
      index 2e45be16..e175f8ec 100644
      --- a/_build/copy-plugins.mjs
      +++ b/_build/copy-plugins.mjs
      @@ -27,9 +27,8 @@ async function copy () {
       				continue;
       			}
       
      -			let name = path.parse(file.name).name;
      -			// Copy only the README.md and demo.* files
      -			if (["README", "demo"].includes(name)) {
      +			let filename = path.parse(file.name).base;
      +			if (["README.md", "demo.md"].includes(filename)) {
       				await fs.copyFile(path.join(source, file.name), path.join(dest, file.name));
       			}
       		}
      diff --git a/_data/eleventyComputed.js b/_data/eleventyComputed.js
      index 3f2e105e..1c8cfd26 100644
      --- a/_data/eleventyComputed.js
      +++ b/_data/eleventyComputed.js
      @@ -52,7 +52,6 @@ export default {
       		let ret = [];
       
       		resources = Array.isArray(resources) ? resources : [resources];
      -		resources = resources.map(r => r.replace(/^\/plugins\//, "/dist/plugins/"));
       		ret.push(...resources);
       
       		if (!id) {
      @@ -60,10 +59,10 @@ export default {
       		}
       
       		// We are working with plugin resources
      -		ret.push(`/dist/plugins/${id}.js { type="module" }`);
      +		ret.push(`/plugins/${id}.js { type="module" }`);
       
       		if (!data.noCSS) {
      -			ret.push(`/dist/plugins/${id}.css`);
      +			ret.push(`/plugins/${id}.css`);
       		}
       
       		return ret;
      diff --git a/_layouts/page.njk b/_layouts/page.njk
      index 14b287ce..e36f9b5a 100644
      --- a/_layouts/page.njk
      +++ b/_layouts/page.njk
      @@ -90,7 +90,7 @@
       	
       
       	
      -	
      +	
       	{% if theme_switcher -%}
       	
       	{%- endif %}
      diff --git a/_redirects b/_redirects
      deleted file mode 100644
      index 0c6c6cb6..00000000
      --- a/_redirects
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -# Components: languages, themes, plugins, etc.
      -/themes/:file                  https://v2.dev.prismjs.com/dist/themes/:file         301
      -/languages/:file               https://v2.dev.prismjs.com/dist/languages/:file      301
      -/dist/plugins/:file            https://v2.dev.prismjs.com/dist/plugins/:file        301
      diff --git a/_redirects.njk b/_redirects.njk
      new file mode 100644
      index 00000000..2a4deaa2
      --- /dev/null
      +++ b/_redirects.njk
      @@ -0,0 +1,22 @@
      +---
      +permalink: _redirects
      +layout: null
      +eleventyExcludeFromCollections: true
      +---
      +
      +# Themes and languages
      +/themes/:file                  https://v2.dev.prismjs.com/dist/themes/:file                   301
      +/languages/:file               https://v2.dev.prismjs.com/dist/languages/:file                301
      +
      +# Plugins
      +{% for plugin in collections.plugin -%}
      +{%- set id = plugin.data.id -%}
      +/plugins/{{ id }}.js   https://v2.dev.prismjs.com/dist/plugins/{{ id }}.js   301
      +/plugins/{{ id }}/{{ id }}.js   https://v2.dev.prismjs.com/src/plugins/{{ id }}/{{ id }}.js   301
      +{% if not meta.noCSS -%}
      +/plugins/{{ id }}.css   https://v2.dev.prismjs.com/dist/plugins/{{ id }}.css   301
      +/plugins/{{ id }}/{{ id }}.css   https://v2.dev.prismjs.com/src/plugins/{{ id }}/{{ id }}.css   301
      +{% endif -%}
      +{% endfor -%}
      +/plugins/:plugin/demo.js       https://v2.dev.prismjs.com/dist/plugins/:plugin/demo.js        301
      +/plugins/:plugin/demo.css       https://v2.dev.prismjs.com/dist/plugins/:plugin/demo.css        301
      
      From ec547f3a58f6ab5c95a15253929167d2772219bc Mon Sep 17 00:00:00 2001
      From: Dmitry Sharabin 
      Date: Sat, 25 Oct 2025 22:29:18 +0200
      Subject: [PATCH 16/16] Improve the postinstall script
      
      ---
       _build/postinstall.mjs | 8 +++-----
       1 file changed, 3 insertions(+), 5 deletions(-)
      
      diff --git a/_build/postinstall.mjs b/_build/postinstall.mjs
      index 30b4c249..b0933cd1 100644
      --- a/_build/postinstall.mjs
      +++ b/_build/postinstall.mjs
      @@ -14,8 +14,7 @@ let sourcePath, destPath;
       console.log("[postinstall] Cloning Prism...");
       // Ensure we work with a fresh copy
       await fs.rm(prismPath, { recursive: true, force: true });
      -// FIXME: Remove “--branch v2” when Prism v2 is released to fallback to the default branch
      -execSync("git clone --branch v2 https://github.com/PrismJS/prism.git prismjs", {
      +execSync("git clone https://github.com/PrismJS/prism.git prismjs", {
       	cwd: root,
       	stdio: "inherit",
       });
      @@ -56,9 +55,8 @@ async function copy () {
       				continue;
       			}
       
      -			let name = path.parse(file.name).name;
      -			// Copy only the README.md and demo.* files
      -			if (["README", "demo"].includes(name)) {
      +			let filename = path.parse(file.name).base;
      +			if (["README.md", "demo.md"].includes(filename)) {
       				await fs.copyFile(path.join(source, file.name), path.join(dest, file.name));
       			}
       		}