1 -- SPDX-License-Identifier: GPL-3.0-or-later
2 -- © 2020 Georgi Kirilov
4 local supported
= {lisp
= true, scheme
= true, clojure
= true, fennel
= true}
7 local walker
= require(cwd
..".walker")
8 local parser
= require(cwd
..".parser")
9 local input
= require(cwd
..".input")
10 local edit
= require(cwd
..".edit")
11 local node
= require(cwd
..".node")
13 local function init(dialect
, read, write, delete
, eol_at
, bol_at
)
14 local f
= require(cwd
..".fmt."..dialect
)
15 local n
= node
.new(read)
16 local p
, d1
, D2
= parser
.new(dialect
, n
, read)
17 local w
= walker
.new(p
, eol_at
, bol_at
)
18 local e
= edit
.new(p
, w
, f
, write, delete
, eol_at
)
19 local i
= input
.new(p
, d1
, D2
, w
, e
, write, eol_at
, bol_at
)
20 return {parser
= p
, walker
= w
, input
= i
, edit
= e
, fmt
= f
}
23 return {init
, supported
}