aboutsummaryrefslogtreecommitdiffstats
path: root/public/prism/prism-bqn.js
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2023-10-13 19:32:56 +0200
committerArmand Philippot <git@armandphilippot.com>2023-11-11 18:14:41 +0100
commit006b15b467a5cd835a6eab1b49023100bdc8f2e6 (patch)
tree949c7295c2e206f42357f135bab4696ddf6576ec /public/prism/prism-bqn.js
parent00f147a7a687d5772bcc538bc606cfff972178cd (diff)
refactor(components): rewrite Code component and usePrism hook
* move Prism styles to Sass placeholders to avoid repeats * let usePrism consumer define its plugins (remove default ones) * remove `plugins` prop from Code component * add new props to Code component to let consumer configure plugins (and handle plugin list from the given options) However there are some problems with Prism plugins: line-highlight and treeview does not seems to be loaded. I don't want to use Babel instead of SWC so I have no solution for now.
Diffstat (limited to 'public/prism/prism-bqn.js')
-rw-r--r--public/prism/prism-bqn.js64
1 files changed, 64 insertions, 0 deletions
diff --git a/public/prism/prism-bqn.js b/public/prism/prism-bqn.js
new file mode 100644
index 0000000..34b8f5a
--- /dev/null
+++ b/public/prism/prism-bqn.js
@@ -0,0 +1,64 @@
+Prism.languages.bqn = {
+ shebang: {
+ pattern: /^#![ \t]*\/.*/,
+ alias: 'important',
+ greedy: true,
+ },
+ comment: {
+ pattern: /#.*/,
+ greedy: true,
+ },
+ 'string-literal': {
+ pattern: /"(?:[^"]|"")*"/,
+ greedy: true,
+ alias: 'string',
+ },
+ 'character-literal': {
+ pattern: /'(?:[\s\S]|[\uD800-\uDBFF][\uDC00-\uDFFF])'/,
+ greedy: true,
+ alias: 'char',
+ },
+ function: /•[\w¯.∞π]+[\w¯.∞π]*/,
+ 'dot-notation-on-brackets': {
+ pattern: /\{(?=.*\}\.)|\}\./,
+ alias: 'namespace',
+ },
+ 'special-name': {
+ pattern: /(?:𝕨|𝕩|𝕗|𝕘|𝕤|𝕣|𝕎|𝕏|𝔽|𝔾|𝕊|_𝕣_|_𝕣)/,
+ alias: 'keyword',
+ },
+ 'dot-notation-on-name': {
+ pattern: /[A-Za-z_][\w¯∞π]*\./,
+ alias: 'namespace',
+ },
+ 'word-number-scientific': {
+ pattern: /\d+(?:\.\d+)?[eE]¯?\d+/,
+ alias: 'number',
+ },
+ 'word-name': {
+ pattern: /[A-Za-z_][\w¯∞π]*/,
+ alias: 'symbol',
+ },
+ 'word-number': {
+ pattern:
+ /[¯∞π]?(?:\d*\.?\b\d+(?:e[+¯]?\d+|E[+¯]?\d+)?|¯|∞|π)(?:j¯?(?:(?:\d+(?:\.\d+)?|\.\d+)(?:e[+¯]?\d+|E[+¯]?\d+)?|¯|∞|π))?/,
+ alias: 'number',
+ },
+ 'null-literal': {
+ pattern: /@/,
+ alias: 'char',
+ },
+ 'primitive-functions': {
+ pattern: /[-+×÷⋆√⌊⌈|¬∧∨<>≠=≤≥≡≢⊣⊢⥊∾≍⋈↑↓↕«»⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔!]/,
+ alias: 'operator',
+ },
+ 'primitive-1-operators': {
+ pattern: /[`˜˘¨⁼⌜´˝˙]/,
+ alias: 'operator',
+ },
+ 'primitive-2-operators': {
+ pattern: /[∘⊸⟜○⌾⎉⚇⍟⊘◶⎊]/,
+ alias: 'operator',
+ },
+ punctuation: /[←⇐↩(){}⟨⟩[\]‿·⋄,.;:?]/,
+};