Skip to content

Instantly share code, notes, and snippets.

@ralfw
Last active August 29, 2015 14:16
Show Gist options
  • Save ralfw/3bfb17d19c081fcf7a7f to your computer and use it in GitHub Desktop.
Save ralfw/3bfb17d19c081fcf7a7f to your computer and use it in GitHub Desktop.
CSV Viewer Inkrement #1 - Erste Seite anzeigen
/* CSV Viewer Inkrement #1 - Erste Seite anzeigen */
String[] tabellenzeilen = FirstPage(args)
tabellenzeilen.each {l -> println(l)}
String[] FirstPage(String[] args) {
def dateiname = Dateiname_ermitteln(args)
def seitenlänge = Seitenlänge_ermitteln(args)
def zeilen = Datei_laden(dateiname)
def seitenzeilen = Erste_Seite_extrahieren(zeilen, seitenlänge)
def seitenrecords = Records_bilden(seitenzeilen)
def spaltenbreiten = Spaltenbreiten_ermitteln(seitenrecords)
return Seite_formatieren(seitenrecords, spaltenbreiten)
}
def Dateiname_ermitteln(String[] args) {
return args[0]
}
int Seitenlänge_ermitteln(String[] args) {
return args[1].toInteger()
}
String[] Datei_laden(String dateiname) {
return new File(dateiname).text.split("\n")
}
String[] Erste_Seite_extrahieren(String[] zeilen, int seitenlänge) {
def seite = new ArrayList<String>()
seite.add(zeilen.first())
seite.addAll(zeilen.drop(1).take(seitenlänge))
return seite
}
List<String[]> Records_bilden(String[] zeilen) {
return zeilen.collect({l -> l.split(";")})
}
int[] Spaltenbreiten_ermitteln(List<String[]> records) {
def spaltenbreiten = []
(1..records.first().size()).each {spaltenbreiten.add(0)}
(0..records.first().size()-1).each {i ->
records.each({r -> if (spaltenbreiten[i]<r[i].size()) spaltenbreiten[i] = r[i].size()})
}
return spaltenbreiten
}
def Seite_formatieren(List<String[]> records, int[] spaltenbreiten) {
def tabelle = []
tabelle.add(Record_formatieren(records.first(), spaltenbreiten))
tabelle.add(Unterstreichung_formatieren(spaltenbreiten))
tabelle.addAll(records.drop(1).collect({r -> Record_formatieren(r, spaltenbreiten)}))
return tabelle
}
def Unterstreichung_formatieren(int[] spaltenbreiten) {
(0..spaltenbreiten.size()-1).collect {i -> "-".padRight(spaltenbreiten[i], "-")}
.join("+")
}
def Record_formatieren(String[] record, int[] spaltenbreiten) {
return [record, spaltenbreiten].transpose()
.collect{v,b -> v.padRight(b)}
.join("|")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment