@@ -105,6 +105,7 @@ impl<'l, 's, Y: RuleBreakType<'l, 's> + ?Sized> Iterator for RuleBreakIterator<'
105
105
let left_prop = self . get_break_property ( left_codepoint) ;
106
106
self . advance_iter ( ) ;
107
107
108
+ let right_codepoint = self . get_current_codepoint ( ) . map_or ( "????" . to_string ( ) , |c| format ! ( "U+{:02X}" , c. into( ) ) ) ;
108
109
let Some ( right_prop) = self . get_current_break_property ( ) else {
109
110
self . boundary_property = left_prop;
110
111
return Some ( self . len ) ;
@@ -126,14 +127,21 @@ impl<'l, 's, Y: RuleBreakType<'l, 's> + ?Sized> Iterator for RuleBreakIterator<'
126
127
127
128
// If break_state is equals or grater than 0, it is alias of property.
128
129
let mut break_state = self . get_break_state_from_table ( left_prop, right_prop) ;
130
+ let STATE_NAMES = [ "Unknown" , "CR" , "LF" , "Extend" , "Sep" , "Format" , "Sp" , "Lower" , "Upper" , "OLetter" , "Numeric" , "ATerm" , "SContinue" , "STerm" , "Close" , "ATerm_Close" , "ATerm_Close_Sp" , "STerm_Close" , "STerm_Close_Sp" , "Upper_ATerm" , "Lower_ATerm" , "ATerm_Close_Sp_SB8" , "ATerm_Close_Sp_ParaSep" , "ATerm_Close_Sp_CR" , "STerm_Close_Sp_ParaSep" , "STerm_Close_Sp_CR" , "sot" , "eot" ] ;
131
+ println ! ( "left={:02X} right={:02X} {} state={:02X}" , left_prop, right_prop, right_codepoint, break_state) ;
132
+ println ! ( "left={} right={} {}" , STATE_NAMES [ left_prop as usize ] , STATE_NAMES [ right_prop as usize ] , right_codepoint) ;
129
133
130
134
if break_state >= 0 {
131
135
// This isn't simple rule set. We need marker to restore iterator to previous position.
132
136
let mut previous_iter = self . iter . clone ( ) ;
133
137
let mut previous_pos_data = self . current_pos_data ;
134
138
let mut previous_left_prop = left_prop;
135
139
140
+ if ( break_state & INTERMEDIATE_MATCH_RULE ) != 0 {
141
+ println ! ( "going through intermediate match rule" ) ;
142
+ }
136
143
break_state &= !INTERMEDIATE_MATCH_RULE ;
144
+ println ! ( "Inner loop" ) ;
137
145
loop {
138
146
self . advance_iter ( ) ;
139
147
@@ -155,6 +163,8 @@ impl<'l, 's, Y: RuleBreakType<'l, 's> + ?Sized> Iterator for RuleBreakIterator<'
155
163
156
164
let previous_break_state = break_state;
157
165
break_state = self . get_break_state_from_table ( break_state as u8 , prop) ;
166
+ println ! ( "> left={:02X} right={:02X} state={:02X}" , previous_break_state, prop, break_state) ;
167
+ println ! ( "> left={} right={}" , STATE_NAMES [ ( previous_break_state & !INTERMEDIATE_MATCH_RULE ) as usize ] , STATE_NAMES [ prop as usize ] ) ;
158
168
if break_state < 0 {
159
169
break ;
160
170
}
@@ -167,6 +177,7 @@ impl<'l, 's, Y: RuleBreakType<'l, 's> + ?Sized> Iterator for RuleBreakIterator<'
167
177
previous_left_prop = break_state as u8 ;
168
178
}
169
179
if ( break_state & INTERMEDIATE_MATCH_RULE ) != 0 {
180
+ println ! ( "going through intermediate match rule" ) ;
170
181
break_state -= INTERMEDIATE_MATCH_RULE ;
171
182
previous_iter = self . iter . clone ( ) ;
172
183
previous_pos_data = self . current_pos_data ;
0 commit comments