使用以下csv输入:
Name,Nick
Sébastien,peudo1
Alex,peudo2
Max,Mule
我想要以下输出(纯文本格式(:
| Sébastien | peudo1 |
| Alex | peudo2 |
| Max | Mule |
最大的挑战是使输出列的大小固定,并将大小调整为最大的字符串。
正如@jorge gracia所说,最好的方法是使用csv并四处破解,以获得上一个和最后一个|
,那么我所做的就是计算字段的最大大小,并使用rightPad函数
%dw 2.0
output application/csv separator="|"
import * from dw::core::Strings
fun biggestLength(data: Array<{_: String}>) =
data flatMap ((item, index) ->
item pluck ((value, key, index) -> sizeOf(value))
)
maxBy ((item) -> item)
var padding = biggestLength(payload)
---
payload map ((item) ->
{
"": "",
(
item mapObject ((value, key, index) ->
{
(rightPad(key, padding)): rightPad(value, padding)
}
)
),
"": ""
}
)
我提出了以下代码。也许它可以改进:
%dw 2.0
output text/plain
var array = (payload map [ $.Name, $.Nick ])
var nameSize = max( payload map sizeOf($.Name))
var nickSize = max( payload map sizeOf($.Nick))
---
payload map (
"| " ++ $.Name ++ ((0 to (nameSize-sizeOf($.Name))) map " " joinBy "") ++
" | " ++ $.Nick ++ ((0 to (nickSize-sizeOf($.Nick))) map " " joinBy "") ++
" |"
)
joinBy 'n'