Maybe for next Pharo version? As this is a breaking change, which you cannot just deprecate. Also then there would need to be another method that provides the current behavior. Peter On Wed, Mar 15, 2017 at 12:16:44PM +0000, Henrik Nergaard wrote:
to "capitalize" is writing a word with its first letter.
The Smalltalk String is not neccessarily just a word, it could be something else so the current implementation makes no assumptions of what the string is.
---------------------------------------------------------------------------------------------
| newClass |
newClass := Object subclass: #AbcSomeClass instanceVariableNames: 'errorCodeName referencePosition instanceVariable'. newClass instanceVariableNamesDo: [ :aString | | code | code := String streamContents: [ :aStream | | prefix cap | prefix := aString first isVowel ifTrue: ['an'] ifFalse: ['a']. cap := aString capitalized. aStream << aString; << ':'; space; << prefix; << cap; cr; cr; tab; << aString; << ' := '; << prefix; << cap. ]. newClass compile: code classified: 'accessing' ].
newClass browse --------------------------------------------------------------------------------------------
Should we fix this? Do not know about any side effects...
I think it would be better and more clear to then implement a new method called something like #onlyCapitalized that removes all other uppercase letters.
Best regards,
Henrik
________________________________ Fra: Pharo-dev <pharo-dev-bounces@lists.pharo.org> på vegne av Torsten Bergmann <astares@gmx.de> Sendt: 15. mars 2017 11:33:35 Til: Pharo Development List Emne: [Pharo-dev] Capitalized
According to https://en.wikipedia.org/wiki/Capitalization
to "capitalize" is writing a word with its first letter as a capital letter (upper-case letter) AND THE REMAINING LETTERS IN LOWER CASE writing systems.
So
'SOMETHING' capitalized
currently returns "SOMETHING" in Pharo but should return "Something" according to the definition to end up with lowercase. If we fix this I guess we would also align Pharo with other languages, like C# for example [1].
Could be easily changed by replacing "copy" with "asLowercase" in #capitalized:
capitalized "Return a copy with the first letter capitalized" | cap | self isEmpty ifTrue: [ ^self copy ]. cap := self asLowercase. cap at: 1 put: (cap at: 1) asUppercase. ^ cap
Should we fix this? Do not know about any side effects...
Note: a) Squeak has the same issue b) it fits for #uncapitalized, see [2] c) Dont know about ANSI standard or any other ST dialect
Thx T.
[1] https://github.com/srkirkland/Inflector/blob/master/Inflector.Tests/Capitali... [2] https://github.com/srkirkland/Inflector/blob/master/Inflector.Tests/Uncapita...