litesoft
@ 939
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt package org.litesoft.core.util.text; import org.litesoft.commonfoundation.typeutils.*; import java.util.*; import org.litesoft.charstreams.*; public class CodedTextParser { public static List<String> parse( String pText ) { ArrayList<String> rv = new ArrayList<String>(); if ( pText != null ) { CharSource zSource = new CharSourceFromSequence( pText ); if ( consumeNonVisible7bitAscii( zSource ) ) { do { if ( !rv.isEmpty() ) { rv.add( " " ); } addChunk( rv, getUpToNonVisible7bitAscii( zSource ) ); } while ( consumeNonVisible7bitAscii( zSource ) ); } } return rv; } private static String getUpToNonVisible7bitAscii( CharSource pSource ) { if ( !pSource.anyRemaining() ) { return ""; } StringBuilder sb = new StringBuilder(); for ( int c = pSource.peek(); (c != -1) && ((' ' < c) && (c <= 126)); c = pSource.peek() ) { sb.append( pSource.getRequired() ); } return sb.toString(); } private static boolean consumeNonVisible7bitAscii( CharSource pSource ) { for ( int c = pSource.peek(); (c != -1) && ((c <= ' ') || (126 < c)); c = pSource.peek() ) { pSource.get(); // Consume } return pSource.anyRemaining(); } private static void addChunk( List<String> pCollector, String pToken ) { if ( pToken.length() > 1 ) { int zLeadingPunc = 0; while ( zLeadingPunc < pToken.length() && !Characters.isAlphaNumeric( pToken.charAt( zLeadingPunc ) ) ) { zLeadingPunc++; } if ( zLeadingPunc != pToken.length() ) { if ( zLeadingPunc != 0 ) { pCollector.add( pToken.substring( 0, zLeadingPunc ) ); pToken = pToken.substring( zLeadingPunc ); } int zTrailingPunc = 0; while ( !Characters.isAlphaNumeric( pToken.charAt( pToken.length() - (zTrailingPunc + 1) ) ) ) { zTrailingPunc++; } if ( zTrailingPunc != 0 ) { int zAt = pToken.length() - zTrailingPunc; pCollector.add( pToken.substring( 0, zAt ) ); pToken = pToken.substring( zAt ); } } } pCollector.add( pToken ); } } |
Commits for litesoft/trunk/Java/core/Anywhere/src/org/litesoft/core/util/text/CodedTextParser.java
Revision | Author | Commited | Message |
---|---|---|---|
939 Diff | GeorgeS | Mon 02 Jun, 2014 21:30:31 +0000 | Extracting commonfoundation |
811 Diff | GeorgeS | Sat 18 Aug, 2012 13:45:18 +0000 | |
772 Diff | GeorgeS | Sun 15 Jul, 2012 16:55:51 +0000 | ! |
49 Diff | GeorgeS | Mon 12 Apr, 2010 02:59:10 +0000 | License Text |
2 | GeorgeS | Sun 07 Feb, 2010 12:50:58 +0000 |