From 0709ec3f921bcd04f040c68c38119d40bac1a850 Mon Sep 17 00:00:00 2001 From: David Huynh Date: Thu, 20 May 2010 17:49:20 +0000 Subject: [PATCH] Fixed issue 46: Array literals in GEL git-svn-id: http://google-refine.googlecode.com/svn/trunk@833 7d457c2a-affb-35e4-300a-418c747d4874 --- CHANGES.txt | 1 + .../expr/functions/arrays/ArgsToArray.java | 25 +++++++++++++++++++ .../com/metaweb/gridworks/gel/Parser.java | 7 ++++++ 3 files changed, 33 insertions(+) create mode 100644 src/main/java/com/metaweb/gridworks/expr/functions/arrays/ArgsToArray.java diff --git a/CHANGES.txt b/CHANGES.txt index c9a83c513..cb1dcfc54 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -12,6 +12,7 @@ Fixes: - Issue 28: "mql-like preview is not properly unquoting numbers" - Issue 45: "Renaming Cells with Ctrl-Enter produced ERROR" Tentative fix for a concurrent bug. +- Issue 46: "Array literals in GEL" Changes: - Moved unit tests from JUnit to TestNG diff --git a/src/main/java/com/metaweb/gridworks/expr/functions/arrays/ArgsToArray.java b/src/main/java/com/metaweb/gridworks/expr/functions/arrays/ArgsToArray.java new file mode 100644 index 000000000..f0a9153ab --- /dev/null +++ b/src/main/java/com/metaweb/gridworks/expr/functions/arrays/ArgsToArray.java @@ -0,0 +1,25 @@ +package com.metaweb.gridworks.expr.functions.arrays; + +import java.util.Properties; + +import org.json.JSONException; +import org.json.JSONWriter; + +import com.metaweb.gridworks.gel.Function; + +public class ArgsToArray implements Function { + + public Object call(Properties bindings, Object[] args) { + return args; + } + + public void write(JSONWriter writer, Properties options) + throws JSONException { + + writer.object(); + writer.key("description"); writer.value("Returns all arguments passed to it as an array"); + writer.key("params"); writer.value("a1, a2, ..."); + writer.key("returns"); writer.value("array"); + writer.endObject(); + } +} diff --git a/src/main/java/com/metaweb/gridworks/gel/Parser.java b/src/main/java/com/metaweb/gridworks/gel/Parser.java index 30d5eb0b0..d4a8bcf91 100644 --- a/src/main/java/com/metaweb/gridworks/gel/Parser.java +++ b/src/main/java/com/metaweb/gridworks/gel/Parser.java @@ -6,6 +6,7 @@ import java.util.regex.Pattern; import com.metaweb.gridworks.expr.Evaluable; import com.metaweb.gridworks.expr.ParsingException; +import com.metaweb.gridworks.expr.functions.arrays.ArgsToArray; import com.metaweb.gridworks.gel.Scanner.NumberToken; import com.metaweb.gridworks.gel.Scanner.RegexToken; import com.metaweb.gridworks.gel.Scanner.Token; @@ -197,6 +198,12 @@ public class Parser { } else { throw makeException("Missing )"); } + } else if (_token.type == TokenType.Delimiter && _token.text.equals("[")) { // [ ... ] array + next(true); // swallow [ + + List args = parseExpressionList("]"); + + eval = new FunctionCallExpr(makeArray(args), new ArgsToArray()); } else { throw makeException("Missing number, string, identifier, regex, or parenthesized expression"); }