• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

hazendaz / sitemesh2 / 59

22 Mar 2026 02:30AM UTC coverage: 40.347%. Remained the same
59

push

github

hazendaz
[mvn] Update maven wrapper

698 of 1891 branches covered (36.91%)

Branch coverage included in aggregate %.

1555 of 3693 relevant lines covered (42.11%)

0.42 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

88.1
/src/main/java/com/opensymphony/module/sitemesh/html/HTMLProcessor.java
1
/*
2
 * SPDX-License-Identifier: Apache-2.0
3
 * Copyright 2011-2026 Hazendaz
4
 */
5
package com.opensymphony.module.sitemesh.html;
6

7
import com.opensymphony.module.sitemesh.SitemeshBuffer;
8
import com.opensymphony.module.sitemesh.SitemeshBufferFragment;
9
import com.opensymphony.module.sitemesh.html.tokenizer.TagTokenizer;
10
import com.opensymphony.module.sitemesh.html.tokenizer.TokenHandler;
11

12
import java.io.IOException;
13

14
/**
15
 * The Class HTMLProcessor.
16
 */
17
public class HTMLProcessor {
18

19
    /** The sitemesh buffer. */
20
    private final SitemeshBuffer sitemeshBuffer;
21

22
    /** The body. */
23
    private final SitemeshBufferFragment.Builder body;
24

25
    /** The default state. */
26
    private final State defaultState = new State();
1✔
27

28
    /** The current state. */
29
    private State currentState = defaultState;
1✔
30

31
    /**
32
     * Instantiates a new HTML processor.
33
     *
34
     * @param sitemeshBuffer
35
     *            the sitemesh buffer
36
     * @param body
37
     *            the body
38
     */
39
    public HTMLProcessor(SitemeshBuffer sitemeshBuffer, SitemeshBufferFragment.Builder body) {
1✔
40
        this.sitemeshBuffer = sitemeshBuffer;
1✔
41
        this.body = body;
1✔
42
    }
1✔
43

44
    /**
45
     * Default state.
46
     *
47
     * @return the state
48
     */
49
    public State defaultState() {
50
        return defaultState;
1✔
51
    }
52

53
    /**
54
     * Equivalent of htmlProcessor.defaultState().addRule()
55
     *
56
     * @param rule
57
     *            the rule
58
     */
59
    public void addRule(TagRule rule) {
60
        defaultState.addRule(rule);
1✔
61
    }
1✔
62

63
    /**
64
     * Process.
65
     *
66
     * @throws IOException
67
     *             Signals that an I/O exception has occurred.
68
     */
69
    public void process() throws IOException {
70
        TagTokenizer tokenizer = new TagTokenizer(sitemeshBuffer.getCharArray(), sitemeshBuffer.getBufferLength());
1✔
71
        final HTMLProcessorContext context = new HTMLProcessorContext() {
1✔
72

73
            @Override
74
            public SitemeshBuffer getSitemeshBuffer() {
75
                return sitemeshBuffer;
1✔
76
            }
77

78
            @Override
79
            public State currentState() {
80
                return currentState;
1✔
81
            }
82

83
            @Override
84
            public void changeState(State newState) {
85
                currentState = newState;
1✔
86
            }
1✔
87

88
            private SitemeshBufferFragment.Builder[] buffers = new SitemeshBufferFragment.Builder[10];
1✔
89
            private int size;
90

91
            @Override
92
            public void pushBuffer(SitemeshBufferFragment.Builder buffer) {
93
                if (size == buffers.length) {
1!
94
                    SitemeshBufferFragment.Builder[] newBuffers = new SitemeshBufferFragment.Builder[buffers.length
×
95
                            * 2];
96
                    System.arraycopy(buffers, 0, newBuffers, 0, buffers.length);
×
97
                    buffers = newBuffers;
×
98
                }
99
                buffers[size++] = buffer;
1✔
100
            }
1✔
101

102
            @Override
103
            public SitemeshBufferFragment.Builder currentBuffer() {
104
                return buffers[size - 1];
1✔
105
            }
106

107
            @Override
108
            public SitemeshBufferFragment.Builder popBuffer() {
109
                SitemeshBufferFragment.Builder last = buffers[size - 1];
1✔
110
                buffers[--size] = null;
1✔
111
                return last;
1✔
112
            }
113
        };
114
        context.pushBuffer(body);
1✔
115
        tokenizer.start(new TokenHandler() {
1✔
116

117
            @Override
118
            public boolean shouldProcessTag(String name) {
119
                return currentState.shouldProcessTag(name.toLowerCase());
1✔
120
            }
121

122
            @Override
123
            public void tag(Tag tag) {
124
                TagRule tagRule = currentState.getRule(tag.getName().toLowerCase());
1✔
125
                tagRule.setContext(context);
1✔
126
                tagRule.process(tag);
1✔
127
            }
1✔
128

129
            @Override
130
            public void text(Text text) {
131
                currentState.handleText(text, context);
1✔
132
            }
1✔
133

134
            @Override
135
            public void warning(String message, int line, int column) {
136
                // TODO Enable logging here
137
                // logger.info("{},{}: ", line, column, message);
138
            }
×
139
        });
140
        defaultState.endOfState();
1✔
141
    }
1✔
142

143
    /**
144
     * Adds the text filter.
145
     *
146
     * @param textFilter
147
     *            the text filter
148
     */
149
    public void addTextFilter(TextFilter textFilter) {
150
        currentState.addTextFilter(textFilter);
1✔
151
    }
1✔
152

153
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc