/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.toolkit.utils.text; import java.util.List; /** * An interface for containers of multi-line text data, with convenience functions for formatting/aggregating them. * * @author Robert Mischke */ public interface MultiLineOutput { /** * @return the individual lines (read-only) */ List<String> getLines(); /** * @return true if there is at least one line of text (regardless of whether it is empty or not) */ boolean hasContent(); /** * @return output equal to {@link #asMultilineString("", "\n")} */ String asMultilineString(); /** * @param indent the prefix to add to each line * @param lineSeparator the separator to add after each line except the last * * @return output equal to {@link #asMultilineString(null, indent, lineSeparator, null)} */ String asMultilineString(String indent, String lineSeparator); /** * Formats the lines into a String by the following concatenation: * <ul> * <li>if "intro" is not null, the intro plus a line separator (unless it is the last line) * <li>for each line of content: the "indent" string plus the line, followed by a line separator unless this is the last line <b>and</b> * "outro" is null * <li>if "outro" is not null, the outro string * </ul> * In effect, the generated string does never end with the given line separator. * * @param intro a string to prefix the line data with; set to null to disable * @param indent the prefix to add to each line * @param lineSeparator the separator to add after each line except the last * @param outro a string to append after the line data; set to null to disable * @return the aggregated output; see method description for its format */ String asMultilineString(String intro, String indent, String lineSeparator, String outro); }