diff --git a/main.css b/main.css index 3d16ee7..e2d1893 100644 --- a/main.css +++ b/main.css @@ -67,6 +67,10 @@ a:hover { cursor: pointer; } +.clickable { + cursor: pointer; +} + .heonian { font-family: "heonian"; } diff --git a/main.js b/main.js index 40dd1b7..c47bf07 100644 --- a/main.js +++ b/main.js @@ -162,12 +162,45 @@ function processVerb(word) { //but ... not yet uwu } -function generateRuby(word) { +function isHeonian(word) { letters = word.split(""); - ruby = ""; for (let i = 0; i < letters.length; i++) { - ruby += `${letters[i]}${heonianToRoman(letters[i])}`; + if (letters[i].codePointAt(0) < 57344 || letters[i].codePointAt(0) > 57606) { + return false; + } } + return true; +} + +function generateRuby(word, addLinks = false) { + ruby = ""; + if (addLinks == true) { + //split by space + let split = word.split(" "); + for (let i = 0; i < split.length; i++) { + letters = word.split(""); + for (let i = 0; i < letters.length; i++) { + if (letters[i] == " ") { + ruby += " "; + } else if (json[letters[i]] != undefined) { + ruby += `${letters[i]}${heonianToRoman(letters[i])}`; + } else { + ruby += `${letters[i]}${heonianToRoman(letters[i])}`; + } + } + } + //somehow figure out how to get links in + } else { + letters = word.split(""); + for (let i = 0; i < letters.length; i++) { + if (letters[i] == " ") { + ruby += " "; + } else { + ruby += `${letters[i]}${heonianToRoman(letters[i])}`; + } + } + } + return ruby; } @@ -260,6 +293,14 @@ function search(word) { return result; } +function clickSearch(word) { + header.querySelector("input").value = word; + doSearch(); + //TODO: scroll to top of page or w/e. + //maybe dosearch should do that instead + //minds too hazy for this rn though... +} + function doSearch(state = true, all = false) { if (all == true) { header.querySelector("input").value = "show:all"; @@ -326,7 +367,7 @@ function doSearch(state = true, all = false) { let temp = "" temp += "
Examples

"; for (let e in json[results[i]][o]["examples"]) { - temp += ""+generateRuby(e)+" - "+json[results[i]][o]["examples"][e]+"
"; + temp += ""+generateRuby(e, true)+" - "+json[results[i]][o]["examples"][e]+"
"; } temp += "

"; meaning.innerHTML += temp; @@ -337,7 +378,7 @@ function doSearch(state = true, all = false) { temp += "
Antonyms

"; for (let e in json[results[i]][o]["antonyms"]) { let r = json[results[i]][o]["antonyms"][e]; - temp += ""+generateRuby(r); + temp += ""+generateRuby(r, true); if (json[r] != undefined) { temp += " - "; for (let i in json[r]) { @@ -355,7 +396,7 @@ function doSearch(state = true, all = false) { temp += "

Synonyms

"; for (let e in json[results[i]][o]["synonyms"]) { let r = json[results[i]][o]["synonyms"][e]; - temp += ""+generateRuby(r); + temp += ""+generateRuby(r, true); if (json[r] != undefined) { temp += " - "; for (let i in json[r]) { @@ -433,8 +474,8 @@ window.onload = () => { header.querySelector("input").value = e.state; doSearch(false); } - console.log("location: " + document.location + ", state: " + JSON.stringify(e.state)); }); + //also check if ?s is there . for hecks sake (todo) } const sortObject = obj => Object.keys(obj).sort().reduce((res, key) => (res[key] = obj[key], res), {}) \ No newline at end of file