meow2
This commit is contained in:
parent
6a24594030
commit
30de2412c2
78
script.js
Normal file
78
script.js
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
(async () => {
|
||||||
|
const data = await (await fetch('https://git.lix.systems/puck/testfudgethingy/raw/branch/main/database.json')).json();
|
||||||
|
|
||||||
|
document.querySelector('.code-view').addEventListener('click', (e) => {
|
||||||
|
let clicky = e.target;
|
||||||
|
let isLine = false;
|
||||||
|
if (clicky.classList.contains('code-inner')) {
|
||||||
|
isLine = true;
|
||||||
|
} else if (!clicky.parentNode.classList.contains('code-inner')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: non-ASCII support
|
||||||
|
|
||||||
|
let index = 0;
|
||||||
|
if (isLine) { // mehhhh
|
||||||
|
index = ((e.clientX - clicky.getBoundingClientRect().x) / clicky.getBoundingClientRect().width) * clicky.textContent.length;
|
||||||
|
} else {
|
||||||
|
for (let node of Array.from(clicky.parentNode.children)) {
|
||||||
|
if (node !== clicky) {
|
||||||
|
index += node.textContent.length;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
index += ((e.clientX - clicky.getBoundingClientRect().x) / clicky.getBoundingClientRect().width) * clicky.textContent.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
index = Math.floor(index);
|
||||||
|
|
||||||
|
let line = parseInt((isLine ? clicky : clicky.parentNode).parentNode.attributes.rel.nodeValue.substring(1), 10);
|
||||||
|
let file = window.config.pageData.branchDropdownDataList[0].treePath;
|
||||||
|
|
||||||
|
console.log(`clicked line ${line} char ${index}`);
|
||||||
|
|
||||||
|
let symbol;
|
||||||
|
|
||||||
|
for (let doc of data.documents) {
|
||||||
|
if (doc.relativePath !== file) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('found document');
|
||||||
|
|
||||||
|
for (let occurrence of doc.occurrences) {
|
||||||
|
let startLine = occurrence.range[0] + 1;
|
||||||
|
let startChar = occurrence.range[1];
|
||||||
|
let endLine = (occurrence.range.length === 3 ? occurrence.range[0] : occurrence.range[2]) + 1;
|
||||||
|
let endChar = occurrence.range.length === 3 ? occurrence.range[2] : occurrence.range[3];
|
||||||
|
|
||||||
|
if (startLine > line || endLine < line)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (startChar > index || endChar < index)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
symbol = occurrence.symbol;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!symbol) return;
|
||||||
|
|
||||||
|
for (let doc of data.documents) {
|
||||||
|
for (let occurrence of doc.occurrences) {
|
||||||
|
if ((occurrence.symbolRoles & 1) !== 1)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (occurrence.symbol !== symbol)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
let data = window.config.pageData.branchDropdownDataList[0];
|
||||||
|
|
||||||
|
window.location = `${data.repoLink}/src/${data.branchNameSubURL}/${doc.relativePath}#L${occurrence.range[0] + 1}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, { capture: true });
|
||||||
|
})();
|
Loading…
Reference in a new issue