* Add documentation to modules, and some constants and types Signed-off-by: Nick Cameron <nrc@ncameron.org> * Improve the language reference Signed-off-by: Nick Cameron <nrc@ncameron.org> --------- Signed-off-by: Nick Cameron <nrc@ncameron.org>
31 lines
1.5 KiB
Markdown
31 lines
1.5 KiB
Markdown
---
|
|
title: "Attributes"
|
|
excerpt: "Documentation of the KCL language for the Zoo Design Studio."
|
|
layout: manual
|
|
---
|
|
|
|
Attributes are syntax which affects the language item they annotate. In KCL they are indicated using `@`. For example, `@settings` affects the file in which it appears.
|
|
|
|
There are two kinds of attributes: named and unnamed attributes. Named attributes (e.g., `@settings`) have a name immediately after the `@` (e.g., `settings`) and affect their surrounding scope. Unnamed attributes have no name and affect the following item, e.g.,
|
|
|
|
```kcl,norun
|
|
@(lengthUnit = ft, coords = opengl)
|
|
import "tests/inputs/cube.obj"
|
|
```
|
|
|
|
has an unnamed attribute on the `import` statement.
|
|
|
|
Named and unnamed attributes may take a parenthesized list of arguments (like a function). Named attributes may also appear without any arguments (e.g., `@no_std`).
|
|
|
|
## Named attributes
|
|
|
|
The `@settings` attribute affects the current file and accepts the following arguments: `defaultLengthUnit`, `defaultAngleUnit`, and `kclVersion`. See [settings](/docs/kcl-lang/settings) for details.
|
|
|
|
The `@no_std` attribute affects the current file, takes no arguments, and causes the standard library to not be implicitly available. It can still be used by being explicitly imported.
|
|
|
|
## Unnamed attributes
|
|
|
|
Unnamed attributes may be used on `import` statements when importing non-KCL files. See [projects, modules, and imports](/docs/kcl-lang/modules) for details.
|
|
|
|
Other unnamed attributes are used on functions inside the standard library, but these are not available in user code.
|