Class JavascriptCompiler


  • public final class JavascriptCompiler
    extends Object
    An expression compiler for javascript expressions.

    Example:

       Expression foo = JavascriptCompiler.compile("((0.3*popularity)/10.0)+(0.7*score)");
     

    See the package documentation for the supported syntax and default functions.

    You can compile with an alternate set of functions via compile(String, Map, ClassLoader). For example:

       Map<String,Method> functions = new HashMap<>();
       // add all the default functions
       functions.putAll(JavascriptCompiler.DEFAULT_FUNCTIONS);
       // add cbrt()
       functions.put("cbrt", Math.class.getMethod("cbrt", double.class));
       // call compile with customized function map
       Expression foo = JavascriptCompiler.compile("cbrt(score)+ln(popularity)",
                                                   functions,
                                                   getClass().getClassLoader());
     
    WARNING: This API is experimental and might change in incompatible ways in the next release.
    • Field Detail

    • Method Detail

      • compile

        public static Expression compile​(String sourceText)
                                  throws ParseException
        Compiles the given expression using default compiler settings.
        Parameters:
        sourceText - The expression to compile
        Returns:
        A new compiled expression
        Throws:
        ParseException - on failure to compile
      • compile

        public static Expression compile​(String sourceText,
                                         Map<String,​Method> functions,
                                         ClassLoader parent)
                                  throws ParseException
        Compiles the given expression with the supplied custom functions using default compiler settings.

        Functions must be public static, return double and can take from zero to 256 double parameters.

        Parameters:
        sourceText - The expression to compile
        functions - map of String names to functions
        parent - a ClassLoader that should be used as the parent of the loaded class. It must contain all classes referred to by the given functions.
        Returns:
        A new compiled expression
        Throws:
        ParseException - on failure to compile