From 1ab8db590b41ed86a2307258ccbb62a6652a4ae7 Mon Sep 17 00:00:00 2001 From: Michael Sippel <micha@fragmental.art> Date: Tue, 3 Oct 2023 04:19:33 +0200 Subject: [PATCH] typedb: add more advanced examples with dummy-polymorphism of cut / sort --- typedb | 56 ++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/typedb b/typedb index eee1593..ce1177c 100644 --- a/typedb +++ b/typedb @@ -24,30 +24,10 @@ ::seq \(-s\|--separator\) : [0-9]* <1: <Seq ℕ>~<Seq <PosInt 10 BigEndian>~<Seq <Digit 10>~Char>~<SepSeq Char ':'>~<Seq Char> -::sort -n\( .*\)* ->0: <Seq ℕ>~<Seq <PosInt 10 BigEndian>~<Seq <Digit 10>~Char>>~<SepSeq Char '\n'>~<Seq Char> -<1: <Seq ℕ>~<Seq <PosInt 10 BigEndian>~<Seq <Digit 10>~Char>>~<SepSeq Char '\n'>~<Seq Char> - -::sort -M\( .*\)* ->0: <Seq Month~LocaleShortMonth~<Seq Char>>~<SepSeq Char '\n'>~<Seq Char> -<1: <Seq Month~LocaleShortMonth~<Seq Char>>~<SepSeq Char '\n'>~<Seq Char> - -::sort\( .*\)* ->0: <Seq <Seq Char>>~<SepSeq Char '\n'>~<Seq Char> -<1: <Seq <Seq Char>>~<SepSeq Char '\n'>~<Seq Char> - ::\(head\|tail\)\(\| .*\) >0: <Seq <Seq Char>>~<SepSeq Char '\n'>~<Seq Char> <1: <Seq <Seq Char>>~<SepSeq Char '\n'>~<Seq Char> -::cut -d[ ]*: -f[0-9]* ->0: <Seq <Seq <Seq Char>>~<SepSeq Char ':'>~<Seq <Seq Char>>~<SepSeq Char '\n'>~<Seq Char> -<1: <Seq <Seq Char>>~<SepSeq Char '\n'>~<Seq Char> - -::cut -d[ ]*/ -f[0-9]* ->0: <Seq <Seq <Seq Char>>~<SepSeq Char '/'>~<Seq Char>>~<SepSeq Char '\n'>~<Seq Char> -<1: <Seq <Seq Char>>~<SepSeq Char '\n'>~<Seq Char> - ::ls\( .*\)* -l\( .*\) <1: <Seq FileInfo>~<Seq <Seq Char>>~<SepSeq Char '\n'>~<Seq Char> @@ -116,10 +96,46 @@ >0: <Seq Path~<Seq PathSegment~<Seq Char>>~<SepSeq Char '/'>~<Seq Char>>~<SepSeq Char ':'>~<Seq Char> <1: <Seq Date~<TimeSince UnixEpoch>~<Duration Seconds>~ℕ~<PosInt 10 BigEndian>~<Seq <Digit 10>~Char>>~<SepSeq Char '\n'>~<Seq Char> +::xargs -d[ ]*: stat -c %[WXYZ],%n +>0: <Seq Path~<Seq PathSegment~<Seq Char>>~<SepSeq Char '/'>~<Seq Char>>~<SepSeq Char ':'>~<Seq Char> +<1: <Seq <Tuple Date~<TimeSince UnixEpoch>~<Duration Seconds>~ℕ~<PosInt 10 BigEndian>~<Seq <Digit 10>~Char> ',' Path~<Seq PathSegment~<Seq Char>>~<SepSeq Char '/'>~<Seq Char>>~<Seq Char>>~<SepSeq Char '\n'>~<Seq Char> + ::xargs -d[ ]*: stat -c %[wxyz] >0: <Seq Path~<Seq PathSegment~<Seq Char>>~<SepSeq Char '/'>~<Seq Char>>~<SepSeq Char ':'>~<Seq Char> <1: <Seq Date~ISO-8601~<Seq Char>>~<SepSeq Char '\n'>~<Seq Char> +::sort -t, -k1 -n +>0: <Seq <Tuple Date~<TimeSince UnixEpoch>~<Duration Seconds>~ℕ~<PosInt 10 BigEndian>~<Seq <Digit 10>~Char> ',' Path~<Seq PathSegment~<Seq Char>>~<SepSeq Char '/'>~<Seq Char>>~<Seq Char>>~<SepSeq Char '\n'>~<Seq Char> +<1: <Seq <Tuple Date~<TimeSince UnixEpoch>~<Duration Seconds>~ℕ~<PosInt 10 BigEndian>~<Seq <Digit 10>~Char> ',' Path~<Seq PathSegment~<Seq Char>>~<SepSeq Char '/'>~<Seq Char>>~<Seq Char>>~<SepSeq Char '\n'>~<Seq Char> + +::cut -d[ ]*, -f[ ]*1 +>0: <Seq <Tuple Date~<TimeSince UnixEpoch>~<Duration Seconds>~ℕ~<PosInt 10 BigEndian>~<Seq <Digit 10>~Char> ',' Path~<Seq PathSegment~<Seq Char>>~<SepSeq Char '/'>~<Seq Char>>~<Seq Char>>~<SepSeq Char '\n'>~<Seq Char> +<1: <Seq Date~<TimeSince UnixEpoch>~<Duration Seconds>~ℕ~<PosInt 10 BigEndian>~<Seq <Digit 10>~Char>>~<SepSeq Char '\n'>~<Seq Char> + +::cut -d[ ]*, -f[ ]*2 +>0: <Seq <Tuple Date~<TimeSince UnixEpoch>~<Duration Seconds>~ℕ~<PosInt 10 BigEndian>~<Seq <Digit 10>~Char> ',' Path~<Seq PathSegment~<Seq Char>>~<SepSeq Char '/'>~<Seq Char>>~<Seq Char>>~<SepSeq Char '\n'>~<Seq Char> +<1: <Seq Path~<Seq PathSegment~<Seq Char>>~<SepSeq Char '/'>~<Seq Char>>~<SepSeq Char '\n'>~<Seq Char> + +::cut -d[ ]*: -f[0-9]* +>0: <Seq <Seq <Seq Char>>~<SepSeq Char ':'>~<Seq <Seq Char>>~<SepSeq Char '\n'>~<Seq Char> +<1: <Seq <Seq Char>>~<SepSeq Char '\n'>~<Seq Char> + +::cut -d[ ]*/ -f[0-9]* +>0: <Seq <Seq <Seq Char>>~<SepSeq Char '/'>~<Seq Char>>~<SepSeq Char '\n'>~<Seq Char> +<1: <Seq <Seq Char>>~<SepSeq Char '\n'>~<Seq Char> + +::sort -n\( .*\)* +>0: <Seq ℕ>~<Seq <PosInt 10 BigEndian>~<Seq <Digit 10>~Char>>~<SepSeq Char '\n'>~<Seq Char> +<1: <Seq ℕ>~<Seq <PosInt 10 BigEndian>~<Seq <Digit 10>~Char>>~<SepSeq Char '\n'>~<Seq Char> + +::sort -M\( .*\)* +>0: <Seq Month~LocaleShortMonth~<Seq Char>>~<SepSeq Char '\n'>~<Seq Char> +<1: <Seq Month~LocaleShortMonth~<Seq Char>>~<SepSeq Char '\n'>~<Seq Char> + +::sort\( .*\)* +>0: <Seq <Seq Char>>~<SepSeq Char '\n'>~<Seq Char> +<1: <Seq <Seq Char>>~<SepSeq Char '\n'>~<Seq Char> + ::xargs rm\( .*\)* >0: <Seq Path~<Seq PathSegment~<Seq Char>>~<SepSeq Char '/'>~<Seq Char>>~<SepSeq Char '\n'>~<Seq Char>