Удзельнік:Artsiom91/toHlist.js

З Вікіпедыі, свабоднай энцыклапедыі

Заўвага: Пасля апублікавання, вам можа спатрэбіцца ачыстка кэшу браўзера, каб убачыць унесеныя змены.

  • Firefox / Safari: націсніце Reload, утрымліваючы Shift, або націсніце Ctrl-F5 ці Ctrl-R (⌘-R на Макінтошах)
  • Google Chrome: Націсніце Ctrl-Shift-R (⌘-Shift-R на Mac)
  • Internet Explorer / Edge: націсніце Refresh, утрымліваючы Ctrl, або націсніце Ctrl-F5
  • Opera: Увайдзіце Menu → Settings (Opera → Preferences на Mac), далей Privacy & security → Clear browsing data → Cached images and files.
mw.loader.using( 'jquery.textSelection' ).done(function () {

window.toHlist = function () {
	var classList = 'hlist';
	var text = $( '#wpTextbox1' ).textSelection( 'getContents' );
	var newText = text.replace( /(\|\s*(?:спіс|list|змест|утрыманне)\d*\s*=)([^]*?\n\s*)(?=\||\}\})/g, function ( s, m1, m2 ) {
		var m2r = m2.replace( /\{\{(?:[nN]o(?:wrap|br)|[sS])\|([^•·\}]+?)\s*(?:(?:\{\{)?•(?:\}\})?|(?:\'\'\'|\{\{)?·(?:\'\'\'|\}\})?|\{\{\*\}\})\s*\}\}\s*/g, '$1\n* ' );
		if ( m2 !== m2r && classList.indexOf( 'hlist-items-nowrap' ) === -1 ) {
			classList += ' hlist-items-nowrap';
		}
		m2r = m2r.replace( /\s*({\{[·•*т!](w(rap)?)?\}\}|·|•||)(?: )?\s*(?: )?/g, '\n* ' );
		if ( m2 !== m2r ) {
			m2r = m2r.replace( /^(\s*)<div(?:[\w ]+?=[^<>]+| ?)>([^]*?)\n?<\/div>(\s*)$/, '$1$2$3' );
			m2r = m2r.replace(
				/^(\s*)\{\{[nN]owrap begin\}\}([^]*?)\n?\{\{[nN]owrap end\}\}(\s*)$/,
				'$1$2$3'
			);
			m2r = m2r.replace( /^(\s*)<center>([^]*?)\n?<\/center>(\s*)$/, '$1$2$3' );
			m2r = '\n* ' + m2r.replace( /^\s*/g, '' );
			m2r = m2r.replace( /\* \{\{(?:[nN]o(?:wrap|br)|[sS])\|([^\}]+?)\s*\}\}(\s*)$/, '* $1$2' ); 
			m2r = m2r.replace( / *(\s*)$/, '$1' );
			var prevM2r = m2r;
			m2r = m2r.replace( /\* \}\}\n/g, '* ' );
			m2r = m2r.replace( /\* \{\{(?:[nN]o(?:wrap|br)|[sS])\|/g, '* ' );
			m2r = m2r.replace( /(\n\* )([^{].+)\}\}(\s*)$/, '$1$2$3' );
			if ( prevM2r !== m2r && classList.indexOf( 'hlist-items-nowrap' ) === -1 ) {
				classList += ' hlist-items-nowrap';
			}
		}
		return m1 + m2r;
	} );
	if ( !newText.match( /[Нн]авігацыйная паласа/ ) && !newText.match( /[^"']hlist[^"']/ ) ) {
		if ( newText.indexOf( '\n\n' ) !== -1 ) {
			newText = newText.replace( /^([^]*?)(\n\n)/, '$1\n|клас_спісаў   = ' + classList + '$2' );
		} else {
			newText = newText.replace(
				/^([^]*\| *state *=[^\n]*\n)/,
				'$1|клас_спісаў   = ' + classList + '\n'
			);
		}
	}
	$( '#wpTextbox1' ).textSelection( 'setContents', newText );
	
	var summaryText = $( '#wpSummary' ).val();
	if ( text !== newText && !/hlist/.test( summaryText ) ) {
		$( '#wpSummary' ).val( summaryText + ( /[^,; \/]$/.test( summaryText ) ? ', ' : '' ) +
			'перавод на hlist пры дапамозе [[Шаблон:Navbox#bookmarklet|букмарклета]]'
		);
	}
};
window.toHlist();

} );