Write docs
This commit is contained in:
parent
36dd23a7ab
commit
e756c7eac1
@ -36,7 +36,7 @@ You may reference the [grammar file](tree-sitter-dust/grammar.js) and the [Tree
|
|||||||
- [None](#none)
|
- [None](#none)
|
||||||
- [List Type](#list-type)
|
- [List Type](#list-type)
|
||||||
- [Map Type](#map-type)
|
- [Map Type](#map-type)
|
||||||
- [Collection](#collection)
|
- [Iter](#iter)
|
||||||
- [Function Type](#function-type)
|
- [Function Type](#function-type)
|
||||||
- [Option Type](#option-type)
|
- [Option Type](#option-type)
|
||||||
- [Custom Types](#custom-types)
|
- [Custom Types](#custom-types)
|
||||||
@ -113,7 +113,12 @@ at their bounds.
|
|||||||
|
|
||||||
### Range
|
### Range
|
||||||
|
|
||||||
TODO
|
A range represents a contiguous sequence of integers. Dust ranges are **inclusive** so both the high
|
||||||
|
and low bounds will be represented.
|
||||||
|
|
||||||
|
```dust
|
||||||
|
0..100
|
||||||
|
```
|
||||||
|
|
||||||
### String
|
### String
|
||||||
|
|
||||||
@ -128,7 +133,7 @@ A string is a **utf-8** sequence used to represent text. Strings can be wrapped
|
|||||||
|
|
||||||
### List
|
### List
|
||||||
|
|
||||||
A list is **collection** of values stored as a sequence and accessible by indexing their position with an integer. Lists indexes begin at zero for the first item.
|
A list is **collection** of values stored as a sequence and accessible by [indexing](#index) their position with an integer. Lists indexes begin at zero for the first item.
|
||||||
|
|
||||||
```dust
|
```dust
|
||||||
[ 42 'forty-two' ]
|
[ 42 'forty-two' ]
|
||||||
@ -162,11 +167,11 @@ reminder:message
|
|||||||
Internally a map is represented by a B-tree. The implicit advantage of using a B-tree instead of a
|
Internally a map is represented by a B-tree. The implicit advantage of using a B-tree instead of a
|
||||||
hash map is that a B-tree is sorted and therefore can be easily compared to another. Maps are also
|
hash map is that a B-tree is sorted and therefore can be easily compared to another. Maps are also
|
||||||
used by the interpreter as the data structure for holding variables. You can even inspect the active
|
used by the interpreter as the data structure for holding variables. You can even inspect the active
|
||||||
**execution context** by calling the built-in `context()` functions.
|
**execution context** by calling the built-in `context()` function.
|
||||||
|
|
||||||
The map stores an [identifier](#identifiers)'s key, the value it represents and the value's type.
|
The map stores each [identifier](#identifiers)'s key with a value and the value's type. For internal
|
||||||
For internal use by the interpreter, a type can be set to a key without a value. This makes it
|
use by the interpreter, a type can be set to a key without a value. This makes it possible to check
|
||||||
possible to check the types of values before they are computed.
|
the types of values before they are computed.
|
||||||
|
|
||||||
### Function
|
### Function
|
||||||
|
|
||||||
@ -294,7 +299,12 @@ string values. Writing `list` without the parentheses and content type is equiva
|
|||||||
|
|
||||||
### Map Type
|
### Map Type
|
||||||
|
|
||||||
### Collection
|
The `map` type is unstructured and can hold any key-value pair.
|
||||||
|
|
||||||
|
### Iter
|
||||||
|
|
||||||
|
The `iter` type refers to types that can be used with a [for loop](#for-loop). These include `list`,
|
||||||
|
`range`, `string` and `map`.
|
||||||
|
|
||||||
### Function Type
|
### Function Type
|
||||||
|
|
||||||
@ -340,11 +350,36 @@ stdout_message = new Message {
|
|||||||
|
|
||||||
### Option Type
|
### Option Type
|
||||||
|
|
||||||
TODO
|
The `option(type)` type is expected to be either `some(value)` or `none`. The type of the value
|
||||||
|
inside the `some` is always specified.
|
||||||
|
|
||||||
|
```dust
|
||||||
|
get_line_break_index(text <str>) <some(int)> {
|
||||||
|
str:find(text, '\n')
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Custom Types
|
### Custom Types
|
||||||
|
|
||||||
TODO
|
Custom types such as **structures** are referenced by their variable identifier.
|
||||||
|
|
||||||
|
```dust
|
||||||
|
struct File {
|
||||||
|
path <str>
|
||||||
|
size <int>
|
||||||
|
type <str>
|
||||||
|
}
|
||||||
|
|
||||||
|
print_file_info(file <File>) <none> {
|
||||||
|
info = file:path
|
||||||
|
+ '\n'
|
||||||
|
+ file:size
|
||||||
|
+ '\n'
|
||||||
|
+ file:type
|
||||||
|
|
||||||
|
output(info)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Statements
|
## Statements
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user