CssInlineUtils.java

1
package fr.sii.ogham.html.inliner.impl.jsoup;
2
3
4
import static fr.sii.ogham.html.inliner.CssInlinerConstants.INLINED_ATTR;
5
import static fr.sii.ogham.html.inliner.CssInlinerConstants.INLINE_MODE_ATTR;
6
7
import org.jsoup.Jsoup;
8
import org.jsoup.nodes.Document;
9
import org.jsoup.nodes.Element;
10
import org.jsoup.select.Elements;
11
12
import fr.sii.ogham.html.inliner.CssInlinerConstants;
13
import fr.sii.ogham.html.inliner.CssInlinerConstants.InlineMode;
14
15
16
/**
17
 * Helper class that factorizes code for classes that are using Jsoup inliners.
18
 * 
19
 * @author Aurélien Baudet
20
 *
21
 */
22
public final class CssInlineUtils {
23
	/**
24
	 * Checks if inlining mode is allowed on the provided element.
25
	 * 
26
	 * @param node
27
	 *            the node to check if the actual inlining mode is
28
	 *            allowed
29
	 * @param mode
30
	 *            the actual mode
31
	 * @return true if this mode is allowed, false otherwise
32
	 */
33
	@SuppressWarnings("squid:S1126")
34
	public static boolean isInlineModeAllowed(Element node, InlineMode mode) {
35
		// if already inlined => reject (do not inline twice)
36 3 1. isInlineModeAllowed : negated conditional → NO_COVERAGE
2. isInlineModeAllowed : negated conditional → KILLED
3. isInlineModeAllowed : negated conditional → KILLED
		if (!node.attr(INLINED_ATTR).isEmpty()) {
37 1 1. isInlineModeAllowed : replaced boolean return with true for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::isInlineModeAllowed → NO_COVERAGE
			return false;
38
		}
39
		// if inline mode defined but not the wanted mode => reject
40 5 1. isInlineModeAllowed : negated conditional → NO_COVERAGE
2. isInlineModeAllowed : negated conditional → NO_COVERAGE
3. isInlineModeAllowed : negated conditional → KILLED
4. isInlineModeAllowed : negated conditional → KILLED
5. isInlineModeAllowed : negated conditional → KILLED
		if (!node.attr(INLINE_MODE_ATTR).isEmpty() && !mode.is(node.attr(INLINE_MODE_ATTR))) {
41 2 1. isInlineModeAllowed : replaced boolean return with true for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::isInlineModeAllowed → NO_COVERAGE
2. isInlineModeAllowed : replaced boolean return with true for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::isInlineModeAllowed → KILLED
			return false;
42
		}
43
		// if inline mode defined and matches the wanted mode => allow
44
		// if no inline mode defined => allow (any mode allowed)
45 3 1. isInlineModeAllowed : replaced boolean return with false for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::isInlineModeAllowed → NO_COVERAGE
2. isInlineModeAllowed : replaced boolean return with false for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::isInlineModeAllowed → KILLED
3. isInlineModeAllowed : replaced boolean return with false for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::isInlineModeAllowed → KILLED
		return true;
46
	}
47
48
	/**
49
	 * Remove attributes that are used only by Ogham:
50
	 * <ul>
51
	 * <li>{@link CssInlinerConstants#INLINE_MODE_ATTR}</li>
52
	 * <li>{@link CssInlinerConstants#INLINED_ATTR}</li>
53
	 * </ul>
54
	 * 
55
	 * @param html
56
	 *            the html to clean
57
	 * @return the cleaned html
58
	 */
59
	public static String removeOghamAttributes(String html) {
60
		Document doc = Jsoup.parse(html);
61
		Elements nodes = doc.select("["+INLINE_MODE_ATTR+"], ["+INLINED_ATTR+"]");
62
		for (Element node : nodes) {
63
			node.removeAttr(INLINE_MODE_ATTR);
64
			node.removeAttr(INLINED_ATTR);
65
		}
66 3 1. removeOghamAttributes : replaced return value with "" for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::removeOghamAttributes → NO_COVERAGE
2. removeOghamAttributes : replaced return value with "" for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::removeOghamAttributes → KILLED
3. removeOghamAttributes : replaced return value with "" for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::removeOghamAttributes → KILLED
		return doc.outerHtml();
67
	}
68
69
	private CssInlineUtils() {
70
		super();
71
	}
72
}

Mutations

36

1.1
Location : isInlineModeAllowed
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.externalStyles(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
negated conditional → KILLED

2.2
Location : isInlineModeAllowed
Killed by : oghamcore.ut.html.inliner.impl.JsoupCssInlinerTest.mixedStyles(oghamcore.ut.html.inliner.impl.JsoupCssInlinerTest)
negated conditional → KILLED

3.3
Location : isInlineModeAllowed
Killed by : none
negated conditional → NO_COVERAGE

37

1.1
Location : isInlineModeAllowed
Killed by : none
replaced boolean return with true for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::isInlineModeAllowed → NO_COVERAGE

40

1.1
Location : isInlineModeAllowed
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : isInlineModeAllowed
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.externalStyles(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
negated conditional → KILLED

3.3
Location : isInlineModeAllowed
Killed by : oghamcore.ut.html.inliner.impl.JsoupCssInlinerTest.mixedStyles(oghamcore.ut.html.inliner.impl.JsoupCssInlinerTest)
negated conditional → KILLED

4.4
Location : isInlineModeAllowed
Killed by : none
negated conditional → NO_COVERAGE

5.5
Location : isInlineModeAllowed
Killed by : oghamcore.ut.html.inliner.impl.JsoupCssInlinerTest.skipSomeStyles(oghamcore.ut.html.inliner.impl.JsoupCssInlinerTest)
negated conditional → KILLED

41

1.1
Location : isInlineModeAllowed
Killed by : none
replaced boolean return with true for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::isInlineModeAllowed → NO_COVERAGE

2.2
Location : isInlineModeAllowed
Killed by : oghamcore.ut.html.inliner.impl.JsoupCssInlinerTest.skipSomeStyles(oghamcore.ut.html.inliner.impl.JsoupCssInlinerTest)
replaced boolean return with true for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::isInlineModeAllowed → KILLED

45

1.1
Location : isInlineModeAllowed
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.externalStyles(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
replaced boolean return with false for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::isInlineModeAllowed → KILLED

2.2
Location : isInlineModeAllowed
Killed by : oghamcore.ut.html.inliner.impl.JsoupCssInlinerTest.mixedStyles(oghamcore.ut.html.inliner.impl.JsoupCssInlinerTest)
replaced boolean return with false for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::isInlineModeAllowed → KILLED

3.3
Location : isInlineModeAllowed
Killed by : none
replaced boolean return with false for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::isInlineModeAllowed → NO_COVERAGE

66

1.1
Location : removeOghamAttributes
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.externalStyles(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
replaced return value with "" for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::removeOghamAttributes → KILLED

2.2
Location : removeOghamAttributes
Killed by : none
replaced return value with "" for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::removeOghamAttributes → NO_COVERAGE

3.3
Location : removeOghamAttributes
Killed by : oghamcore.it.html.translator.InlineCssTranslatorTest.oghamAttributesShoulBeRemoved(oghamcore.it.html.translator.InlineCssTranslatorTest)
replaced return value with "" for fr/sii/ogham/html/inliner/impl/jsoup/CssInlineUtils::removeOghamAttributes → KILLED

Active mutators

Tests examined


Report generated by PIT OGHAM