File

teal-src/README.md @ 13055:e732f9dfdfc8

mod_mam: port to use util.human.io.parse_duration Updated by Zash, the original patch by Jonas had put the duration parsing function in util.datetime but MattJ later did the same thing but differently in f4d7fe919969
author Jonas Schäfer <jonas@wielicki.name>
date Thu, 28 Apr 2022 20:38:40 +0200
parent 13005:1167aaf1aa1f
line wrap: on
line source

# Teal definitions and sources

This directory contains files written in the
[Teal](https://github.com/teal-language/tl) language, a typed dialect of
Lua.  There are two kinds of files, `.tl` Teal source code and `.d.tl`
type definitions files for modules written in Lua. The later allows
writing type-aware Teal using regular Lua or C code.

## Setup

The Teal compiler can be installed from LuaRocks using:

```bash
luarocks install tl
```

## Checking types

```bash
tl check teal-src/prosody/util/example.tl
```

Some editors and IDEs also have support, see [text editor
support](https://github.com/teal-language/tl#text-editor-support)


## Compiling to Lua

`GNUmakefile` contains a rule for building Lua files from Teal sources.
It also applies [LuaFormat](https://github.com/Koihik/LuaFormatter) to
make the resulting code more readable, albeit this makes the line
numbers no longer match the original Teal source.  Sometimes minor
`luacheck` issues remain, such as types being represented as unused
tables, which can be removed.

```bash
sensible-editor teal-src/prosody/util/example.tl
# Write some code, remember to run tl check
make util/example.lua
sensible-editor util/example.lua
# Apply any minor tweaks that may be needed
```

## Files of note

`module.d.tl`
:	Describes the module environment.