1 21 22 package org.armedbear.lisp; 23 24 public final class CapitalizeStream extends CaseFrobStream 25 { 26 private boolean inWord; 27 28 public CapitalizeStream(Stream target) throws ConditionThrowable 29 { 30 super(target); 31 } 32 33 public void _writeChar(char c) throws ConditionThrowable 34 { 35 if (inWord) { 36 if (Character.isUpperCase(c)) { 37 c = Utilities.toLowerCase(c); 38 } else if (!Character.isLowerCase(c) && !Character.isDigit(c)) { 39 inWord = false; 40 } 41 } else { 42 if (Character.isUpperCase(c)) { 44 inWord = true; 45 } else if (Character.isLowerCase(c)) { 46 c = Utilities.toUpperCase(c); 47 inWord = true; 48 } else if (Character.isDigit(c)) { 49 inWord = true; 50 } 51 } 52 target._writeChar(c); 53 } 54 55 public void _writeString(String s) throws ConditionThrowable 56 { 57 final int limit = s.length(); 58 for (int i = 0; i < limit; i++) 59 _writeChar(s.charAt(i)); 60 } 61 62 public void _writeLine(String s) throws ConditionThrowable 63 { 64 target._writeString(s); 65 target._writeChar('\n'); 66 } 67 } 68 | Popular Tags |