lib/attributeParser.js
function (match, strUntilValue, name, value, index) {
    var self = this;
    var expression = value;
    
    if (!this.isRelevantTagAttr(this.currentTag, name)) {
        return;
    }

    // Try and set "root" directory when a dynamic attribute is found
    if (isTemplate(value)) {
        if (pathIsAbsolute(value) && self.root !== undefined && self.parseDynamicRoutes) {
            // Generate new value for replacement
            expression = loaderUtils.urlToRequest(value, self.root);
        }
    }
    
    this.matches.push({
        start: index + strUntilValue.length,
        length: value.length,
        value: value,
        expression: expression
    });
}
function (match, strUntilValue, name, value, index) {
    var self = this;
    var expression = value;
    
    if (!this.isRelevantTagAttr(this.currentTag, name)) {
        return;
    }

    // Try and set "root" directory when a dynamic attribute is found
    if (isTemplate(value)) {
        if (pathIsAbsolute(value) && self.root !== undefined && self.parseDynamicRoutes) {
            // Generate new value for replacement
            expression = loaderUtils.urlToRequest(value, self.root);
        }
    }
    
    this.matches.push({
        start: index + strUntilValue.length,
        length: value.length,
        value: value,
        expression: expression
    });
}
Process a tag attribute