benthosdev / benthos

Fancy stream processing made operationally mundane
https://www.benthos.dev
MIT License
7.68k stars 752 forks source link

Adding an `array` method to bloblang #2545

Open gramian opened 2 weeks ago

gramian commented 2 weeks ago

Dear All,

I would like to propose adding a method array to bloblang, which returns always an array. Specifically, every non-array input is returned as single element array, while an array input is returned as-is. This is similar to the bytes method and motivated originally by parsing XML files transformed to JSON: An XML element with a single child element (or attribute) is returned as sub-object, while multiple child elements/attributes are returned as array. To further process such a subtree, it needs to be ensured always an array is returned. Practically this results in unwieldy constructs like this.with("name").values().flatten(). The newly proposed array method would reduce this to the more readable this.name.array().

Here is the associated pull request: https://github.com/benthosdev/benthos/pull/2538

Thank you for considering this enhancement

Best

gramian commented 1 week ago

@Jeffail WDYT? Does this addition fit? Is the PR in order?