Source From Here
Preface
Groovy extends the String class with a couple of padding methods. These methods allows us to define a fixed width a String value must occupy. If the Stringitself is less than the fixed width then the space is padded with spaces or any other character or String we define. We can pad to the left or the right of the Stringor both left and right and put the String in the center.
Sample Code
These methods are especially useful when we create Groovy scripts that run on the console and we want to format some output.
Preface
Groovy extends the String class with a couple of padding methods. These methods allows us to define a fixed width a String value must occupy. If the Stringitself is less than the fixed width then the space is padded with spaces or any other character or String we define. We can pad to the left or the right of the Stringor both left and right and put the String in the center.
Sample Code
These methods are especially useful when we create Groovy scripts that run on the console and we want to format some output.
- assert ' Groovy ' == 'Groovy'.center(12)
- assert 'Groovy ' == "Groovy".padRight(12)
- assert ' Groovy' == /Groovy/.padLeft(12)
- assert '---Groovy---' == "Groovy".center(12, '-')
- assert 'Groovy * * *' == "Groovy".padRight(12, ' *')
- assert 'Groovy Groovy Groovy' == 'Groovy'.padLeft(20, 'Groovy ')
- def createOutput = {
- def table = [
- // Page, Response time, Size
- ['page1.html', 200, 1201],
- ['page2.html', 42, 8853],
- ['page3.html', 98, 3432],
- ['page4.html', 432, 9081]
- ]
- def total = { data, index ->
- data.inject(0) { result, row -> result += row[index] }
- }
- def totalTime = total.curry(table, 1)
- def totalSize = total.curry(table, 2)
- def out = new StringBuffer()
- out << ' Summary '.center(15, "*") << '\n\n'
- out << 'Total pages:'.padRight(25)
- out << table.size().toString().padLeft(6) << '\n'
- out << 'Total response time (ms):'.padRight(25)
- out << totalTime().toString().padLeft(6) << '\n'
- out << 'Total size (KB):'.padRight(25)
- out << totalSize().toString().padLeft(6) << '\n\n'
- out << ' Details '.center(15, "*") << '\n\n'
- table.each {
- out << it[0].padRight(14)
- out << it[1].toString().padLeft(5)
- out << it[2].toString().padLeft(8)
- out << '\n'
- }
- out.toString()
- }
- assert '''\
- *** Summary ***
- Total pages: 4
- Total response time (ms): 772
- Total size (KB): 22567
- *** Details ***
- page1.html 200 1201
- page2.html 42 8853
- page3.html 98 3432
- page4.html 432 9081
- ''' == createOutput()
沒有留言:
張貼留言