View Javadoc

1   ////////////////////////////////////////////////////////////////////////////////
2   // MillScript: an Open Spice interpreter and batch website creation tool
3   // Copyright (C) 2001-2004 Open World Ltd
4   //
5   // This file is part of MillScript.
6   //
7   // MillScript is free software; you can redistribute it and/or modify it under
8   // the terms of the GNU General Public License as published by the Free
9   // Software Foundation; either version 2 of the License, or (at your option)
10  // any later version.
11  //
12  // MillScript is distributed in the hope that it will be useful, but WITHOUT
13  // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14  // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
15  // more details.
16  //
17  // You should have received a copy of the GNU General Public License along with
18  // MillScript; if not, write to the Free Software Foundation, Inc., 59 Temple
19  // Place, Suite 330, Boston, MA  02111-1307  USA
20  ////////////////////////////////////////////////////////////////////////////////
21  package org.millscript.millscript.loaders;
22  
23  
24  import java.io.IOException;
25  import java.io.Reader;
26  
27  /**
28   * This is the base class for all text based loaders. A text loader is one that
29   * reads the contents of a file as unicode data and then does something with it.
30   */
31  abstract class AbsTextLoader extends ValueLoader {
32  
33      /**
34       * Returns a StringBuffer holding all the available characters that can be
35       * read from the specified Reader.
36       *
37       * @param reader    the reader to read characters from
38       * @return  a StringBuffer holding all the available charactes from the
39       * Reader
40       * @throws IOException  thrown if there is a problem reading from the
41       * reader
42       */
43      final StringBuffer readAllIntoBuffer( final Reader reader ) throws IOException {
44          StringBuffer buff = new StringBuffer();
45          char[] cbuff = new char[ 1024 ];
46          for (;;) {
47              int n = reader.read( cbuff, 0, 1024 );
48              if ( n == -1 ) {
49                  return buff;
50              }
51              buff.append( cbuff, 0, n );
52          }
53      }
54  
55      /**
56       * Returns a String holding all the characters available in the Reader.
57       *
58       * @param reader    the reader to read characters from
59       * @return  a String holding all the available characters from the Reader
60       * @throws IOException  thrown if there is a problem reading from the
61       * Reader
62       */
63      final String readAll( final Reader reader ) throws IOException {
64          return readAllIntoBuffer( reader ).toString();
65      }
66  
67  }