Dyskusja MediaWiki:Gadget-insert-inflection.js

Treść strony nie jest dostępna w innych językach.
Z Wikisłownika – wolnego słownika wielojęzycznego

Sortowanie parametrów[edytuj]

W WS:Bar/Dyskusje ogólne/Źródłosłów#Sortowanie w odmianie zgłoszono nieprawidłowe sortowanie parametrów w wygenerowanym szablonie. Zdawało się, że znalazłem rozwiązanie (wersja bieżąca), które przeklejam poniżej, lecz nie uwzględniłem pewnych wyjątków. Gdy liczba parametrów jest parzysta, skrypt tasuje tak, by najpierw wstawiano te na pozycji parzystej, a potem nieparzyste. Jeżeli liczba jest nieparzysta, ostatni parametr zawsze pozostanie na końcu (z myślą o parametrze rodzaj dla odmiany rzeczownikowej niemieckiej). Niestety, polska odmiana rzeczownikowa burzy ten układ z powodu parametrów Forma (n)depr. Trzeba by coś dodać do MediaWiki:Gadget-insert-inflection-data.js, by skrypt wiedział, że nie powinien tasować parametrów powyżej konkretnej liczby porządkowej.

function arrangeFields( arr ) {
	var i,
		len = arr.length - (1 + arr.length % 2);
	
	for ( i = 1; i <= Math.floor( arr.length / 2 ); i++ ) {
		// https://stackoverflow.com/a/2440723
		arr.splice(len, 0, arr.splice(i, 1)[ 0 ]);
	}
	
	return arr;
}

function insertTemplate() {
	var data = $templateSelector.data( 'selectedTemplate' ),
		text = mw.format( '{{$1\n', data.template ),
		fields = [],
		padding = 0;

	$.each( data.fields, function ( i, field ) {
		fields.push( {
			name : field.name,
			value: field.$input ? field.$input.val() : field.value
		} );
		
		if ( field.name.length > padding ) {
			padding = field.name.length;
		}
	} );

	padding++;
	arrangeFields( fields );

	$.each( fields, function ( i, item ) {
		while ( item.name.length < padding ) {
			item.name += ' ';
		}

		if ( item.name[ 0 ] >= '0' && item.name[ 0 ] <= '9' ) {
			text += mw.format( '|$1\n', item.value );
		} else {
			text += mw.format( '|$1 = $2\n', item.name, item.value );
		}
	} );

	text += '}}';

	$( '#wpTextbox1' ).focus().textSelection( 'encapsulateSelection', {
		pre: text
	} );
}

Peter Bowman (dyskusja) 18:30, 14 mar 2020 (CET)[odpowiedz]

Formatowanie[edytuj]

  1. Czy gadżet mógłby automatycznie dodawać to, co należy dodać przed wygenerowanym szablonem? Ewentualnie też wstawić szablon we właściwym miejscu na stronie?
  2. Jakie są zasady obecności pustych spacji przez znakiem = i czy gadżet mógłby je stosować? Czy gadżet mógłby nie wstawiać niewypełnionych pól?

Wargo (dyskusja) 20:20, 17 lip 2020 (CEST)[odpowiedz]

@Wargo:
  1. Czy chodzi o dwukropek i numerację? Czasem wstawiamy dwa szablony w jednym rzędzie, więc drugiego nie może poprzedzać wcięcie, a numeracji nie da się prosto wywnioskować. To samo dotyczy umieszczenia tekstu we właściwym miejscu. Ostatecznie dla użytkownika nie powinno to być zbyt pracochłonne, natomiast skrypt może się pomylić. Automatyzacja procesu mogłaby doprowadzić do zaniechania weryfikacji, czy wszystko jest na swoim miejscu.
  2. Zasad w tym zakresie nie mamy, ale najczęściej zostawiamy jedną spację przed i jedną po, zob. na przykład pusty szablon do wypełnienia w {{odmiana-rzeczownik-polski}}. Boty i inne narzędzia i tak zamieniają ciągi spacji na pojedynczą spację w trakcie wykonywania innych czynności, więc usunąłem przed chwilą ten nadmiarowy padding. Niewykorzystywanych, niewypełnionych pól (przypuszczam, że chodzi o Forma (n)depr) nie tak łatwo wywnioskować, prościej jest usunąć ręcznie po wstawieniu szablonu (w każdym razie ich obecność nie przeszkadza, podobnie jest z szablonami polskiej odmiany czasownikowej).
Peter Bowman (dyskusja) 21:08, 17 lip 2020 (CEST)[odpowiedz]
"Czasem wstawiamy dwa szablony w jednym rzędzie" - jakie na przykład?
"nie tak łatwo wywnioskować" - jeżeli zostawiłem puste? Wargo (dyskusja) 21:16, 17 lip 2020 (CEST)[odpowiedz]
@Wargo: zob. Jedlicze. Niekiedy wstawiamy szerszy opis (zob. Rzeczpospolita Polska; tu bym połączył oba wiersze w jedno, ale jednak sztywnych zasad nie ma), częściej jeden z szablonów {{zw zg}}, {{zw rz}}, {{zw prz}} we frazach (zob. pasta do zębów). Co do pustych pól miałem na myśli ustalenie przez gadżet, kiedy niewypełnione pole może, a kiedy nie powinno pozostać puste. W przypadku parametrów form (nie)deprecjatywnych masz rację, ale wypada jakoś je odróżnić od pozostałych, ostrzegać użytkownika przed próbą wstawienia szablonu bez wymaganego parametru. W tym sensie niewypełniony opcjonalny parametr nie szkodzi, zaś brakujący niezbędny parametr to problem dla użytkownika, który potem nie wie, który ze wszystkich parametrów ma jakieś specjalne znaczenie. Z drugiej strony tę informację można umieścić w opisie (MediaWiki:Gadget-insert-inflection-data.js); idąc jeszcze dalej, to bym już rozbudował nieco tę część i dodał obsługę nowej właściwości optional w JSONie, przy okazji zahaczając o problem sortowania. Peter Bowman (dyskusja) 21:48, 17 lip 2020 (CEST)[odpowiedz]

@Peter Bowman A czy to = przy skrótowcach jest w ogóle potrzebne? Skrypt nie mógłby rozpoznawać strzałki w znaczeniach i automatycznie wszystkiego wcześniej w danej linii traktować jak język obcy? 78.11.223.83 (dyskusja) 23:45, 17 lip 2020 (CEST)[odpowiedz]

Przekleiłem powyższe pytanie wraz z moją odpowiedzią do Dyskusja MediaWiki:Gadget-section-links.js#Linkowanie przy skrótowcach. Peter Bowman (dyskusja) 20:50, 18 lip 2020 (CEST)[odpowiedz]