/* * Copyright (C) 2014 Alfons Wirtz * website www.freerouting.net * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License at <http://www.gnu.org/licenses/> * for more details. * * IndentFileWriter.java * * Created on 21. Juni 2004, 09:36 */ package datastructures; /** * Handles the indenting of scopes while writing to an output text file. * * @author alfons */ public class IndentFileWriter extends java.io.OutputStreamWriter { /** Creates a new instance of IndentFileWriter */ public IndentFileWriter(java.io.OutputStream p_stream) { super(p_stream); } /** * Begins a new scope. */ public void start_scope() { new_line(); try { write(BEGIN_SCOPE); } catch (java.io.IOException e) { System.out.println("IndentFileWriter.start_scope: unable to write to file"); } ++current_indent_level; } /** * Closes the latest open scope. */ public void end_scope() { --current_indent_level; new_line(); try { write(END_SCOPE); } catch (java.io.IOException e) { System.out.println("IndentFileWriter.end_scope: unable to write to file"); } } /** * Starts a new line inside a scope. */ public void new_line() { try { write("\n"); for (int i = 0; i < current_indent_level; ++i) { write(INDENT_STRING); } } catch (java.io.IOException e) { System.out.println("IndentFileWriter.new_line: unable to write to file"); } } private int current_indent_level = 0; private static final String INDENT_STRING = " "; private static final String BEGIN_SCOPE = "("; private static final String END_SCOPE = ")"; }