Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function getData(arg) {
- var ret = parseName(arg);
- arg = ret[1];
- var obj = storage.get(ret[0]);
- if (!arg) {
- channel.message(obj);
- return;
- }
- try {
- obj = JSON.parse(obj);
- } catch (e) {
- channel.message("Data was not in json format");
- return;
- }
- while (arg) {
- ret = parseName(arg);
- arg = ret[1];
- var name = ret[0];
- if (obj === null) {
- channel.message("Data not found, noob");
- return;
- }
- obj = obj[name];
- }
- channel.message(JSON.stringify(obj));
- }
- function setData(arg) {
- var ret = parseName(arg);
- arg = ret[1];
- if (!arg || arg.startsWith("=")) {
- if (arg.startsWith("=")) {
- arg = arg.substring(1);
- arg = skipWhitespace(arg);
- }
- storage.set(ret[0], arg);
- channel.message("Data successfully stored");
- return;
- }
- var lastObj;
- var name = null;
- var obj = storage.get(ret[0]);
- try {
- obj = JSON.parse(obj);
- } catch (e) {
- channel.message("Data was not in json format");
- return;
- }
- var topLevelObj = obj;
- while (arg && !arg.startsWith("=")) {
- lastObj = obj;
- ret = parseName(arg);
- arg = ret[1];
- name = ret[0];
- if (obj === null)
- obj = {};
- obj = obj[name];
- }
- if (arg.startsWith("="))
- arg = arg.substring(1);
- arg = skipWhitespace(arg);
- try {
- lastObj[name] = JSON.parse(arg);
- } catch (e) {
- channel.message("json parse error:\n" + e.message);
- return;
- }
- storage.set(ret[0], JSON.stringify(topLevelObj));
- channel.message("Data stored");
- }
- function deleteData(arg) {
- var ret = parseName(arg);
- arg = ret[1];
- if (!arg) {
- storage.delete(ret[0]);
- } else {
- var obj = storage.get(ret[0]);
- try {
- obj = JSON.parse(obj);
- } catch (e) {
- channel.message("Data was not in json format");
- return;
- }
- var topLevelObj = obj;
- var name = null;
- var lastObj;
- while (arg) {
- lastObj = obj;
- ret = parseName(arg);
- arg = ret[1];
- name = ret[0];
- if (obj == null) {
- channel.message("Data not found, noob");
- return;
- }
- obj = obj[name];
- }
- if (obj === null) {
- channel.message("Data not found, noob");
- return;
- }
- delete lastObj[name];
- storage.set(ret[0], JSON.stringify(topLevelObj));
- }
- channel.message("Data deleted");
- }
- function parseName(arg) {
- arg = skipWhitespace(arg);
- var name = "";
- if (arg.startsWith("\"")) {
- var escaped = false;
- arg = arg.substring(1);
- while (arg) {
- var c = arg.charAt(0);
- arg = arg.substring(1);
- if (c == "\\") {
- if (!escaped) {
- escaped = true;
- } else {
- escaped = false;
- name += "\\";
- }
- } else {
- if (c == "\"" && !escaped)
- break;
- name += c;
- escaped = false;
- }
- }
- arg = skipWhitespace(arg);
- if (arg.startsWith("."))
- arg = arg.substring(1);
- arg = skipWhitespace(arg);
- return [name, arg];
- } else {
- while (arg && !arg.startsWith("=") && !arg.startsWith(".") && !(/\s.+/.test(arg))) {
- name += arg.charAt(0);
- arg = arg.substring(1);
- }
- arg = skipWhitespace(arg);
- if (arg.startsWith("."))
- arg = arg.substring(1);
- arg = skipWhitespace(arg);
- return [name, arg];
- }
- }
- function skipWhitespace(arg) {
- while (/\s.+/.test(arg))
- arg = arg.substring(1);
- return arg;
- }
- var arg = message.getContent();
- if (arg.startsWith("//storage "))
- arg = arg.substring(10);
- if (arg.startsWith("get ")) {
- getData(arg.substring(4));
- } else if (arg.startsWith("set ")) {
- setData(arg.substring(4));
- } else if (arg.startsWith("delete ")) {
- deleteData(arg.substring(7));
- } else {
- channel.message("```\nUsage:\n//storage get path.to.data\n//storage set path.to.data=newValue\n//storage delete path.to.data\n```");
- }
Add Comment
Please, Sign In to add comment