summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lualibs-dir.lua36
-rw-r--r--lualibs-lpeg.lua10
-rw-r--r--lualibs-unicode.lua12
3 files changed, 44 insertions, 14 deletions
diff --git a/lualibs-dir.lua b/lualibs-dir.lua
index e47de60..40081cc 100644
--- a/lualibs-dir.lua
+++ b/lualibs-dir.lua
@@ -26,6 +26,8 @@ local isfile = lfs.isfile
local currentdir = lfs.currentdir
local chdir = lfs.chdir
+local onwindows = os.type == "windows" or find(os.getenv("PATH"),";")
+
-- in case we load outside luatex
if not isdir then
@@ -136,11 +138,33 @@ end
dir.collectpattern = collectpattern
-local pattern = Ct {
- [1] = (C(P(".") + P("/")^1) + C(R("az","AZ") * P(":") * P("/")^0) + Cc("./")) * V(2) * V(3),
- [2] = C(((1-S("*?/"))^0 * P("/"))^0),
- [3] = C(P(1)^0)
-}
+local separator
+
+if onwindows then -- we could sanitize here
+
+-- pattern = Ct {
+-- [1] = (C(P(".") + S("/\\")^1) + C(R("az","AZ") * P(":") * S("/\\")^0) + Cc("./")) * V(2) * V(3),
+-- [2] = C(((1-S("*?/\\"))^0 * S("/\\"))^0),
+-- [3] = C(P(1)^0)
+-- }
+
+ local slash = S("/\\") / "/"
+
+ pattern = Ct {
+ [1] = (Cs(P(".") + slash^1) + Cs(R("az","AZ") * P(":") * slash^0) + Cc("./")) * V(2) * V(3),
+ [2] = Cs(((1-S("*?/\\"))^0 * slash)^0),
+ [3] = Cs(P(1)^0)
+ }
+
+else -- assume unix
+
+ pattern = Ct {
+ [1] = (C(P(".") + P("/")^1) + Cc("./")) * V(2) * V(3),
+ [2] = C(((1-S("*?/"))^0 * P("/"))^0),
+ [3] = C(P(1)^0)
+ }
+
+end
local filter = Cs ( (
P("**") / ".*" +
@@ -257,8 +281,6 @@ end
local make_indeed = true -- false
-local onwindows = os.type == "windows" or find(os.getenv("PATH"),";")
-
if onwindows then
function dir.mkdirs(...)
diff --git a/lualibs-lpeg.lua b/lualibs-lpeg.lua
index b33df96..78b503b 100644
--- a/lualibs-lpeg.lua
+++ b/lualibs-lpeg.lua
@@ -109,11 +109,11 @@ local space = P(" ")
local period = P(".")
local comma = P(",")
-local utfbom_32_be = P('\000\000\254\255')
-local utfbom_32_le = P('\255\254\000\000')
-local utfbom_16_be = P('\255\254')
-local utfbom_16_le = P('\254\255')
-local utfbom_8 = P('\239\187\191')
+local utfbom_32_be = P('\000\000\254\255') -- 00 00 FE FF
+local utfbom_32_le = P('\255\254\000\000') -- FF FE 00 00
+local utfbom_16_be = P('\254\255') -- FE FF
+local utfbom_16_le = P('\255\254') -- FF FE
+local utfbom_8 = P('\239\187\191') -- EF BB BF
local utfbom = utfbom_32_be + utfbom_32_le
+ utfbom_16_be + utfbom_16_le
+ utfbom_8
diff --git a/lualibs-unicode.lua b/lualibs-unicode.lua
index 813ffd5..cf0c93d 100644
--- a/lualibs-unicode.lua
+++ b/lualibs-unicode.lua
@@ -777,11 +777,19 @@ end
local _, l_remap = utf.remapper(little)
local _, b_remap = utf.remapper(big)
+function utf.utf8_to_utf16_be(str)
+ return char(254,255) .. lpegmatch(b_remap,str)
+end
+
+function utf.utf8_to_utf16_le(str)
+ return char(255,254) .. lpegmatch(l_remap,str)
+end
+
function utf.utf8_to_utf16(str,littleendian)
if littleendian then
- return char(255,254) .. lpegmatch(l_remap,str)
+ return utf.utf8_to_utf16_le(str)
else
- return char(254,255) .. lpegmatch(b_remap,str)
+ return utf.utf8_to_utf16_be(str)
end
end