ao3 hide some tags

Auto hide some tags you don't like to see

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Greasemonkey lub Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Violentmonkey.

Aby zainstalować ten skrypt, wymagana będzie instalacja rozszerzenia Tampermonkey lub Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, musisz zainstalować rozszerzenie menedżera skryptów użytkownika.

(Mam już menedżera skryptów użytkownika, pozwól mi to zainstalować!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Musisz zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

(Mam już menedżera stylów użytkownika, pozwól mi to zainstalować!)

// ==UserScript==
// @name        ao3 hide some tags
// @description Auto hide some tags you don't like to see
// @namespace   ao3
// @include     http*://archiveofourown.org/*
// @grant       none
// @version     1.1
// ==/UserScript==


(function($) {


/**** CONFIG ********************/

    var tagsToHide = ["camel spiders", "*worms", "ticks"]; // use * for wildcard
    var buttonLabel = "~";

/********************************/




    $('.blurb ul.tags, .meta .tags ul').each(function() {
        var $list = $(this);
        $list.find('a.tag').each(function() {        
            var $tag = $(this);
            var text = $tag.text();
            
            for (var i = 0, len = tagsToHide.length; i < len; i++) {
                if (termsMatch(text, tagsToHide[i])) {
                    hideTagsList($list);
                    return false;
                }
            }
        });
    });

    function hideTagsList($list) {
        $list.hide();
        $('<button>').addClass('hide-some-tags-userscript').text(buttonLabel).click(function() {
            $(this).next('ul').toggle();
        }).insertBefore($list);
    }
    
    function termsMatch(testTerm, listTerm) {
        testTerm = testTerm.toLowerCase();
        listTerm = listTerm.toLowerCase();
        if (testTerm == listTerm) { return true; }

        if (listTerm.indexOf('*') == -1) return false;
        
        var parts = listTerm.split('*'),
            prevPartIndex = 0,
            firstPart,
            lastPart;

        for (var i = 0, part, len = parts.length; i < len; i++) {
            part = parts[i];
            partIndex = testTerm.indexOf(part);
            if (part && partIndex < prevPartIndex) {
                return false;
            }
            prevPartIndex = partIndex + part.length;
        }
        
        firstPart = parts[0];
        lastPart = parts[parts.length-1];

        return !(
            firstPart && testTerm.indexOf(firstPart) != 0 ||
            lastPart && testTerm.indexOf(lastPart)+lastPart.length != testTerm.length
        );
    }

})(window.jQuery);