blob: 261586d0f79f5981505a16fe5b64b8aff86791bd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
exports.name = "Do not use in-line styles";
exports.description = "In-line styles make it much harder for people with specific needs to change the wikimedia styles and to retain consistency.";
exports.rule = function(report) {
$5('#mw-content-text [style]').filter(excludes).each(function(i, elem) {
report.error("Element contains in-line style rules.", elem);
});
};
function excludes(i, elem) {
var $elem = $(elem);
// Ignore width rules.
var widthRule = everyStyle($elem, function(s) {
return s === 'width';
});
// It seems that Wikipedia's standard table templates include some
// inline styles. Ignore these.
var table = $elem.is('table, th, td');
// The standard reference list template also seems to include some
// inline styles.
var reference = $elem.hasClass('reflist references-column-width') ||
$elem.hasClass('error') ||
($elem.is('.citation ~ * *') && !$.trim($elem.text())); // <span> </span>
// The [citation needed] template includes a white-space:nowrap style.
var citationNeeded = $elem.hasClass('Template-Fact') && everyStyle($elem, function(s) {
return s === 'white-space';
});
var navboxPadding = $elem.closest('.navbox').length > 0 && everyStyle($elem, function(s) {
return s.slice(0,7) === 'padding';
});
// Ignore hidden microformat fields.
var microformat = $elem.css('display') === 'none' &&
$elem.closest('.vcard, .vevent').length > 0;
return !widthRule && !table && !reference && !citationNeeded &&
!navboxPadding && !microformat;
}
function everyStyle($elem, fn) {
return Array.prototype.every.call($elem.prop('style'), fn);
}
|