ek$i sözlük spoiler gizleme aparati

By xanathar Last update Jul 10, 2010 — Installed 652 times.

There are 4 previous versions of this script.

// ==UserScript==
// @name           ek$i sözlük spoiler gizleme aparati
// @namespace      http://userscripts.org/users/62169
// @description    entry'lerdeki spoiler içine yazilmis yazilari gizler.
// @include        http://sozluk.sourtimes.org/show.asp?*
// @include        http://www.eksisozluk.com/show.asp?*
// ==/UserScript==

	entryDiv = document.getElementById("el");
	entries = entryDiv.getElementsByTagName("li");
	
	for (i = 0; i < entries.length; i++) {
		entry = entries[i].innerHTML;
		spoilerSplitter = '--- spoiler ---';
		spoilerSplitterRegEx = /(---? ? ?([^-]*spoiler[^-]*) ? ?-?--)/;
		hiddenTextStart = "<span> <a class=\"gb\" style=\"font-weight: bold;\" href=\"#\" onclick=\"this.parentNode.nextSibling.style.display = 'inline'; this.parentNode.style.display = 'none'; return false;\">(göster)</a></span><span style=\"display: none;\"> <a class=\"gb\" style=\"font-weight: bold;\" href=\"#\" onclick=\"this.parentNode.previousSibling.style.display = 'inline'; this.parentNode.style.display = 'none'; return false;\">(gizle)</a>";
		hiddenTextEnd = " <a class=\"gb\" style=\"font-weight: bold;\" href=\"#\" onclick=\"this.parentNode.previousSibling.style.display = 'inline'; this.parentNode.style.display = 'none'; return false;\">(gizle)</a></span>";
		
		entryParts = entry.split(spoilerSplitterRegEx);
		newEntry = "";
		tagLevel = 0;
		textInSpoiler = "";
		spoilerHeader = "";
		skipNextSpoilerTag = false;
		
		for (j = 0; j < entryParts.length; j++) {
			if (skipNextSpoilerTag) {
				skipNextSpoilerTag = false;
				//GM_log('skipping tag');
				continue;
			}
			if (entryParts[j].match(spoilerSplitterRegEx)) {
				if (tagLevel == 0) {
					// tag acma
					textInSpoiler = "";
					tagLevel = 1;
					spoilerHeader = entryParts[j+1];
					skipNextSpoilerTag = true;
					//GM_log('opening tag: ' + entryParts[j]);
				}
				else {
					// tag kapama
					if (textInSpoiler.replace(/(<([^>]+)>)/ig,"") != "") {
						// icerik bos degil
						tagLevel -= 1;
						//GM_log('level - 1: ' + textInSpoiler);
						skipNextSpoilerTag = true;
						if (tagLevel == 0) {
							//GM_log('closing tag');
							thisSpoilerSplitter = spoilerSplitter.replace(/spoiler/gi, spoilerHeader);
							newEntry += thisSpoilerSplitter + hiddenTextStart + textInSpoiler + thisSpoilerSplitter + hiddenTextEnd;
							textInSpoiler = "";
						}
					}
					else {
						// icerik bos, muhtemelen birden fazla spoiler tag'i arka arkaya gelmis
						tagLevel += 1;
						skipNextSpoilerTag = true;
						//GM_log('level + 1');
					}
				}
			}
			else {
				// icerik
				if (tagLevel > 0) {
					// tag icindeyiz
					//GM_log('adding text: ' + entryParts[j]);
					textInSpoiler += entryParts[j];
				}
				else {
					// tag icinde degiliz, normal icerik
					newEntry += entryParts[j];
				}
			}
		}
		
		entries[i].innerHTML = newEntry;
		
	}