diff options
Diffstat (limited to 'public/prism/prism-uri.js')
| -rw-r--r-- | public/prism/prism-uri.js | 96 |
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; |
