Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2
3namespace MediaWiki\Diff\TextDiffer;
4
5use MediaWiki\Output\OutputPage;
6
7/**
8 * An interface for parts of a diff page view which represent changes to text
9 *
10 * @since 1.41
11 */
12interface TextDiffer {
13    /**
14     * The HTML returned is an ordinary block
15     */
16    public const CONTEXT_PLAIN = 'plain';
17
18    /**
19     * The HTML returned is zero or more table rows
20     */
21    public const CONTEXT_ROW = 'row';
22
23    /**
24     * The return value is plain text and should be wrapped in a <pre>
25     */
26    public const CONTEXT_PRE = 'pre';
27
28    /**
29     * Get a stable unique name to identify this differ in a cache key.
30     */
31    public function getName(): string;
32
33    /**
34     * Get the supported format names
35     *
36     * @return string[]
37     */
38    public function getFormats(): array;
39
40    /**
41     * Determine whether we support the specified format
42     *
43     * @param string $format
44     * @return bool
45     */
46    public function hasFormat( string $format ): bool;
47
48    /**
49     * Get the context for a given format. Returns one of the CONTEXT_* constants.
50     *
51     * @param string $format
52     * @return string
53     */
54    public function getFormatContext( string $format );
55
56    /**
57     * Make the context consistent by adding a colspan=4 wrapper around plain
58     * HTML output.
59     *
60     * @param string $format
61     * @param string $diffText
62     * @return string
63     */
64    public function addRowWrapper( string $format, string $diffText ): string;
65
66    /**
67     * Generate a diff comparing $oldText with $newText.
68     * The result must be passed through localize() before being sent to the user.
69     *
70     * @param string $oldText
71     * @param string $newText
72     * @param string $format
73     * @return string
74     */
75    public function render( string $oldText, string $newText, string $format ): string;
76
77    /**
78     * Render a diff in multiple formats.
79     * The results must be passed through localize() before being sent to the user.
80     *
81     * @param string $oldText
82     * @param string $newText
83     * @param string[] $formats
84     * @return array An array with the format in the key and the diff in the value.
85     */
86    public function renderBatch( string $oldText, string $newText, array $formats ): array;
87
88    /**
89     * Modify the OutputPage, adding any headers required by the specified format.
90     *
91     * @param OutputPage $out
92     * @param string $format
93     * @return void
94     */
95    public function addModules( OutputPage $out, string $format ): void;
96
97    /**
98     * Get additional cache keys required by the specified formats.
99     *
100     * The result should have unique string keys, so that cache keys can be
101     * deduplicated.
102     *
103     * @param string[] $formats
104     * @return array<string,string>
105     */
106    public function getCacheKeys( array $formats ): array;
107
108    /**
109     * Expand messages in the diff text using the current MessageLocalizer.
110     *
111     * Perform any other necessary post-cache transformations.
112     *
113     * @param string $format
114     * @param string $diff
115     * @param array $options An associative array of options, may contain:
116     *   - reducedLineNumbers: If true, remove "line 1" but allow other line numbers
117     * @return string
118     */
119    public function localize( string $format, string $diff, array $options = [] ): string;
120
121    /**
122     * Get table prefixes for the specified format. These are HTML fragments
123     * placed above all slot diffs. The key should be a string, used for sorting
124     * and deduplication.
125     *
126     * @param string $format
127     * @return array
128     */
129    public function getTablePrefixes( string $format ): array;
130
131    /**
132     * Given a format, get a list of formats which can be generated at the same
133     * time with minimal additional CPU cost.
134     *
135     * @param string $format
136     * @return string[]
137     */
138    public function getPreferredFormatBatch( string $format ): array;
139}