[squeak-dev] The Trunk: Collections-mt.1031.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Mar 29 09:43:21 UTC 2023


Marcel Taeumel uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-mt.1031.mcz

==================== Summary ====================

Name: Collections-mt.1031
Author: mt
Time: 29 March 2023, 11:43:16.766107 am
UUID: 90b7b1a5-0369-5542-9507-80d32a98cc4a
Ancestors: Collections-mt.1030

Document and expand on the notion of "plain text" as a property that can be checked on any String or Text.

See commentary in #isPlainText for more inforamtion. Add #hasAnyAttribute to be used if a more strict check is necessary.

=============== Diff against Collections-mt.1030 ===============

Item was added:
+ ----- Method: String>>asPlainText (in category 'converting') -----
+ asPlainText
+ 	"For compatibility with Text"
+ 	^self!

Item was added:
+ ----- Method: String>>isPlainText (in category 'testing') -----
+ isPlainText
+ 	"For compatibility with Text"
+ 	^true!

Item was added:
+ ----- Method: Text>>asPlainText (in category 'converting') -----
+ asPlainText
+ 	"Answer a copy of the receiver that represents text that has no attributes substantially related to the visual representation of glyphs. If the receiver represents already plain text, just return it. Thus, do not rely on this method to always answer a copy."
+ 	
+ 	self isPlainText ifTrue: [^ self].
+ 	^ self copy removeAttributesForPlainText!

Item was added:
+ ----- Method: Text>>hasAnyAttribute (in category 'testing') -----
+ hasAnyAttribute
+ 	"Also see (commentary in) #isPlainText, which is compatible with the String protocol.
+ 	Examples:
+ 		data isStringOrText and: [data isPlainText].
+ 		data isString or: [data isText and: [data hasAnyAttribute not]]."
+ 
+ 	^ self notEmpty and: [self runs anySatisfy: [:attributes | attributes notEmpty]]!

Item was added:
+ ----- Method: Text>>hasAttributeThat: (in category 'testing') -----
+ hasAttributeThat: block
+ 
+ 	^ self runs anySatisfy: [:attributes |
+ 		attributes anySatisfy: [:attribute |
+ 			block value: attribute]]!

Item was changed:
  ----- Method: Text>>hasClickableAttribute (in category 'testing') -----
  hasClickableAttribute
  
+ 	^ self hasAttributeThat: [:attr | attr mayActOnClick]!
- 	^ self runs anySatisfy: [:attrs | attrs anySatisfy: [:attr |
- 			attr respondsTo: #mayActOnClick]]!

Item was changed:
  ----- Method: Text>>hasColorAttribute (in category 'testing') -----
  hasColorAttribute
  
+ 	^ self hasAttributeThat: [:attr | attr respondsTo: #color]!
- 	^ self runs anySatisfy: [:attrs | attrs anySatisfy: [:attr |
- 			attr respondsTo: #color]]!

Item was changed:
  ----- Method: Text>>hasFontAttribute (in category 'testing') -----
  hasFontAttribute
  
+ 	^ self hasAttributeThat: [:attr |
+ 		(attr respondsTo: #fontNumber) or: [attr respondsTo: #font]]!
- 	^ self runs anySatisfy: [:attrs | attrs anySatisfy: [:attr |
- 			(attr respondsTo: #fontNumber) or: [attr respondsTo: #font]]]!

Item was added:
+ ----- Method: Text>>isPlainText (in category 'testing') -----
+ isPlainText
+ 	"A plain text has no attribute that is substantial for a character's visual representation. As of now, this excludes text alignment as this is regarded more a layout property of the surrounding text container (or widget). See #hasAttributes for a more strict check and #asPlainText for conversion. Note that Squeak's notion of text attributes is more powerful and expressive compared to what plain-text is outside Squeak's context."
+ 	
+ 	self flag: #todo. "mt: First, we should find a way to make widget-specific text alignment possible without having to set attributes on the (plain) text it is showing. See uses of #plainTextOnly(:). Second, there might be an entire category of text attributes possible that only affects Squeak-specific magic but not related to the user's notin of plain text. Thus, find a better check."
+ 	^ (self hasAttributeThat: [:att | att isTextAlignment not]) not!

Item was added:
+ ----- Method: Text>>removeAttributesForPlainText (in category 'private') -----
+ removeAttributesForPlainText
+ 	"In the receiver, remove all text attributes so that #isPlainText will answer true after this."
+ 
+ 	self removeAttributesThat: [:att | att isTextAlignment not].!



More information about the Squeak-dev mailing list