Explorar el Código

Refactored String>>capitalized.

Matthias Springer hace 10 años
padre
commit
6ab449329b
Se han modificado 2 ficheros con 19 adiciones y 12 borrados
  1. 9 4
      js/Kernel-Collections.js
  2. 10 8
      st/Kernel-Collections.st

+ 9 - 4
js/Kernel-Collections.js

@@ -3835,13 +3835,18 @@ category: 'converting',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $1;
-$1=_st(_st(self._copyFrom_to_((1),(1)))._asUppercase()).__comma(self._copyFrom_to_((2),self._size()));
+var $2,$1;
+$2=self._isEmpty();
+if(smalltalk.assert($2)){
+$1=self;
+} else {
+$1=_st(_st(self._first())._asUppercase()).__comma(self._allButFirst());
+};
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"capitalized",{},smalltalk.String)})},
 args: [],
-source: "capitalized\x0a\x09^ (self copyFrom: 1 to: 1) asUppercase, (self copyFrom: 2 to: self size)",
-messageSends: [",", "asUppercase", "copyFrom:to:", "size"],
+source: "capitalized\x0a\x09^ self isEmpty\x0a\x09\x09ifTrue: [ self ]\x0a\x09\x09ifFalse: [ self first asUppercase, self allButFirst ]",
+messageSends: ["ifTrue:ifFalse:", "isEmpty", ",", "asUppercase", "first", "allButFirst"],
 referencedClasses: []
 }),
 smalltalk.String);

+ 10 - 8
st/Kernel-Collections.st

@@ -1309,16 +1309,18 @@ asUppercase
 	<return self.toUpperCase()>
 !
 
+capitalized
+	^ self isEmpty
+		ifTrue: [ self ]
+		ifFalse: [ self first asUppercase, self allButFirst ]
+!
+
 crlfSanitized
 	^self lines join: String lf
 !
 
 reversed
 	<return self.split("").reverse().join("")>
-!
-
-capitalized
-	^ (self copyFrom: 1 to: 1) asUppercase, (self copyFrom: 2 to: self size)
 ! !
 
 !String methodsFor: 'copying'!
@@ -1492,6 +1494,10 @@ includesSubString: subString
 	< return self.indexOf(subString) !!= -1 >
 !
 
+isCapitalized
+	^ self first asUppercase == self first
+!
+
 isImmutable
 	^ true
 !
@@ -1504,10 +1510,6 @@ isVowel
 	"Answer true if the receiver is a one character string containing a voyel"
 	
 	^ self size = 1 and: [ 'aeiou' includes: self asLowercase ]
-!
-
-isCapitalized
-	^ self first asUppercase == self first
 ! !
 
 !String class methodsFor: 'accessing'!