Kilometerfresser - Mile-Eater





5
Date Submitted Thu. Feb. 22nd, 2007 4:14 PM
Revision 1 of 1
Helper BerndSchiffer
Tags Category | Inlinetest | RegExp | SwingBuilder
Comments 0 comments
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.

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()
 

Comments

There are currently no comments for this snippet.

Voting