summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/value_checker.ml18
-rw-r--r--src/value_checker.mli5
2 files changed, 23 insertions, 0 deletions
diff --git a/src/value_checker.ml b/src/value_checker.ml
new file mode 100644
index 0000000..ed7c5d1
--- /dev/null
+++ b/src/value_checker.ml
@@ -0,0 +1,18 @@
+type value_constraint = Regex of string | External of string * string
+
+exception Bad_validator of string
+
+let validate_value validators value_constraint value =
+ match value_constraint with
+ | Regex s ->
+ (try
+ let _ = Pcre.exec ~pat:s value in true
+ with Not_found -> false)
+ | External (t, c) ->
+ try
+ let validator = Hashtbl.find validators t in
+ let result = Unix.system (Printf.sprintf "%s %s %s" validator c value) in
+ match result with
+ | Unix.WEXITED 0 -> true
+ | _ -> false
+ with Not_found -> raise (Bad_validator t)
diff --git a/src/value_checker.mli b/src/value_checker.mli
new file mode 100644
index 0000000..96d8f3c
--- /dev/null
+++ b/src/value_checker.mli
@@ -0,0 +1,5 @@
+type value_constraint = Regex of string | External of string * string
+
+exception Bad_validator of string
+
+val validate_value : (string, string) Hashtbl.t -> value_constraint -> string -> bool