36 lines
973 B
Plaintext
36 lines
973 B
Plaintext
include "dropins";
|
|
|
|
import "stringLib" as stringLib;
|
|
|
|
def debugLog($target; $value):
|
|
if
|
|
($ENV["JQ_DEBUG"] == $target)
|
|
or
|
|
($target == "*")
|
|
or
|
|
($ENV["JQ_DEBUG"] | split(",") | any(. as $debugTarget | $target | startswith($debugTarget | split("*")[0])))
|
|
then
|
|
debug({$target, $value})
|
|
end;
|
|
|
|
def assert(cond; $msg): if cond then . else error($msg) end;
|
|
def assert($loc; cond; $msg): assert(cond; "\($loc.file):\($loc.line): " + $msg);
|
|
|
|
def firstN($n): .[:$n];
|
|
|
|
def orderedUnique:
|
|
(reduce .[] as $value ([];
|
|
if
|
|
(. | any(index($value)) | not)
|
|
then . += [$value]
|
|
else . end
|
|
));
|
|
|
|
def sortFilterFromString($filterString):
|
|
($filterString | split("|")).[] as $filter |
|
|
if
|
|
$filter == "reverse" then . | reverse
|
|
elif ($filter | startswith("firstN")) then
|
|
($filter | ltrimstr("firstN(") | rtrimstr(")")) as $arg |
|
|
. | firstN($arg | try fromjson catch error("invalid number passed to firstN"))
|
|
end; |