You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by ol...@apache.org on 2008/07/23 20:36:20 UTC
svn commit: r679154 - in /incubator/pig/branches/types: ./ lib/
src/org/apache/pig/ src/org/apache/pig/tools/grunt/
src/org/apache/pig/tools/pigscript/parser/
Author: olga
Date: Wed Jul 23 11:36:19 2008
New Revision: 679154
URL: http://svn.apache.org/viewvc?rev=679154&view=rev
Log:
PIG-139: command line editing
Added:
incubator/pig/branches/types/autocomplete
incubator/pig/branches/types/lib/jline-0.9.94.jar (with props)
incubator/pig/branches/types/lib/jline-LICENSE.txt
incubator/pig/branches/types/src/org/apache/pig/tools/grunt/PigCompletor.java
incubator/pig/branches/types/src/org/apache/pig/tools/grunt/autocomplete
Modified:
incubator/pig/branches/types/CHANGES.txt
incubator/pig/branches/types/build.xml
incubator/pig/branches/types/src/org/apache/pig/Main.java
incubator/pig/branches/types/src/org/apache/pig/tools/grunt/Grunt.java
incubator/pig/branches/types/src/org/apache/pig/tools/grunt/GruntParser.java
incubator/pig/branches/types/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj
Modified: incubator/pig/branches/types/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/CHANGES.txt?rev=679154&r1=679153&r2=679154&view=diff
==============================================================================
--- incubator/pig/branches/types/CHANGES.txt (original)
+++ incubator/pig/branches/types/CHANGES.txt Wed Jul 23 11:36:19 2008
@@ -139,3 +139,5 @@
PIG-294: string comparator unit tests (sms via pi_song)
PIG-258: cleaning up directories on failure (daijy via olgan)
+
+ PIG-139: command line editing
Added: incubator/pig/branches/types/autocomplete
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/autocomplete?rev=679154&view=auto
==============================================================================
--- incubator/pig/branches/types/autocomplete (added)
+++ incubator/pig/branches/types/autocomplete Wed Jul 23 11:36:19 2008
@@ -0,0 +1,46 @@
+# This is auto-complete file for grunt. Put this file anywhere in
+# your CLASSPATH or your working directory. Auto-complete entry
+# can be anything include piggy bank tokens, commonly used paths,
+# etc. The only constraint is that entry can not contain whitespace
+# (include tab).
+#
+UPPER
+getExponent
+CEIL
+RANDOM
+LOG
+toDegrees
+LOG1P
+NEXTUP
+MIN
+MAX
+SIN
+TANH
+ASIN
+COSH
+EXP
+IEEEremainder
+nextAfter
+ULP
+SINH
+SIGNUM
+HYPOT
+ATAN2
+ABS
+POW
+RINT
+FLOOR
+LOG10
+TAN
+ATAN
+toRadians
+COS
+SCALB
+ACOS
+ROUND
+SQRT
+CBRT
+EXPM1
+copySign
+COR
+COV
Modified: incubator/pig/branches/types/build.xml
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/build.xml?rev=679154&r1=679153&r2=679154&view=diff
==============================================================================
--- incubator/pig/branches/types/build.xml (original)
+++ incubator/pig/branches/types/build.xml Wed Jul 23 11:36:19 2008
@@ -82,6 +82,7 @@
<fileset file="${lib.dir}/javacc.jar" />
<fileset file="${lib.dir}/jsch-0.1.33.jar" />
<fileset file="${lib.dir}/junit-4.1.jar" />
+ <fileset file="${lib.dir}/jline-0.9.94.jar" />
<fileset file="${lib.dir}/commons-collections-3.2.jar" />
</path>
@@ -200,6 +201,7 @@
<compilerarg line="${javac.args} ${javac.args.warnings}"/>
<classpath refid="${cp}" />
</javac>
+ <copy file="${src.dir}/org/apache/pig/tools/grunt/autocomplete" todir="${build.classes}/org/apache/pig/tools/grunt"/>
</target>
<!-- this target is for compilation with all warnings enabled -->
@@ -302,6 +304,7 @@
<zipfileset src="${lib.dir}/junit-4.1.jar" />
<zipfileset src="${lib.dir}/${hadoop.jarfile}" />
<zipfileset src="${lib.dir}/jsch-0.1.33.jar" />
+ <zipfileset src="${lib.dir}/jline-0.9.94.jar" />
</jar>
<copy file="${output.jarfile}" tofile="${output.jarfile.backcompat}"/>
</target>
Added: incubator/pig/branches/types/lib/jline-0.9.94.jar
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/lib/jline-0.9.94.jar?rev=679154&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/pig/branches/types/lib/jline-0.9.94.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/pig/branches/types/lib/jline-LICENSE.txt
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/lib/jline-LICENSE.txt?rev=679154&view=auto
==============================================================================
--- incubator/pig/branches/types/lib/jline-LICENSE.txt (added)
+++ incubator/pig/branches/types/lib/jline-LICENSE.txt Wed Jul 23 11:36:19 2008
@@ -0,0 +1,149 @@
+Common Public License - v 1.0
+
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+i) changes to the Program, and
+ii) additions to the Program;
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a
+Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions
+to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to
+reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and
+such derivative works, in source code and object code form.
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
+Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form.
+This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations
+which include the Contribution. No hardware per se is licensed hereunder.
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any
+Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any
+liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to
+exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights
+needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to
+acquire that license before distributing the Program.
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set
+forth in this Agreement.
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+b) its license agreement:
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and
+non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential
+damages, such as lost profits;
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through
+a medium customarily used for software exchange.
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify
+the originator of the Contribution.
+
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a
+manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering,
+such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses,
+damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified
+Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial
+product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property
+infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow
+the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own expense.
+
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If
+that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such
+Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors
+related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial
+Contributor must pay those damages.
+
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS
+OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or
+loss of data, programs or equipment, and unavailability or interruption of operations.
+
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF
+ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of
+the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make
+such provision valid and enforceable.
+
+
+If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in
+a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is
+filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights
+granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does
+not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate,
+Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and
+any licenses granted by Recipient relating to the Program shall continue and survive.
+
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be
+modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to
+time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the
+responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version
+number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition,
+after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version.
+Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are
+reserved.
+
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this
+Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial
+in any resulting litigation.
+
Modified: incubator/pig/branches/types/src/org/apache/pig/Main.java
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/Main.java?rev=679154&r1=679153&r2=679154&view=diff
==============================================================================
--- incubator/pig/branches/types/src/org/apache/pig/Main.java (original)
+++ incubator/pig/branches/types/src/org/apache/pig/Main.java Wed Jul 23 11:36:19 2008
@@ -23,6 +23,9 @@
import java.util.jar.*;
import java.text.ParseException;
+import jline.ConsoleReader;
+import jline.ConsoleReaderInputStream;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -41,6 +44,7 @@
import org.apache.pig.impl.util.PropertiesUtil;
import org.apache.pig.tools.cmdline.CmdLineParser;
import org.apache.pig.tools.grunt.Grunt;
+import org.apache.pig.tools.grunt.PigCompletor;
import org.apache.pig.tools.timer.PerformanceTimerFactory;
import org.apache.pig.tools.parameters.ParameterSubstitutionPreprocessor;
@@ -265,8 +269,12 @@
if (remainders == null) {
// Interactive
mode = ExecMode.SHELL;
- in = new BufferedReader(new InputStreamReader(System.in));
- grunt = new Grunt(in, pigContext);
+ ConsoleReader reader = new ConsoleReader(System.in, new OutputStreamWriter(System.out));
+ reader.addCompletor(new PigCompletor());
+ reader.setDefaultPrompt("grunt> ");
+ ConsoleReaderInputStream inputStream = new ConsoleReaderInputStream(reader);
+ grunt = new Grunt(new BufferedReader(new InputStreamReader(inputStream)), pigContext);
+ grunt.setConsoleReader(reader);
grunt.run();
rc = 0;
return;
Modified: incubator/pig/branches/types/src/org/apache/pig/tools/grunt/Grunt.java
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/tools/grunt/Grunt.java?rev=679154&r1=679153&r2=679154&view=diff
==============================================================================
--- incubator/pig/branches/types/src/org/apache/pig/tools/grunt/Grunt.java (original)
+++ incubator/pig/branches/types/src/org/apache/pig/tools/grunt/Grunt.java Wed Jul 23 11:36:19 2008
@@ -19,6 +19,8 @@
import java.io.BufferedReader;
+import jline.ConsoleReader;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.pig.PigServer;
@@ -47,6 +49,10 @@
}
}
+ public void setConsoleReader(ConsoleReader c)
+ {
+ parser.setConsoleReader(c);
+ }
public void run() {
parser.setInteractive(true);
parser.parseContOnError();
Modified: incubator/pig/branches/types/src/org/apache/pig/tools/grunt/GruntParser.java
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/tools/grunt/GruntParser.java?rev=679154&r1=679153&r2=679154&view=diff
==============================================================================
--- incubator/pig/branches/types/src/org/apache/pig/tools/grunt/GruntParser.java (original)
+++ incubator/pig/branches/types/src/org/apache/pig/tools/grunt/GruntParser.java Wed Jul 23 11:36:19 2008
@@ -26,6 +26,8 @@
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
+import jline.ConsoleReader;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.mapred.JobClient;
@@ -132,8 +134,9 @@
{
if (mInteractive)
{
- System.err.print("grunt> ");
- System.err.flush();
+ /*System.err.print("grunt> ");
+ System.err.flush();*/
+ mConsoleReader.setDefaultPrompt("grunt> ");
}
}
Added: incubator/pig/branches/types/src/org/apache/pig/tools/grunt/PigCompletor.java
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/tools/grunt/PigCompletor.java?rev=679154&view=auto
==============================================================================
--- incubator/pig/branches/types/src/org/apache/pig/tools/grunt/PigCompletor.java (added)
+++ incubator/pig/branches/types/src/org/apache/pig/tools/grunt/PigCompletor.java Wed Jul 23 11:36:19 2008
@@ -0,0 +1,163 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.pig.tools.grunt;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import jline.Completor;
+
+public class PigCompletor implements Completor {
+ private final Log log = LogFactory.getLog(getClass());
+ Set<String> candidates;
+ static final String AUTOCOMPLETE_FILENAME = "autocomplete";
+
+ public PigCompletor() {
+ candidates = new TreeSet<String>();
+ try {
+ InputStream keywordStream;
+
+ // try to find keyword file in current directory
+ keywordStream = null;
+ try
+ {
+ keywordStream = new FileInputStream(AUTOCOMPLETE_FILENAME);
+ }
+ catch (FileNotFoundException e)
+ {
+ log.debug("Can not find autocomplete file in current directory, skipped");
+ }
+ if (keywordStream!=null)
+ {
+ processKeywordStream(keywordStream);
+ keywordStream.close();
+ }
+
+ // try to find all keyword file in CLASSPATH
+ Enumeration<URL> itr = getClass().getClassLoader().getResources(AUTOCOMPLETE_FILENAME);
+ while (itr.hasMoreElements())
+ {
+ URL url = itr.nextElement();
+ keywordStream = url.openStream();
+ if (keywordStream!=null)
+ {
+ processKeywordStream(keywordStream);
+ keywordStream.close();
+ }
+ else
+ log.debug("Error loading " + url + ", skipped");
+ }
+
+ // try to use default keyword file
+ keywordStream = getClass().getResourceAsStream("/org/apache/pig/tools/grunt/autocomplete");
+ if (keywordStream!=null)
+ {
+ processKeywordStream(keywordStream);
+ keywordStream.close();
+ }
+ }
+ catch (IOException e) {
+ log.warn("Error occurs when reading internal autocomplete file, skipped");
+ }
+ }
+
+ private void processKeywordStream(InputStream stream) throws IOException
+ {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
+ String line;
+ while ((line=reader.readLine())!=null)
+ {
+ if (!line.startsWith("#")&&!line.startsWith("//"))
+ {
+ line = line.trim();
+ if (!line.equals(""))
+ addCandidateString(line);
+ }
+
+ }
+ reader.close();
+ }
+
+ public void addCandidateString(final String candidateString) {
+ for (int i=0;i<candidateString.length();i++)
+ {
+ if (isDelimit(candidateString.charAt(i)))
+ {
+ log.warn("Auto-complete keyword \"" + candidateString + "\" is skipped because it contains white spaces");
+ return;
+ }
+ }
+ candidates.add(candidateString);
+ }
+
+ public int complete(String buffer, int cursor, List candidates) {
+ if (cursor == 0)
+ return 0;
+ int p = cursor;
+ p--;
+ while (p > 0) {
+ char c = buffer.charAt(p);
+ if (isDelimit(c)) {
+ p++;
+ break;
+ }
+ p--;
+ }
+ StringBuffer sb = new StringBuffer();
+ for (int i = p; i < cursor; i++) {
+ sb.append(buffer.charAt(i));
+ }
+ if (!sb.toString().equals("")) {
+ List<String> matches = searchCandidate(sb.toString());
+ if (matches != null) {
+ for (String match:matches)
+ candidates.add(match);
+ return p;
+ }
+ }
+ return 0;
+ }
+
+ private boolean isDelimit(char c) {
+ if (Character.isWhitespace(c))
+ return true;
+ return false;
+ }
+
+ private List<String> searchCandidate(String s) {
+ List<String> list = new ArrayList<String>();
+ for (String can : candidates) {
+ if (can.startsWith(s) && !can.equals(s))
+ list.add(can);
+ }
+ return list;
+ }
+}
Added: incubator/pig/branches/types/src/org/apache/pig/tools/grunt/autocomplete
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/tools/grunt/autocomplete?rev=679154&view=auto
==============================================================================
--- incubator/pig/branches/types/src/org/apache/pig/tools/grunt/autocomplete (added)
+++ incubator/pig/branches/types/src/org/apache/pig/tools/grunt/autocomplete Wed Jul 23 11:36:19 2008
@@ -0,0 +1,151 @@
+load
+filter
+foreach
+matches
+order
+arrange
+distinct
+cogroup
+join
+cross
+union
+split
+into
+if
+all
+any
+as
+by
+using
+inner
+outer
+parallel
+group
+and
+or
+not
+generate
+flatten
+eval
+asc
+desc
+int
+long
+float
+double
+chararray
+bytearray
+bag
+tuple
+map
+define
+is
+null
+cat
+cd
+cp
+copyFromLocal
+copyToLocal
+dump
+describe
+explain
+help
+kill
+ls
+mv
+mkdir
+pwd
+quit
+register
+rm
+set
+store
+into
+using
+LOAD
+FILTER
+FOREACH
+MATCHES
+ORDER
+ARRANGE
+DISTINCT
+COGROUP
+JOIN
+CROSS
+UNION
+SPLIT
+INTO
+IF
+ALL
+ANY
+AS
+BY
+USING
+INNER
+OUTER
+PARALLEL
+GROUP
+AND
+OR
+NOT
+GENERATE
+FLATTEN
+EVAL
+ASC
+DESC
+INT
+LONG
+FLOAT
+DOUBLE
+CHARARRAY
+BYTEARRAY
+BAG
+TUPLE
+MAP
+DEFINE
+IS
+NULL
+CAT
+CD
+CP
+COPYFROMLOCAL
+COPYTOLOCAL
+DUMP
+DESCRIBE
+EXPLAIN
+HELP
+KILL
+LS
+MV
+MKDIR
+PWD
+QUIT
+REGISTER
+RM
+SET
+STORE
+INTO
+USING
+#
+# Now start build-in UDF
+#
+ARITY
+AVG
+BagSize
+BinStorage
+CONCAT
+ConstantSize
+COUNT
+DIFF
+IsEmpty
+MapSize
+MAX
+MIN
+PigDump
+PigStorage
+SIZE
+SUM
+TextLoader
+TOKENIZE
+TupleSize
+Utf8StorageConverter
Modified: incubator/pig/branches/types/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj?rev=679154&r1=679153&r2=679154&view=diff
==============================================================================
--- incubator/pig/branches/types/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj (original)
+++ incubator/pig/branches/types/src/org/apache/pig/tools/pigscript/parser/PigScriptParser.jj Wed Jul 23 11:36:19 2008
@@ -29,17 +29,27 @@
package org.apache.pig.tools.pigscript.parser;
import java.io.IOException;
+import java.io.InputStream;
+
+import jline.ConsoleReader;
public abstract class PigScriptParser
{
protected boolean mInteractive;
-
+ protected ConsoleReader mConsoleReader;
+
public void setInteractive(boolean interactive)
{
mInteractive = interactive;
token_source.interactive = interactive;
}
+ public void setConsoleReader(ConsoleReader c)
+ {
+ mConsoleReader = c;
+ token_source.consoleReader = c;
+ }
+
abstract public void prompt();
abstract protected void quit();
@@ -143,12 +153,14 @@
int funcBlockLevel = 0;
int prevState = DEFAULT;
boolean interactive = false;
+ ConsoleReader consoleReader = null;
public void secondary_prompt()
{
if (interactive)
{
- System.err.print(">> ");
- System.err.flush();
+ /*System.err.print(">> ");
+ System.err.flush();*/
+ consoleReader.setDefaultPrompt(">> ");
}
}