samples/uniq.js

Fri, 05 Jun 2015 12:38:53 +0200

author
mhaupt
date
Fri, 05 Jun 2015 12:38:53 +0200
changeset 1398
2f1b9f4daec1
parent 962
ac62e33a99b0
child 1205
4112748288bb
permissions
-rw-r--r--

8080087: Nashorn $ENV.PWD is originally undefined
Summary: On Windows, the PWD environment variable does not exist and cannot be imported in scripting mode, so it is set explicitly.
Reviewed-by: lagergren, sundar

jlaskey@3 1 /*
sundar@851 2 * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
attila@962 3 *
jlaskey@3 4 * Redistribution and use in source and binary forms, with or without
jlaskey@3 5 * modification, are permitted provided that the following conditions
jlaskey@3 6 * are met:
attila@962 7 *
jlaskey@3 8 * - Redistributions of source code must retain the above copyright
jlaskey@3 9 * notice, this list of conditions and the following disclaimer.
attila@962 10 *
jlaskey@3 11 * - Redistributions in binary form must reproduce the above copyright
jlaskey@3 12 * notice, this list of conditions and the following disclaimer in the
jlaskey@3 13 * documentation and/or other materials provided with the distribution.
attila@962 14 *
jlaskey@3 15 * - Neither the name of Oracle nor the names of its
jlaskey@3 16 * contributors may be used to endorse or promote products derived
jlaskey@3 17 * from this software without specific prior written permission.
attila@962 18 *
jlaskey@3 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
jlaskey@3 20 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
jlaskey@3 21 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
jlaskey@3 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
jlaskey@3 23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
jlaskey@3 24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
jlaskey@3 25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
jlaskey@3 26 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
jlaskey@3 27 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
jlaskey@3 28 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
jlaskey@3 29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
jlaskey@3 30 */
jlaskey@3 31
sundar@851 32 // Usage: jjs uniq.js
sundar@851 33 // or: jjs uniq.js -- <file>
jlaskey@3 34
sundar@851 35 // omit repeated lines and print unique lines
sundar@851 36
sundar@851 37 var BufferedReader = Java.type("java.io.BufferedReader");
sundar@851 38 var FileReader = Java.type("java.io.FileReader");
sundar@851 39 var InputStreamReader = Java.type("java.io.InputStreamReader");
sundar@851 40 var System = Java.type("java.lang.System");
sundar@851 41
sundar@851 42 // use object as set - but insertion order preserved
sundar@851 43 var uniqueLines = {};
sundar@851 44 var reader = arguments.length > 0 ?
sundar@851 45 new FileReader(arguments[0]) :
sundar@851 46 new InputStreamReader(System.in);
sundar@851 47 reader = new BufferedReader(reader);
sundar@851 48
sundar@851 49 // add unique lines
sundar@851 50 reader.lines().forEach(function(line) {
sundar@851 51 uniqueLines[line] = true;
sundar@851 52 })
sundar@851 53
sundar@851 54 for (line in uniqueLines) {
sundar@851 55 print(line);
jlaskey@3 56 }

mercurial