git.annexia.org
/
whenjobs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Allow job names to be arbitrary OCaml expressions.
[whenjobs.git]
/
lib
/
pa_when.ml
diff --git
a/lib/pa_when.ml
b/lib/pa_when.ml
index
764cabc
..
6e0592d
100644
(file)
--- a/
lib/pa_when.ml
+++ b/
lib/pa_when.ml
@@
-84,8
+84,10
@@
let lift_expr = M.Expr.meta_expr
(* Handle a top level statement. *)
let rec call_stmt name (_loc, stmt, sh) =
(* Handle a top level statement. *)
let rec call_stmt name (_loc, stmt, sh) =
- let name = if name <> "" then name else unique_job_name () in
- let name = <:expr< $str:name$ >> in
+ let name =
+ match name with
+ | None -> let name = unique_job_name () in <:expr< $str:name$ >>
+ | Some name -> name in
match stmt with
| `When e -> when_stmt _loc name e sh
| `Every p -> every_stmt _loc name p sh
match stmt with
| `When e -> when_stmt _loc name e sh
| `Every p -> every_stmt _loc name p sh
@@
-211,8
+213,8
@@
EXTEND Gram
(* "str_item" is a top level statement in an OCaml program. *)
str_item: LEVEL "top" [
(* "str_item" is a top level statement in an OCaml program. *)
str_item: LEVEL "top" [
- [ s = statement -> call_stmt
""
s ]
- | [ "job"; name =
STRING; s = statement -> call_stmt name
s ]
+ [ s = statement -> call_stmt
None
s ]
+ | [ "job"; name =
expr; s = statement -> call_stmt (Some name)
s ]
];
END
];
END