Extension:WikEdDiff

This page is a translated version of the page Extension:WikEdDiff and the translation is 67% complete.
Other languages:
English • ‎Türkçe • ‎中文 • ‎日本語
MediaWiki 拡張機能マニュアル
OOjs UI icon advanced.svg
WikEdDiff
リリースの状態: 安定
WikEd logo64x64.gif
実装 ユーザー インターフェイス
説明 Inline-style difference engine with block move support
作者 Cacycletalk
最新バージョン 1.2.5 (2015-07-20)
MediaWiki 1.17 - 1.25
PHP 5.3.0
データベースの変更 いいえ
ライセンス GNU 一般公衆利用許諾書 2.0 以降
ダウンロード
$wgWikEdDiffFullDiff, $wgWikEdDiffShowBlockMoves, $wgWikEdDiffCharDiff, $wgWikEdDiffRepeatedDiff, $wgWikEdDiffRecursiveDiff, $wgWikEdDiffRecursionMax, $wgWikEdDiffUnlinkBlocks, $wgWikEdDiffUnlinkMax, $wgWikEdDiffBlockMinLength, $wgWikEdDiffColoredBlocks, $wgWikEdDiffNoUnicodeSymbols, $wgWikEdDiffStripTrailingNewline, $wgWikEdDiffDebug, $wgWikEdDiffTimer, $wgWikEdDiffUnitTesting
WikEdDiff 拡張機能の翻訳にご協力ください
使用状況とバージョン マトリクスを確認してください。
問題点 未解決のタスク · バグを報告
WikEdDiff example diff:
deleted text, inserted text, block move mark, moved block, single character changes, highlighted moved block and block mark, and ambiguous insertion aligned to line.

WikEdDiff is a visual inline-style difference engine with block move support. This extension is a feature-identical synced one-to-one PHP port of the JavaScript library wikEd diff that is used by the Wikipedia/MediaWiki in-browser editor wikEd and by the gadget wikEdDiff. You can test wikEdDiff by checking any of these gadgets in your English Wikipedia preferences. For testing the effects of different settings, you can also use the wikEd diff online tool and demo.

Features

  • Visual inline style, changes are shown in a single output text
  • Block move detection and highlighting
  • Resolution down to characters level
  • Unicode and multilingual support
  • Stepwise split (paragraphs, lines, sentences, words, characters)
  • Recursive diff
  • Optimized code for resolving unmatched sequences
  • Minimization of length of moved blocks
  • Alignment of ambiguous unmatched sequences to next line break or word border
  • Clipping of unchanged irrelevant parts from the output (optional)
  • Fully customizable
  • Text split optimized for MediaWiki source texts
  • Well commented and documented code

パフォーマンス

The performance of wikEdDiff as compared to the MediaWiki bundled engine 'wikidiff3' (which is not used by default) depends mostly on the number of changes per text and text length. For typical comparisons, the MediaWiki default engine 'wikidiff3' is typically faster by a factor of up to 3 - 4-fold. For long and heavily changed articles, wikEdDiff can be slightly faster than 'wikidiff3'. These numbers are for wikEdDiff version 1.2.2 with default settings (i.e. optimal diff quality).

インストール

  • For MediaWiki versions before 1.25, WikEdDiff requires a patch to the MediaWiki core to add the new hook GetDifferenceEngine.

In the file includes/content/ContentHandler.php replace the content of function createDifferenceEngine with:

	// hook: get diff engine class name
	$diffEngineClass = '';
	if ( wfRunHooks( 'GetDiffEngineClass', array( $context, &$diffEngineClass ) ) ) {
		// use default diff engine
		$diffEngineClass = $this->getDiffEngineClass();
	}
	return new $diffEngineClass( $context, $old, $new, $rcid, $refreshCache, $unhide );
  • ダウンロードして、ファイルを extensions/ フォルダー内の WikEdDiff という名前のディレクトリ内に配置します。
  • 以下のコードを LocalSettings.php の末尾に追加します:
    wfLoadExtension( 'WikEdDiff' );
    # Optional customization options:
    
    # Show complete un-clipped diff text (false)
    $wgWikEdDiffFullDiff = false;
    
    # Enable block move layout with highlighted blocks and marks at their original positions (true)
    $wgWikEdDiffShowBlockMoves = true;
    
    # Enable character-refined diff (true)
    $wgWikEdDiffCharDiff = true;
    
    // Enable repeated diff to resolve problematic sequences (true)
    $wgWikEdDiffRepeatedDiff = true;
    
    # Enable recursive diff to resolve problematic sequences (true)
    $wgWikEdDiffRecursiveDiff = true;
    
    # Maximum recursion depth (10)
    $wgWikEdDiffRecursionMax = 10;
    
    # Reject blocks if they are too short and their words are not unique,
    # prevents fragmentated diffs for very different versions (true)
    $wgWikEdDiffUnlinkBlocks = true;
    
    # Maximum number of rejection cycles (5)
    $wgWikEdDiffUnlinkMax = 5;
    
    # Reject blocks if shorter than this number of real words (3)
    $wgWikEdDiffBlockMinLength = 3;
    
    # Display blocks in differing colors (rainbow color scheme) (false)
    $wgWikEdDiffColoredBlocks = false;
    
    # Do not use UniCode block move marks (legacy browsers) (false)
    $wgWikEdDiffNoUnicodeSymbols = false;
    
    # Strip trailing newline off of texts (false)
    $wgWikEdDiffStripTrailingNewline = true;
    
    # Show debug infos and stats (block, group, and fragment data objects) in debug console (false)
    $wgWikEdDiffDebug = false;
    
    # Show timing results in debug console (false)
    $wgWikEdDiffTimer = false;
    
    # Run unit tests to prove correct working, display results in debug console (false)
    $wgWikEdDiffUnitTesting = false;
    
  •   完了 – ウィキの「Special:Version」に移動して、拡張機能が正しくインストールされたことを確認します。

MediaWiki 1.24 以前を稼働させている利用者へ:

上記の手順では、wfLoadExtension() を使用してこの拡張機能をインストールする新しい方法を記載しています。 この拡張機能をこれらの過去のバージョン (MediaWiki 1.24 以前) にインストールする必要がある場合は、wfLoadExtension( 'WikEdDiff' ); の代わりに以下を使用する必要があります:

require_once "$IP/extensions/WikEdDiff/WikEdDiff.php";

関連項目

References