Commit 599e30ee6de2068fa3393bb5b7859efdbe9f34a8

Michael Schmidt 2021-10-05T21:27:25

URI: Fixed IPv4 regex (#3128)

diff --git a/components/prism-uri.js b/components/prism-uri.js
index cdbf8db..5831c7d 100644
--- a/components/prism-uri.js
+++ b/components/prism-uri.js
@@ -80,7 +80,7 @@ Prism.languages.uri = {
 							'ipv6-address': /^[\s\S]+/
 						}
 					},
-					'ipv4-address': /^(?:(?:[03-9]\d?|[12]\d{0,2})\.){3}(?:[03-9]\d?|[12]{0,2})$/
+					'ipv4-address': /^(?:(?:[03-9]\d?|[12]\d{0,2})\.){3}(?:[03-9]\d?|[12]\d{0,2})$/
 				}
 			}
 		}
diff --git a/components/prism-uri.min.js b/components/prism-uri.min.js
index aecc7c8..c6479c0 100644
--- a/components/prism-uri.min.js
+++ b/components/prism-uri.min.js
@@ -1 +1 @@
-Prism.languages.uri={scheme:{pattern:/^[a-z][a-z0-9+.-]*:/im,greedy:!0,inside:{"scheme-delimiter":/:$/}},fragment:{pattern:/#[\w\-.~!$&'()*+,;=%:@/?]*/,inside:{"fragment-delimiter":/^#/}},query:{pattern:/\?[\w\-.~!$&'()*+,;=%:@/?]*/,inside:{"query-delimiter":{pattern:/^\?/,greedy:!0},"pair-delimiter":/[&;]/,pair:{pattern:/^[^=][\s\S]*/,inside:{key:/^[^=]+/,value:{pattern:/(^=)[\s\S]+/,lookbehind:!0}}}}},authority:{pattern:RegExp("^//(?:[\\w\\-.~!$&'()*+,;=%:]*@)?(?:\\[(?:[0-9a-fA-F:.]{2,48}|v[0-9a-fA-F]+\\.[\\w\\-.~!$&'()*+,;=]+)\\]|[\\w\\-.~!$&'()*+,;=%]*)(?::\\d*)?","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]{0,2})$/}}}},path:{pattern:/^[\w\-.~!$&'()*+,;=%:@/]+/m,inside:{"path-separator":/\//}}},Prism.languages.url=Prism.languages.uri;
\ No newline at end of file
+Prism.languages.uri={scheme:{pattern:/^[a-z][a-z0-9+.-]*:/im,greedy:!0,inside:{"scheme-delimiter":/:$/}},fragment:{pattern:/#[\w\-.~!$&'()*+,;=%:@/?]*/,inside:{"fragment-delimiter":/^#/}},query:{pattern:/\?[\w\-.~!$&'()*+,;=%:@/?]*/,inside:{"query-delimiter":{pattern:/^\?/,greedy:!0},"pair-delimiter":/[&;]/,pair:{pattern:/^[^=][\s\S]*/,inside:{key:/^[^=]+/,value:{pattern:/(^=)[\s\S]+/,lookbehind:!0}}}}},authority:{pattern:RegExp("^//(?:[\\w\\-.~!$&'()*+,;=%:]*@)?(?:\\[(?:[0-9a-fA-F:.]{2,48}|v[0-9a-fA-F]+\\.[\\w\\-.~!$&'()*+,;=]+)\\]|[\\w\\-.~!$&'()*+,;=%]*)(?::\\d*)?","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;
\ No newline at end of file
diff --git a/tests/languages/uri/authority_feature.test b/tests/languages/uri/authority_feature.test
index 48679b1..0d37c29 100644
--- a/tests/languages/uri/authority_feature.test
+++ b/tests/languages/uri/authority_feature.test
@@ -1,6 +1,7 @@
 https://john.doe@www.example.com:123/forum/questions
 ftp://ftp.is.co.za/rfc/rfc1808.txt
 ldap://[2001:db8::7]/
+https://[v1.foo]/
 //192.0.2.16:80/
 //example.com/path/resource.txt
 
@@ -63,9 +64,29 @@ ldap://[2001:db8::7]/
 		["path-separator", "/"]
 	]],
 
+	["scheme", [
+		"https",
+		["scheme-delimiter", ":"]
+	]],
 	["authority", [
 		["authority-delimiter", "//"],
-		["host", ["192.0.2.16"]],
+		["host", [
+			["ip-literal", [
+				["ip-literal-delimiter", "["],
+				["ipv-future", "v1.foo"],
+				["ip-literal-delimiter", "]"]
+			]]
+		]]
+	]],
+	["path", [
+		["path-separator", "/"]
+	]],
+
+	["authority", [
+		["authority-delimiter", "//"],
+		["host", [
+			["ipv4-address", "192.0.2.16"]
+		]],
 		["port-segment", [
 			["port-delimiter", ":"],
 			["port", "80"]
@@ -85,4 +106,4 @@ ldap://[2001:db8::7]/
 		["path-separator", "/"],
 		"resource.txt"
 	]]
-]
\ No newline at end of file
+]
diff --git a/tests/languages/uri/full.test b/tests/languages/uri/full.test
index 277c039..c4877b2 100644
--- a/tests/languages/uri/full.test
+++ b/tests/languages/uri/full.test
@@ -93,7 +93,9 @@ https://example.com/path/resource.txt#fragment
 	]],
 	["authority", [
 		["authority-delimiter", "//"],
-		["host", ["192.0.2.16"]],
+		["host", [
+			["ipv4-address", "192.0.2.16"]
+		]],
 		["port-segment", [
 			["port-delimiter", ":"],
 			["port", "80"]
@@ -121,4 +123,4 @@ https://example.com/path/resource.txt#fragment
 		["fragment-delimiter", "#"],
 		"fragment"
 	]]
-]
\ No newline at end of file
+]