blob: ab4f24e994d343764ba022ee86d5dbc5ac64f1ae [file] [log] [blame]
/*
* Copyright (c) 2002-2020, the original author or authors.
*
* This software is distributable under the BSD license. See the terms of the
* BSD license in the documentation provided with this software.
*
* https://opensource.org/licenses/BSD-3-Clause
*/
package jdk.internal.org.jline.reader;
import java.io.File;
import java.nio.file.Path;
import java.util.*;
/**
* Manage scriptEngine variables, statements and script execution.
*
* @author <a href="mailto:matti.rintanikkola@gmail.com">Matti Rinta-Nikkola</a>
*/
public interface ScriptEngine {
/**
*
* @return scriptEngine name
*/
String getEngineName();
/**
*
* @return script file name extensions
*/
Collection<String> getExtensions();
/**
* Tests if console variable exists
* @param name
* @return true if variable exists
*/
boolean hasVariable(String name);
/**
* Creates variable
* @param name of the variable
* @param value of the variable
*/
void put(String name, Object value);
/**
* Gets variable value
* @param name of the variable
* @return value of the variable
*/
Object get(String name);
/**
* Gets all variables with values
* @return map of the variables
*/
default Map<String,Object> find() {
return find(null);
}
/**
* Gets all the variables that match the name. Name can contain * wild cards.
* @param name of the variable
* @return map of the variables
*/
Map<String,Object> find(String name);
/**
* Deletes variables. Variable name cab contain * wild cards.
* @param vars
*/
void del(String... vars);
/**
* Converts object to JSON string.
* @param object object to convert to JSON
* @return formatted JSON string
*/
String toJson(Object object);
/**
* Converts object to string.
* @param object object to convert to string
* @return object string value
*/
String toString(Object object);
/**
* Substitute variable reference with its value.
* @param variable
* @return Substituted variable
* @throws Exception
*/
default Object expandParameter(String variable) {
return expandParameter(variable, "");
}
/**
* Substitute variable reference with its value.
* @param variable
* @param format serialization format
* @return Substituted variable
* @throws Exception
*/
Object expandParameter(String variable, String format);
/**
* Persists object value to file.
* @param file
* @param object
*/
default void persist(Path file, Object object) {
persist(file, object, "JSON");
}
/**
* Persists object value to file.
* @param file
* @param object
* @param format
*/
void persist(Path file, Object object, String format);
/**
* Executes scriptEngine statement
* @param statement
* @return result
* @throws Exception
*/
Object execute(String statement) throws Exception;
/**
* Executes scriptEngine script
* @param script
* @return result
* @throws Exception
*/
default Object execute(File script) throws Exception {
return execute(script, null);
}
/**
* Executes scriptEngine script
* @param script
* @param args
* @return
* @throws Exception
*/
Object execute(File script, Object[] args) throws Exception;
}