GraphemeView
Description
Provides a grapheme representational and bidirectional view over a unicode component where each element in the view is an extended grapheme cluster (which approximate human-readable characters).
A <Grapheme> is also the default representation of a <UnicodeString>. When APIs such as #at:, #size, #copyFrom:to: are used, its relative to graphemes.
  • #next/#previous - Answers a <Grapheme>.
  • #contents - Answers a <UnicodeString>
Instance State
  • lineDelimiter: <Object> grapheme or sequenceable collection of graphemes
Examples
| view |
view := GraphemeView on: 'abc' , String crlf.
self assert: [view next = $a asGrapheme].
self assert: [view next = $b asGrapheme].
self assert: [view next = $c asGrapheme].
self assert: [view next = Grapheme crlf].
self assert: [view atEnd].
self assert: [view contents = ('abc' , String crlf) asUnicodeString]
Class Methods
None
Instance Methods
<details> lineDelimiter
   Answer the line delimiter of the receiver.
   If undefined, then a default set of Unicode line delimiters will be used.
   This is the set of graphemes defined in Grapheme>>isNewline
     
   Answers:
    <SequenceableCollection> of <Grapheme> or nil for default
</details>
<details> lineDelimiter:
   Set the line delimiter of the receiver.
   Compat provided for String and Character.
   
   Notes:
    Any <Cr><Lf> will be replaced with Grapheme crlf since
    this is one grapheme in Unicode.
   
   Arguments:
    anObject - <Grapheme> grapheme delim
              <UnicodeScalar> scalar delim
              <UnicodeString> graphemes
              <Array> of <implementors of #asGrapheme>
              Compat: <String | Character>
   Answers:
    <UnicodeView> self
</details>
<details> linesDo:
   Execute aBlock with each line in this string.
   The line delimiters used can be found in Grapheme>>isNewline.
   Line delimiters are not included in what is passed to @aBlock
   
   Arguments:  
    aBlock - <Block> 1-arg block with each line
</details>
<details> nextLine
   Answer the elements between the current position and the next lineDelimiter.
   
   Answers:
    <UnicodeString>
</details>
<details> supportsLineDelimiters
   Subclasses that support line delimiters should override
   and answer true.  This will allow for apis like nextLine
   
   Answers:
    <Boolean>
</details>
Last modified date: 01/18/2023