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 <code>CharSequence</code>.
27: * <p>
28: * This class has been removed from the pulic API and the functionality replaced with the
29: * {@link OutputDocument#replace(Segment, CharSequence text)} method.
30: */
31: final class StringOutputSegment implements OutputSegment {
32: private final int begin;
33: private final int end;
34: private final CharSequence text;
35:
36: /**
37: * Constructs a new <code>StringOutputSegment</code> with the specified begin and end positions and the specified content.
38: * <p>
39: * Specifying a <code>null</code> argument to the <code>text</code> parameter is exactly equivalent to specifying an empty string,
40: * and results in the segment being completely removed from the output document.
41: *
42: * @param begin the position in the <code>OutputDocument</code> where this output segment begins.
43: * @param end the position in the <code>OutputDocument</code> where this output segment ends.
44: * @param text the textual content of the new output segment, or <code>null</code> if no content.
45: */
46: public StringOutputSegment(final int begin, final int end,
47: final CharSequence text) {
48: this .begin = begin;
49: this .end = end;
50: this .text = (text == null ? "" : text);
51: }
52:
53: /**
54: * Constructs a new StringOutputSegment</code> with the same span as the specified {@link Segment}.
55: * <p>
56: * Specifying a <code>null</code> argument to the <code>text</code> parameter is exactly equivalent to specifying an empty string,
57: * and results in the segment being completely removed from the output document.
58: *
59: * @param segment a segment defining the beginning and ending positions of the new output segment.
60: * @param text the textual content of the new output segment, or <code>null</code> if no content.
61: */
62: public StringOutputSegment(final Segment segment,
63: final CharSequence text) {
64: this (segment.begin, segment.end, text);
65: }
66:
67: public int getBegin() {
68: return begin;
69: }
70:
71: public int getEnd() {
72: return end;
73: }
74:
75: public void writeTo(final Writer writer) throws IOException {
76: Util.appendTo(writer, text);
77: }
78:
79: public long getEstimatedMaximumOutputLength() {
80: return text.length();
81: }
82:
83: public String toString() {
84: return text.toString();
85: }
86:
87: public String getDebugInfo() {
88: return "Replace: (p" + begin + "-p" + end + ") " + text;
89: }
90:
91: public void output(final Writer writer) throws IOException {
92: writeTo(writer);
93: }
94: }
|