LINUX.ORG.RU

Greasemonkey script


0

0

Почему-то вариант sdio у меня не заработал, да и сам стиль меня смущал.
Так что я несколько переписал его, выкладываю тут под GPL. Может кому пригодится.

// ==UserScript==
// @name          LOR black and VIP list 
// @description   Remove messages of blacklisted users and color for VIP.
// @include       http://www.linux.org.ru/*view-message.jsp?*
// ==/UserScript==
// License: GPL
// Inspired by sdio

var vips = [ "sdio", "ivlad", "Zulu", "Teak", "JB", "Shaman007" ];
var ignore = [ "Irsi", "R00T", "Ty3uK", "ugoday", "aspell" ];

// ------------------

function process (elem) {
	var vip_regex = new RegExp ("^("+vips.join("|")+") .*");
	var ign_regex = new RegExp ("^("+ignore.join("|")+") .*");
	cont = get_last(elem, "i", "").textContent;
	if (cont.match(vip_regex)) {
		var grandparent = elem.parentNode.parentNode.parentNode.parentNode;
		grandparent.style.border="3px dotted #00A800";
	}
	if (cont.match(ign_regex)) {
		elem.textContent = "Hidden: "+cont;
	}
}

function get_all (a_parent, a_tag, a_class) {
	var q = a_parent.getElementsByTagName (a_tag);
	var res = new Array;
	for (var i = 0; q[i]; i++) {
		if (q[i].className == a_class) {
			res.push(q[i]);
		}
	}
	return res;
}

function get_first (a_parent, a_tag, a_class) {
	return get_all(a_parent, a_tag, a_class).shift();
}

★★☆☆

Re: Greasemonkey script

Вы бы их выкинули на userscripts.org, а то ведь улетят. Хотя как я понял там регистрироваться надо...

Teak ★★★★★ ()

Re: Greasemonkey script

Блин, а где последние две строчки? 8((((

Репост:

// ==UserScript==
// @name          LOR black and VIP list 
// @description   Remove messages of blacklisted users and color for VIP.
// @include       http://www.linux.org.ru/*view-message.jsp?*
// ==/UserScript==
// License: GPL
// Inspired by sdio

var vips = [ "sdio", "ivlad", "Zulu", "Teak", "JB", "Shaman007" ];
var ignore = [ "Irsi", "R00T", "Ty3uK", "ugoday", "aspell" ];

// ------------------

function process (elem) {
	var vip_regex = new RegExp ("^("+vips.join("|")+") .*");
	var ign_regex = new RegExp ("^("+ignore.join("|")+") .*");
	cont = get_last(elem, "i", "").textContent;
	if (cont.match(vip_regex)) {
		var grandparent = elem.parentNode.parentNode.parentNode.parentNode;
		grandparent.style.border="3px dotted #00A800";
	}
	if (cont.match(ign_regex)) {
		elem.textContent = "Hidden: "+cont;
	}
}

function get_all (a_parent, a_tag, a_class) {
	var q = a_parent.getElementsByTagName (a_tag);
	var res = new Array;
	for (var i = 0; q[i]; i++) {
		if (q[i].className == a_class) {
			res.push(q[i]);
		}
	}
	return res;
}

function get_first (a_parent, a_tag, a_class) {
	return get_all(a_parent, a_tag, a_class).shift();
}

function get_last (a_parent, a_tag, a_class) {
	return get_all(a_parent, a_tag, a_class).pop();
}

var cmt = get_first (document, "div", "comment");
get_all (cmt, "div", "msg").forEach (process);

Zulu ★★☆☆ ()
Ответ на: Re: Greasemonkey script от Zulu

Re: Greasemonkey script

Классно.
Я же говорил, что javascript не знаю, писал наощупь в надежде привлечь внимамние сообщества

sdio ★★★★★ ()
Ответ на: Re: Greasemonkey script от sdio

Re: Greasemonkey script

Я тоже не знаю 8((( Пришлось мозилловскую доку читать.

PS. В финальной версии особо спецэффектов нет, но по ходу я пробовал разное; так вот, оказывается javascript анонимные функции умеет! Фигасе, интересно как у него с лямбда-исчислением?

Zulu ★★☆☆ ()
Ответ на: Re: Greasemonkey script от Zulu

Re: Greasemonkey script

Товарищ Луговский в своей единственной доступной миру статье вообще рекомендует его как один из языков, наиболее подходящих для метапрограммирования. :) А анонимные функции там вроде есть, да.

Teak ★★★★★ ()
Ответ на: Re: Greasemonkey script от Zulu

Re: Greasemonkey script

// ==UserScript==
// @name          ShareReactor sort table by year
// @include       http://www.sharereactor.ru/cgi-bin/mzgenre.cgi?*
// ==/UserScript==
// Сортировка таблицы по году ("фильмы" -> "по жанру")
// License: GPL

// written by Zulu
function get_all (a_parent, a_tag, a_class) {
        var q = a_parent.getElementsByTagName (a_tag);
        var res = new Array;
        for (var i = 0; q[i]; i++) {
                if (q[i].className == a_class) {
                        res.push(q[i]);
                }
        }
        return res;
}

// written by Zulu
function get_first (a_parent, a_tag, a_class) {
        return get_all(a_parent, a_tag, a_class).shift();
}

// written by sdio
function sortYear(a,b){
        var aa = a.getElementsByTagName("td").item(1).textContent;
        var bb = b.getElementsByTagName("td").item(1).textContent;
        if (aa > bb) {
                return -1;
        }
        if (aa == bb) {
                return 0;
        }
        if (aa < bb) {
                return 1;
        }
}

var cmt = get_first (document, "table", "XPtable");
var lines = get_all(cmt, "tr", "historytext").sort(sortYear);
var tbody = get_first(cmt, "tbody", "");
for (var i=0; i<lines.length; i++){
        tbody.appendChild(lines[i]);
}

sdio ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.