This commit is contained in:
2025-08-31 12:14:00 +02:00
parent 3a3f1765ab
commit 71fa80acba
2 changed files with 27 additions and 13 deletions

View File

@@ -25,14 +25,13 @@
(':t (':str-cat (':t2ot-elt k) ":"))) (':t (':str-cat (':t2ot-elt k) ":")))
(:macro @ ( (k(:c-paren-eval _)) v ) (:macro @ ( (k(:c-paren-eval _)) v )
(':t k ": " v)) (':t (':dict-key (':atm-to-str k)) v))
(:macro @ ( (k(:c-paren-eval _)) (v(:c-atm _)) ) (:macro @ ( (k(:c-paren-eval _)) (v(:c-paren-eval _)) )
(':t (':str-cat (':str-cat (':atm-to-str k) ": ") (':atm-to-str v) ))) (':t (':str-cat (':str-cat (':atm-to-str k) ": ") (':atm-to-str v) )))
(:macro @ ( (k(:c-paren-eval _)) v .. other) (:macro @ ( (k(:c-paren-eval _)) v .. other)
(k v) (':t (':dict-key (':atm-to-str k)) v other))
other)
(:macro t2ot-elt ( hd ) (:macro t2ot-elt ( hd )
(':atm-to-str hd)) (':atm-to-str hd))
@@ -57,9 +56,14 @@
(':indent hd) (':indent hd)
(':indent tl)) (':indent tl))
(:macro indent-each ())
(:macro indent-each ( hd )
(':indent hd))
(:macro indent-each ( hd .. tl ) (:macro indent-each ( hd .. tl )
(':indent hd) (':indent hd)
(':indent tl)) (':indent-each tl))
(:macro rm-first (x .. tl) (:macro rm-first (x .. tl)
tl) tl)
@@ -67,6 +71,15 @@
(:macro indent ( (x(:c-li0-eq _ :tree)) ) (:macro indent ( (x(:c-li0-eq _ :tree)) )
(':tree (':indent-each (':rm-first (':unpack x))))) (':tree (':indent-each (':rm-first (':unpack x)))))
(:macro indent ( (x(:c-li0-eq _ :atm-to-str)) )
(':atm-to-str (':indent-each (':rm-first (':unpack x)))))
(:macro indent ( (x(:c-li0-eq _ :yot)) )
(':yot (':indent-each (':rm-first (':unpack x)))))
(:macro indent ( (x(:c-li0-eq _ :dict-key)) )
(':dict-key (':indent-each (':rm-first (':unpack x)))))
(name "Complex CI/CD Pipeline") (name "Complex CI/CD Pipeline")
(on (on

View File

@@ -830,11 +830,17 @@ module SExprMacroExp = struct
else else
s, ctx s, ctx
end end
and eval_root_while ctx s = begin
let s, ch, ctx = eval ctx s in
if ch then
SExpr.aggr_flat_map eval_root_while ctx s
else
s, ctx
end
let do_eval s = let do_eval s =
eval_while [] s |> fst eval_root_while [] s |> fst
(* only use this for testing! *)
let sparse src = let sparse src =
PC.doparse PC.doparse
Format.err_formatter Format.err_formatter
@@ -925,13 +931,8 @@ let read_all_stdin () =
let () = let () =
let parsr = SExpr.parse_top () in
let src = read_all_stdin () in let src = read_all_stdin () in
let v = PC.doparse let v = SExprMacroExp.sparse src in
Format.err_formatter
{ source = src; path = "top" }
parsr in
let v = Option.get v in
let v = SExprMacroExp.do_eval v in let v = SExprMacroExp.do_eval v in
Format.set_margin 40; Format.set_margin 40;