@@ -869,7 +869,7 @@ bool MCTextChunkIterator_Word::Next()
869869
870870// //////////////////////////////////////////////////////////////////////////////
871871
872- MCTextChunkIterator *MCChunkCreateTextChunkIterator (MCStringRef p_text, MCChunkType p_chunk_type, MCStringRef p_delimiter, MCStringOptions p_options)
872+ MCTextChunkIterator *MCChunkCreateTextChunkIterator (MCStringRef p_text, MCRange *p_range, MCChunkType p_chunk_type, MCStringRef p_delimiter, MCStringOptions p_options)
873873{
874874 if (p_chunk_type == kMCChunkTypeCharacter && (MCStringIsNative (p_text) || (MCStringIsSimple (p_text) && MCStringIsUncombined (p_text))))
875875 p_chunk_type = kMCChunkTypeCodeunit ;
@@ -881,23 +881,44 @@ MCTextChunkIterator *MCChunkCreateTextChunkIterator(MCStringRef p_text, MCChunkT
881881 case kMCChunkTypeCharacter :
882882 case kMCChunkTypeSentence :
883883 case kMCChunkTypeTrueWord :
884- t_iterator = new MCTextChunkIterator_ICU (p_text, p_chunk_type);
884+ if (p_range != nil)
885+ t_iterator = new MCTextChunkIterator_ICU (p_text, p_chunk_type, *p_range);
886+ else
887+ t_iterator = new MCTextChunkIterator_ICU (p_text, p_chunk_type);
885888 break ;
886889 case kMCChunkTypeLine :
887890 case kMCChunkTypeItem :
888- t_iterator = new MCTextChunkIterator_Delimited (p_text, p_chunk_type, p_delimiter);
891+ if (p_range != nil)
892+ t_iterator = new MCTextChunkIterator_Delimited (p_text, p_chunk_type, p_delimiter, *p_range);
893+ else
894+ t_iterator = new MCTextChunkIterator_Delimited (p_text, p_chunk_type, p_delimiter);
895+ break ;
896+
889897 break ;
890898 case kMCChunkTypeParagraph :
891- t_iterator = new MCTextChunkIterator_Delimited (p_text, p_chunk_type, MCSTR (" \n " ));
899+ if (p_range != nil)
900+ t_iterator = new MCTextChunkIterator_Delimited (p_text, p_chunk_type, MCSTR (" \n " ), *p_range);
901+ else
902+ t_iterator = new MCTextChunkIterator_Delimited (p_text, p_chunk_type, MCSTR (" \n " ));
903+ break ;
892904 break ;
893905 case kMCChunkTypeWord :
894- t_iterator = new MCTextChunkIterator_Word (p_text, p_chunk_type, p_delimiter);
906+ if (p_range != nil)
907+ t_iterator = new MCTextChunkIterator_Word (p_text, p_chunk_type, p_delimiter, *p_range);
908+ else
909+ t_iterator = new MCTextChunkIterator_Word (p_text, p_chunk_type, p_delimiter);
895910 break ;
896911 case kMCChunkTypeCodepoint :
897- t_iterator = new MCTextChunkIterator_Codepoint (p_text, p_chunk_type);
912+ if (p_range != nil)
913+ t_iterator = new MCTextChunkIterator_Codepoint (p_text, p_chunk_type, *p_range);
914+ else
915+ t_iterator = new MCTextChunkIterator_Codepoint (p_text, p_chunk_type);
898916 break ;
899917 case kMCChunkTypeCodeunit :
900- t_iterator = new MCTextChunkIterator_Codeunit (p_text, p_chunk_type);
918+ if (p_range != nil)
919+ t_iterator = new MCTextChunkIterator_Codeunit (p_text, p_chunk_type, *p_range);
920+ else
921+ t_iterator = new MCTextChunkIterator_Codeunit (p_text, p_chunk_type);
901922 break ;
902923 default :
903924 MCAssert (false );
0 commit comments