// jshint asi:true

var words

function addWords(wl) {
  words = wl.split("\n")
  let re = document.querySelector("#regexp")
  re.value = ""
  re.disabled = false
  re.focus()
  re.dispatchEvent(new Event("input"))
}

function regexInput(e) {
  let re = new RegExp(e.target.value, "u")
  let matches = document.querySelector("#matches")
  
  while (matches.firstChild) {
    matches.firstChild.remove()
  }
  
  let nmatches = 0
  for (let word of words) {
    if (word.match(re)) {
      let li = matches.appendChild(document.createElement("li"))
      li.textContent = word

      nmatches += 1
      if (nmatches > 600) {
        li.textContent = "…"
        break
      }
    }
  }
}

function anchorToggle(e) {
  let re = document.querySelector("#regexp")
  let val = re.value.replace(/^\^|\$$/g, "")
  if (val == re.value) {
    val = "^" + val + "$"
  }
  re.value = val
  re.focus()
  re.dispatchEvent(new Event("input"))
}

function init(e) {
  fetch("words.txt")
  .then(r => r.text())
  .then(addWords)
  
  document.querySelector("#regexp").addEventListener("input", regexInput)
  document.querySelector("#anchor").addEventListener("click", anchorToggle)
}

window.addEventListener("load", init)