X-Git-Url: https://git.xandkar.net/?p=dups.git;a=blobdiff_plain;f=dups.ml;h=7c03773b48030904b1c5d100e5c840f014ae4340;hp=a2e0181b5ae84cad13245337df20cb989395fd25;hb=9d01fa28f425150b98f7759d6ff6dd646a41e41a;hpb=389dccafe4b8d3353db36f0cab3de5b9ea8de9ce diff --git a/dups.ml b/dups.ml index a2e0181..7c03773 100644 --- a/dups.ml +++ b/dups.ml @@ -380,7 +380,7 @@ type output = type opt = { input : input ; output : output - ; ignore : Str.regexp option + ; ignore : string -> bool ; sample : int } @@ -396,15 +396,9 @@ let make_input_stream input ignore ~metrics = Stream.filter input ~f:(fun {File.path; size} -> M.file_considered metrics ~size; let empty = size = 0 in + let ignored = ignore path in if empty then M.file_empty metrics; - let ignored = - match ignore with - | Some regexp when (Str.string_match regexp path 0) -> - M.file_ignored metrics ~size; - true - | Some _ | None -> - false - in + if ignored then M.file_ignored metrics ~size; (not empty) && (not ignored) ) @@ -490,7 +484,7 @@ let get_opt () : opt = in let input = ref Stdin in let output = ref Stdout in - let ignore = ref None in + let ignore = ref (fun _ -> false) in let sample = ref 256 in let spec = [ ( "-out" @@ -502,7 +496,9 @@ let get_opt () : opt = , " Output to this directory instead of stdout." ) ; ( "-ignore" - , Arg.String (fun regexp -> ignore := Some (Str.regexp regexp)) + , Arg.String (fun regexp -> + let regexp = Str.regexp regexp in + ignore := fun string -> Str.string_match regexp string 0) , " Ignore file paths which match this regexp pattern (see Str module)." ) ; ( "-sample"