01: // Jericho HTML Parser - Java based library for analysing and manipulating HTML
02: // Version 2.5
03: // Copyright (C) 2007 Martin Jericho
04: // http://jerichohtml.sourceforge.net/
05: //
06: // This library is free software; you can redistribute it and/or
07: // modify it under the terms of either one of the following licences:
08: //
09: // 1. The Eclipse Public License (EPL) version 1.0,
10: // included in this distribution in the file licence-epl-1.0.html
11: // or available at http://www.eclipse.org/legal/epl-v10.html
12: //
13: // 2. The GNU Lesser General Public License (LGPL) version 2.1 or later,
14: // included in this distribution in the file licence-lgpl-2.1.txt
15: // or available at http://www.gnu.org/licenses/lgpl.txt
16: //
17: // This library is distributed on an "AS IS" basis,
18: // WITHOUT WARRANTY OF ANY KIND, either express or implied.
19: // See the individual licence texts for more details.
20:
21: package au.id.jericho.lib.html;
22:
23: import java.io.*;
24:
25: /**
26: * Implements an {@link OutputSegment} whose content is a single character constant.
27: * <p>
28: * This class has been removed from the public API and the functionality replaced with the
29: * {@link OutputDocument#Replace(int begin, int end, char ch)} method.
30: */
31: final class CharOutputSegment implements OutputSegment {
32: private final int begin;
33: private final int end;
34: private final char ch;
35:
36: /**
37: * Constructs a new <code>CharOutputSegment</code> with the specified begin and end character positions and the specified content.
38: * @param begin the position in the {@link OutputDocument} where this <code>OutputSegment</code> begins.
39: * @param end the position in the {@link OutputDocument} where this <code>OutputSegment</code> ends.
40: * @param ch the character output of the new <code>OutputSegment</code>.
41: */
42: public CharOutputSegment(final int begin, final int end,
43: final char ch) {
44: this .begin = begin;
45: this .end = end;
46: this .ch = ch;
47: }
48:
49: /**
50: * Constructs a new <code>CharOutputSegment</code> with the same span as the specified {@link Segment}.
51: * @param segment a {@link Segment} defining the begin and end character positions of the new <code>OutputSegment</code>.
52: * @param ch the character output of the new <code>OutputSegment</code>.
53: */
54: public CharOutputSegment(final Segment segment, final char ch) {
55: begin = segment.begin;
56: end = segment.end;
57: this .ch = ch;
58: }
59:
60: /**
61: * Constructs a new <code>CharOutputSegment</code> which converts the specified {@link CharacterReference} to a normal character.
62: * @param characterReference the character reference to convert.
63: */
64: public CharOutputSegment(final CharacterReference characterReference) {
65: this (characterReference, characterReference.getChar());
66: }
67:
68: public int getBegin() {
69: return begin;
70: }
71:
72: public int getEnd() {
73: return end;
74: }
75:
76: public void writeTo(final Writer writer) throws IOException {
77: writer.write(ch);
78: }
79:
80: public long getEstimatedMaximumOutputLength() {
81: return 1;
82: }
83:
84: public String toString() {
85: return Character.toString(ch);
86: }
87:
88: public String getDebugInfo() {
89: return "Replace: (p" + begin + "-p" + end + ") " + ch;
90: }
91: }
|