| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- #nop vim: set filetype=tt:;
- /*
- 本文件属于 PaoTin++ 的一部分。
- PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
- 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
- */
- #nop 本文件是 xtintin 的一部分,实现了一些 FP 风格函数;
- #func {map} {
- #local table {%1};
- #local body {%2};
- #local key {};
- #local value {};
- #replace {body} {KEY} {\$key};
- #replace {body} {VALUE} {\$value};
- #local newTable {};
- #local key {};
- #foreach {*table[]} {key} {
- #local value {$table[$key]};
- #line sub {var;functions;escapes} #format value {%s} {$body};
- #cat newTable {{$key}{$value}};
- };
- #return {$newTable};
- };
- #func {mapIf} {
- #local table {%1};
- #local cond {%2};
- #local body {%3};
- #local key {};
- #local value {};
- #replace {cond} {KEY} {\$key};
- #replace {cond} {VALUE} {\$value};
- #replace {body} {KEY} {\$key};
- #replace {body} {VALUE} {\$value};
- #local newTable {};
- #local key {};
- #foreach {*table[]} {key} {
- #local value {$table[$key]};
- #local c {};
- #line sub {var;functions;escapes} #format c {%s} {$cond};
- #if { $c } {
- #line sub {var;functions;escapes} #format value {%s} {$body};
- };
- #cat newTable {{$key}{$value}};
- };
- #return {$newTable};
- };
- #func {filter} {
- #local table {%1};
- #local cond {%2};
- #local key {};
- #local value {};
- #replace {cond} {KEY} {\$key};
- #replace {cond} {VALUE} {\$value};
- #local newTable {};
- #local key {};
- #foreach {*table[]} {key} {
- #local value {$table[$key]};
- #local c {};
- #line sub {var;functions;escapes} #format c {%s} {$cond};
- #if { $c } {
- #cat newTable {{$key}{$value}};
- };
- };
- #return {$newTable};
- };
- #func {filterMap} {
- #local table {%1};
- #local cond {%2};
- #local body {%3};
- #local key {};
- #local value {};
- #replace {cond} {KEY} {\$key};
- #replace {cond} {VALUE} {\$value};
- #replace {body} {KEY} {\$key};
- #replace {body} {VALUE} {\$value};
- #local newTable {};
- #local key {};
- #foreach {*table[]} {key} {
- #local value {$table[$key]};
- #local c {};
- #line sub {var;functions;escapes} #format c {%s} {$cond};
- #if { $c } {
- #line sub {var;functions;escapes} #format value {%s} {$body};
- #cat newTable {{$key}{$value}};
- };
- };
- #return {$newTable};
- };
- #func {transform} {
- #local strList {%1};
- #local body {%2};
- #local value {};
- #replace {body} {VALUE} {\$value};
- #local newStrList {};
- #foreach {$strList} {value} {
- #line sub {var;functions;escapes} #format value {%s} {$body};
- #cat newStrList {$value;};
- };
- #replace newStrList {;$} {};
- #return {$newStrList};
- };
- #func {transformIf} {
- #local strList {%1};
- #local cond {%2};
- #local body {%3};
- #replace {cond} {VALUE} {\$value};
- #replace {body} {VALUE} {\$value};
- #local value {};
- #local newStrList {};
- #foreach {$strList} {value} {
- #local c {};
- #line sub {var;functions;escapes} #format c {%s} {$cond};
- #if { $c } {
- #line sub {var;functions;escapes} #format value {%s} {$body};
- };
- #cat newStrList {$value;};
- };
- #replace newStrList {;$} {};
- #return {$newStrList};
- };
- #func {select} {
- #local strList {%1};
- #local cond {%2};
- #local value {};
- #replace {cond} {VALUE} {\$value};
- #local newStrList {};
- #local value {};
- #foreach {$strList} {value} {
- #local c {};
- #line sub {var;functions;escapes} #format c {%s} {$cond};
- #if { $c } {
- #cat newStrList {$value;};
- };
- };
- #replace newStrList {;$} {};
- #return {$newStrList};
- };
- #func {selectTransform} {
- #local strList {%1};
- #local cond {%2};
- #local body {%3};
- #replace {cond} {VALUE} {\$value};
- #replace {body} {VALUE} {\$value};
- #local value {};
- #local newStrList {};
- #foreach {$strList} {value} {
- #local c {};
- #line sub {var;functions;escapes} #format c {%s} {$cond};
- #if { $c } {
- #line sub {var;functions;escapes} #format value {%s} {$body};
- #cat newStrList {$value;};
- };
- };
- #replace newStrList {;$} {};
- #return {$newStrList};
- };
|