summaryrefslogtreecommitdiff
path: root/src/lstring.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/lstring.js')
-rw-r--r--src/lstring.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/lstring.js b/src/lstring.js
new file mode 100644
index 0000000..34f988e
--- /dev/null
+++ b/src/lstring.js
@@ -0,0 +1,33 @@
+"use strict";
+
+const defs = require('./defs.js');
+
+const luaS_eqlngstr = function(a, b) {
+ return a == b || (a.length == b.length && a.join() == b.join());
+};
+
+/* converts strings (arrays) to a consistent map key */
+const luaS_hash = function(str) {
+ return str.map(e => `${e}|`).join('');
+};
+
+/* variant that takes ownership of array */
+const luaS_bless = function(L, str) {
+ return str;
+};
+
+/* makes a copy */
+const luaS_new = function(L, str) {
+ return luaS_bless(L, str.slice(0));
+};
+
+/* takes a js string */
+const luaS_newliteral = function(L, str) {
+ return luaS_bless(L, defs.to_luastring(str));
+};
+
+module.exports.luaS_eqlngstr = luaS_eqlngstr;
+module.exports.luaS_hash = luaS_hash;
+module.exports.luaS_bless = luaS_bless;
+module.exports.luaS_new = luaS_new;
+module.exports.luaS_newliteral = luaS_newliteral;