The Trunk: Kernel-cmm.814.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Kernel-cmm.814.mcz

commits-2
Chris Muller uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-cmm.814.mcz

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

Name: Kernel-cmm.814
Author: cmm
Time: 25 October 2013, 2:27:37.722 pm
UUID: c757a2a8-26b1-422b-8b8b-4bf6640efbb4
Ancestors: Kernel-cmm.813

Added BlockClosure>>#valueWithAllPossibleArguments: to support passing a variable number of arguments to the image from the command-line.

=============== Diff against Kernel-cmm.813 ===============

Item was changed:
+ ----- Method: BlockClosure>>valueOtherwise: (in category 'evaluating') -----
- ----- Method: BlockClosure>>valueOtherwise: (in category 'events-support') -----
  valueOtherwise: aBlock
  "Send the message and answer the return value"
 
  ^self value!

Item was added:
+ ----- Method: BlockClosure>>valueWithAllPossibleArguments: (in category 'evaluating') -----
+ valueWithAllPossibleArguments: anArray
+ "Same as valueWithPossibleArgs: except when the receiver takes just one-argument, and more than one argument is specified by anArray, then pass all of anArray as THE argument to the receiver block
+ This is used to allow a large, variable number of arguments to be passed."
+ ^numArgs = 0
+ ifTrue: [self value]
+ ifFalse:
+ [self valueWithArguments:
+ (numArgs = anArray size
+ ifTrue: [anArray]
+ ifFalse:
+ [numArgs > anArray size
+ ifTrue: [anArray, (Array new: numArgs - anArray size)]
+ ifFalse:
+ [numArgs = 1
+ ifTrue: [Array with: anArray]
+ ifFalse: [anArray copyFrom: 1 to: numArgs]]])]!

Item was changed:
+ ----- Method: BlockClosure>>valueWithArguments:otherwise: (in category 'evaluating') -----
- ----- Method: BlockClosure>>valueWithArguments:otherwise: (in category 'events-support') -----
  valueWithArguments: anArray otherwise: aBlock
 
  ^ self valueWithArguments: anArray!

Item was changed:
+ ----- Method: BlockClosure>>valueWithEnoughArguments: (in category 'evaluating') -----
- ----- Method: BlockClosure>>valueWithEnoughArguments: (in category 'events-support') -----
  valueWithEnoughArguments: anArray
  "call me with enough arguments from anArray"
  | args |
  (anArray size == self numArgs)
  ifTrue: [ ^self valueWithArguments: anArray ].
 
  args := Array new: self numArgs.
  args replaceFrom: 1
  to: (anArray size min: args size)
  with: anArray
  startingAt: 1.
 
  ^ self valueWithArguments: args!