whole_func_string: 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
      });
  }
func_code_string: 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
      });
  }
func_documentation_string: Process a tag attribute