diff options
| author | s-ol <s+removethis@s-ol.nu> | 2025-03-14 23:44:10 +0000 |
|---|---|---|
| committer | s-ol <s+removethis@s-ol.nu> | 2025-03-15 14:14:04 +0000 |
| commit | 79696a272d1d8f2959a0b9cfdd8487d356416a05 (patch) | |
| tree | 0d6e28f00b6a62e2fd7488b1df772305f56a812a /alv/base | |
| parent | somewhat clean up alv.parsing (diff) | |
| download | alive-79696a272d1d8f2959a0b9cfdd8487d356416a05.tar.gz alive-79696a272d1d8f2959a0b9cfdd8487d356416a05.zip | |
implement template strings
Diffstat (limited to 'alv/base')
| -rw-r--r-- | alv/base/builtin.moon | 12 | ||||
| -rw-r--r-- | alv/base/init.moon | 3 |
2 files changed, 14 insertions, 1 deletions
diff --git a/alv/base/builtin.moon b/alv/base/builtin.moon index 558a65a..4b8ee5a 100644 --- a/alv/base/builtin.moon +++ b/alv/base/builtin.moon @@ -6,6 +6,7 @@ -- See `builtin` and `invoke` for examples. -- -- @classmod Builtin +import TemplateString from require 'alv.template_string' class Builtin --- Builtin interface. @@ -107,7 +108,16 @@ class Builtin else builtin\setup nil - builtin\eval scope, cell\tail! + tail = {} + for child in *cell\tail! + if child.__class == TemplateString + table.insert tail, child.string + for inner in *child.children + table.insert tail, inner + else + table.insert tail, child + + builtin\eval scope, tail __tostring: => "<#{@@__name}[#{@tag}] #{@head}>" __inherited: (cls) => cls.__base.__tostring = @__tostring diff --git a/alv/base/init.moon b/alv/base/init.moon index bfe9123..a5d0b88 100644 --- a/alv/base/init.moon +++ b/alv/base/init.moon @@ -20,6 +20,7 @@ -- @see type.Primitive -- @see type.Array -- @see type.Struct +-- @see TemplateString -- @see RTNode -- @see Error @@ -31,6 +32,7 @@ import Input from require 'alv.base.input' import const, sig, evt, any from require 'alv.base.match' import Constant, SigStream, EvtStream from require 'alv.result' import T, Primitive, Array, Struct from require 'alv.type' +import TemplateString from require 'alv.template_string' import RTNode from require 'alv.rtnode' import Error from require 'alv.error' @@ -49,6 +51,7 @@ import Error from require 'alv.error' -- Types :T, :Primitive, :Array, :Struct + :TemplateString :RTNode :Error } |
