src/main/java/de/unixwork/uwproj/Option.java

Tue, 30 Jan 2024 21:32:11 +0100

author
Mike Becker <universe@uap-core.de>
date
Tue, 30 Jan 2024 21:32:11 +0100
changeset 114
0fa5a6f08245
parent 113
24f32dbd88cd
permissions
-rw-r--r--

remove unnecessary double-quotes in vars.mk - fixes #370

package de.unixwork.uwproj;

import org.w3c.dom.Element;

import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;

import static de.unixwork.uwproj.Util.shId;

public final class Option {
    private final String arg;

    private final LinkedList<OptionValue> values = new LinkedList<>();
    private final LinkedList<OptionDefault> defaults = new LinkedList<>();

    public Option(Element element) {
        arg = element.getAttribute("arg");
        Util.getChildElements(element).forEach(elm -> {
            switch (elm.getNodeName()) {
                case "value" -> values.add(new OptionValue(this,
                        elm.getAttribute("str"),
                        new TargetData(elm)));
                case "default" -> defaults.add(new OptionDefault(this,
                        elm.getAttribute("value"),
                        elm.getAttribute("platform")));
            }
        });
    }

    public String getArgument() {
        return arg;
    }

    public String getVarName() {
        return shId("OPT_" + arg.toUpperCase());
    }

    public String getArgValue() {
        return "${ARG:" + (3 + arg.length()) + "}";
    }

    public List<OptionValue> getValues() {
        return values;
    }

    public List<OptionDefault> getDefaults() {
        return defaults;
    }

    public String getValueFunc(String value) {
        return shId("checkopt_" + arg + "_" + value);
    }

    public String getValuesString() {
        if (values.size() == 1) {
            return values.get(0).getValue();
        } else {
            return "(" + values.stream().map(OptionValue::getValue).collect(Collectors.joining("|")) + ")";
        }
    }
}

mercurial