declaring functions - iamgio/quarkdown GitHub Wiki

Functions can also be declared in Quarkdown sources thanks to the .function function (everything is a function!).

It accepts two arguments: the function name and its body.

.function {myfunc}
  Hello, world!

It can then be called through a normal function call:

.myfunc <!-- Hello, world! -->

Note that there are no return statements: every reached statement is part of the output.

.function {myfunc}
  .if {false}
    A
  B

.myfunc <!-- B -->

The body parameter is a lambda: each parameter of the function is as a parameter of the lambda block. Each argument can be accessed within the function body as a variable (which, in Quarkdown, is basically a function with no parameters).

.function {greet}
  to from:
  Hello, .to from .from!
 
.greet {world} {John} <!-- Hello, world from John! -->

Arguments can be named as well to improve readability:

.greet {world} from:{John}

Any Markdown content can be returned:

.function {greet}
  to from:
  **Hello, .to** from .from!

Quarkdown is weakly typed and any kind of value can be returned:

.function {area}
  width height:
  .multiply {width} by:{height}

The area of the rectangle is **.area {4} {2}**.
.function {isadult}
  age:
  .isgreater {.age} than:{18} orequals:{yes}


.if {.isadult age:{26}}
  You're an adult!
⚠️ **GitHub.com Fallback** ⚠️