Compare commits

..

No commits in common. "4b3c20a913fff01c710aae039ce4d83d37b8eada" and "5edf144d3ba31788c54ed2ead767a16acee5521e" have entirely different histories.

6 changed files with 51 additions and 189 deletions

View File

@ -1,31 +1,18 @@
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
classpath 'ch.raffael.pegdown-doclet:pegdown-doclet:1.2'
}
}
apply plugin: "groovy"
apply plugin: "ch.raffael.pegdown-doclet"
apply plugin: "maven"
group = "com.jdbernard"
version = "4.4"
version = "3.9"
repositories {
mavenLocal()
mavenCentral()
}
mavenCentral() }
dependencies {
compile localGroovy()
compile 'org.codehaus.groovy:groovy-all:2.3.6'
compile 'org.slf4j:slf4j-api:1.7.10'
compile 'ch.qos.logback:logback-core:1.1.2'
compile 'ch.qos.logback:logback-classic:1.1.2'
compile 'org.eclipse.jetty.aggregate:jetty-all:7.6.15.v20140411'
testCompile 'junit:junit:4.12'
}

View File

@ -0,0 +1,33 @@
#!/usr/bin/env groovy
package com.jdbernard.net
import org.eclipse.jetty.server.Server
import org.eclipse.jetty.servlet.*
import groovy.servlet.*
def startJetty(int port) {
def server = new Server(port)
def handler = new ServletContextHandler(ServletContextHandler.SESSIONS)
handler.contextPath = '/'
handler.resourceBase = '.'
// Groovy Scripts
handler.addServlet(GroovyServlet, '*.groovy')
// Files
def filesHolder = handler.addServlet(DefaultServlet, '/')
filesHolder.setInitParameter('resourceBase', '.')
server.handler = handler
server.start()
}
if (args.length < 1) {
println "Usage: webServer.groovy <port>"
System.exit(1) }
println "Starting Jetty, press Ctrl-C to stop."
startJetty(Integer.parseInt(args[0]))

View File

@ -11,17 +11,17 @@ package com.jdbernard.util
class ConsoleProgressBar {
int MAX_STEP = 30
long max = 10
int max = 10
def out = System.out
private int lastStepAmount = -1
private String lastLinePrinted = ""
private String lastInfo = ""
private long startTime
public void setMax(long max) {
public void setMax(int max) {
this.max = Math.max(max, 1) }
void update(long value, String info) {
void update(int value, String info) {
if (value == 0 || startTime == 0)
startTime = System.currentTimeMillis()
@ -43,8 +43,8 @@ class ConsoleProgressBar {
remTime /= 1000
def numEq = Math.max(curStep - 1, 0)
def remMin = curPercent < 0.05 ? '?' : (long) (remTime / 60)
def remSec = curPercent < 0.05 ? '?' : (long) (((remTime / 60.0) - remMin) * 60)
def remMin = curPercent < 0.05 ? '?' : (int) (remTime / 60)
def remSec = curPercent < 0.05 ? '?' : (int) (((remTime / 60.0) - remMin) * 60)
lastInfo = info
if (info.length() > 16) info = info[0..<16]

View File

@ -170,13 +170,12 @@ public class LightOptionParser {
else {
if (!returnOpts.containsKey(optName))
returnOpts[optName] = []
returnOpts[optName] += retVal
if (optDef.arguments == 1) returnOpts[optName] += retVal
else returnOpts[optName] << retVal
if (optDef.longName)
returnOpts[optDef.longName] = returnOpts[optName] } }
if (optDef.longName) {
if (!returnOpts.containsKey(optDef.longName))
returnOpts[optDef.longName] = []
returnOpts[optDef.longName] += retVal } } }
/// This was not as option, it is an unclaomed argument.
else { returnOpts.args << args[i]; i++ } }

View File

@ -1,157 +0,0 @@
/**
* # AnsiEscapeCodeSequence
* @author Jonathan Bernard (jdbernard@gmail.com)
* @org jdbernard.com/util/AnsiEscapeCodeSequence
* @copyright 2016 Jonathan Bernard
*/
package com.jdbernard.util;
import java.util.regex.Pattern;
/**
* The AnsiEscapeCodeSequence class is an extended wrapper around
* [ANSI escape codes].
*
* [ANSI escape codes]: http://en.wikipedia.org/wiki/ANSI_escape_code
*/
public class AnsiEscapeCodeSequence {
public static final String CSI = "\u001b[";
public static final Pattern ANSI_SEQ_PATTERN =
Pattern.compile("\u001b\\[[^a-zA-Z]+[a-zA-Z]");
public static enum Colors {
BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, EXT, DEFAULT }
public static enum Erase { ToEnd, ToBeginning, All }
public static String strip(String input) {
return ANSI_SEQ_PATTERN.matcher(input).replaceAll(""); }
public StringBuilder value = new StringBuilder();
public String toString() { return value.toString(); }
// Multiple methods for various forms of SGR
public AnsiEscapeCodeSequence color(Colors fg, Colors bg, boolean bright) {
value.append(CSI);
value.append(bright ? "1" : "22");
if (fg != null) {
value.append(";3");
value.append(Integer.toString(fg.ordinal())); }
if (bg != null) {
value.append(";4");
value.append(Integer.toString(bg.ordinal())); }
value.append("m");
return this; }
public AnsiEscapeCodeSequence resetText() {
value.append(CSI).append("0m");
return this; }
public AnsiEscapeCodeSequence blinkSlow() {
value.append(CSI).append("5m");
return this; }
public AnsiEscapeCodeSequence blinkFast() {
value.append(CSI).append("6m");
return this; }
public AnsiEscapeCodeSequence invertColors() {
value.append(CSI).append("7m");
return this; }
public AnsiEscapeCodeSequence strikethrough() {
value.append(CSI).append("9m");
return this; }
// Other ANSI escape codes
public AnsiEscapeCodeSequence cursorUp() { return cursorUp(1); }
public AnsiEscapeCodeSequence cursorUp(int cells) {
value.append(CSI).append(Integer.toString(cells)).append("A");
return this; }
public AnsiEscapeCodeSequence cursorDown() { return cursorDown(1); }
public AnsiEscapeCodeSequence cursorDown(int cells) {
value.append(CSI).append(Integer.toString(cells)).append("B");
return this; }
public AnsiEscapeCodeSequence cursorForward() { return cursorForward(1); }
public AnsiEscapeCodeSequence cursorForward(int cells) {
value.append(CSI).append(Integer.toString(cells)).append("C");
return this; }
public AnsiEscapeCodeSequence cursorBackward() { return cursorBackward(1); }
public AnsiEscapeCodeSequence cursorBackward(int cells) {
value.append(CSI).append(Integer.toString(cells)).append("D");
return this; }
public AnsiEscapeCodeSequence cursorNextLine() { return cursorNextLine(1); }
public AnsiEscapeCodeSequence cursorNextLine(int lines) {
value.append(CSI).append(Integer.toString(lines)).append("E");
return this; }
public AnsiEscapeCodeSequence cursorPrevLine() { return cursorPrevLine(1); }
public AnsiEscapeCodeSequence cursorPrevLine(int lines) {
value.append(CSI).append(Integer.toString(lines)).append("F");
return this; }
public AnsiEscapeCodeSequence cursorHorizontalAbsolute(int column) {
value.append(CSI).append(Integer.toString(column)).append("G");
return this; }
public AnsiEscapeCodeSequence cursorPosition(int row, int column) {
value.append(CSI)
.append(Integer.toString(row))
.append(";")
.append(Integer.toString(column))
.append("H");
return this; }
public AnsiEscapeCodeSequence eraseDisplay() {
return eraseDisplay(Erase.ToEnd); }
public AnsiEscapeCodeSequence eraseDisplay(Erase how) {
value.append(CSI)
.append(Integer.toString(how.ordinal()))
.append("J");
return this; }
public AnsiEscapeCodeSequence eraseLine() { return eraseLine(Erase.ToEnd); }
public AnsiEscapeCodeSequence eraseLine(Erase how) {
value.append(CSI)
.append(Integer.toString(how.ordinal()))
.append("K");
return this; }
public AnsiEscapeCodeSequence scrollUp() { return scrollUp(1); }
public AnsiEscapeCodeSequence scrollUp(int lines) {
value.append(CSI).append(Integer.toString(lines)).append("S");
return this; }
public AnsiEscapeCodeSequence scrollDown() { return scrollDown(1); }
public AnsiEscapeCodeSequence scrollDown(int lines) {
value.append(CSI).append(Integer.toString(lines)).append("T");
return this; }
public AnsiEscapeCodeSequence cursorHVPosition(int row, int column) {
value.append(CSI)
.append(Integer.toString(row))
.append(";")
.append(Integer.toString(column))
.append("f");
return this; }
public AnsiEscapeCodeSequence saveCursor() {
value.append(CSI).append("s");
return this; }
public AnsiEscapeCodeSequence restoreCursor() {
value.append(CSI).append("u");
return this; }
}

View File

@ -58,8 +58,8 @@ public class LightOptionParserTests extends GroovyTestCase {
assert opts.c == ["cfgFile"]
assert opts['config-file'] == ["cfgFile"]
assert opts.args == ["arg1", "arg2"]
assert opts.i == [["in1", "in2", "in3"], ["in4"]]
assert opts["input-file"] == [["in1", "in2", "in3"], ["in4"]]
assert opts.o == [["out1", "out2"]]
assert opts["output-file2"] == [["out1", "out2"]] }
assert opts.i == ["in1", "in2", "in3", "in4"]
assert opts["input-file"] == ["in1", "in2", "in3", "in4"]
assert opts.o == ["out1", "out2"]
assert opts["output-file2"] == ["out1", "out2"] }
}