Kilometerfresser - Mile-Eater
5
BerndSchiffer
Ein Kilometerfresser mit Groovy Console, Inlinetests, Groovy Beans, der Meta-Objekt-Programmierung, Swing, GStrings, Regulären Ausdrücken und Closures gebaut. Läuft mit Groovy 1.0 in der Groovy Console.
A Mile-Eater build with Groovy Console, inline tests, Groovy Beans, Meta-Object-Programming, Swing, GStrings, regular expressions und closures. Runs with Groovy 1.0 in the Groovy Console.
A Mile-Eater build with Groovy Console, inline tests, Groovy Beans, Meta-Object-Programming, Swing, GStrings, regular expressions und closures. Runs with Groovy 1.0 in the Groovy Console.
import groovy.swing.SwingBuilder
class StreckenCategory {
static def getKm(selbst) {
selbst
}
static def getM(selbst) {
selbst / 1000
}
}
def werteAus(string) {
def km = evaluate(parse(string)) as String
def formatierteKm = formatiere(km)
"${formatierteKm} km"
}
def parse(string) {
string
.replaceAll(/(\d+),(\d+)/, { alle, km, m -> "${km}.${m}" })
.replaceAll(/ (k*m)/, { alle, km -> ".${km}"})
}
def formatiere(string) {
string.replaceAll(/(\d+).(\d+)/, { alle, km, m -> "${km},${m}" })
}
use (StreckenCategory.class) {
assert '20,5 km' == werteAus('2 * 2 km + 6 * 300 m + 5 * 100 m + 14,2 km')
}
def swing = new SwingBuilder()
def frame = swing.frame(title:'Kilometerfresser') {
textField(columns:100, actionPerformed: { event ->
use (StreckenCategory.class) {
event.source.setText(werteAus(event.source.text))
}
})
}
frame.pack()
frame.show()






There are currently no comments for this snippet.