Macros
SevenMark supports various macro elements for dynamic content generation.
Time Macros
Current Time
Display the current timestamp:
sevenmark
Current time: [now]Age Calculation
Calculate age from a given date:
sevenmark
Age calculation: [age(1990-01-15)]
Born in 1995: [age(1995-06-20)]Utility Macros
Line Break
Insert a line break:
sevenmark
Line break:[br]Next lineNull Macro
The null macro produces no output:
sevenmark
This text[null]continues without interruption.Macro Usage in Complex Elements
Macros can be used within other elements:
sevenmark
{{{#list #1
[[Item with current time: [now]]]
[[Person born in 1990 is [age(1990-01-01)] years old]]
[[Line 1[br]Line 2 in same item]]
}}}In Tables
sevenmark
{{{#table
[[[[Name]] [[Age]]]]
[[[[John]] [[[age(1985-03-15)]]]]]
[[[[Updated]] [[[now]]]]]
}}}In Styled Text
sevenmark
{{{ #style="color:blue" Last updated: [now] }}}Variable System
Define Variables
Create template variables using {{{#define}}}:
sevenmark
{{{#define #name="projectName" #value="SevenMark"}}}
{{{#define #name="version" #value="2.0"}}}
{{{#define #name="author" #value="SevenWiki Team"}}}Variable Substitution
Reference defined variables using the [var()] macro:
sevenmark
Welcome to [var(projectName)] version [var(version)]!
Created by [var(author)].Variable Usage Examples
Document Header Template
sevenmark
{{{#define #name="docTitle" #value="API Reference"}}}
{{{#define #name="docVersion" #value="v1.2.3"}}}
{{{#define #name="lastUpdate" #value="2024-01-15"}}}
# [var(docTitle)] - [var(docVersion)]
Last updated: [var(lastUpdate)]Repeated Content
sevenmark
{{{#define #name="companyName" #value="Acme Corporation"}}}
{{{#define #name="supportEmail" #value="support@acme.com"}}}
Welcome to [var(companyName)]!
For assistance, contact [var(companyName)] support at [var(supportEmail)].
© 2024 [var(companyName)]. All rights reserved.Variable Scope and Resolution
- Variables are resolved in a forward-only manner to prevent circular dependencies
- Variables must be defined before they are used
- Variable shadowing: Later definitions override earlier ones with the same name
- Variable substitution occurs during the preprocessing stage
- Variables can be used in any SevenMark element after definition
sevenmark
{{{#define #name="greeting" #value="Hello"}}}
# [var(greeting)], World!
{{{#list #1
[[First item uses: [var(greeting)]]]
[[Second item also uses: [var(greeting)]]]
}}}Important Notes
- Variable names should be defined using the
#nameparameter - Variable values should be defined using the
#valueparameter - Variables cannot reference other variables (no nested variable expansion)
- Undefined variables will remain as
[var(name)]in the output