aboutsummaryrefslogtreecommitdiffstats
path: root/alv/base
diff options
context:
space:
mode:
authors-ol <s+removethis@s-ol.nu>2025-03-14 23:44:10 +0000
committers-ol <s+removethis@s-ol.nu>2025-03-15 14:14:04 +0000
commit79696a272d1d8f2959a0b9cfdd8487d356416a05 (patch)
tree0d6e28f00b6a62e2fd7488b1df772305f56a812a /alv/base
parentsomewhat clean up alv.parsing (diff)
downloadalive-79696a272d1d8f2959a0b9cfdd8487d356416a05.tar.gz
alive-79696a272d1d8f2959a0b9cfdd8487d356416a05.zip
implement template strings
Diffstat (limited to 'alv/base')
-rw-r--r--alv/base/builtin.moon12
-rw-r--r--alv/base/init.moon3
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
}