Skip to content

Instantly share code, notes, and snippets.

@fumokmm
fumokmm / helloJLine.groovy
Last active December 10, 2015 22:38
JLine minimum sample in Groovy.
@GrabResolver(name='jline', root='http://jline.sourceforge.net/m2repo')
@Grab(group='jline', module='jline', version='0.9.9')
import jline.*
def prompt(ConsoleReader reader, String msg, Closure clos) {
while (true) {
def line = reader.readLine(msg)
if (line in [null, 'exit']) break
clos(line)
}
@fumokmm
fumokmm / CalcOperator.properties
Created December 9, 2012 17:26
動的プロパティ読み込みクラス in Groovy
plus={ a, b -> a + b }
minus={ a, b -> a - b }
multiply={ a, b -> a * b }
div={ a, b -> a / b }
@fumokmm
fumokmm / README.md
Created August 16, 2012 16:03
GroovyでJavaのpackage-info.javaを一括生成するスクリプト
@fumokmm
fumokmm / README.md
Created June 2, 2012 23:42
Implementation of 'unless statement' on Groovy & Clojure
@fumokmm
fumokmm / README.md
Created July 31, 2012 15:14
Integerに閏年判定メソッドを追加 in Groovy
interface Cat {
String mew()
}
class Zash implements Cat {
String mew(){ "雑種" }
}
class Nora implements Cat {
String mew(){ "野良" }
}
def scottish = [mew:{"すこてぃっしゅ"}] as Cat
@fumokmm
fumokmm / field_access.groovy
Created July 14, 2012 15:03
Groovyでクラスのフィールドアクセスいろいろ ref: http://qiita.com/items/d17efc6a70a0d9e2efbd
class A {
def foo
}
def a = new A(foo: 'Foo')
assert a.foo == 'Foo' // プロパティアクセス(暗黙的)
assert a.getFoo() == 'Foo' // プロパティアクセス(明示的)
assert a.foo == 'Foo' // フィールドアクセス
assert a['foo'] == 'Foo' // マップアクセス
assert a.getAt('foo') == 'Foo' // マップアクセス(メソッド)
@fumokmm
fumokmm / overrideInterfaceMethod.groovy
Created July 12, 2012 22:04
overriding interface method on Groovy
interface Cat {
String mew()
}
class Zash implements Cat {
String mew(){ "雑種" }
}
class Nora implements Cat {
String mew(){ "野良" }
}
def scottish = [mew:{"すこてぃっしゅ"}] as Cat
@fumokmm
fumokmm / README.md
Created July 9, 2012 20:54
overriding asType on String by Groovy
@fumokmm
fumokmm / executor_submit3.groovy
Created July 7, 2012 07:54 — forked from mike-neck/console.log
ExecutorServiceの拡張がうまくできん -> メソッド名のせいかな?
import java.util.concurrent.ExecutorService
import java.util.concurrent.BlockingQueue
import java.util.concurrent.LinkedBlockingQueue
import java.util.concurrent.Executors
import java.util.concurrent.Callable
def executor = Executors.newSingleThreadExecutor()
// Closure as Interfaceパターン!
def future = executor.submit( {
def list = []