29 lines
		
	
	
		
			406 B
		
	
	
	
		
			Go
		
	
	
		
		
			
		
	
	
			29 lines
		
	
	
		
			406 B
		
	
	
	
		
			Go
		
	
	
| 
								 | 
							
								package pathmatch
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"bytes"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func (pattern *Pattern) Glob() string {
							 | 
						||
| 
								 | 
							
									if nil == pattern {
							 | 
						||
| 
								 | 
							
										return ""
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									pattern.mutex.RLock()
							 | 
						||
| 
								 | 
							
									defer pattern.mutex.RUnlock()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//@TODO: This shouldn't be executed every time!
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var buffer bytes.Buffer
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									for _, bit := range pattern.bits {
							 | 
						||
| 
								 | 
							
										if wildcardBit == bit {
							 | 
						||
| 
								 | 
							
											buffer.WriteRune('*')
							 | 
						||
| 
								 | 
							
										} else {
							 | 
						||
| 
								 | 
							
											buffer.WriteString(bit)
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return buffer.String()
							 | 
						||
| 
								 | 
							
								}
							 |