001 // Copyright 2006, 2008, 2009 The Apache Software Foundation
002 //
003 // Licensed under the Apache License, Version 2.0 (the "License");
004 // you may not use this file except in compliance with the License.
005 // You may obtain a copy of the License at
006 //
007 // http://www.apache.org/licenses/LICENSE-2.0
008 //
009 // Unless required by applicable law or agreed to in writing, software
010 // distributed under the License is distributed on an "AS IS" BASIS,
011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012 // See the License for the specific language governing permissions and
013 // limitations under the License.
014
015 package org.apache.tapestry5.dom;
016
017 import java.io.PrintWriter;
018 import java.util.Map;
019
020 /**
021 * A type of node that contains text.
022 */
023 public final class Text extends Node
024 {
025 private final StringBuilder buffer;
026
027 Text(Element container, String text)
028 {
029 super(container);
030
031 buffer = new StringBuilder(text.length());
032
033 write(text);
034 }
035
036 boolean isEmpty()
037 {
038 return buffer.length() == 0 || buffer.toString().trim().length() == 0;
039 }
040
041 /**
042 * Writes additional text into the node, appending it to any existing text.
043 */
044 public void write(String text)
045 {
046 buffer.append(text);
047 }
048
049 public void writef(String format, Object... args)
050 {
051 write(String.format(format, args));
052 }
053
054 @Override
055 void toMarkup(Document document, PrintWriter writer, Map<String, String> namespaceURIToPrefix)
056 {
057 String encoded = document.getMarkupModel().encode(buffer.toString());
058
059 writer.print(encoded);
060 }
061 }