| 
									
										
										
										
											2020-10-04 04:10:08 +03:00
										 |  |  | /********************************************************************** | 
					
						
							|  |  |  | *  | 
					
						
							|  |  |  | * | 
					
						
							|  |  |  | * | 
					
						
							| 
									
										
										
										
											2020-10-06 01:32:33 +03:00
										 |  |  | **********************************************/  /* c8 ignore next 2 */ | 
					
						
							| 
									
										
										
										
											2020-10-04 04:10:08 +03:00
										 |  |  | ((typeof define)[0]=='u'?function(f){module.exports=f(require)}:define) | 
					
						
							|  |  |  | (function(require){ var module={} // make module AMD/node compatible...
 | 
					
						
							|  |  |  | /*********************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-22 23:50:05 +03:00
										 |  |  | var object = require('ig-object') | 
					
						
							| 
									
										
										
										
											2020-10-04 04:10:08 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*********************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-22 23:50:05 +03:00
										 |  |  | var RegExpMixin = | 
					
						
							|  |  |  | module.RegExpMixin = | 
					
						
							|  |  |  | object.Mixin('RegExpMixin', 'soft', { | 
					
						
							|  |  |  | 	// Quote a string and convert to RegExp to match self literally.
 | 
					
						
							|  |  |  | 	quoteRegExp: function(str){ | 
					
						
							|  |  |  | 		return str | 
					
						
							|  |  |  | 			.replace(/([\.\\\/\(\)\[\]\$\*\+\-\{\}\@\^\&\?\<\>])/g, '\\$1') } | 
					
						
							| 
									
										
										
										
											2022-06-03 19:41:13 +03:00
										 |  |  | }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var GROUP_PATERN = | 
					
						
							|  |  |  | //module.GROUP_PATERN = /(^\(|[^\\]\()/g
 | 
					
						
							|  |  |  | module.GROUP_PATERN = new RegExp([ | 
					
						
							|  |  |  | 	'^\\(', | 
					
						
							|  |  |  | 	// non-escaped braces...
 | 
					
						
							|  |  |  | 	'[^\\\\]\\(', | 
					
						
							|  |  |  | 	// XXX ignore braces in ranges...
 | 
					
						
							|  |  |  | 	// XXX '\\[.*(.*\\]',
 | 
					
						
							|  |  |  | ].join('|')) | 
					
						
							| 
									
										
										
										
											2022-04-14 00:37:49 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-03 19:41:13 +03:00
										 |  |  | // Pattern group introspection...
 | 
					
						
							|  |  |  | var RegExpProtoMixin = | 
					
						
							|  |  |  | module.RegExpProtoMixin = | 
					
						
							|  |  |  | object.Mixin('RegExpProtoMixin', 'soft', { | 
					
						
							|  |  |  | 	// Format:
 | 
					
						
							|  |  |  | 	// 	[
 | 
					
						
							|  |  |  | 	// 		{
 | 
					
						
							|  |  |  | 	//			index: <index>,
 | 
					
						
							|  |  |  | 	//			name: <name>,
 | 
					
						
							|  |  |  | 	//			pattern: <string>,
 | 
					
						
							|  |  |  | 	//			offset: <offset>,
 | 
					
						
							|  |  |  | 	// 		},
 | 
					
						
							|  |  |  | 	// 		...
 | 
					
						
							|  |  |  | 	// 	]
 | 
					
						
							|  |  |  | 	// XXX cache this...
 | 
					
						
							|  |  |  | 	get groups(){ | 
					
						
							|  |  |  | 		this.toString() | 
					
						
							|  |  |  | 			.matchAll(GROUP_PATERN) | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	get namedGroups(){ | 
					
						
							|  |  |  | 		return this.groups | 
					
						
							|  |  |  | 			.reduce(function(res, e){ | 
					
						
							|  |  |  | 				e.name | 
					
						
							|  |  |  | 					&& (res[name] = e) | 
					
						
							|  |  |  | 				return res }, {}) }, | 
					
						
							|  |  |  | 	get groupCount(){ | 
					
						
							|  |  |  | 		return this.groups.length }, | 
					
						
							| 
									
										
										
										
											2020-11-22 23:50:05 +03:00
										 |  |  | }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | RegExpMixin(RegExp) | 
					
						
							| 
									
										
										
										
											2022-06-03 19:41:13 +03:00
										 |  |  | // XXX EXPEREMENTAL...
 | 
					
						
							|  |  |  | //RegExpProtoMixin(RegExp.prototype)
 | 
					
						
							| 
									
										
										
										
											2020-11-22 23:50:05 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-04 04:40:16 +03:00
										 |  |  | var quoteRegExp = | 
					
						
							| 
									
										
										
										
											2020-11-22 23:50:05 +03:00
										 |  |  | RegExp.quoteRegExp =  | 
					
						
							|  |  |  | 	RegExp.quoteRegExp | 
					
						
							| 
									
										
										
										
											2020-10-04 04:10:08 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /********************************************************************** | 
					
						
							|  |  |  | * vim:set ts=4 sw=4 :                               */ return module }) |