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.
        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.

        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