using Mackerel;
using static Mackerel.Macros;
var macro = Block(
Buffer(-1)
Write("# HTML utility macro"),
Set("H2_COUNT", 0),
Write("# `H2` is an incrementing instruction, using an environment"),
Write("# variable to maintain its state."),
Set("H2",
(string title) =>
Get<int>(
"H2_COUNT",
H2_COUNT => Block(
Update("H2_COUNT", H2_COUNT + 1),
WriteLine($"<h2>{H2_COUNT}. {title}</h2>"))
)
),
Buffer(1),
Get<Func<string, Macro>>("H2",
H2 => Block(
H2("First Section"),
H2("Second Section"),
H2("Third Section")
)
),
Buffer(0),
WriteLine("<HTML>"),
WAR(1),
RAW(Text("</HTML>")),
)
);