sdo,rzd.ru.
Как можно укоротить, улучшить этот скрипт?
function similarity(a, b){
if(a.length == 0 || b.length == 0) return 0;
let i, j, matrix = [], bigger = Math.max(a.length, b.length);
for(i = 0; i <= b.length; i++){
matrix[i] = [i];
}
for(j = 0; j <= a.length; j++){
matrix[0][j] = j;
}
for(i = 1; i <= b.length; i++){
for(j = 1; j <= a.length; j++){
if(b.charAt(i-1) == a.charAt(j-1)){
matrix[i][j] = matrix[i-1][j-1];
} else {
matrix[i][j] = Math.min(matrix[i-1][j-1] + 1, Math.min(matrix[i][j-1] + 1, matrix[i-1][j] + 1));
}
}
}
return (bigger - matrix[b.length][a.length]) / bigger;
}
var a = [], rwlib = document.createElement('html'), iframe, q, variants;
function getAnswer(){
q = document.URL.includes('courseitem') ? iframe.querySelector('p').textContent : iframe.querySelector('.question-text').textContent;
variants = document.URL.includes('courseitem') ? iframe.querySelectorAll('.choice-view__rich-text-view.published-rich-text') : iframe.querySelectorAll('td[data-quiz-order-number]');
$.ajax({type: "GET",
url: `https://secret-ocean-49799.herokuapp.com/https://rwlib.net/s?q=${q.split(' ').filter(function(word){return word != ""}).join('%20')}`,
async: false,
success : function(text)
{
rwlib.innerHTML = text;
}
})
for(elem of rwlib.querySelectorAll('.title > a')){
if (similarity(elem.text.trim(), q) >= 0.85){
$.ajax({type: "GET",
url: `https://secret-ocean-49799.herokuapp.com/https://rwlib.net/sdo/${elem.href.split('/').pop()}`,
async: false,
success : function(text)
{
rwlib.innerHTML = text;
}
});
break;
}
}
let count = 0;
rwlib.querySelector('div.a').querySelectorAll('b').forEach(elem => {
a.push(elem.textContent.toLowerCase())
})
variants.forEach(element => {
if(a.includes(element.textContent.toLowerCase())){
element.style.background='#98FB98'
count += 1;
}
})
if(count < 1){
GM_openInTab(`https://rwlib.net/s?q=${q.split(' ').filter(function(word){return word != ""}).join('%20')}`)
}
}
function test(){
iframe = document.getElementById('Content');
iframe.onload = function(){
iframe = iframe.contentDocument;
iframe.addEventListener("mousedown", function(e){
if(e.which == 2){
getAnswer()
}
})
}
}
function instruction(){
iframe = document.getElementById('Content').contentDocument;
iframe.addEventListener("mousedown", function(e){
if(e.which == 2){
getAnswer()
}
})
}
window.onload = function(){
if(document.URL.includes('courseitem')){
instruction()
} else{
test()
}
}
Очень читабельно и удобно каждому) А подсветка кода в телеге будто-бы читает код сама P.s. codepen.com | pastebin.com
а я вот понял что это сарказм только когда взглянул на сам код
Обсуждают сегодня