You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					20 lines
				
				669 B
			
		
		
			
		
	
	
					20 lines
				
				669 B
			| 
								 
											3 years ago
										 
									 | 
							
								import LRUCache from './LRUCache.js'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3
							 | 
						||
| 
								 | 
							
								// countries being used for the same doc with ~10 patterns for each country. Some pages will have
							 | 
						||
| 
								 | 
							
								// a lot more countries in use, but typically fewer numbers for each so expanding the cache for
							 | 
						||
| 
								 | 
							
								// that use-case won't have a lot of benefit.
							 | 
						||
| 
								 | 
							
								export default class RegExpCache {
							 | 
						||
| 
								 | 
							
									constructor(size) {
							 | 
						||
| 
								 | 
							
										this.cache = new LRUCache(size)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									getPatternForRegExp(pattern) {
							 | 
						||
| 
								 | 
							
										let regExp = this.cache.get(pattern)
							 | 
						||
| 
								 | 
							
										if (!regExp) {
							 | 
						||
| 
								 | 
							
											regExp = new RegExp('^' + pattern)
							 | 
						||
| 
								 | 
							
											this.cache.put(pattern, regExp)
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return regExp
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |