Documented expr.* packages.
Converted some tabs into spaces. git-svn-id: http://google-refine.googlecode.com/svn/trunk@332 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
parent
60f60507f7
commit
60dd7eab82
@ -8,6 +8,12 @@ import org.json.JSONWriter;
|
|||||||
|
|
||||||
import com.metaweb.gridworks.Jsonizable;
|
import com.metaweb.gridworks.Jsonizable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An error that occurs during the evaluation of an Evaluable. Errors are values, too
|
||||||
|
* because they can be stored in cells just like strings, numbers, etc. Errors are not
|
||||||
|
* thrown because an error might occupy just one element in an array and doesn't need
|
||||||
|
* to make the whole array erroneous.
|
||||||
|
*/
|
||||||
public class EvalError implements Serializable, Jsonizable {
|
public class EvalError implements Serializable, Jsonizable {
|
||||||
private static final long serialVersionUID = -102681220092874080L;
|
private static final long serialVersionUID = -102681220092874080L;
|
||||||
|
|
||||||
|
@ -2,6 +2,15 @@ package com.metaweb.gridworks.expr;
|
|||||||
|
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface for evaluable expressions in any arbitrary language.
|
||||||
|
*/
|
||||||
public interface Evaluable {
|
public interface Evaluable {
|
||||||
|
/**
|
||||||
|
* Evaluate this expression in the given environment (bindings).
|
||||||
|
*
|
||||||
|
* @param bindings
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public Object evaluate(Properties bindings);
|
public Object evaluate(Properties bindings);
|
||||||
}
|
}
|
||||||
|
@ -65,9 +65,11 @@ public class ExpressionUtils {
|
|||||||
|
|
||||||
static public boolean sameValue(Object v1, Object v2) {
|
static public boolean sameValue(Object v1, Object v2) {
|
||||||
if (v1 == null) {
|
if (v1 == null) {
|
||||||
return (v2 == null) || (v2 instanceof String && ((String) v2).length() == 0);
|
return (v2 == null)
|
||||||
|
|| (v2 instanceof String && ((String) v2).length() == 0);
|
||||||
} else if (v2 == null) {
|
} else if (v2 == null) {
|
||||||
return (v1 == null) || (v1 instanceof String && ((String) v1).length() == 0);
|
return (v1 == null)
|
||||||
|
|| (v1 instanceof String && ((String) v1).length() == 0);
|
||||||
} else {
|
} else {
|
||||||
return v1.equals(v2);
|
return v1.equals(v2);
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,10 @@ package com.metaweb.gridworks.expr;
|
|||||||
|
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface for objects that have named fields, which can be retrieved using the
|
||||||
|
* dot notation or the bracket notation, e.g., cells.Country, cells["Type of Disaster"].
|
||||||
|
*/
|
||||||
public interface HasFields {
|
public interface HasFields {
|
||||||
public Object getField(String name, Properties bindings);
|
public Object getField(String name, Properties bindings);
|
||||||
}
|
}
|
||||||
|
@ -5,11 +5,11 @@ import java.util.Properties;
|
|||||||
import org.python.core.PyObject;
|
import org.python.core.PyObject;
|
||||||
import org.python.core.PyString;
|
import org.python.core.PyString;
|
||||||
|
|
||||||
|
|
||||||
public class JythonHasFieldsWrapper extends PyObject {
|
public class JythonHasFieldsWrapper extends PyObject {
|
||||||
private static final long serialVersionUID = -1275353513262385099L;
|
private static final long serialVersionUID = -1275353513262385099L;
|
||||||
|
|
||||||
public HasFields _obj;
|
public HasFields _obj;
|
||||||
|
|
||||||
private Properties _bindings;
|
private Properties _bindings;
|
||||||
|
|
||||||
public JythonHasFieldsWrapper(HasFields obj, Properties bindings) {
|
public JythonHasFieldsWrapper(HasFields obj, Properties bindings) {
|
||||||
|
@ -8,6 +8,15 @@ import clojure.lang.IFn;
|
|||||||
import com.metaweb.gridworks.gel.Parser;
|
import com.metaweb.gridworks.gel.Parser;
|
||||||
|
|
||||||
abstract public class MetaParser {
|
abstract public class MetaParser {
|
||||||
|
/**
|
||||||
|
* Parse an expression that might have a language prefix into an Evaluable.
|
||||||
|
* Expressions without valid prefixes or without any prefix are assumed to be
|
||||||
|
* GEL expressions.
|
||||||
|
*
|
||||||
|
* @param s
|
||||||
|
* @return
|
||||||
|
* @throws ParsingException
|
||||||
|
*/
|
||||||
static public Evaluable parse(String s) throws ParsingException {
|
static public Evaluable parse(String s) throws ParsingException {
|
||||||
String language = "gel";
|
String language = "gel";
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.metaweb.gridworks.expr.functions;
|
package com.metaweb.gridworks.expr.functions;
|
||||||
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
@ -20,18 +21,21 @@ public class Type implements Function {
|
|||||||
if (v != null) {
|
if (v != null) {
|
||||||
if (v instanceof String) {
|
if (v instanceof String) {
|
||||||
return "string";
|
return "string";
|
||||||
} else if (v instanceof Calendar) {
|
} else if (v instanceof Calendar || v instanceof Date) {
|
||||||
return "date";
|
return "date";
|
||||||
} else if (v instanceof Number) {
|
} else if (v instanceof Number) {
|
||||||
return "number";
|
return "number";
|
||||||
} else if (v.getClass().isArray() || v instanceof List<?>) {
|
} else if (v.getClass().isArray() || v instanceof List<?>) {
|
||||||
return "array";
|
return "array";
|
||||||
|
} else if (v instanceof EvalError) {
|
||||||
|
return "error";
|
||||||
} else {
|
} else {
|
||||||
return v.getClass().getName();
|
return v.getClass().getName();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return "undefined";
|
||||||
}
|
}
|
||||||
return new EvalError(ControlFunctionRegistry.getFunctionName(this) + " expects a parameter");
|
return new EvalError(ControlFunctionRegistry.getFunctionName(this) + " expects one argument");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void write(JSONWriter writer, Properties options)
|
public void write(JSONWriter writer, Properties options)
|
||||||
|
Loading…
Reference in New Issue
Block a user