mirror of
https://github.com/johnkerl/miller.git
synced 2026-08-02 12:32:21 +00:00
extend comparison operators to collection types (iterating)
This commit is contained in:
parent
deb32888f6
commit
0bb07a8f5e
6 changed files with 90 additions and 100 deletions
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
# ================================================================
|
||||
set -e
|
||||
#####set -e
|
||||
|
||||
# For building with autoconf:
|
||||
# * in-directory build:
|
||||
|
|
@ -138,7 +138,7 @@ mlr_expect_fail() {
|
|||
echo "Exit status was $status; expected 1."
|
||||
echo "Exit status was $status; expected 1." >> $outfile
|
||||
fi
|
||||
set -e
|
||||
#####set -e
|
||||
echo >> $outfile
|
||||
test $status -eq 1
|
||||
# since set -e
|
||||
|
|
|
|||
|
|
@ -142,3 +142,13 @@ func _i0__(ma, mb *Mlrval) Mlrval {
|
|||
func _f0__(ma, mb *Mlrval) Mlrval {
|
||||
return MlrvalFromFloat64(0.0)
|
||||
}
|
||||
|
||||
// Return boolean true (binary)
|
||||
func _true(ma, mb *Mlrval) Mlrval {
|
||||
return MlrvalFromBool(true)
|
||||
}
|
||||
|
||||
// Return boolean false (binary)
|
||||
func _fals(ma, mb *Mlrval) Mlrval {
|
||||
return MlrvalFromBool(false)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -145,81 +145,81 @@ func le_b_ff(ma, mb *Mlrval) Mlrval {
|
|||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
var eq_dispositions = [MT_DIM][MT_DIM]BinaryFunc{
|
||||
// ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP
|
||||
/*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn},
|
||||
/*ABSENT */ {_erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*VOID */ {_erro, _absn, eq_b_ss, eq_b_ss, eq_b_sx, eq_b_sx, _erro, _absn, _absn},
|
||||
/*STRING */ {_erro, _absn, eq_b_ss, eq_b_ss, eq_b_sx, eq_b_sx, _erro, _absn, _absn},
|
||||
/*INT */ {_erro, _absn, eq_b_xs, eq_b_xs, eq_b_ii, eq_b_if, _erro, _absn, _absn},
|
||||
/*FLOAT */ {_erro, _absn, eq_b_xs, eq_b_xs, eq_b_fi, eq_b_ff, _erro, _absn, _absn},
|
||||
/*BOOL */ {_erro, _erro, _absn, _erro, _erro, _erro, _erro, _absn, _absn},
|
||||
/*ARRAY */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*MAP */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
// . ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP
|
||||
/*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro},
|
||||
/*ABSENT */ {_erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*VOID */ {_erro, _absn, eq_b_ss, eq_b_ss, eq_b_sx, eq_b_sx, _fals, _fals, _fals},
|
||||
/*STRING */ {_erro, _absn, eq_b_ss, eq_b_ss, eq_b_sx, eq_b_sx, _fals, _fals, _fals},
|
||||
/*INT */ {_erro, _absn, eq_b_xs, eq_b_xs, eq_b_ii, eq_b_if, _fals, _fals, _fals},
|
||||
/*FLOAT */ {_erro, _absn, eq_b_xs, eq_b_xs, eq_b_fi, eq_b_ff, _fals, _fals, _fals},
|
||||
/*BOOL */ {_erro, _absn, _fals, _fals, _fals, _fals, _fals, _fals, _fals},
|
||||
/*ARRAY */ {_erro, _absn, _fals, _fals, _fals, _fals, _fals, _fals, _fals},
|
||||
/*MAP */ {_erro, _absn, _fals, _fals, _fals, _fals, _fals, _fals, _fals},
|
||||
}
|
||||
|
||||
var ne_dispositions = [MT_DIM][MT_DIM]BinaryFunc{
|
||||
// ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP
|
||||
/*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn},
|
||||
/*ABSENT */ {_erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*VOID */ {_erro, _absn, ne_b_ss, ne_b_ss, ne_b_sx, ne_b_sx, _erro, _absn, _absn},
|
||||
/*STRING */ {_erro, _absn, ne_b_ss, ne_b_ss, ne_b_sx, ne_b_sx, _erro, _absn, _absn},
|
||||
/*INT */ {_erro, _absn, ne_b_xs, ne_b_xs, ne_b_ii, ne_b_if, _erro, _absn, _absn},
|
||||
/*FLOAT */ {_erro, _absn, ne_b_xs, ne_b_xs, ne_b_fi, ne_b_ff, _erro, _absn, _absn},
|
||||
/*BOOL */ {_erro, _erro, _absn, _erro, _erro, _erro, _erro, _absn, _absn},
|
||||
/*ARRAY */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*MAP */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
// . ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP
|
||||
/*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro},
|
||||
/*ABSENT */ {_erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*VOID */ {_erro, _absn, ne_b_ss, ne_b_ss, ne_b_sx, ne_b_sx, _true, _true, _true},
|
||||
/*STRING */ {_erro, _absn, ne_b_ss, ne_b_ss, ne_b_sx, ne_b_sx, _true, _true, _true},
|
||||
/*INT */ {_erro, _absn, ne_b_xs, ne_b_xs, ne_b_ii, ne_b_if, _true, _true, _true},
|
||||
/*FLOAT */ {_erro, _absn, ne_b_xs, ne_b_xs, ne_b_fi, ne_b_ff, _true, _true, _true},
|
||||
/*BOOL */ {_erro, _absn, _true, _true, _true, _true, _true, _true, _true},
|
||||
/*ARRAY */ {_erro, _absn, _true, _true, _true, _true, _true, _true, _true},
|
||||
/*MAP */ {_erro, _absn, _true, _true, _true, _true, _true, _true, _true},
|
||||
}
|
||||
|
||||
var gt_dispositions = [MT_DIM][MT_DIM]BinaryFunc{
|
||||
// ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP
|
||||
/*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn},
|
||||
/*ABSENT */ {_erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*VOID */ {_erro, _absn, gt_b_ss, gt_b_ss, gt_b_sx, gt_b_sx, _erro, _absn, _absn},
|
||||
/*STRING */ {_erro, _absn, gt_b_ss, gt_b_ss, gt_b_sx, gt_b_sx, _erro, _absn, _absn},
|
||||
/*INT */ {_erro, _absn, gt_b_xs, gt_b_xs, gt_b_ii, gt_b_if, _erro, _absn, _absn},
|
||||
/*FLOAT */ {_erro, _absn, gt_b_xs, gt_b_xs, gt_b_fi, gt_b_ff, _erro, _absn, _absn},
|
||||
/*BOOL */ {_erro, _erro, _absn, _erro, _erro, _erro, _erro, _absn, _absn},
|
||||
/*ARRAY */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*MAP */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
// . ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP
|
||||
/*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro},
|
||||
/*ABSENT */ {_erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*VOID */ {_erro, _absn, gt_b_ss, gt_b_ss, gt_b_sx, gt_b_sx, _fals, _fals, _fals},
|
||||
/*STRING */ {_erro, _absn, gt_b_ss, gt_b_ss, gt_b_sx, gt_b_sx, _fals, _fals, _fals},
|
||||
/*INT */ {_erro, _absn, gt_b_xs, gt_b_xs, gt_b_ii, gt_b_if, _fals, _fals, _fals},
|
||||
/*FLOAT */ {_erro, _absn, gt_b_xs, gt_b_xs, gt_b_fi, gt_b_ff, _fals, _fals, _fals},
|
||||
/*BOOL */ {_erro, _absn, _fals, _fals, _fals, _fals, _fals, _fals, _fals},
|
||||
/*ARRAY */ {_erro, _absn, _fals, _fals, _fals, _fals, _fals, _fals, _fals},
|
||||
/*MAP */ {_erro, _absn, _fals, _fals, _fals, _fals, _fals, _fals, _fals},
|
||||
}
|
||||
|
||||
var ge_dispositions = [MT_DIM][MT_DIM]BinaryFunc{
|
||||
// ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP
|
||||
/*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn},
|
||||
/*ABSENT */ {_erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*VOID */ {_erro, _absn, ge_b_ss, ge_b_ss, ge_b_sx, ge_b_sx, _erro, _absn, _absn},
|
||||
/*STRING */ {_erro, _absn, ge_b_ss, ge_b_ss, ge_b_sx, ge_b_sx, _erro, _absn, _absn},
|
||||
/*INT */ {_erro, _absn, ge_b_xs, ge_b_xs, ge_b_ii, ge_b_if, _erro, _absn, _absn},
|
||||
/*FLOAT */ {_erro, _absn, ge_b_xs, ge_b_xs, ge_b_fi, ge_b_ff, _erro, _absn, _absn},
|
||||
/*BOOL */ {_erro, _erro, _absn, _erro, _erro, _erro, _erro, _absn, _absn},
|
||||
/*ARRAY */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*MAP */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
// . ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP
|
||||
/*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro},
|
||||
/*ABSENT */ {_erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*VOID */ {_erro, _absn, ge_b_ss, ge_b_ss, ge_b_sx, ge_b_sx, _fals, _fals, _fals},
|
||||
/*STRING */ {_erro, _absn, ge_b_ss, ge_b_ss, ge_b_sx, ge_b_sx, _fals, _fals, _fals},
|
||||
/*INT */ {_erro, _absn, ge_b_xs, ge_b_xs, ge_b_ii, ge_b_if, _fals, _fals, _fals},
|
||||
/*FLOAT */ {_erro, _absn, ge_b_xs, ge_b_xs, ge_b_fi, ge_b_ff, _fals, _fals, _fals},
|
||||
/*BOOL */ {_erro, _absn, _fals, _fals, _fals, _fals, _fals, _fals, _fals},
|
||||
/*ARRAY */ {_erro, _absn, _fals, _fals, _fals, _fals, _fals, _fals, _fals},
|
||||
/*MAP */ {_erro, _absn, _fals, _fals, _fals, _fals, _fals, _fals, _fals},
|
||||
}
|
||||
|
||||
var lt_dispositions = [MT_DIM][MT_DIM]BinaryFunc{
|
||||
// ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP
|
||||
/*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn},
|
||||
/*ABSENT */ {_erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*VOID */ {_erro, _absn, lt_b_ss, lt_b_ss, lt_b_sx, lt_b_sx, _erro, _absn, _absn},
|
||||
/*STRING */ {_erro, _absn, lt_b_ss, lt_b_ss, lt_b_sx, lt_b_sx, _erro, _absn, _absn},
|
||||
/*INT */ {_erro, _absn, lt_b_xs, lt_b_xs, lt_b_ii, lt_b_if, _erro, _absn, _absn},
|
||||
/*FLOAT */ {_erro, _absn, lt_b_xs, lt_b_xs, lt_b_fi, lt_b_ff, _erro, _absn, _absn},
|
||||
/*BOOL */ {_erro, _erro, _absn, _erro, _erro, _erro, _erro, _absn, _absn},
|
||||
/*ARRAY */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*MAP */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
// . ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP
|
||||
/*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro},
|
||||
/*ABSENT */ {_erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*VOID */ {_erro, _absn, lt_b_ss, lt_b_ss, lt_b_sx, lt_b_sx, _fals, _fals, _fals},
|
||||
/*STRING */ {_erro, _absn, lt_b_ss, lt_b_ss, lt_b_sx, lt_b_sx, _fals, _fals, _fals},
|
||||
/*INT */ {_erro, _absn, lt_b_xs, lt_b_xs, lt_b_ii, lt_b_if, _fals, _fals, _fals},
|
||||
/*FLOAT */ {_erro, _absn, lt_b_xs, lt_b_xs, lt_b_fi, lt_b_ff, _fals, _fals, _fals},
|
||||
/*BOOL */ {_erro, _absn, _fals, _fals, _fals, _fals, _fals, _fals, _fals},
|
||||
/*ARRAY */ {_erro, _absn, _fals, _fals, _fals, _fals, _fals, _fals, _fals},
|
||||
/*MAP */ {_erro, _absn, _fals, _fals, _fals, _fals, _fals, _fals, _fals},
|
||||
}
|
||||
|
||||
var le_dispositions = [MT_DIM][MT_DIM]BinaryFunc{
|
||||
// ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP
|
||||
/*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _absn, _absn},
|
||||
/*ABSENT */ {_erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*VOID */ {_erro, _absn, le_b_ss, le_b_ss, le_b_sx, le_b_sx, _erro, _absn, _absn},
|
||||
/*STRING */ {_erro, _absn, le_b_ss, le_b_ss, le_b_sx, le_b_sx, _erro, _absn, _absn},
|
||||
/*INT */ {_erro, _absn, le_b_xs, le_b_xs, le_b_ii, le_b_if, _erro, _absn, _absn},
|
||||
/*FLOAT */ {_erro, _absn, le_b_xs, le_b_xs, le_b_fi, le_b_ff, _erro, _absn, _absn},
|
||||
/*BOOL */ {_erro, _erro, _absn, _erro, _erro, _erro, _erro, _absn, _absn},
|
||||
/*ARRAY */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*MAP */ {_absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
// . ERROR ABSENT VOID STRING INT FLOAT BOOL ARRAY MAP
|
||||
/*ERROR */ {_erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro, _erro},
|
||||
/*ABSENT */ {_erro, _absn, _absn, _absn, _absn, _absn, _absn, _absn, _absn},
|
||||
/*VOID */ {_erro, _absn, le_b_ss, le_b_ss, le_b_sx, le_b_sx, _fals, _fals, _fals},
|
||||
/*STRING */ {_erro, _absn, le_b_ss, le_b_ss, le_b_sx, le_b_sx, _fals, _fals, _fals},
|
||||
/*INT */ {_erro, _absn, le_b_xs, le_b_xs, le_b_ii, le_b_if, _fals, _fals, _fals},
|
||||
/*FLOAT */ {_erro, _absn, le_b_xs, le_b_xs, le_b_fi, le_b_ff, _fals, _fals, _fals},
|
||||
/*BOOL */ {_erro, _absn, _fals, _fals, _fals, _fals, _fals, _fals, _fals},
|
||||
/*ARRAY */ {_erro, _absn, _fals, _fals, _fals, _fals, _fals, _fals, _fals},
|
||||
/*MAP */ {_erro, _absn, _fals, _fals, _fals, _fals, _fals, _fals, _fals},
|
||||
}
|
||||
|
||||
func MlrvalEquals(ma, mb *Mlrval) Mlrval {
|
||||
|
|
|
|||
|
|
@ -9,9 +9,12 @@ TOP OF LIST:
|
|||
! come up with some kind of blank-line trigger for miller and a condition for it .....
|
||||
o i want this pattern over and over
|
||||
|
||||
! csvlite
|
||||
|
||||
* UDF nexts:
|
||||
! check for multiple put -f; any/multiple put -e
|
||||
> non-flag copy from sort
|
||||
* filter -x
|
||||
! more functions
|
||||
! function metadata, w/ sort-by, for online help
|
||||
! double-check $-anything in begin/end
|
||||
|
|
@ -41,6 +44,7 @@ TOP OF LIST:
|
|||
|
||||
* some more verbs
|
||||
o easies first
|
||||
o having-fields -x feature ... or something
|
||||
o join, stats1, stats2
|
||||
|
||||
* double-check rand-seeding
|
||||
|
|
|
|||
|
|
@ -261,10 +261,10 @@ echo; run_mlr --from u/s.dkvp put -q '@sum += $x; @count += 1; print'
|
|||
echo; run_mlr --from u/s.dkvp put -q '@sum += $x; @count += 1; print @sum'
|
||||
echo; run_mlr --from u/s.dkvp put -q '@sum += $x; @count += 1; print @sum, @count'
|
||||
|
||||
echo; run_mlr --from s put -q 'print'
|
||||
echo; run_mlr --from s put -q 'print $x'
|
||||
echo; run_mlr --from s put -q 'print $x,$y'
|
||||
echo; run_mlr --from s put -q 'print $x,$y,$i'
|
||||
echo; run_mlr --from u/s.dkvp put -q 'print'
|
||||
echo; run_mlr --from u/s.dkvp put -q 'print $x'
|
||||
echo; run_mlr --from u/s.dkvp put -q 'print $x,$y'
|
||||
echo; run_mlr --from u/s.dkvp put -q 'print $x,$y,$i'
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
echo; run_mlr --from u/s.dkvp put -q '@sum += $x; dump'
|
||||
|
|
|
|||
|
|
@ -2503,13 +2503,7 @@ mlr --from u/s.dkvp put -q @sum += $x; @count += 1; print @sum, @count
|
|||
|
||||
|
||||
----------------------------------------------------------------
|
||||
mlr --from s put -q print
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
mlr --from u/s.dkvp put -q print
|
||||
|
||||
|
||||
|
||||
|
|
@ -2517,45 +2511,27 @@ mlr --from s put -q print
|
|||
|
||||
|
||||
----------------------------------------------------------------
|
||||
mlr --from s put -q print $x
|
||||
mlr --from u/s.dkvp put -q print $x
|
||||
0.3467901443380824
|
||||
-0.7586799647899636
|
||||
0.7586799647899636
|
||||
0.20460330576630303
|
||||
-0.38139939387114097
|
||||
0.5732889198020006
|
||||
0.5271261600918548
|
||||
0.6117840605678454
|
||||
-0.5985540091064224
|
||||
0.03144187646093577
|
||||
0.5026260055412137
|
||||
0.38139939387114097
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
mlr --from s put -q print $x,$y
|
||||
mlr --from u/s.dkvp put -q print $x,$y
|
||||
0.3467901443380824 0.7268028627434533
|
||||
-0.7586799647899636 0.5221511083334797
|
||||
0.7586799647899636 0.5221511083334797
|
||||
0.20460330576630303 0.33831852551664776
|
||||
-0.38139939387114097 0.13418874328430463
|
||||
0.5732889198020006 0.8636244699032729
|
||||
0.5271261600918548 0.49322128674835697
|
||||
0.6117840605678454 0.1878849191181694
|
||||
-0.5985540091064224 0.976181385699006
|
||||
0.03144187646093577 0.7495507603507059
|
||||
0.5026260055412137 0.9526183602969864
|
||||
0.38139939387114097 0.13418874328430463
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
mlr --from s put -q print $x,$y,$i
|
||||
mlr --from u/s.dkvp put -q print $x,$y,$i
|
||||
0.3467901443380824 0.7268028627434533 1
|
||||
-0.7586799647899636 0.5221511083334797 2
|
||||
0.7586799647899636 0.5221511083334797 2
|
||||
0.20460330576630303 0.33831852551664776 3
|
||||
-0.38139939387114097 0.13418874328430463 4
|
||||
0.5732889198020006 0.8636244699032729 5
|
||||
0.5271261600918548 0.49322128674835697 6
|
||||
0.6117840605678454 0.1878849191181694 7
|
||||
-0.5985540091064224 0.976181385699006 8
|
||||
0.03144187646093577 0.7495507603507059 9
|
||||
0.5026260055412137 0.9526183602969864 10
|
||||
0.38139939387114097 0.13418874328430463 4
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue