| 
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Object | +--com.blackperl.Perl.Chomp
Static-method implementation of the Perl chomp keyword.
 
 The chomp keyword is a safer version of chop
 (see Chop) that only removes line-ending characters/sequences.
 
 Like chop, chomp removes characters from the end
 of a StringBuffer object. The return value from the operation
 is different, however. In this case, the return value is the number of
 characters deleted, rather than the specific characters themselves. When
 operating on an array of StringBuffer objects, the value is
 the total number of characters deleted from all buffers. Note that only
 those character exactly matching the line.separator property
 are removed (and only the very last characters, in cases where multiple
 occurances are in a single buffer).
 
 Here is an example, built around reading a file using the standard JDK
 BufferedReader class for line-oriented data:
 
     import java.io.*;
     import com.blackperl.Perl.Chomp;
 
     StringBuffer[] lines = new StringBuffer[1000];
     BufferedReader reader = new BufferedReader(new FileReader("lines"));
     String line = null; int index = 0;
 
     while ((line = reader.readLine()) != null)
     {
         lines[index] = new StringBuffer(line);
         Chomp.chomp(lines[index]);
         index++;
     }
 
     reader.close();
 
 
 Using the array form of chomp, the loop can be shortened to:
 
     while ((line = reader.readLine()) != null)
         lines[index++] = new StringBuffer(line);
     Chomp.chomp(lines);
 
 The resulting content of lines would be the same.
 
 To keep with the Perl idiom this emulates, the argument may also be an
 object that implements the Map interface. If this is the case,
 all the values (not keys) must be StringBuffer objects.
 All will be chomped, just as with the array-form above (which also means
 that the return value is the sum of all operations). This is the only form
 of chomp that might throw a significant exception, in
 the case where the value in a Map entry cannot be cast to
 StringBuffer.
 
 There are three modes of operation, based on the value of the record
 separator when the method is called. In normal operation, when the separator
 has a value that is not zero-length or null, that value is removed from the
 end of the string (if present) exactly once. If the separator is a
 zero-length (but not null) string, then chomp operates in what
 Perl calls "paragraph mode". In this mode, all the trailing instances of
 the "\n" character are removed (since the separator is empty,
 it cannot be used as a guide). The string "abc\n\n\n" would be
 chomped into "abc". Lastly, if the separator's value is
 null, this is a mode that Perl calls "slurping". In that mode,
 no chomping actually takes place. However many newline characters may be
 at the end of the buffer, it remains unchanged. This is all controllable
 through the setRecordSeparator method.
 
 All components in this package provide an instance method to
 retrieve a singleton object which may be used to call the static methods,
 if the programmer prefers using an object to static invocation.
 
If this is the JDK 1.5 ("Tiger") edition of the package, this class is suitable for use via static import:
     // Using most of the code from the previous example, the changes are:
     import com.blackperl.Perl.Chomp.chomp;
 
     while ((line = reader.readLine()) != null)
         lines[index++] = new StringBuffer(line);
     chomp(lines);
 
| Method Summary | |
static int | 
chomp(java.util.Map table)
Perform a chomp on the values of the Map
 object passed in. | 
static int | 
chomp(java.lang.StringBuffer buffer)
Perform a chomp on the StringBuffer passed in
 as a parameter. | 
static int | 
chomp(java.lang.StringBuffer[] buffers)
Do a chomp on an array of StringBuffer
 objects. | 
static java.lang.String | 
getRecordSeparator()
Retrieve the current value of the record-separator (line-end sequence).  | 
static com.blackperl.Perl.Chomp | 
instance()
The instance method is used to retrieve the
 Chomp singleton that applications can use in lieu of
 invoking the methods statically. | 
static void | 
setRecordSeparator(java.lang.String newRS)
Assign a new record-separator to be used by the chomp variants. | 
| Methods inherited from class java.lang.Object | 
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Method Detail | 
public static int chomp(java.util.Map table)
                 throws java.lang.ClassCastException
chomp on the values of the Map
 object passed in. Returns the total number of characters removed.
table - An object implementing the Map interface
java.lang.ClassCastExceptionpublic static int chomp(java.lang.StringBuffer buffer)
chomp on the StringBuffer passed in
 as a parameter.
buffer - StringBuffer with the string data to trim
public static int chomp(java.lang.StringBuffer[] buffers)
chomp on an array of StringBuffer
 objects. Returns the total number of characters removed from all buffers.
buffers - An array of StringBuffer objects to operate upon
public static java.lang.String getRecordSeparator()
public static com.blackperl.Perl.Chomp instance()
instance method is used to retrieve the
 Chomp singleton that applications can use in lieu of
 invoking the methods statically.
public static void setRecordSeparator(java.lang.String newRS)
chomp variants.
newRS - A string to be used as the record-separator (line-end)
  | 
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||