summaryrefslogtreecommitdiffstats
path: root/public/prism/prism-uri.js
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2021-12-30 19:47:21 +0100
committerArmand Philippot <git@armandphilippot.com>2021-12-30 19:47:21 +0100
commita98b5ea6fe8e8cc98a55e0fd793e6e8660ea31c1 (patch)
tree542810ab5aef99150db228bb54fd58303dcb31c7 /public/prism/prism-uri.js
parentab355897a12b7bda1089a44de326d41455a0f7a3 (diff)
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-uri.js')
-rw-r--r--public/prism/prism-uri.js96
1 files changed, 96 insertions, 0 deletions
diff --git a/public/prism/prism-uri.js b/public/prism/prism-uri.js
new file mode 100644
index 0000000..4d9b92f
--- /dev/null
+++ b/public/prism/prism-uri.js
@@ -0,0 +1,96 @@
+// https://tools.ietf.org/html/rfc3986#appendix-A
+
+Prism.languages.uri = {
+ scheme: {
+ pattern: /^[a-z][a-z0-9+.-]*:/im,
+ greedy: true,
+ inside: {
+ 'scheme-delimiter': /:$/,
+ },
+ },
+ fragment: {
+ pattern: /#[\w\-.~!$&'()*+,;=%:@/?]*/,
+ inside: {
+ 'fragment-delimiter': /^#/,
+ },
+ },
+ query: {
+ pattern: /\?[\w\-.~!$&'()*+,;=%:@/?]*/,
+ inside: {
+ 'query-delimiter': {
+ pattern: /^\?/,
+ greedy: true,
+ },
+ 'pair-delimiter': /[&;]/,
+ pair: {
+ pattern: /^[^=][\s\S]*/,
+ inside: {
+ key: /^[^=]+/,
+ value: {
+ pattern: /(^=)[\s\S]+/,
+ lookbehind: true,
+ },
+ },
+ },
+ },
+ },
+ authority: {
+ pattern: RegExp(
+ /^\/\//.source +
+ // [ userinfo "@" ]
+ /(?:[\w\-.~!$&'()*+,;=%:]*@)?/.source +
+ // host
+ ('(?:' +
+ // IP-literal
+ /\[(?:[0-9a-fA-F:.]{2,48}|v[0-9a-fA-F]+\.[\w\-.~!$&'()*+,;=]+)\]/
+ .source +
+ '|' +
+ // IPv4address or registered name
+ /[\w\-.~!$&'()*+,;=%]*/.source +
+ ')') +
+ // [ ":" port ]
+ /(?::\d*)?/.source,
+ 'm'
+ ),
+ inside: {
+ 'authority-delimiter': /^\/\//,
+ 'user-info-segment': {
+ pattern: /^[\w\-.~!$&'()*+,;=%:]*@/,
+ inside: {
+ 'user-info-delimiter': /@$/,
+ 'user-info': /^[\w\-.~!$&'()*+,;=%:]+/,
+ },
+ },
+ 'port-segment': {
+ pattern: /:\d*$/,
+ inside: {
+ 'port-delimiter': /^:/,
+ port: /^\d+/,
+ },
+ },
+ host: {
+ pattern: /[\s\S]+/,
+ inside: {
+ 'ip-literal': {
+ pattern: /^\[[\s\S]+\]$/,
+ inside: {
+ 'ip-literal-delimiter': /^\[|\]$/,
+ 'ipv-future': /^v[\s\S]+/,
+ 'ipv6-address': /^[\s\S]+/,
+ },
+ },
+ 'ipv4-address':
+ /^(?:(?:[03-9]\d?|[12]\d{0,2})\.){3}(?:[03-9]\d?|[12]\d{0,2})$/,
+ },
+ },
+ },
+ },
+ path: {
+ pattern: /^[\w\-.~!$&'()*+,;=%:@/]+/m,
+ inside: {
+ 'path-separator': /\//,
+ },
+ },
+};
+
+Prism.languages.url = Prism.languages.uri;