/// <summary>
    /// Parse assetPath and replace all elements that match this.path regex
    /// with the addressReplacement string.
    /// Returns assetPath if this.path or addressReplacement is empty.
    /// </summary>
    public string ParseAddressReplacement(string assetPath)
    {
        if (string.IsNullOrWhiteSpace(path))
        {
            return(assetPath);
        }
        if (!simplified && string.IsNullOrWhiteSpace(addressReplacement))
        {
            return(assetPath);
        }
        // Parse path elements.
        if (addressReplacement == null)
        {
            addressReplacement = "";
        }
        var replacement = AddressableImportRegex.ParsePath(assetPath, addressReplacement);
        // Parse this.path regex.
        // If Simplified is ticked, it's a pattern that matches any path, capturing the path, filename and extension.
        // If the match type is Wildcard, the pattern will match and capture the entire path string.
        string pathRegex =
            simplified
            ? @"(?<path>.*[/\\])+(?<filename>.+?)(?<extension>\.[^.]*$|$)"
            : (matchType == AddressableImportRuleMatchType.Wildcard
                ? @"(.*)"
                : path);

        replacement =
            simplified
            ? @"${filename}"
            : (matchType == AddressableImportRuleMatchType.Wildcard
                ? @"$1"
                : replacement);
        replacement = Regex.Replace(assetPath, pathRegex, replacement);
        return(replacement);
    }
    /// <summary>
    /// Parse assetPath and replace all elements that match this.path regex
    /// with the groupName string.
    /// Returns null if this.path or groupName is empty.
    /// </summary>
    public string ParseGroupReplacement(string assetPath)
    {
        if (string.IsNullOrWhiteSpace(path) || string.IsNullOrWhiteSpace(groupName))
        {
            return(null);
        }
        // Parse path elements.
        var replacement = AddressableImportRegex.ParsePath(assetPath, groupName);

        // Parse this.path regex.
        if (matchType == AddressableImportRuleMatchType.Regex)
        {
            string pathRegex = path;
            replacement = Regex.Replace(assetPath, pathRegex, replacement);
        }
        return(replacement);
    }
Ejemplo n.º 3
0
    /// <summary>
    /// Parse assetPath and replace all elements that match this.path regex
    /// with the <paramref name="name"/>
    /// Returns null if this.path or  <paramref name="name"/> is empty.
    /// </summary>
    /// <param name="assetPath"></param>
    /// <param name="name"></param>
    /// <returns></returns>
    public string ParseReplacement(string assetPath, string name)
    {
        if (string.IsNullOrWhiteSpace(path) || string.IsNullOrWhiteSpace(name))
        {
            return(null);
        }

        var cleanedName = name.Trim().Replace('/', '-').Replace('\\', '-');

        // Parse path elements.
        var replacement = AddressableImportRegex.ParsePath(assetPath, cleanedName);

        // Parse this.path regex.
        if (matchType == AddressableImportRuleMatchType.Regex)
        {
            string pathRegex = path;
            replacement = Regex.Replace(assetPath, pathRegex, replacement);
        }
        return(replacement);
    }