StyleSheet.java

1
/*
2
 * Copyright 2004 Paulo Soares
3
 *
4
 * The contents of this file are subject to the Mozilla Public License Version 1.1
5
 * (the "License"); you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at http://www.mozilla.org/MPL/
7
 *
8
 * Software distributed under the License is distributed on an "AS IS" basis,
9
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
10
 * for the specific language governing rights and limitations under the License.
11
 *
12
 * The Original Code is 'iText, a free JAVA-PDF library'.
13
 *
14
 * The Initial Developer of the Original Code is Bruno Lowagie. Portions created by
15
 * the Initial Developer are Copyright (C) 1999, 2000, 2001, 2002 by Bruno Lowagie.
16
 * All Rights Reserved.
17
 * Co-Developer of the code is Paulo Soares. Portions created by the Co-Developer
18
 * are Copyright (C) 2000, 2001, 2002 by Paulo Soares. All Rights Reserved.
19
 *
20
 * Contributor(s): all the names of the contributors are added in the source code
21
 * where applicable.
22
 *
23
 * Alternatively, the contents of this file may be used under the terms of the
24
 * LGPL license (the "GNU LIBRARY GENERAL PUBLIC LICENSE"), in which case the
25
 * provisions of LGPL are applicable instead of those above.  If you wish to
26
 * allow use of your version of this file only under the terms of the LGPL
27
 * License and not to allow others to use your version of this file under
28
 * the MPL, indicate your decision by deleting the provisions above and
29
 * replace them with the notice and other provisions required by the LGPL.
30
 * If you do not delete the provisions above, a recipient may use your version
31
 * of this file under either the MPL or the GNU LIBRARY GENERAL PUBLIC LICENSE.
32
 *
33
 * This library is free software; you can redistribute it and/or modify it
34
 * under the terms of the MPL as stated above or under the terms of the GNU
35
 * Library General Public License as published by the Free Software Foundation;
36
 * either version 2 of the License, or any later version.
37
 *
38
 * This library is distributed in the hope that it will be useful, but WITHOUT
39
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
40
 * FOR A PARTICULAR PURPOSE. See the GNU Library general Public License for more
41
 * details.
42
 *
43
 * Contributions by:
44
 * Lubos Strapko
45
 * 
46
 * If you didn't download this code from the following link, you should check if
47
 * you aren't using an obsolete version:
48
 * http://www.lowagie.com/iText/
49
 */
50
51
package com.lowagie.text.html.simpleparser;
52
53
import com.lowagie.text.html.Markup;
54
import java.util.HashMap;
55
import java.util.Map;
56
57
public class StyleSheet {
58
59
    private Map<String, Map<String, String>> classMap = new HashMap<>();
60
    private Map<String, Map<String, String>> tagMap = new HashMap<>();
61
62
    /** Creates a new instance of StyleSheet */
63
    public StyleSheet() {
64
    }
65
66
    public void applyStyle(String tag, Map<String, String> props) {
67
        Map<String, String> map = tagMap.get(tag.toLowerCase());
68 1 1. applyStyle : negated conditional → NO_COVERAGE
        if (map != null) {
69
            Map<String, String> temp = new HashMap<>(map);
70 1 1. applyStyle : removed call to java/util/Map::putAll → NO_COVERAGE
            temp.putAll(props);
71 1 1. applyStyle : removed call to java/util/Map::putAll → NO_COVERAGE
            props.putAll(temp);
72
        }
73
        String cm = props.get(Markup.HTML_ATTR_CSS_CLASS);
74 1 1. applyStyle : negated conditional → NO_COVERAGE
        if (cm == null)
75
            return;
76
        map = classMap.get(cm.toLowerCase());
77 1 1. applyStyle : negated conditional → NO_COVERAGE
        if (map == null)
78
            return;
79
        props.remove(Markup.HTML_ATTR_CSS_CLASS);
80
        Map<String, String> temp = new HashMap<>(map);
81 1 1. applyStyle : removed call to java/util/Map::putAll → NO_COVERAGE
        temp.putAll(props);
82 1 1. applyStyle : removed call to java/util/Map::putAll → NO_COVERAGE
        props.putAll(temp);
83
    }
84
85
    public void loadStyle(String style, Map<String, String> props) {
86
        classMap.put(style.toLowerCase(), props);
87
    }
88
89
    public void loadStyle(String style, String key, String value) {
90
        style = style.toLowerCase();
91
        Map<String, String> props = classMap.computeIfAbsent(style, k -> new HashMap<>());
92
        props.put(key, value);
93
    }
94
95
    public void loadTagStyle(String tag, Map<String, String> props) {
96
        tagMap.put(tag.toLowerCase(), props);
97
    }
98
99
    public void loadTagStyle(String tag, String key, String value) {
100
        tag = tag.toLowerCase();
101
        Map<String, String> props = tagMap.computeIfAbsent(tag, k -> new HashMap<>());
102
        props.put(key, value);
103
    }
104
105
}

Mutations

68

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

70

1.1
Location : applyStyle
Killed by : none
removed call to java/util/Map::putAll → NO_COVERAGE

71

1.1
Location : applyStyle
Killed by : none
removed call to java/util/Map::putAll → NO_COVERAGE

74

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

77

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

81

1.1
Location : applyStyle
Killed by : none
removed call to java/util/Map::putAll → NO_COVERAGE

82

1.1
Location : applyStyle
Killed by : none
removed call to java/util/Map::putAll → NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT 1.4.2