My working unpac repository
1(* Exercise each function in Stringext. *)
2
3let go () =
4 Printf.printf "After the space: %S\n"
5 (Stringext.string_after "Mozart" 3);
6 Printf.printf "Like Str.quote (but without Str): %S\n"
7 (Stringext.quote "Some specials *+*+");
8 Printf.printf "Split makes %i splits\n"
9 (List.length (Stringext.split "Mary had a little lamb" ~on:' '));
10 Printf.printf "Full split makes %i splits\n"
11 (List.length (Stringext.full_split "Mary had a little lamb" ~on:' '));
12 Printf.printf "Trimming: %S\n"
13 (Stringext.trim_left " <--- to here");
14 Printf.printf "split_trim_left: ";
15 let strings = Stringext.split_trim_left "+one +two -three" ~on:" " ~trim:"+-" in
16 List.iter (Printf.printf "%S ") strings;
17 Printf.printf "\n";
18 Printf.printf "'a' with of_char is: %S\n"
19 (Stringext.of_char 'a');
20 Printf.printf "of_list makes: %S\n"
21 (Stringext.of_list (Stringext.to_list "chimpanzee"));
22 Printf.printf "of_array and to_array makes: %S\n"
23 (Stringext.of_array (Stringext.to_array "marzipan"));
24 Printf.printf "find_from: %s\n"
25 begin match Stringext.find_from ~start:5 "again and again" ~pattern:"again" with
26 | None -> ""
27 | Some x -> string_of_int x
28 end;
29 Printf.printf "replace_all: %S\n"
30 (Stringext.replace_all "Again. And again. And again." ~pattern:"." ~with_:"!!");
31 Printf.printf "replace_all_assoc: %S\n"
32 (Stringext.replace_all_assoc
33 "Again. And again. And again" [(".", "!!"); ("And", "Yet")]);
34 begin match Stringext.cut "cut<-->here" ~on:"<-->" with
35 | Some (l, r) -> Printf.printf "cut: %S %S\n" l r
36 | None -> ()
37 end;
38 begin match Stringext.rcut "cut<-->here" ~on:"<-->" with
39 | Some (l, r) -> Printf.printf "rcut: %S %S\n" l r
40 | None -> ()
41 end;
42 Printf.printf "chop_prefix: %S\n"
43 begin match Stringext.chop_prefix "- list item" ~prefix:"- " with
44 | None -> "" (* returns none if prefix not found *)
45 | Some x -> x
46 end;
47 Printf.printf "drop: %S\n"
48 (Stringext.drop "-------->" 5);
49 Printf.printf "take: %S\n"
50 (Stringext.take "-------->" 5);
51 Printf.printf "trim_left_sub: %S\n"
52 (Stringext.trim_left_sub "-23-56+89+" ~pos:0 ~len:10 ~chars:"+-")
53
54let () =
55 match Sys.argv with
56 | [|_|] -> go ()
57 | _ -> Printf.eprintf "stringext example: unknown command line\n"