Class Literal

  • All Implemented Interfaces:
    FromSourceLocation, ToNode, TypeCheck

    public final class Literal
    extends Expression
    Literals allow rules and properties to define arbitrarily nested JSON structures (e.g.for properties)

    They support template strings, but _do not_ support template objects since that creates ambiguity. Templates are a basic example of literals–literal strings. Literals can also be booleans, objects, integers or tuples.

    • Method Detail

      • tuple

        public static Literal tuple​(java.util.List<Literal> values)
        Constructs a tuple literal of values.
        Parameters:
        values - the values.
        Returns:
        the tuple literal.
      • record

        public static Literal record​(java.util.Map<Identifier,​Literal> record)
        Constructs a record literal of values.
        Parameters:
        record - a map of values to be converted to a record.
        Returns:
        the record literal.
      • string

        public static Literal string​(Template value)
        Constructs a string literal from a Template value.
        Parameters:
        value - the template value.
        Returns:
        the string literal.
      • integer

        public static Literal integer​(int value)
        Constructs an integer literal from an integer value.
        Parameters:
        value - the integer value.
        Returns:
        the integer literal.
      • bool

        public static Literal bool​(boolean value)
        Constructs a bool literal from a boolean value.
        Parameters:
        value - the boolean value.
        Returns:
        the bool literal.
      • fromNode

        public static Literal fromNode​(Node node)
        Constructs a literal from a Node based on the Node's type.
        Parameters:
        node - a node to construct as a literal.
        Returns:
        the literal representation of the node.
      • expectLiteralString

        public java.lang.String expectLiteralString()
        Attempts to convert the literal to a String. Otherwise throws an exception.
        Returns:
        the literal as a string.
      • asBool

        public java.util.Optional<java.lang.Boolean> asBool()
        Attempts to convert the literal to a Boolean if possible. Otherwise, returns an empty optional.
        Returns:
        an optional boolean.
      • asString

        public java.util.Optional<Template> asString()
        Attempts to convert the literal to a Template if possible. Otherwise, returns an empty optional.
        Returns:
        an optional boolean.
      • asRecord

        public java.util.Optional<java.util.Map<Identifier,​Literal>> asRecord()
        Attempts to convert the literal to a map of Identifier to Literal. Otherwise, returns an empty optional.
        Returns:
        an optional map.
      • asTuple

        public java.util.Optional<java.util.List<Literal>> asTuple()
        Attempts to convert the literal to a list of Literal values. Otherwise, returns an empty optional.
        Returns:
        the optional list.
      • asInteger

        public java.util.Optional<java.lang.Integer> asInteger()
        Attempts to convert the literal to an Literal.Integer. Otherwise, returns an empty optional.
        Returns:
        the optional integer.
      • accept

        public <T> T accept​(Literal.Vistor<T> visitor)
        Invokes the provided Literal.Vistor.
        Type Parameters:
        T - the visitor return type.
        Parameters:
        visitor - the visitor.
        Returns:
        the return value of the vistor.
      • toString

        public java.lang.String toString()
        Returns the string representation of the literal.
        Overrides:
        toString in class java.lang.Object
        Returns:
        the string representation.
      • accept

        public <R> R accept​(ExpressionVisitor<R> visitor)
        Description copied from class: Expression
        Invoke the ExpressionVisitor functions for this expression.
        Specified by:
        accept in class Expression
        Type Parameters:
        R - the visitor return type.
        Parameters:
        visitor - the visitor to be invoked.
        Returns:
        the return value of the visitor.
      • equals

        public boolean equals​(java.lang.Object o)
        Specified by:
        equals in class Expression
      • evaluate

        public Value evaluate​(RuleEvaluator evaluator)
        Parameters:
        evaluator - the rule-set evaluator.
        Returns:
        the resulting value.
      • toNode

        public Node toNode()
        Description copied from interface: ToNode
        Converts a value to a Node.
        Returns:
        Returns the creates Node.