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]);
- obj = JSON.parse(obj);
- while (!arg.isEmpty()) {
- ret = parseName(arg);
- arg = ret[1];
- var name = ret[0];
- obj = obj[name];
- }
- channel.message(JSON.stringify(obj));
- }
- function setData(arg) {
- var ret = parseName(arg);
- arg = ret[1];
- var lastObj;
- var name = null;
- var obj = storage.get(ret[0]);
- obj = JSON.parse(obj);
- var topLevelObj = obj;
- while (!arg.isEmpty() && !arg.startsWith("=")) {
- lastObj = obj;
- ret = parseName(arg);
- arg = ret[1];
- name = ret[0];
- obj = obj[name];
- }
- if (arg.startsWith("="))
- arg = arg.substring(1);
- arg = skipWhitespace(arg);
- if (name == null) {
- storage.set(ret[0], arg);
- } else {
- lastObj[name] = JSON.parse(arg);
- storage.set(ret[0], JSON.stringify(topLevelObj));
- }
- channel.message("Data successfully stored");
- }
- function deleteData(arg) {
- var ret = parseName(arg);
- arg = ret[1];
- if (arg.isEmpty()) {
- storage.delete(ret[0]);
- } else {
- var obj = storage.get(ret[0]);
- obj = JSON.parse(obj);
- var topLevelObj = obj;
- var name = null;
- var lastObj;
- while (!arg.isEmpty()) {
- lastObj = obj;
- ret = parseName(arg);
- arg = ret[1];
- name = ret[0];
- obj = obj[name];
- }
- if (name == null) {
- storage.delete(ret[0]);
- } else {
- delete lastObj[name];
- storage.set(ret[0], JSON.stringify(topLevelObj));
- }
- }
- channel.message("Data deleted");
- }
- function parseName(arg) {
- arg = skipWhitespace(arg);
- if (arg.startsWith("\"")) {
- var escaped = false;
- var name = "";
- arg = arg.substring(1);
- while (!arg.isEmpty()) {
- char 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 {
- var name = "";
- while (/\w.+/.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