source: node_modules/refractor/lang/uri.js

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 2.4 KB
Line 
1'use strict'
2
3module.exports = uri
4uri.displayName = 'uri'
5uri.aliases = ['url']
6function uri(Prism) {
7 // https://tools.ietf.org/html/rfc3986#appendix-A
8 Prism.languages.uri = {
9 scheme: {
10 pattern: /^[a-z][a-z0-9+.-]*:/im,
11 greedy: true,
12 inside: {
13 'scheme-delimiter': /:$/
14 }
15 },
16 fragment: {
17 pattern: /#[\w\-.~!$&'()*+,;=%:@/?]*/,
18 inside: {
19 'fragment-delimiter': /^#/
20 }
21 },
22 query: {
23 pattern: /\?[\w\-.~!$&'()*+,;=%:@/?]*/,
24 inside: {
25 'query-delimiter': {
26 pattern: /^\?/,
27 greedy: true
28 },
29 'pair-delimiter': /[&;]/,
30 pair: {
31 pattern: /^[^=][\s\S]*/,
32 inside: {
33 key: /^[^=]+/,
34 value: {
35 pattern: /(^=)[\s\S]+/,
36 lookbehind: true
37 }
38 }
39 }
40 }
41 },
42 authority: {
43 pattern: RegExp(
44 /^\/\//.source + // [ userinfo "@" ]
45 /(?:[\w\-.~!$&'()*+,;=%:]*@)?/.source + // host
46 ('(?:' + // IP-literal
47 /\[(?:[0-9a-fA-F:.]{2,48}|v[0-9a-fA-F]+\.[\w\-.~!$&'()*+,;=]+)\]/
48 .source +
49 '|' + // IPv4address or registered name
50 /[\w\-.~!$&'()*+,;=%]*/.source +
51 ')') + // [ ":" port ]
52 /(?::\d*)?/.source,
53 'm'
54 ),
55 inside: {
56 'authority-delimiter': /^\/\//,
57 'user-info-segment': {
58 pattern: /^[\w\-.~!$&'()*+,;=%:]*@/,
59 inside: {
60 'user-info-delimiter': /@$/,
61 'user-info': /^[\w\-.~!$&'()*+,;=%:]+/
62 }
63 },
64 'port-segment': {
65 pattern: /:\d*$/,
66 inside: {
67 'port-delimiter': /^:/,
68 port: /^\d+/
69 }
70 },
71 host: {
72 pattern: /[\s\S]+/,
73 inside: {
74 'ip-literal': {
75 pattern: /^\[[\s\S]+\]$/,
76 inside: {
77 'ip-literal-delimiter': /^\[|\]$/,
78 'ipv-future': /^v[\s\S]+/,
79 'ipv6-address': /^[\s\S]+/
80 }
81 },
82 'ipv4-address':
83 /^(?:(?:[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 Prism.languages.url = Prism.languages.uri
96}
Note: See TracBrowser for help on using the repository browser.