Wikipedia:Narzędzia/Wyszukiwanie i zamiana

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

Funkcja RegEx i modyfikacje wikikodu tabel edytuj

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

Wspierane przeglądarki edytuj

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

Znane problemy edytuj

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

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

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

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