libraries/browser.nv

rules

get hyphenated date
result
Result
snippet
const date = new Date();
    Result = date.toLocaleDateString().replaceAll('/', '-');
save Stack stacks to local storage
snippet
for (const stack of stacks[Stack]) {
      const name = stack.tokens.join(' ');
      if (stacks[name]) {
        const data = stacks[name].map((e) => {return e.tokens});
        localStorage[name] = JSON.stringify(data);
      } else {
        localStorage.removeItem(name);
      }
    }
load Stack stacks from local storage
snippet
for (const stack of stacks[Stack]) {
      const name = stack.tokens.join(' ');
      if (localStorage[name]) {
        const data = JSON.parse(localStorage[name]).map((e) => {
          return {tokens: e, possibleMatches: []};
        });
        stacks[name] = data;
      } else {
        delete stacks[name];
      }
    }
save local storage to json file named Name
snippet
const text = JSON.stringify(localStorage);
    const blob = new Blob([text], {type: 'application/json'});
    const url = URL.createObjectURL(blob);
    const link = document.createElement('a');
    link.setAttribute('download', Name);
    link.href = url;
    link.click();
load local storage from json file
snippet
const filePicker = document.createElement('input');
    filePicker.type = 'file';
    filePicker.accept = '.json';
    filePicker.addEventListener('change', () => {
      const reader = new FileReader();
      reader.onload = () => {
        const parsed = JSON.parse(reader.result);
        if (parsed) {
          localStorage.clear();
          for (const [key, value] of Object.entries(parsed)) {
            localStorage[key] = value;
          }
          f('', ['loaded', 'local', 'storage', 'from', 'file']);
          while (checkRules()) {}
        }
      };
      reader.readAsText(filePicker.files[0]);
    });
    filePicker.click();