UNPKG

1.86 kBJavaScriptView Raw
1// https://tools.ietf.org/html/rfc3986#appendix-A
2
3Prism.languages.uri = {
4 'scheme': {
5 pattern: /^[a-z][a-z0-9+.-]*:/im,
6 greedy: true,
7 inside: {
8 'scheme-delimiter': /:$/
9 }
10 },
11 'fragment': {
12 pattern: /#[\w\-.~!$&'()*+,;=%:@/?]*/,
13 inside: {
14 'fragment-delimiter': /^#/
15 }
16 },
17 'query': {
18 pattern: /\?[\w\-.~!$&'()*+,;=%:@/?]*/,
19 inside: {
20 'query-delimiter': {
21 pattern: /^\?/,
22 greedy: true
23 },
24 'pair-delimiter': /[&;]/,
25 'pair': {
26 pattern: /^[^=][\s\S]*/,
27 inside: {
28 'key': /^[^=]+/,
29 'value': {
30 pattern: /(^=)[\s\S]+/,
31 lookbehind: true
32 }
33 }
34 }
35 }
36 },
37 'authority': {
38 pattern: RegExp(
39 /^\/\//.source
40 // [ userinfo "@" ]
41 + /(?:[\w\-.~!$&'()*+,;=%:]*@)?/.source
42 // host
43 + (
44 '(?:'
45 // IP-literal
46 + /\[(?:[0-9a-fA-F:.]{2,48}|v[0-9a-fA-F]+\.[\w\-.~!$&'()*+,;=]+)\]/.source
47 + '|'
48 // IPv4address or registered name
49 + /[\w\-.~!$&'()*+,;=%]*/.source
50 + ')'
51 )
52 // [ ":" port ]
53 + /(?::\d*)?/.source,
54 'm'
55 ),
56 inside: {
57 'authority-delimiter': /^\/\//,
58 'user-info-segment': {
59 pattern: /^[\w\-.~!$&'()*+,;=%:]*@/,
60 inside: {
61 'user-info-delimiter': /@$/,
62 'user-info': /^[\w\-.~!$&'()*+,;=%:]+/
63 }
64 },
65 'port-segment': {
66 pattern: /:\d*$/,
67 inside: {
68 'port-delimiter': /^:/,
69 'port': /^\d+/
70 }
71 },
72 'host': {
73 pattern: /[\s\S]+/,
74 inside: {
75 'ip-literal': {
76 pattern: /^\[[\s\S]+\]$/,
77 inside: {
78 'ip-literal-delimiter': /^\[|\]$/,
79 'ipv-future': /^v[\s\S]+/,
80 'ipv6-address': /^[\s\S]+/
81 }
82 },
83 'ipv4-address': /^(?:(?:[03-9]\d?|[12]\d{0,2})\.){3}(?:[03-9]\d?|[12]\d{0,2})$/
84 }
85 }
86 }
87 },
88 'path': {
89 pattern: /^[\w\-.~!$&'()*+,;=%:@/]+/m,
90 inside: {
91 'path-separator': /\//
92 }
93 }
94};
95
96Prism.languages.url = Prism.languages.uri;