Dyskusja modułu:Sprawdź
Obsługa pustej wartości (modyfikator "?") dla wyrażenia regularnego (^...$)[edytuj kod]
Pisane z głowy, więc kod może nie działać tak jak powinien:
local pattern = string.match(kind,"^(^.-$)!?$")
local pattern? = string.match(kind,"^(^.-$)%?$")
if (pattern and not mw.ustring.match(v, pattern))
or (pattern? and not (#v == 0 or mw.ustring.match(v, pattern?))) then
table.insert(invalid, argName(k))
elseif (#v > 0) ...
--MarMi wiki (dyskusja) 18:16, 20 kwi 2021 (CEST)
- @MarMi wiki Chodzi o implementację sprawdzania czy pole pasuje do wzoru lub jest puste? Ja to rozwiązuję tak, że jeśli pole puste jest prawidłowe to nie podstawiam wzoru do {{#invoke:Sprawdź|Parametry}}. Wyrażenia regularne Lua są dosyć prymitywne. Nie widzę powodu aby je nadto promować. Mamy szablony, w których zamiast jednego sztywnego wzoru dobierany jest dedykowany wzór w zależności od wartości innego parametru. Zobacz źródła tutaj albo tutaj. Ich analiza w celu na przykład uzupełnienia lub poprawienia błędów to naprawdę niezła łamigłówka. Oczywiście zawsze możesz spróbować dodać ten kod samodzielnie. Paweł Ziemian (dyskusja) 20:04, 20 kwi 2021 (CEST)
- Tak, zapomniałem o istnieniu 1= jako opcjonalnego parametru.
- Skoro już i tak wywołuje się moduł, to czemu by przy okazji nie skorzystać z regexów?
|2=^%-?%d$?}}
jest bardziej zwarte od|2={{#if:{{{2|}}}|^%-?%d$}}
(zakładając że działało by tak samo), chociaż z podświetlaniem składni da się jeszcze to odczytać.- Przydała by się kontrola parametrów w samym module, bo zdarzało się że zapominałem o użyciu ^ i/lub $, przy ^...$? wydawało się że test jakoś działa, a tak naprawdę był ignorowany. MarMi wiki (dyskusja) 00:35, 21 kwi 2021 (CEST)
- Argument za kontrolą parametrów - albo przynajmniej za rozpoznawaniem błędów zwracanych przez szablony:
- {{#exprːln0}} rzuca błędem Błąd w wyrażeniu: nieprawidłowy argument funkcji ln – mniejszy lub równy 0
- |{{#invoke:Sprawdź|Parametry|=błąd błąd|1={{#exprːln0}}}}| połyka błędy szablonów w 1=: ||. MarMi wiki (dyskusja) 01:43, 27 kwi 2021 (CEST)
- Szybki fragment kodu:
- MarMi wiki (dyskusja) 02:40, 27 kwi 2021 (CEST)
if mw.ustring.match(v, 'class="error">') then table.insert(invalid, k) table.insert(unknown, v) end
- Użycie jednego ze znaków "^" lub "$" może być zamierzone, więc komunikat o błędzie nie jest wskazany. ~malarz pl PISZ 09:48, 21 kwi 2021 (CEST)
- Może się mylę, ale dla funkcji "parametry" inny tekst, nie pasujący do wzorca któregoś z testów (zmienna "kind"), jest po prostu ignorowany? Czy jednak jest do czegoś używany? MarMi wiki (dyskusja) 18:23, 21 kwi 2021 (CEST)
Klasa problemy a widoczność w przestrzeni głównej (ns:0)[edytuj kod]
Jeśli dobrze zrozumiałem (przyglądając się jednemu z szablonów cytuj xxx), to komunikaty o błędach (suffix) (klasa stylów problemy) nie będą widoczne w przestrzeni głównej (poza podglądem strony). Czy można dodać klasę (np. z display:inherit!important;
- {{#invoke:Sprawdź|parametry|=zawsze-pokazuj
}}), albo po prostu dodatkową opcję która by to przełączała (ale bez stylu chyba się i tak nie obejdzie)? (Jeśli to byłaby klasa, to może warto by też dodać możliwość podawania kilku klas: ="klasa1 ... klasaN" kategoria
).
Ewentualnie czy któraś klasa stylów z Mediawiki:common.css (lub innych, o których nie wiem) z display:xxx!important;
by się do tego nadawała? Bo niektóre z nich potrafią mieć inne ustawienia początkowe niż te na stronie (np. cite-name-before jest z none, a w artykule jest inline): cite-name-before, cite-name-after, cite-name-full, cite-name-initials, cite-at-al. MarMi wiki (dyskusja) 23:25, 30 maj 2021 (CEST)
- @MarMi wiki (Sorki za późną odpowiedź. Umknęło mi.) Miliony osób zaglądających na Wikipedię to przeważnie czytelnicy. Z ich punktu widzenia te czerwone komunikaty to nic nie znaczący śmietnik, który zaburza odczytywanie informacji. Niewielka garstka zalogowanych użytkowników, która byłaby zainteresowana uwidacznianiem tych treści nawet w przestrzeni głównej może skorzystać z Specjalna:Moja strona/common.css aby to włączyć. Stosowny opis jest dodany w opisie kategorii, która jest przy tej okazji dodawana. Zobacz na przykład opis w Kategoria:Szablon cytuj do sprawdzenia. Przy
cite-name-*
sugerowałbym nie manipulować, bo to może zepsuć działanie {{cytuj}}. Paweł Ziemian (dyskusja) 19:01, 6 cze 2021 (CEST)- W razie czego (dla zainteresowanych) jest na to lepszy(?) sposób:
- TemplateStyles (w Szablonach), w Modułach można to zrobić przez:
- MarMi wiki (dyskusja) 20:45, 6 cze 2021 (CEST)
return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Module:Sidebar games events/styles.css' } } .. tostring(root) -- albo return table.concat({frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Sidebar games events/styles.css' } }, tostring(root)})
- Przestaję rozumieć tę dyskusję. Paweł Ziemian (dyskusja) 21:12, 6 cze 2021 (CEST)
- To była raczej ogólna (p)odpowiedź w celach ogólno-edukacyjnych. Nie każdy kto tu ewentualnie zajrzy (np. by zadać podobne pytanie) może wiedzieć o TemplateStyles (ja nie wiedziałem). MarMi wiki (dyskusja) 04:44, 7 cze 2021 (CEST)
Pusty kod w linii 312?[edytuj kod]
Czy ten warunek Moduł:Sprawdź#L-312 coś robi? Bo wygląda na niepotrzebny. MarMi wiki (dyskusja) 01:21, 22 cze 2021 (CEST)
- Sprawdza czy jest jakaś nazwa szablonu do wyświetlenia. Nawet jeśli zbędny to nie przeszkadza. Paweł Ziemian (dyskusja) 17:11, 22 cze 2021 (CEST)
- Dla jasności, chodziło mi o cały blok if ... end. Co do nie przeszkadzania: Redundancja#Programowanie.
- Jeśli jednak do czegoś służy (np. ma wyłożyć moduł przed dotarciem do drugiego wywołania showTemplate w wypadku błędu w tej funkcji), to warto by to zaznaczyć w komentarzu. MarMi wiki (dyskusja) 01:19, 23 cze 2021 (CEST)