<commit_before>(function() {

  /*

  * Read time from query parameter
  * Read title from parameter
  * Set time in url
  * Ska man göra nån slags pub/sub? Publicera till en state? ha en global app och göra ping till
    den när något hänt. Och varje gång man pushat ett state så är det en "viewer" som bestämmer
    vad som ska visas ut. Ska man göra två olika delar i htmlen? och bara sätta
    visa/inte visa på dem?
    Positivt med det är att man inte behöver rendera om markupen, den är där redan

    view.ping

    Vad behöver hända?
    Registrera vyer, sen slå av och på dem vid olika events

  */




})();

let AppState = (() => {
  let allThings = {};


  // sätt upp en watcher på locationChange? då måstejag nog använda hash ist, annars laddar sidan om
  window.addEventListener('hashchange', () => {
    console.log('hash changed');
    Object.keys(allThings).forEach((name) => {
      ViewDecider(name);
    });
  });

  const ViewDecider = (name) => {
    if (name) {
      allThings[name].condition();
    }
  };

  return {
    RegisterThing: (name, element, condition) => {
      console.log(`Registering ${name}`);
      allThings[name] = { element, condition };
      ViewDecider(name);
    }
  };
})();<commit_msg>Use show and hide from the modules<commit_after>(function() {

  /*

  * Read time from query parameter
  * Read title from parameter
  * Set time in url
  * Ska man göra nån slags pub/sub? Publicera till en state? ha en global app och göra ping till
    den när något hänt. Och varje gång man pushat ett state så är det en "viewer" som bestämmer
    vad som ska visas ut. Ska man göra två olika delar i htmlen? och bara sätta
    visa/inte visa på dem?
    Positivt med det är att man inte behöver rendera om markupen, den är där redan

    view.ping

    Vad behöver hända?
    Registrera vyer, sen slå av och på dem vid olika events

    varje gång en vy registreras så ska det bestämmas om den ska visas, det borde vara det första jag gör
    sen handlar det nog om att gå igenom alla när hashen ändras?

    varje vy har ett condition som säger om det ska visas eller inte, innan det är sant ska de inte visas
  */




})();

let AppState = (() => {
  let allThings = {};

  window.addEventListener('hashchange', () => {
    console.log('hash changed');
    Object.keys(allThings).forEach((name) => {
      ViewDecider(name);
    });
  });

  const ViewDecider = (name) => {
    if (name) {
      const view = allThings[name];
      if (view.condition()) {
        console.log(`${name} shown`);
        view.show();
      } else {
        console.log(`${name} not shown`);
        view.hide();
      }
    }
  };

  return {
    RegisterThing: (name, element, condition, show, hide) => {
      console.log(`Registering ${name}`);
      allThings[name] = { element, condition, show, hide };
      ViewDecider(name);
    }
  };
})();
{'fraction_non_alphanumeric': 0.10852173913043478, 'fraction_numerical': 0.0, 'mean_word_length': 2.7447916666666665, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '708574', 'n_tokens_mistral': 978, 'n_tokens_neox': 921, 'n_words': 343}