ProcessorConfig.java 2.52 KB
/*
 * Decompiled with CFR 0_118.
 */
package com.adobe.granite.ui.clientlibs.impl;

import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

public class ProcessorConfig {
    private final String mode;
    private final String processorName;
    private final Map<String, String> options;

    private ProcessorConfig(String mode, String processorName, Map<String, String> options) {
        this.mode = mode;
        this.processorName = processorName;
        this.options = options;
    }

    public static List<ProcessorConfig> parse(List<String> configs) {
        return ProcessorConfig.parse(configs, Collections.<ProcessorConfig>emptyList());
    }

    public static List<ProcessorConfig> parse(String[] configs) {
        return ProcessorConfig.parse(configs == null ? null : Arrays.asList(configs), Collections.<ProcessorConfig>emptyList());
    }

    public static List<ProcessorConfig> parse(String[] configs, List<ProcessorConfig> defaultConfig) {
        return ProcessorConfig.parse(configs == null ? null : Arrays.asList(configs), defaultConfig);
    }

    public static List<ProcessorConfig> parse(List<String> configs, List<ProcessorConfig> defaultConfig) {
        if (configs == null) {
            return defaultConfig;
        }
        LinkedList<ProcessorConfig> ret = new LinkedList<ProcessorConfig>();
        for (String config : configs) {
            int idx;
            if ((config = config.trim()).length() <= 0 || (idx = config.indexOf(58)) <= 0) continue;
            String mode = config.substring(0, idx);
            String processorConfig = config.substring(idx + 1);
            String name = null;
            HashMap<String, String> options = new HashMap<String, String>();
            for (String part : processorConfig.split(";")) {
                if (name == null) {
                    name = part;
                    continue;
                }
                idx = part.indexOf(61);
                if (idx > 0) {
                    options.put(part.substring(0, idx), part.substring(idx + 1));
                    continue;
                }
                options.put(part, "true");
            }
            ret.add(new ProcessorConfig(mode, name, options));
        }
        return ret;
    }

    public String getMode() {
        return this.mode;
    }

    public String getProcessorName() {
        return this.processorName;
    }

    public Map<String, String> getOptions() {
        return this.options;
    }
}