Wikipedia:Narzędzia/Wyszukiwanie i zamiana

Z Wikipedii, wolnej encyklopedii
rys. 1: Menu wyszukiwania i zamiany, a ponad nim 2 przyciski gadżetu oraz obok nich ikonka innego gadżetu – WP:SK
Menu wyszukiwania i zamiany w wersji z paskiem narzędzi z 2006 roku
Zmiana wielkości liter następuje w sekwencji: Aaa, AAA, aaa. Zobacz też pozostałe zrzuty ekranu (screeny).

Skrypt (searchbox) dodaje dwa przyciski do paska narzędziowego nad oknem edycji, które umożliwiają skorzystanie z nowych funkcji.

  • Wyszukiwanie i zamiana — naciśnięcie pierwszego () ukazuje menu wyszukiwania i zamiany tekstu w edytowanym artykule (rys. 1). Oprócz prostej zamiany jednego tekstu na drugi umożliwia skorzystanie z wyrażeń regularnych (RegEx) zgodnych ze składnią używaną przez JavaScript.
  • Zmiana wielkości liter — zmiana ta następuje w sekwencji:
    • aaa – małe litery
    • Aaa – pierwsza litera duża
    • AAA – wszystkie litery duże
  • Począwszy od wersji 1.1.0 opcja "zamień wszystkie" działa w tle, dzięki czemu zamiana jest znacznie szybsza, a nawet drastycznie szybsza dla długich tekstów.

W skrócie[edytuj | edytuj kod]

Funkcja RegEx i modyfikacje wikikodu tabel[edytuj | edytuj kod]

Aby dodać do tabeli nową kolumnę i nie musieć ręcznie wstawiać jej w każdym wierszu (zob. Pomoc:Tabele), można użyć funkcji RegEx. Jako znaku nowej linii możesz użyć „\n”. Przy czym musisz sobie włączyć właśnie ten RegExp, a tu troszkę się sprawa komplikuje. Wyrażenia regularne (ang. REGular EXpression), to coś w rodzaju języka wyszukiwania. Pewne znaki mają specjalne znaczenie. Tak się składa, że „|” jest znakiem specjalnym. Jeśli chcesz znaleźć znak „|”, to musisz dodać przed nim „\”

Jak to działa?

Jeśli chcesz dodać nową kolumnę (działa, jeśli chcesz dodać ją jako ostatnią), wpisujesz w odpowiednie pola

znajdź: \|-
zamień na: |\n|-

Załóżmy, że w tabeli w kolejnych wierszach z treścią

|ala ma kota

chcesz dodać kolejną kolumnę z wierszami:

|Ala nie ma kota

czyli uzyskać po dwie kolumny z treściami

|ala ma kota
|Ala nie ma kota

Robisz to tak:

Szukasz „\|ala ma kota”. To na co zamieniasz nie jest już wyrażeniem regularnym jako takim, ale można tam używać znaków specjalnych typu „\n” (nowy wiersz), „\t” (tabulacja) itp.

Czyli ostatecznie szukasz:

znajdź: „\|ala ma kota”
zamień na: „|ala ma kota\n| Ala nie ma kota”

Inny przykład - bardziej konkretny (np. dla tabeli zabytków w Jedlinie-Zdroju). Chcemy dodać do wywołań szablonów kolumnę umożliwiającą dodanie zdjęcia.

znajdź: "\| współrzędne= "
zamień na "| zdjęcie = \n| współrzędne= "

Ale wyrażenia regularne są jeszcze fajniejsze dlatego, że możesz użyć tego, co znalazłeś. Oznacza się taki fragment nawiasami czyli np. szukasz „\|a(la) (ma kota)” i teraz aby tego użyć przy zmianie piszesz „$” i numer nawiasu (tutaj 1 lub 2). I teraz możesz zamienić na „| A$1 $2\n| A$1 nie $2” i otrzymasz dokładnie to samo (chociaż nie wygląda prawda ;-)).

Idąc dalej tym tropem chciałbyś móc zmienić więcej na raz np. „adam ma krokodyla”. Tu wracamy do znaku „|”, który znaczy ni mniej ni więcej tylko „lub” np. „(ma kota|ma krokodyla)” należy czytać „ma kota lub ma krokodyla”. Zwróć uwagę na nawiasy. Teraz zrobimy Alo-Adama: „a(la|dam)” i razem:

znajdź: „\|a(la|dam) (ma kota|ma krokodyla)”
zamień na: „| A$1 $2\n| A$1 nie $2”

Dla Ali wynik będzie jak chciałeś, ale dla Adam „$1”, to „dam”, a „$2”, to „ma krokodyla”, czyli „|adam ma krokodyla” zmieni się na:

| Adam ma krokodyla
| Adam nie ma krokodyla

I to wszystko przy jednym podejściu.

Uwagi odnośnie do działania skryptu[edytuj | edytuj kod]

Wspierane przeglądarki[edytuj | edytuj kod]

Skrypt był testowany i działa prawidłowo pod następującymi przeglądarkami: Firefox (100+) i Chrome (100+).

Znane problemy[edytuj | edytuj kod]

Program nie jest testowany w starych przeglądarkach (IE, Chrome i Firefox z Windows XP). Powinien jednak mieć podstawową funkcjonalność.

Problemy proszę zgłaszać na mojej stronie dyskusji, albo w kawiarence technicznej (ale z pingiem @Nux).

Instrukcja instalacji[edytuj | edytuj kod]

Skrypt jest dostępny jako tzw. Gadżet i instaluje się go następująco:

  1. Otwórz stronę „Preferencje”.
  2. Tam przejdź na zakładkę „Gadżety”.
  3. Odszukaj sekcję „Edycja stron”.
  4. Zaznacz: „Wyszukiwanie i zamiana”.
  5. Zapisz zmiany.

Jeśli chcesz zainstalować wersję roboczą, to zajrzyj do ogólnej instrukcji instalacji narzędzi.

Ustawienia[edytuj | edytuj kod]

Od wersji 1.0 dostępne jest przypominanie zapisanych reguł. Reguły te należy wpisać do własnego skryptu w następującej formie:

mw.hook('userjs.SearchBox.init').add(function (sr) {
 sr.mem.s = [''
	,'do wyszukania'
	,'cośik'
 ]
 sr.mem.r = [''
	,'do wstawienia'
	,'cosik'
 ]
});

Rozszerzenia (hooks)[edytuj | edytuj kod]

Od wersji 2.6 dostępne są hooki, które umożliwiają stworzenie rozszerzeń funkcjonalnych do SearchBox.

Dostępne są trzy główne hooki:

// hook executed after creation of the form (1st time form is shown)
// `sr` is the main object.
mw.hook('userjs.SearchBox.create').add(function (sr) {
});
// each time when form is shown
mw.hook('userjs.SearchBox.show').add(function (sr) {
});
// each time when form is shown or hidden
mw.hook('userjs.SearchBox.showHide').add(function (sr, hidding) {
});

Dodatkowo jest też hook `init`, który może być użyty to zmiany ustawień bądź zmianami przed utworzeniem formularza. Należy pamiętać, żeby unikać zmiany funkcji. Inaczej jedno rozszerzenie zmieni zachowanie i funkcja będzie się zachowywać niezgodnie z oczekiwaniami. W razie potrzeby lepiej poproś o dodanie nowego hook zamiast zmieniać całą funkcje.

Pamiętaj, że hooki zostają wykonane również wstecznie przy dodawaniu. Np. jeśli funkcja `nuxsr.init()` została już wykonana, to poniższego funkcja obsługi hooka zostanie wykonana od razu. Czyli wpis w JS console pojawi się od razu po wykonaniu poniższego kodu.

mw.hook('userjs.SearchBox.init').add(function (sr) {
	console.log('[nuxsr]', 'init', {sr});
});

Zobacz też[edytuj | edytuj kod]