From ecb6fd62c275af03a07d892313ab3914d81cd40e Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Thu, 23 Nov 2017 10:06:22 +0100 Subject: Added text functions --- evaluator.ml | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'evaluator.ml') diff --git a/evaluator.ml b/evaluator.ml index 2809507..f718e1f 100755 --- a/evaluator.ml +++ b/evaluator.ml @@ -307,11 +307,32 @@ let () = begin register3 "if" (t_bool, t_bool, t_bool) f_bool if_; register3 "if" (t_bool, t_string, t_string) f_string if_; - register1 "abs" t_int f_number D.Num.abs; - register1 "int" t_int f_number D.Num.floor; + register1 "abs" t_int f_number D.Num.abs; + register1 "int" t_int f_number D.Num.floor; register1 "rounddown" t_int f_number D.Num.round_down; register1 "round" t_int f_number D.Num.round; + register1 "trim" t_string f_string UTF8.trim; + register1 "right" t_string f_string (fun x -> UTF8.get x (-1)); + register2 "right" (t_string, t_int) f_string ( + fun t n -> + let n' = D.Num.to_int n in + UTF8.sub t (-(n')) n' + ); + register1 "left" t_string f_string (fun x -> UTF8.get x 0); + register2 "left" (t_string, t_int) f_string ( + fun t n -> + let n' = D.Num.to_int n in + UTF8.sub t 0 n' + ); + register1 "len" t_string f_number (fun x -> D.Num.of_int @@ UTF8.length x); + register1 "lenb" t_string f_number (fun x -> D.Num.of_int @@ String.length @@ UTF8.to_utf8string x); + register1 "lower" t_string f_string UTF8.lower; + register1 "unicode" t_string f_number (fun x -> D.Num.of_int @@ UTF8.code x); + register1 "unichar" t_int f_string (fun x -> UTF8.char @@ D.Num.to_int x); + register1 "upper" t_string f_string UTF8.upper; + register3 "substitute" (t_string, t_string, t_string) f_string UTF8.replace; + register2 "rept" (t_string, t_int) f_string (fun t n -> UTF8.repeat (D.Num.to_int n) t); let module CompareBool = Make_Compare(D.Bool) in CompareBool.register t_bool; -- cgit v1.2.3