" 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 ]