31 lines
1.1 KiB
Nix
31 lines
1.1 KiB
Nix
{ list, string, ... }:
|
|
let
|
|
concat = splits: string.concat (list.flat splits);
|
|
splitSpaces = string.split "([[:space:]]+)";
|
|
|
|
ltrim'
|
|
= parts:
|
|
if list.head parts == ""
|
|
&& parts != [ "" ]
|
|
then
|
|
list.generate (x: list.get parts ( x + 2 )) ( list.length parts - 2 )
|
|
else
|
|
parts;
|
|
rtrim'
|
|
= parts:
|
|
if list.foot parts == ""
|
|
&& parts != [ "" ]
|
|
then
|
|
list.generate (x: list.get parts x) ( list.length parts - 2 )
|
|
else
|
|
parts;
|
|
trim' = text: list.flat ( rtrim' ( ltrim' ( splitSpaces text ) ) );
|
|
trim = text: string.concat ( trim' text );
|
|
in
|
|
{
|
|
__functor = self: trim;
|
|
ltrim = text: concat (ltrim' (splitSpaces text));
|
|
rtrim = text: concat (rtrim' (splitSpaces text));
|
|
inherit ltrim' rtrim' trim trim';
|
|
}
|