1 |
|
2 |
|
3 | Prism.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 | /^\/\
|
40 |
|
41 | + /(?:[\w\-.~!$&'()*+,;=%:]*@)?/.source
|
42 |
|
43 | + (
|
44 | '(?:'
|
45 |
|
46 | + /\[(?:[0-9a-fA-F:.]{2,48}|v[0-9a-fA-F]+\.[\w\-.~!$&'()*+,;=]+)\]/.source
|
47 | + '|'
|
48 |
|
49 | + /[\w\-.~!$&'()*+,;=%]*/.source
|
50 | + ')'
|
51 | )
|
52 |
|
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 |
|
96 | Prism.languages.url = Prism.languages.uri;
|