Subversion Repository Public Repository

litesoft

Diff Revisions 49 vs 772 for /trunk/Java/core/Anywhere/src/org/litesoft/core/hierarchicaldata/HierarchicalDataSimpleFactory.java

Diff revisions: vs.
  @@ -3,6 +3,7 @@
3 3
4 4 import java.util.*;
5 5
6 + import org.litesoft.charstreams.*;
6 7 import org.litesoft.core.util.*;
7 8
8 9 public class HierarchicalDataSimpleFactory extends HierarchicalData implements HierarchicalDataFactory
  @@ -67,16 +68,16 @@
67 68 {
68 69 if ( pNameValues.length() != 0 )
69 70 {
70 - CharSource cs = new CharSource( pNameValues );
71 + CharSource cs = new CharSourceFromSequence( pNameValues );
71 72 while ( cs.anyRemaining() )
72 73 {
73 - String name = cs.getUpTo( '=' ).trim();
74 + String name = getUpTo( cs, '=' ).trim();
74 75 if ( name.length() == 0 )
75 76 {
76 77 return false;
77 78 }
78 79 cs.get(); // eat '='
79 - cs.consumeSpaces();
80 + consumeSpaces( cs );
80 81 if ( cs.anyRemaining() )
81 82 {
82 83 StringBuilder valueSB = new StringBuilder();
  @@ -92,7 +93,7 @@
92 93 {
93 94 return false;
94 95 }
95 - cs.consumeSpaces();
96 + consumeSpaces( cs );
96 97 mAttributeNameValues.put( name, valueSB.toString() );
97 98 }
98 99 }
  @@ -100,6 +101,28 @@
100 101 return true;
101 102 }
102 103
104 + private void consumeSpaces( CharSource pCS )
105 + {
106 + while ( pCS.peek() == ' ' )
107 + {
108 + pCS.get();
109 + }
110 + }
111 +
112 + private String getUpTo( CharSource pCS, char c )
113 + {
114 + StringBuilder sb = new StringBuilder();
115 + while ( pCS.anyRemaining() )
116 + {
117 + if ( c == pCS.peek() )
118 + {
119 + return sb.toString();
120 + }
121 + sb.append( pCS.getRequired() );
122 + }
123 + return "";
124 + }
125 +
103 126 private void parseRegularAttributeValue( StringBuilder pValueSB, CharSource pCS )
104 127 {
105 128 for ( int c = pCS.peek(); (c != -1) && (c != ' '); c = pCS.peek() )