You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
"use strict";
 | 
						|
Object.defineProperty(exports, "__esModule", { value: true });
 | 
						|
const utils = require("../../utils");
 | 
						|
class Matcher {
 | 
						|
    constructor(_patterns, _settings, _micromatchOptions) {
 | 
						|
        this._patterns = _patterns;
 | 
						|
        this._settings = _settings;
 | 
						|
        this._micromatchOptions = _micromatchOptions;
 | 
						|
        this._storage = [];
 | 
						|
        this._fillStorage();
 | 
						|
    }
 | 
						|
    _fillStorage() {
 | 
						|
        for (const pattern of this._patterns) {
 | 
						|
            const segments = this._getPatternSegments(pattern);
 | 
						|
            const sections = this._splitSegmentsIntoSections(segments);
 | 
						|
            this._storage.push({
 | 
						|
                complete: sections.length <= 1,
 | 
						|
                pattern,
 | 
						|
                segments,
 | 
						|
                sections
 | 
						|
            });
 | 
						|
        }
 | 
						|
    }
 | 
						|
    _getPatternSegments(pattern) {
 | 
						|
        const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions);
 | 
						|
        return parts.map((part) => {
 | 
						|
            const dynamic = utils.pattern.isDynamicPattern(part, this._settings);
 | 
						|
            if (!dynamic) {
 | 
						|
                return {
 | 
						|
                    dynamic: false,
 | 
						|
                    pattern: part
 | 
						|
                };
 | 
						|
            }
 | 
						|
            return {
 | 
						|
                dynamic: true,
 | 
						|
                pattern: part,
 | 
						|
                patternRe: utils.pattern.makeRe(part, this._micromatchOptions)
 | 
						|
            };
 | 
						|
        });
 | 
						|
    }
 | 
						|
    _splitSegmentsIntoSections(segments) {
 | 
						|
        return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern));
 | 
						|
    }
 | 
						|
}
 | 
						|
exports.default = Matcher;
 |