1
0
Fork 0
mirror of https://github.com/Reuh/candran.git synced 2025-10-27 17:59:30 +00:00

Fixed package searcher overriding the Lua one

This commit is contained in:
Étienne Fildadut 2017-09-02 20:04:47 +02:00
parent 91f72e6d17
commit 2d297db687
5 changed files with 108 additions and 100 deletions

View file

@ -395,7 +395,7 @@ at the top of your main Lua file. If a Candran is found when you call ```require
file will be loaded. file will be loaded.
* ```candran.searcher(modpath)``` : Candran package searcher function. Use the existing package.path. * ```candran.searcher(modpath)``` : Candran package searcher function. Use the existing package.path.
* ```candran.setup()``` : Register the Candran package searcher. * ```candran.setup()``` : Register the Candran package searcher, and return the `candran` table.
##### Available compiler & preprocessor options ##### Available compiler & preprocessor options
You can give arbitrary options which will be gived to the preprocessor, but Candran already provide and uses these with their associated default values: You can give arbitrary options which will be gived to the preprocessor, but Candran already provide and uses these with their associated default values:

View file

@ -230,7 +230,7 @@ end
--- Candran package searcher function. Use the existing package.path. --- Candran package searcher function. Use the existing package.path.
function candran.searcher(modpath) function candran.searcher(modpath)
local filepath = util.search(modpath) local filepath = util.search(modpath, {"can"})
if not filepath then if not filepath then
return "\n\tno candran file in package.path" return "\n\tno candran file in package.path"
end end
@ -244,6 +244,7 @@ function candran.setup()
else else
table.insert(package.searchers, 2, candran.searcher) table.insert(package.searchers, 2, candran.searcher)
end end
return candran
end end
return candran return candran

View file

@ -2855,10 +2855,10 @@ end + P("--") * (P(1) - P("\
["ShortStr"] = P("\"") * Cs((V("EscSeq") + (P(1) - S("\"\ ["ShortStr"] = P("\"") * Cs((V("EscSeq") + (P(1) - S("\"\
"))) ^ 0) * expect(P("\""), "Quote") + P("'") * Cs((V("EscSeq") + (P(1) - S("'\ "))) ^ 0) * expect(P("\""), "Quote") + P("'") * Cs((V("EscSeq") + (P(1) - S("'\
"))) ^ 0) * expect(P("'"), "Quote"), "))) ^ 0) * expect(P("'"), "Quote"),
["EscSeq"] = P("\\") / "" * (P("a") / "\7" + P("b") / "\8" + P("f") / "\12" + P("n") / "\ ["EscSeq"] = P("\\") / "" * (P("a") / "" + P("b") / "" + P("f") / " " + P("n") / "\
" + P("r") / "\13" + P("t") / "\9" + P("v") / "\11" + P("\ " + P("r") / "\r" + P("t") / " " + P("v") / " " + P("\
") / "\ ") / "\
" + P("\13") / "\ " + P("\r") / "\
" + P("\\") / "\\" + P("\"") / "\"" + P("'") / "'" + P("z") * space ^ 0 / "" + digit * digit ^ - 2 / tonumber / string["char"] + P("x") * expect(C(xdigit * xdigit), "HexEsc") * Cc(16) / tonumber / string["char"] + P("u") * expect("{", "OBraceUEsc") * expect(C(xdigit ^ 1), "DigitUEsc") * Cc(16) * expect("}", "CBraceUEsc") / tonumber / (utf8 and utf8["char"] or string["char"]) + throw("EscSeq")), " + P("\\") / "\\" + P("\"") / "\"" + P("'") / "'" + P("z") * space ^ 0 / "" + digit * digit ^ - 2 / tonumber / string["char"] + P("x") * expect(C(xdigit * xdigit), "HexEsc") * Cc(16) / tonumber / string["char"] + P("u") * expect("{", "OBraceUEsc") * expect(C(xdigit ^ 1), "DigitUEsc") * Cc(16) * expect("}", "CBraceUEsc") / tonumber / (utf8 and utf8["char"] or string["char"]) + throw("EscSeq")),
["LongStr"] = V("Open") * C((P(1) - V("CloseEq")) ^ 0) * expect(V("Close"), "CloseLStr") / function(s, eqs) ["LongStr"] = V("Open") * C((P(1) - V("CloseEq")) ^ 0) * expect(V("Close"), "CloseLStr") / function(s, eqs)
return s return s
@ -2975,7 +2975,7 @@ env["write"](f:read("*a"))
f:close() f:close()
end end
env["write"] = function(...) env["write"] = function(...)
env["output"] = env["output"] .. (table["concat"]({ ... }, "\9") .. "\ env["output"] = env["output"] .. (table["concat"]({ ... }, " ") .. "\
") ")
end end
env["placeholder"] = function(name) env["placeholder"] = function(name)
@ -3082,10 +3082,10 @@ end
end) end)
end end
candran["searcher"] = function(modpath) candran["searcher"] = function(modpath)
local filepath = util["search"](modpath) local filepath = util["search"](modpath, { "can" })
if not filepath then if not filepath then
return "\ return "\
\9no candran file in package.path" no candran file in package.path"
end end
return candran["loadfile"](filepath) return candran["loadfile"](filepath)
end end
@ -3095,5 +3095,6 @@ table["insert"](package["loaders"], 2, candran["searcher"])
else else
table["insert"](package["searchers"], 2, candran["searcher"]) table["insert"](package["searchers"], 2, candran["searcher"])
end end
return candran
end end
return candran return candran

View file

@ -76,14 +76,20 @@ local b = a[3:5:1]
local pos = { x = 5, y = 12 } local pos = { x = 5, y = 12 }
local {x, y} = pos -- x, y = pos.x, pos.y local {x, y} = pos -- x, y = pos.x, pos.y
local {x = x, y = y} = pos local {a, b, x = x, y = y} = pos -- x, y = pos.x, pos.y, a = pos[1], b = pos[2]
local {:x, :y} = pos -- shorthand for the above line local {a, b, :x, :y} = pos -- shorthand for the above line. Or .x, .y
local {:x.u} = pos OR {:x:u} OR {.x.u} -- u = pos.x.u
local [x, y] = pos -- x, y = pos[0], pos[1] local [x, y] = pos -- x, y = pos[0], pos[1]
local x, y $= pos local x, y $= pos
And in implicit assignments: And in implicit assignments:
for i, {x, y} in ipairs(positions) do for i, {x, y} in ipairs(positions) do
* String interpolation
Delimited by ``:
`Hi, my name is ${@name}` -- -> "blaba" .. tostring(@name)
Also allows multi-line with this maybe?
* Other potential inspiration * Other potential inspiration
https://www.ruby-lang.org/fr/ https://www.ruby-lang.org/fr/

View file

@ -1,6 +1,6 @@
package = "candran" package = "candran"
version = "0.6.0-1" version = "0.6.1-1"
description = { description = {
summary = "A simple Lua dialect and preprocessor.", summary = "A simple Lua dialect and preprocessor.",
@ -17,7 +17,7 @@ description = {
source = { source = {
url = "git://github.com/Reuh/candran", url = "git://github.com/Reuh/candran",
tag = "v0.6.0" tag = "v0.6.1"
} }
dependencies = { dependencies = {