Skip to content

Commit 71acd76

Browse files
docs: add metadata block in @mtkmodel
1 parent a59f7ef commit 71acd76

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

docs/src/basics/MTKLanguage.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ set to `false`.
3131
- `@equations`: for the list of equations
3232
- `@extend`: for extending a base system and unpacking its unknowns
3333
- `@icon` : for embedding the model icon
34+
- `@metadata`: for assigning key-value pairs as model level metadata
3435
- `@parameters`: for specifying the symbolic parameters
3536
- `@structural_parameters`: for specifying non-symbolic parameters
3637
- `@variables`: for specifying the unknowns
@@ -94,6 +95,16 @@ end
9495
v_for_defaults => 2.0
9596
end
9697
end
98+
99+
struct Author end
100+
struct ModelVersion end
101+
@mtkmodel ModelD begin
102+
@description "A component with some metadata."
103+
@metadata begin
104+
Author = "Test Author"
105+
ModelVersion = "1.0.0"
106+
end
107+
end
97108
```
98109

99110
#### `@description`
@@ -257,6 +268,30 @@ using ModelingToolkit
257268
end
258269
```
259270

271+
#### `@metadata` begin block
272+
273+
- Assign key-value pairs as model level metadata.
274+
- The keys must be `DataType` to avoid any key collisions.
275+
- Assignments can be made using either `=` or `=>`.
276+
- Metadata can be retrieved using [`getmetadata`](@ref).
277+
- Metadata can be set using [`setmetadata`](@ref).
278+
279+
```@example mtkmodel-example
280+
using ModelingToolkit
281+
282+
struct Author end
283+
struct ModelVersion end
284+
285+
@mtkmodel MetadataModel begin
286+
@metadata begin
287+
Author = "Test Author"
288+
ModelVersion => "1.0.0"
289+
end
290+
end
291+
@named model = MetadataModel()
292+
getmetadata(model, Author, nothing) == "Test Author"
293+
```
294+
260295
#### A begin block
261296

262297
- Any other Julia operations can be included with dedicated begin blocks.

0 commit comments

Comments
 (0)