mirror of
https://github.com/wader/fq.git
synced 2024-12-24 22:05:31 +03:00
interp: Refactor out string_input to own function
This commit is contained in:
parent
0e8c82afb1
commit
472c1ef081
@ -54,52 +54,53 @@ def input:
|
|||||||
, _input($opts; f)
|
, _input($opts; f)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
def _input_string($opts):
|
||||||
|
( _input_strings_lines
|
||||||
|
| if . then
|
||||||
|
# we're already iterating lines
|
||||||
|
if length == 0 then error("break")
|
||||||
|
else
|
||||||
|
( [.[0], .[1:]] as [$h, $t]
|
||||||
|
| _input_strings_lines($t)
|
||||||
|
| $h
|
||||||
|
)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
( [_repeat_break(_input($opts; tobytes | tostring))]
|
||||||
|
| . as $chunks
|
||||||
|
| if $opts.slurp then
|
||||||
|
# jq --raw-input combined with --slurp reads all inputs into a string
|
||||||
|
# make next input break
|
||||||
|
( _input_strings_lines([]) as $_
|
||||||
|
| $chunks
|
||||||
|
| join("")
|
||||||
|
)
|
||||||
|
else
|
||||||
|
# TODO: different line endings?
|
||||||
|
# jq strips last newline, "a\nb" and "a\nb\n" behaves the same
|
||||||
|
# also jq -R . <(echo -ne 'a\nb') <(echo c) produces "a" and "bc"
|
||||||
|
if ($chunks | length) > 0 then
|
||||||
|
( _input_strings_lines(
|
||||||
|
( $chunks
|
||||||
|
| join("")
|
||||||
|
| rtrimstr("\n")
|
||||||
|
| split("\n")
|
||||||
|
)
|
||||||
|
) as $_
|
||||||
|
| input
|
||||||
|
)
|
||||||
|
else error("break")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
)
|
||||||
|
end
|
||||||
|
);
|
||||||
# TODO: don't rebuild options each time
|
# TODO: don't rebuild options each time
|
||||||
( options as $opts
|
( options as $opts
|
||||||
# TODO: refactor into def
|
# TODO: refactor into def
|
||||||
# this is a bit strange as jq for --raw-string can return string instead
|
# this is a bit strange as jq for --raw-string can return string instead
|
||||||
# with data from multiple inputs
|
# with data from multiple inputs
|
||||||
| if $opts.string_input then
|
| if $opts.string_input then _input_string($opts)
|
||||||
( _input_strings_lines
|
|
||||||
| if . then
|
|
||||||
# we're already iterating lines
|
|
||||||
if length == 0 then error("break")
|
|
||||||
else
|
|
||||||
( [.[0], .[1:]] as [$h, $t]
|
|
||||||
| _input_strings_lines($t)
|
|
||||||
| $h
|
|
||||||
)
|
|
||||||
end
|
|
||||||
else
|
|
||||||
( [_repeat_break(_input($opts; tobytes | tostring))]
|
|
||||||
| . as $chunks
|
|
||||||
| if $opts.slurp then
|
|
||||||
# jq --raw-input combined with --slurp reads all inputs into a string
|
|
||||||
# make next input break
|
|
||||||
( _input_strings_lines([]) as $_
|
|
||||||
| $chunks
|
|
||||||
| join("")
|
|
||||||
)
|
|
||||||
else
|
|
||||||
# TODO: different line endings?
|
|
||||||
# jq strips last newline, "a\nb" and "a\nb\n" behaves the same
|
|
||||||
# also jq -R . <(echo -ne 'a\nb') <(echo c) produces "a" and "bc"
|
|
||||||
if ($chunks | length) > 0 then
|
|
||||||
( _input_strings_lines(
|
|
||||||
( $chunks
|
|
||||||
| join("")
|
|
||||||
| rtrimstr("\n")
|
|
||||||
| split("\n")
|
|
||||||
)
|
|
||||||
) as $_
|
|
||||||
| input
|
|
||||||
)
|
|
||||||
else error("break")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
)
|
|
||||||
end
|
|
||||||
)
|
|
||||||
else _input($opts; decode)
|
else _input($opts; decode)
|
||||||
end
|
end
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user