All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.nowina.cadmelia.script.Literal Maven / Gradle / Ivy

The newest version!
package net.nowina.cadmelia.script;

import net.nowina.cadmelia.construction.Vector;

import java.util.Arrays;
import java.util.List;

public class Literal {

    private Object value;

    public Literal(Object value) {
        if(value == null) {
            throw new NullPointerException("Value must be defined");
        }
        if(value instanceof Literal) {
            this.value = ((Literal)value).getValue();
        } else {
            this.value = value;
        }
    }

    @Override
    public String toString() {
        return value.toString();
    }

    public Double asDouble() {
        if(isInteger()) {
            return new Double((Integer) value);
        }
        return (Double) value;
    }

    public boolean isDouble() {
        return value instanceof Double;
    }

    public List asList() {
        if(value instanceof Vector) {
            Vector v = (Vector) value;
            return Arrays.asList(v.x(), v.y(), v.z());
        } else {
            return (List) value;
        }
    }

    public boolean isList() {
        return value instanceof List;
    }

    public Integer asInteger() {
        if(isDouble()) {
            return ((Double) value).intValue();
        }
        return (Integer) value;
    }

    public boolean isInteger() {
        return value instanceof Integer;
    }

    public Boolean asBoolean() {
        return (Boolean) value;
    }

    public boolean isBoolean() {
        return value instanceof Boolean;
    }

    public String asString() {
        return (String) value;
    }

    public boolean isString() {
        return value instanceof String;
    }

    public Vector asVector() {
        if(asList().size() == 3) {
            return new Vector((Double) asList().get(0), (Double) asList().get(1), (Double) asList().get(2));
        }

        if(asList().size() == 2) {
            return new Vector((Double)asList().get(0), (Double)asList().get(1));
        }

        throw new IllegalArgumentException("Cannot convert list of " + asList().size() + " elements in a Vector");
    }

    public boolean isVector() {
        return isList() && (asList().size() ==2 || asList().size() ==3);
    }

    public Object getValue() {
        return value;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy