Grafoscopio/src/Grafoscopio/GrafoscopioAbstractText.cla...

129 lines
3.0 KiB
Smalltalk

"
This abstract class works for defining the basic type required by Rubric
"
Class {
#name : #GrafoscopioAbstractText,
#superclass : #Object,
#category : #'Grafoscopio-Pillar'
}
{ #category : #'as yet unclassified' }
GrafoscopioAbstractText >> allRangesOfSubstring: aString [
^ { }
]
{ #category : #converting }
GrafoscopioAbstractText >> asText [
^ self
]
{ #category : #accessing }
GrafoscopioAbstractText >> at: anIndex [
^ self subclassResponsibility
]
{ #category : #accessing }
GrafoscopioAbstractText >> attributesAt: characterIndex [
"Answer the code for characters in the run beginning at characterIndex."
"NB: no senders any more (supplanted by #attributesAt:forStyle: but retained for the moment in order not to break user code that may exist somewhere that still calls this"
| attributes |
" self size = 0
ifTrue: [^ Array with: (TextFontChange new fontNumber: 1)]."
self size = 0 ifTrue: [ ^#()].
attributes := self runs at: characterIndex.
^ attributes
]
{ #category : #accessing }
GrafoscopioAbstractText >> attributesAt: anInteger forStyle: aTextStyle [
| attributes size |
size := self size.
(size = 0 or: [ size < anInteger ])
ifTrue: [ ^ Array
with: (TextFontChange new fontNumber: aTextStyle defaultFontIndex) ]. "null text tolerates access"
attributes := self runs at: anInteger.
^ attributes
]
{ #category : #copying }
GrafoscopioAbstractText >> copy [
^ self
]
{ #category : #copying }
GrafoscopioAbstractText >> copyFrom: start to: stop [
^ self subclassResponsibility
]
{ #category : #testing }
GrafoscopioAbstractText >> ifNotEmpty: isNotEmptyBlock ifEmpty: isEmptyBlock [
^ self isEmpty
ifTrue: [ isEmptyBlock value ]
ifFalse: [ isNotEmptyBlock value ]
]
{ #category : #testing }
GrafoscopioAbstractText >> isEmpty [
^ self size = 0
]
{ #category : #testing }
GrafoscopioAbstractText >> isText [
^ true
]
{ #category : #accessing }
GrafoscopioAbstractText >> last [
^ self at: self size
]
{ #category : #copying }
GrafoscopioAbstractText >> notEmpty [
^ self isEmpty not
]
{ #category : #removing }
GrafoscopioAbstractText >> removeAttribute: anAttr [
^ self removeAttribute: anAttr from: 1 to: self size
]
{ #category : #removing }
GrafoscopioAbstractText >> removeAttribute: att from: start to: stop [
self subclassResponsibility
]
{ #category : #editing }
GrafoscopioAbstractText >> replaceFrom: anInteger to: anInteger2 with: aCollection [
self subclassResponsibility
]
{ #category : #emphasis }
GrafoscopioAbstractText >> runLengthFor: characterIndex [
^ self runs runLengthFor: characterIndex
]
{ #category : #accessing }
GrafoscopioAbstractText >> runs [
self subclassResponsibility
]
{ #category : #accessing }
GrafoscopioAbstractText >> runs: anArray [
self subclassResponsibility "runs := RunArray new: self size withAll: anArray . "
]
{ #category : #accessing }
GrafoscopioAbstractText >> size [
^ self string size
]
{ #category : #accessing }
GrafoscopioAbstractText >> string [
^ self subclassResponsibility
]
{ #category : #accessing }
GrafoscopioAbstractText >> text: aParam [
self subclassResponsibility
]