mirror of
https://github.com/leafo/moonscript.git
synced 2024-11-22 02:44:23 +00:00
allow line breaks inside of quote strings
This commit is contained in:
parent
becba7f27a
commit
ce3d4adbb1
@ -64,11 +64,19 @@ Comments are not written to the output.
|
|||||||
|
|
||||||
## Literals & Operators
|
## Literals & Operators
|
||||||
|
|
||||||
MoonScript supports all the same primitive literals as Lua and uses the same
|
All of the primitive literals in Lua can be used. This applies to numbers,
|
||||||
syntax. This applies to numbers, strings, booleans, and `nil`.
|
strings, booleans, and `nil`.
|
||||||
|
|
||||||
MoonScript also supports all the same binary and unary operators. Additionally
|
All of Lua's binary and unary operators are available. Additionally `!=` is as
|
||||||
`!=` is as an alias for `~=`.
|
an alias for `~=`.
|
||||||
|
|
||||||
|
Unlike Lua, Line breaks are allowed inside of single and double quote strings
|
||||||
|
without an escape sequence:
|
||||||
|
|
||||||
|
```moon
|
||||||
|
some_string = "Here is a string
|
||||||
|
that has a line break in it."
|
||||||
|
```
|
||||||
|
|
||||||
## Function Literals
|
## Function Literals
|
||||||
|
|
||||||
|
@ -13,6 +13,10 @@ end
|
|||||||
local concat, insert = table.concat, table.insert
|
local concat, insert = table.concat, table.insert
|
||||||
local unpack = util.unpack
|
local unpack = util.unpack
|
||||||
local table_delim = ","
|
local table_delim = ","
|
||||||
|
local string_chars = {
|
||||||
|
["\r"] = "\\r",
|
||||||
|
["\n"] = "\\n"
|
||||||
|
}
|
||||||
local value_compilers = {
|
local value_compilers = {
|
||||||
exp = function(self, node)
|
exp = function(self, node)
|
||||||
local _comp
|
local _comp
|
||||||
@ -61,6 +65,9 @@ local value_compilers = {
|
|||||||
string = function(self, node)
|
string = function(self, node)
|
||||||
local _, delim, inner = unpack(node)
|
local _, delim, inner = unpack(node)
|
||||||
local end_delim = delim:gsub("%[", "]")
|
local end_delim = delim:gsub("%[", "]")
|
||||||
|
if delim == "'" or delim == '"' then
|
||||||
|
inner = inner:gsub("[\r\n]", string_chars)
|
||||||
|
end
|
||||||
return delim .. inner .. end_delim
|
return delim .. inner .. end_delim
|
||||||
end,
|
end,
|
||||||
chain = function(self, node)
|
chain = function(self, node)
|
||||||
|
@ -9,6 +9,11 @@ import unpack from util
|
|||||||
|
|
||||||
table_delim = ","
|
table_delim = ","
|
||||||
|
|
||||||
|
string_chars = {
|
||||||
|
"\r": "\\r"
|
||||||
|
"\n": "\\n"
|
||||||
|
}
|
||||||
|
|
||||||
value_compilers =
|
value_compilers =
|
||||||
-- list of values separated by binary operators
|
-- list of values separated by binary operators
|
||||||
exp: (node) =>
|
exp: (node) =>
|
||||||
@ -31,6 +36,9 @@ value_compilers =
|
|||||||
string: (node) =>
|
string: (node) =>
|
||||||
_, delim, inner = unpack node
|
_, delim, inner = unpack node
|
||||||
end_delim = delim\gsub "%[", "]"
|
end_delim = delim\gsub "%[", "]"
|
||||||
|
if delim == "'" or delim == '"'
|
||||||
|
inner = inner\gsub "[\r\n]", string_chars
|
||||||
|
|
||||||
delim..inner..end_delim
|
delim..inner..end_delim
|
||||||
|
|
||||||
chain: (node) =>
|
chain: (node) =>
|
||||||
|
@ -227,7 +227,7 @@ local function symx(chars)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function simple_string(delim, allow_interpolation)
|
local function simple_string(delim, allow_interpolation)
|
||||||
local inner = P('\\'..delim) + "\\\\" + (1 - S('\r\n'..delim))
|
local inner = P('\\'..delim) + "\\\\" + (1 - P(delim))
|
||||||
if allow_interpolation then
|
if allow_interpolation then
|
||||||
inter = symx"#{" * V"Exp" * sym"}"
|
inter = symx"#{" * V"Exp" * sym"}"
|
||||||
inner = (C((inner - inter)^1) + inter / mark"interpolate")^0
|
inner = (C((inner - inter)^1) + inter / mark"interpolate")^0
|
||||||
|
@ -23,3 +23,16 @@
|
|||||||
"another world"
|
"another world"
|
||||||
|
|
||||||
'what world'
|
'what world'
|
||||||
|
|
||||||
|
|
||||||
|
"
|
||||||
|
hello world
|
||||||
|
"
|
||||||
|
|
||||||
|
'yeah
|
||||||
|
what is going on
|
||||||
|
here is something cool'
|
||||||
|
|
||||||
|
|
||||||
|
nil
|
||||||
|
|
||||||
|
@ -14,4 +14,7 @@ _ = [[ hello world ]]
|
|||||||
_ = [=[ hello world ]=]
|
_ = [=[ hello world ]=]
|
||||||
_ = [====[ hello world ]====]
|
_ = [====[ hello world ]====]
|
||||||
_ = "another world"
|
_ = "another world"
|
||||||
return 'what world'
|
_ = 'what world'
|
||||||
|
_ = "\nhello world\n"
|
||||||
|
_ = 'yeah\nwhat is going on\nhere is something cool'
|
||||||
|
return nil
|
Loading…
Reference in New Issue
Block a user