[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Help-smalltalk] [please review] CharacterArray>>#%
From: |
Paolo Bonzini |
Subject: |
[Help-smalltalk] [please review] CharacterArray>>#% |
Date: |
Mon, 25 Jun 2007 15:40:08 +0200 |
User-agent: |
Thunderbird 2.0.0.4 (Macintosh/20070604) |
I've just added CharacterArray>>#% to 2.3 and 3.0.
In 3.0 however I also want to change the callers. Could a brave soul
help reviewing the attached patch?
Paolo
* looking for address@hidden/smalltalk--devo--2.2--patch-419 to compare with
* auto-adding address@hidden/smalltalk--devo--2.2--patch-419 to greedy revision
library /Users/bonzinip/Archives/revlib
* found immediate ancestor revision in library
(address@hidden/smalltalk--devo--2.2--patch-418)
* patching for this revision (address@hidden/smalltalk--devo--2.2--patch-419)
* comparing to address@hidden/smalltalk--devo--2.2--patch-419
M scripts/Package.st
M compiler/STFileParser.st
M scripts/Getopt.st
M blox/gtk/BloxBasic.st
M blox/gtk/BloxText.st
M examples/Publish.st
M kernel/Regex.st
M blox/tk/BloxBasic.st
M blox/tk/BloxText.st
M blox/tk/BloxWidgets.st
M browser/ClassBrow.st
M browser/ClassHierBrow.st
M browser/Inspector.st
M browser/test.st
M compiler/STDecompiler.st
M compiler/STSymTable.st
M i18n/Locale.st
M java/JavaTranslation.st
M kernel/AnsiExcept.st
M kernel/Behavior.st
M kernel/CStruct.st
M kernel/CharArray.st
M kernel/Collection.st
M kernel/CompildCode.st
M kernel/Directory.st
M kernel/Float.st
M kernel/Object.st
M kernel/Semaphore.st
M kernel/SeqCollect.st
M kernel/VFS.st
M net/SMTP.st
M net/httpd/FileServer.st
M net/httpd/WebServer.st
M net/httpd/WikiServer.st
M tests/AnsiRun.st
M tests/ackermann.st
M tests/ary3.st
M tests/except.st
M tests/hash2.st
M tests/lists1.st
M tests/matrix.st
M tests/prodcons.st
M tests/sieve.st
M xml/XML.st
M xml/XPath.st
M xml/XSL.st
* modified files
--- orig/blox/gtk/BloxBasic.st
+++ mod/blox/gtk/BloxBasic.st
@@ -575,10 +575,10 @@ getKeyPressEventNames: key
^(keySym size = 1 and: [ keySym first isLetter ])
ifTrue: [
"Use both the lowercase and uppercase variants"
- { '<%1KeyPress-%2>' bindWith: mod with: keySym asLowercase.
- '<%1KeyPress-%2>' bindWith: mod with: keySym asUppercase } ]
+ { '<%1KeyPress-%2>' % { mod. keySym asLowercase } .
+ '<%1KeyPress-%2>' % { mod. keySym asUppercase } } ]
ifFalse: [
- { '<%1KeyPress-%2>' bindWith: mod with: keySym } ]!
+ { '<%1KeyPress-%2>' % { mod. keySym } } ]!
translateModifier: mod platform: platform
| name |
--- orig/blox/gtk/BloxText.st
+++ mod/blox/gtk/BloxText.st
@@ -851,7 +851,7 @@ tag: name bind: event to: aSymbol of: an
to: aSymbol
of: anObject
parameters: params
- prefix: ('%1 tag bind %2' bindWith: self connected with: name)
+ prefix: ('%1 tag bind %2' % { self connected. name })
! !
--- orig/blox/tk/BloxBasic.st
+++ mod/blox/tk/BloxBasic.st
@@ -449,10 +449,10 @@ getKeyPressEventNames: key
^(keySym size = 1 and: [ keySym first isLetter ])
ifTrue: [
"Use both the lowercase and uppercase variants"
- { '<%1KeyPress-%2>' bindWith: mod with: keySym asLowercase.
- '<%1KeyPress-%2>' bindWith: mod with: keySym asUppercase } ]
+ { '<%1KeyPress-%2>' % { mod. keySym asLowercase }.
+ '<%1KeyPress-%2>' % { mod. keySym asUppercase } } ]
ifFalse: [
- { '<%1KeyPress-%2>' bindWith: mod with: keySym } ]!
+ { '<%1KeyPress-%2>' % { mod. keySym } } ]!
translateModifier: mod platform: platform
| name |
@@ -2694,6 +2694,6 @@ asTkImageString
"R0lG is `GIF' in Base-64 encoding."
^(self match: 'R0lG*')
- ifTrue: [ '{%1}' bindWith: self ]
+ ifTrue: [ '{%1}' % {self} ]
ifFalse: [ self asTkString ]
! !
--- orig/blox/tk/BloxText.st
+++ mod/blox/tk/BloxText.st
@@ -807,10 +807,8 @@ destroyed
from: aPoint to: endPoint
^'%1.%2 %3.%4'
- bindWith: aPoint y printString
- with: (aPoint x - 1) printString
- with: endPoint y printString
- with: (endPoint x - 1) printString
+ % { aPoint y printString. (aPoint x - 1) printString.
+ endPoint y printString. (endPoint x - 1) printString }
!
parseResult
@@ -835,7 +833,7 @@ tag: name bind: event to: aSymbol of: an
to: aSymbol
of: anObject
parameters: params
- prefix: ('%1 tag bind %2' bindWith: self connected with: name)
+ prefix: ('%1 tag bind %2' % { self connected. name })
!
widgetType
--- orig/blox/tk/BloxWidgets.st
+++ mod/blox/tk/BloxWidgets.st
@@ -879,8 +879,8 @@ label: value
!BButton methodsFor: 'private'!
create
- self create: ('-highlightthickness 0 -takefocus 1 -command {callback %1
invokeCallback} -font {', self class defaultFont, '}'
- bindWith: self asOop printString)
+ self create: ('-highlightthickness 0 -takefocus 1 -command {callback %1
invokeCallback} -font {%2}'
+ % { self asOop. self class defaultFont })
!
setInitialSize
@@ -3687,8 +3687,7 @@ initialize: parentWidget
label := ''.
exists := false.
primitive := '%1.w%2'
- bindWith: self parent container
- with: (self asOop printString: 36).
+ % { self parent container. self asOop printString: 36 }).
!
newMenuItemFor: pair notifying: receiver
--- orig/browser/ClassBrow.st
+++ mod/browser/ClassBrow.st
@@ -41,7 +41,7 @@ nil!
!ClassBrowser methodsFor: 'initializing'!
createTopView
- ^BrowserShell new: ('Class Browser on %1' bindWith: startingClass)!
+ ^BrowserShell new: ('Class Browser on %1' % { startingClass })!
openOn: aClass
"Create and open a class hierarchy browser on startingClass"
--- orig/browser/ClassHierBrow.st
+++ mod/browser/ClassHierBrow.st
@@ -419,8 +419,7 @@ printHierarchyOf: dict hierarchy: desc s
[:each |
| template |
template := (dict at: each) ifTrue: ['%1%2'] ifFalse: ['%1(%2)'].
- string := template bindWith: indent
- with: (each nameIn: self currentNamespace).
+ string := template % { indent. each nameIn: self currentNamespace }.
shownClasses at: string put: each.
stream nextPut: string.
self
--- orig/browser/Inspector.st
+++ mod/browser/Inspector.st
@@ -131,10 +131,10 @@ initFieldListsMenu
open
| pane |
topView := BrowserShell new: ('Inspecting %1%2'
- bindWith: (fieldList value isClass
+ % { fieldList value isClass
ifFalse: [ fieldList value class article, ' ' ]
- ifTrue: [ '' ])
- with: (fieldList value class nameIn: Namespace current)).
+ ifTrue: [ '' ].
+ fieldList value class nameIn: Namespace current }.
topView data: self.
topView blox
x: 20
@@ -322,7 +322,7 @@ currentFieldValue
currentFieldString
^[ self currentFieldValue printString ] on: Error do: [ :ex |
ex return: ('[%1 exception raised while printing item]'
- bindWith: ex class) ]!
+ % { ex class }) ]!
fieldsSortBlock
"nil = use OrderedCollection, else a block to be used as fields'
--- orig/browser/test.st
+++ mod/browser/test.st
@@ -149,7 +149,7 @@ points: p coords: coords
dropdownTest
^[ :win || cb name size label |
cb := [
- [ label font: ('{%1} %2' bindWith: name text with: size text) ]
+ [ label font: ('{%1} %2' % { name text. size text }) ]
on: ExAll
do: [ :sig | sig return ]
].
--- orig/compiler/STDecompiler.st
+++ mod/compiler/STDecompiler.st
@@ -880,8 +880,8 @@ source
primitive names in the decompiled code."
^context method primitive > 0
- ifTrue: [ '<primitive: %1>' bindWith:
- (VMPrimitives keyAtValue: context method primitive) asString ]
+ ifTrue: [ '<primitive: %1>'
+ % { VMPrimitives keyAtValue: context method primitive } ]
ifFalse: [ '' ]!
tags: source
--- orig/compiler/STFileParser.st
+++ mod/compiler/STFileParser.st
@@ -280,7 +280,7 @@ next
name
"Answer a string that represents what the receiver is streaming on"
- ^'(%1 %2)' bindWith: self species article with: self species name
+ ^'(%1 %2)' % { self species article. self species name }
!
segmentFrom: startPos to: endPos
--- orig/compiler/STSymTable.st
+++ mod/compiler/STSymTable.st
@@ -209,7 +209,7 @@ declareTemporary: tempName canStore: can
ifTrue: [(variables at: symbol) scope < scopes size
ifTrue: [stCompiler compileWarning:
('variable ''%1'' shadows another'
- bindWith: tempName)]
+ % { tempName })]
ifFalse: [^stCompiler compileError:
'duplicate variable name ', tempName]].
variables at: symbol put: (STVariable
--- orig/examples/Publish.st
+++ mod/examples/Publish.st
@@ -884,7 +884,7 @@ Alphabetic list of classes:'.
('writing documentation into ', fileName, '.htm') displayNl.
self publish: each onFile: fileName, '.htm'.
aFileStream
- nextPutAll: ('<A HREF="%1.htm">%1</A>' bindWith: fileName);
+ nextPutAll: ('<A HREF="%1.htm">%1</A>' % { fileName });
nl.
].
@@ -989,10 +989,7 @@ Filed out from %1 on %2 %3 -->
<TITLE>%4</TITLE>
</HEAD>
<BODY>
-' bindWith: Smalltalk version
- with: (now at: 1) printString
- with: (now at: 2) printString
- with: self className).
+' % { Smalltalk version. now at: 1. now at: 2. self className }).
self
nextPutAll: '<DL><DT><B>Category: ';
@@ -1364,7 +1361,7 @@ emitHeader: now
@section %1
@clindex %1
-' bindWith: self className).
+' % { self className }).
self
nextPutAll: '@table @b'; nl;
--- orig/i18n/Locale.st
+++ mod/i18n/Locale.st
@@ -384,9 +384,7 @@ id
languageDirectory: rootDirectory
"Answer the directory where data files for the current language reside,
given the root directory of the locale data."
- ^'%1/%2'
- bindWith: rootDirectory
- with: self language!
+ ^'%1/%2' % { rootDirectory. self language }!
languageDirectory
"Answer the directory where data files for the current language reside."
@@ -396,10 +394,7 @@ territoryDirectory: rootDirectory
"Answer the directory where data files for the current language,
specific to the territory, reside, given the root directory of the
locale data."
- ^'%1/%2_%3'
- bindWith: rootDirectory
- with: self language
- with: self territory!
+ ^'%1/%2_%3' % { rootDirectory. self language. self territory }!
territoryDirectory
"Answer the directory where data files for the current language,
--- orig/java/JavaTranslation.st
+++ mod/java/JavaTranslation.st
@@ -3756,7 +3756,7 @@ makeDirtyBlock
!
popIntoArray: anIndex
- stream tab; nextPutAll: ('pop and store into array element[%1]' bindWith:
anIndex); nl
+ stream tab; nextPutAll: ('pop and store into array element[%1]' % {
anIndex }); nl
!
popJumpIfFalseTo: destination
@@ -3796,7 +3796,7 @@ pushGlobal: anObject
!
pushInstVar: anIndex
- stream tab; nextPutAll: ('push Instance Variable[%1]' bindWith: anIndex);
nl
+ stream tab; nextPutAll: ('push Instance Variable[%1]' % { anIndex }); nl
!
pushLiteral: anObject
@@ -3805,7 +3805,7 @@ pushLiteral: anObject
(printString isNil or: [ printString size > 40 ]) ifTrue: [
printString := anObject isClass
ifTrue: [ anObject name displayString ]
- ifFalse: [ '%1 %2' bindWith: anObject class article with: anObject
class name displayString ]].
+ ifFalse: [ '%1 %2' % { anObject class article. anObject class name
} ]].
stream tab; nextPutAll: 'push '; nextPutAll: printString; nl
!
@@ -3815,11 +3815,11 @@ pushSelf
!
pushTemporary: anIndex
- stream tab; nextPutAll: ('push Temporary[%1]' bindWith: anIndex); nl
+ stream tab; nextPutAll: ('push Temporary[%1]' % { anIndex }); nl
!
pushTemporary: anIndex outer: scopes
- stream tab; nextPutAll: ('push Temporary[%1] from outer context #%2'
bindWith: anIndex with: scopes); nl
+ stream tab; nextPutAll: ('push Temporary[%1] from outer context #%2' % {
anIndex. scopes }); nl
!
returnFromContext
@@ -3831,7 +3831,7 @@ returnFromMethod
!
send: aSymbol numArgs: anInteger
- stream tab; nextPutAll: ('send %2 args message %1' bindWith: aSymbol
storeString with: anInteger); nl
+ stream tab; nextPutAll: ('send %2 args message %1' % { aSymbol
storeString. anInteger }); nl
!
storeGlobal: anObject
@@ -3839,19 +3839,19 @@ storeGlobal: anObject
!
storeInstVar: anIndex
- stream tab; nextPutAll: ('store into Instance Variable[%1]' bindWith:
anIndex); nl
+ stream tab; nextPutAll: ('store into Instance Variable[%1]' % { anIndex
}); nl
!
storeTemporary: anIndex
- stream tab; nextPutAll: ('store into Temporary[%1]' bindWith: anIndex); nl
+ stream tab; nextPutAll: ('store into Temporary[%1]' % { anIndex }); nl
!
storeTemporary: anIndex outer: scopes
- stream tab; nextPutAll: ('store into Temporary[%1] from outer context #%2'
bindWith: anIndex with: scopes); nl
+ stream tab; nextPutAll: ('store into Temporary[%1] from outer context #%2'
% { anIndex. scopes }); nl
!
superSend: aSymbol numArgs: anInteger
- stream tab; nextPutAll: ('send %2 args message %1 to super' bindWith:
aSymbol with: anInteger); nl
+ stream tab; nextPutAll: ('send %2 args message %1 to super' % { aSymbol.
anInteger }); nl
! !
!TargetInstructionPrinter methodsFor: 'decoding bytecodes'!
--- orig/kernel/AnsiExcept.st
+++ mod/kernel/AnsiExcept.st
@@ -877,8 +877,7 @@ description
messageText
"Answer an exception's message text."
- ^'%1: %2 element(s) missing' bindWith: self basicMessageText
- with: self remainingCount!
+ ^'%1: %2 element(s) missing' % { self basicMessageText. self
remainingCount }!
remainingCount
"Answer the number of items that were to be read."
@@ -913,7 +912,7 @@ description
messageText
"Answer an exception's message text."
- ^'Invalid value %1: %2' bindWith: self value with: self basicMessageText!
+ ^'Invalid value %1: %2' % { self value. self basicMessageText }!
value
"Answer the object that was found to be invalid."
@@ -927,9 +926,7 @@ value: anObject
messageText
"Answer an exception's message text."
- ^'Invalid argument %1: %2'
- bindWith: self value
- with: self basicMessageText! !
+ ^'Invalid argument %1: %2' % { self value. self basicMessageText }! !
!SystemExceptions.AlreadyDefined methodsFor: 'accessing'!
@@ -994,8 +991,7 @@ description
messageText
"Answer an exception's message text."
- ^'Invalid index %1: %2'
- bindWith: self value with: self basicMessageText!
+ ^'Invalid index %1: %2' % { self value. self basicMessageText }!
collection
"Answer the collection that triggered the error"
@@ -1062,7 +1058,7 @@ messageText
self validClasses isNil
ifTrue: [ ^'Invalid argument ', self value printString ].
^'Invalid argument %1: must be %2'
- bindWith: self value with: self validClassesString!
+ % { self value. self validClassesString }!
validClasses
"Answer the list of classes whose instances would have been valid."
@@ -1255,9 +1251,8 @@ signalOn: selector useInstead: aSymbol
messageText
"Answer an exception's message text."
- ^'%1, use %2 instead'
- bindWith: self basicMessageText
- with: self suggestedSelector storeString!
+ ^'%1, use %2 instead' %
+ { self basicMessageText. self suggestedSelector storeString }!
selector
"Answer which selector was sent."
--- orig/kernel/Behavior.st
+++ mod/kernel/Behavior.st
@@ -101,7 +101,7 @@ createGetMethod: what default: value
^self compile: ('%1
"Answer the receiver''s %1. Its default value is %2"
%1 isNil ifTrue: [ %1 := %2 ].
- ^%1' bindWith: what with: value)
+ ^%1' % { what. value })
!
createGetMethod: what
@@ -109,7 +109,7 @@ createGetMethod: what
^self compile: ('%1
"Answer the receiver''s %1"
- ^%1' bindWith: what)
+ ^%1' % { what })
!
createSetMethod: what
@@ -120,7 +120,7 @@ createSetMethod: what
^self compile: ('%1: %2
"Set the receiver''s %1 to %2"
- %1 := %2' bindWith: what with: parameter)
+ %1 := %2' % { what. parameter })
!
defineAsyncCFunc: cFuncNameString
@@ -134,9 +134,7 @@ defineAsyncCFunc: cFuncNameString
code := (
'%1
<asyncCCall: ''%2'' args: #%3>')
- bindWith: selectorAndArgs
- with: cFuncNameString
- with: argsArray printString.
+ % { selectorAndArgs. cFuncNameString. argsArray printString }.
^self compile: code ifError: [ :file :line :error | code error: error ].
!
@@ -153,10 +151,8 @@ defineCFunc: cFuncNameString
code := (
'%1
<cCall: ''%2'' returning: %3 args: #%4>')
- bindWith: selectorAndArgs
- with: cFuncNameString
- with: returnTypeSymbol storeString
- with: argsArray printString.
+ % { selectorAndArgs. cFuncNameString. returnTypeSymbol storeString.
+ argsArray printString }.
^self compile: code ifError: [ :file :line :error | code error: error ].
!
@@ -1123,7 +1119,7 @@ name
"Answer the class name; this prints to the name of the superclass
enclosed in braces. This class name is used, for example, to print
the receiver."
- ^'{%1}' bindWith: self asClass printString
+ ^'{%1}' % { self asClass }
! !
--- orig/kernel/CStruct.st
+++ mod/kernel/CStruct.st
@@ -210,8 +210,7 @@ computeTypeString: type block: aBlock
type isSymbol ifFalse: [
typeString := '#{%1} value type'
- bindWith: ((type value nameIn: Namespace current)
- copyReplaceAll: $ with: $.).
+ % { type value nameIn: Namespace current }.
^aBlock value: type value value: typeString.
].
--- orig/kernel/CharArray.st
+++ mod/kernel/CharArray.st
@@ -305,14 +305,14 @@ subStrings: aCharacter
bindWith: s1
"Answer the receiver with every %1 replaced by the displayString of s1"
- ^self bindWithArguments: { s1 }
+ ^self % { s1 }
!
bindWith: s1 with: s2
"Answer the receiver with every %1 or %2 replaced by s1 or s2,
respectively. s1 and s2 are `displayed' (i.e. their
displayString is used) upon replacement."
- ^self bindWithArguments: { s1. s2 }
+ ^self % { s1. s2 }
!
bindWith: s1 with: s2 with: s3
@@ -320,7 +320,7 @@ bindWith: s1 with: s2 with: s3
respectively. s1, s2 and s3 are `displayed' (i.e. their
displayString is used) upon replacement."
- ^self bindWithArguments: { s1. s2. s3 }
+ ^self % { s1. s2. s3 }
!
bindWith: s1 with: s2 with: s3 with: s4
@@ -328,7 +328,7 @@ bindWith: s1 with: s2 with: s3 with: s4
or s4, respectively. s1, s2, s3 and s4 are `displayed' (i.e. their
displayString is used) upon replacement."
- ^self bindWithArguments: { s1. s2. s3. s4 }
+ ^self % { s1. s2. s3. s4 }
!
bindWithArguments: anArray
@@ -338,6 +338,16 @@ bindWithArguments: anArray
%<trueString|falseString>n is replaced with one of the two
strings depending on the n-th element of anArray being true or false."
+ ^self % anArray
+!
+
+% anArray
+ "Answer the receiver with every %n (1<=n<=9) replaced by the n-th element
+ of anArray. The replaced elements are `displayed' (i.e. their
+ displayString is used). In addition, the special pattern
+ %<trueString|falseString>n is replaced with one of the two
+ strings depending on the n-th element of anArray being true or false."
+
| result wasPercent pattern char ifTrue ifFalse |
result := WriteStream on: (self copyEmpty: self size + 20).
wasPercent := false.
--- orig/kernel/Collection.st
+++ mod/kernel/Collection.st
@@ -519,8 +519,8 @@ inspect
output := [ object printString ]
on: Error
do: [ :ex | ex return: ('%1 %2'
- bindWith: object class article
- with: object class name asString) ].
+ % { object class article.
+ object class name asString }) ].
Transcript nextPutAll: ' ';
nextPutAll: (instVars at: i);
@@ -534,8 +534,8 @@ inspect
output := [ obj printString ]
on: Error
do: [ :ex | ex return: ('%1 %2'
- bindWith: obj class article
- with: obj class name asString) ].
+ % { obj class article.
+ obj class name asString }) ].
Transcript
nextPutAll: ' ';
nextPutAll: output;
--- orig/kernel/CompildCode.st
+++ mod/kernel/CompildCode.st
@@ -394,8 +394,8 @@ inspect
output := [ object printString ]
on: Error
do: [ :ex | ex return: ('%1 %2'
- bindWith: object class article
- with: object class name asString) ].
+ % { object class article.
+ object class name asString }) ].
Transcript
nextPutAll: ' ';
nextPutAll: (instVars at: i);
@@ -727,31 +727,31 @@ invalidOpcode: aStream
aStream tab; nextPutAll: 'invalid opcode'; nl!
pushInstVar: anIndex with: aStream
- aStream tab; nextPutAll: ('push Instance Variable[%1]' bindWith: anIndex);
nl!
+ aStream tab; nextPutAll: ('push Instance Variable[%1]' % { anIndex }); nl!
storeInstVar: anIndex with: aStream
- aStream tab; nextPutAll: ('store into Instance Variable[%1]' bindWith:
anIndex); nl!
+ aStream tab; nextPutAll: ('store into Instance Variable[%1]' % { anIndex
}); nl!
popIntoArray: anIndex with: aStream
- aStream tab; nextPutAll: ('pop and store into array element[%1]' bindWith:
anIndex); nl!
+ aStream tab; nextPutAll: ('pop and store into array element[%1]' % {
anIndex }); nl!
pushTemporary: anIndex outer: scopes with: aStream
- aStream tab; nextPutAll: ('push Temporary[%1] from outer context #%2'
bindWith: anIndex with: scopes); nl!
+ aStream tab; nextPutAll: ('push Temporary[%1] from outer context #%2' % {
anIndex. scopes }); nl!
storeTemporary: anIndex outer: scopes with: aStream
- aStream tab; nextPutAll: ('store into Temporary[%1] from outer context
#%2' bindWith: anIndex with: scopes); nl!
+ aStream tab; nextPutAll: ('store into Temporary[%1] from outer context
#%2' % { anIndex. scopes }); nl!
pushTemporary: anIndex with: aStream
- aStream tab; nextPutAll: ('push Temporary[%1]' bindWith: anIndex); nl!
+ aStream tab; nextPutAll: ('push Temporary[%1]' % { anIndex }); nl!
storeTemporary: anIndex with: aStream
- aStream tab; nextPutAll: ('store into Temporary[%1]' bindWith: anIndex);
nl!
+ aStream tab; nextPutAll: ('store into Temporary[%1]' % { anIndex }); nl!
pushLiteral: anObject with: aStream
| printString |
printString := anObject printString.
(anObject isClass not and: [ printString size > 30 ])
- ifTrue: [ printString := '%1 %2' bindWith: anObject class article with:
anObject class name asString ].
+ ifTrue: [ printString := '%1 %2' % { anObject class article. anObject
class name asString } ].
aStream tab; nextPutAll: 'push '; nextPutAll: printString; nl!
@@ -795,10 +795,10 @@ jumpTo: destination with: aStream
aStream tab; nextPutAll: 'jump to '; print: destination; nl!
superSend: aSymbol numArgs: anInteger with: aStream
- aStream tab; nextPutAll: ('send %2 args message %1 to super' bindWith:
aSymbol with: anInteger); nl!
+ aStream tab; nextPutAll: ('send %2 args message %1 to super' % { aSymbol.
anInteger }); nl!
send: aSymbol numArgs: anInteger with: aStream
- aStream tab; nextPutAll: ('send %2 args message %1' bindWith: aSymbol
with: anInteger); nl!
+ aStream tab; nextPutAll: ('send %2 args message %1' % { aSymbol. anInteger
}); nl!
bytecodeIndex: byte with: aStream
"Private - Print the bytecode index for byte"
--- orig/kernel/Directory.st
+++ mod/kernel/Directory.st
@@ -120,17 +120,14 @@ append: fileName to: directory
ifTrue: [
(fileName at: 1) isPathSeparator ifTrue: [
^(directory size >= 2 and: [ (directory at: 2) = $: ])
- ifTrue: [ '%1:%2' bindWith: directory first with: fileName ]
+ ifTrue: [ '%1:%2' % { directory first. fileName } ]
ifFalse: [ fileName ] ].
(fileName size >= 2 and: [ (fileName at: 2) = $: ])
ifTrue: [ ^fileName ] ].
^(directory at: directory size) isPathSeparator
ifTrue: [ directory, fileName ]
- ifFalse: [ '%1%2%3'
- bindWith: directory
- with: self pathSeparator
- with: fileName ]
+ ifFalse: [ directory, self pathSeparatorString, fileName ]
!
pathSeparator
--- orig/kernel/Float.st
+++ mod/kernel/Float.st
@@ -420,14 +420,11 @@ printOn: aStream special: whatToPrintArr
"First, take care of the easy cases."
self isNaN ifTrue: [
- ^aStream nextPutAll:
- ((whatToPrintArray at: 3) bindWith: self class) ].
+ ^aStream nextPutAll: ((whatToPrintArray at: 3) % { self class }) ].
self = self class infinity ifTrue: [
- ^aStream nextPutAll:
- ((whatToPrintArray at: 1) bindWith: self class) ].
+ ^aStream nextPutAll: ((whatToPrintArray at: 1) % { self class }) ].
self = self class negativeInfinity ifTrue: [
- ^aStream nextPutAll:
- ((whatToPrintArray at: 2) bindWith: self class) ].
+ ^aStream nextPutAll: ((whatToPrintArray at: 2) % { self class }) ].
"We deal only with positive values."
me := self abs.
--- orig/kernel/Object.st
+++ mod/kernel/Object.st
@@ -598,8 +598,8 @@ inspect
output := [ object printString ]
on: Error
do: [ :ex | ex return: ('%1 %2'
- bindWith: object class article
- with: object class name asString) ].
+ % { object class article.
+ object class name asString }) ].
i <= instVars size
ifTrue: [
--- orig/kernel/Regex.st
+++ mod/kernel/Regex.st
@@ -558,7 +558,7 @@ copyFrom: from to: to replacingRegex: pa
"Returns the substring of the receiver between from and to.
If pattern has a match in that part of the string, the match
is replaced with str after substituting %n sequences with the
- captured subexpressions of the match (as in #bindWithArguments:)."
+ captured subexpressions of the match (as in #%)."
| regs beg end repl res |
regs := self searchRegex: pattern from: from to: to.
@@ -566,7 +566,7 @@ copyFrom: from to: to replacingRegex: pa
ifTrue: [
beg := regs from.
end := regs to.
- repl := str bindWithArguments: regs.
+ repl := str % regs.
res := self species new: (to - from) - (end - beg) + repl size.
res replaceFrom: 1 to: beg - from with: self startingAt: from.
res replaceFrom: beg - from + 1 to: beg - from + repl size with:
repl.
@@ -579,7 +579,7 @@ copyFrom: from to: to replacingRegex: pa
copyReplacingRegex: pattern with: str
"Returns the receiver after replacing the first match of pattern (if
any) with str. %n sequences present in str are substituted with the
- captured subexpressions of the match (as in #bindWithArguments:)."
+ captured subexpressions of the match (as in #%)."
^self copyFrom: 1 to: self size replacingRegex: pattern with: str
!
@@ -588,7 +588,7 @@ copyFrom: from to: to replacingAllRegex:
"Returns the substring of the receiver between from and to.
Any match of pattern in that part of the string is replaced with
str after substituting %n sequences with the captured subexpressions
- of the match (as in #bindWithArguments:)."
+ of the match (as in #%)."
| res idx regex beg end regs |
regex := pattern asRegex.
@@ -601,7 +601,7 @@ copyFrom: from to: to replacingAllRegex:
beg := regs from.
end := regs to.
res next: beg - idx putAll: self startingAt: idx.
- res nextPutAll: (str bindWithArguments: regs).
+ res nextPutAll: (str % regs).
idx := end + 1.
beg > end ifTrue: [ res nextPut: (self at: idx). idx := idx + 1 ].
idx > self size ifTrue: [ ^res contents ].
@@ -614,7 +614,7 @@ copyFrom: from to: to replacingAllRegex:
copyReplacingAllRegex: pattern with: str
"Returns the receiver after replacing all the matches of pattern (if
any) with str. %n sequences present in str are substituted with the
- captured subexpressions of the match (as in #bindWithArguments:)."
+ captured subexpressions of the match (as in #%)."
^self copyFrom: 1 to: self size replacingAllRegex: pattern with: str
!
--- orig/kernel/Semaphore.st
+++ mod/kernel/Semaphore.st
@@ -103,9 +103,7 @@ printOn: aStream
aStream
nextPutAll: self class name;
nextPutAll: ('(%1: %<free|held>2, %3 %<available signals|waiting
processes>2)'
- bindWith: self name printString
- with: self signals > 0
- with: self signals abs)! !
+ % { self name printString. self signals > 0. self signals abs })! !
!Semaphore methodsFor: 'private'!
--- orig/kernel/SeqCollect.st
+++ mod/kernel/SeqCollect.st
@@ -77,8 +77,8 @@ inspect
output := [ object printString ]
on: Error
do: [ :ex | ex return: ('%1 %2'
- bindWith: object class article
- with: object class name asString) ].
+ % { object class article.
+ object class name asString }) ].
Transcript nextPutAll: ' ';
nextPutAll: (instVars at: i);
@@ -92,8 +92,8 @@ inspect
output := [ obj printString ]
on: Error
do: [ :ex | ex return: ('%1 %2'
- bindWith: obj class article
- with: obj class name asString) ].
+ % { obj class article.
+ obj class name asString }) ].
Transcript
nextPutAll: ' [';
print: i;
--- orig/kernel/VFS.st
+++ mod/kernel/VFS.st
@@ -680,7 +680,7 @@ vfsFor: file name: fsName subPath: subPa
command := self fileTypes at: fsName.
temp := FileStream openTemporaryFile: Directory temporary, '/vfs'.
- Smalltalk system: (command bindWith: file with: temp name).
+ Smalltalk system: (command % { file. temp name }).
^self new name: file realFileName: temp name! !
@@ -874,10 +874,7 @@ vfsFor: file name: fsName
createDir: dirName
"Create a subdirectory of the receiver, naming it dirName."
- Smalltalk system: command,
- (' mkdir %1 %2'
- bindWith: self name
- with: dirName)!
+ Smalltalk system: ('%1 mkdir %2 %3' % { command. self name. dirName })!
do: aBlock
"Evaluate aBlock once for each file in the directory represented by the
@@ -897,11 +894,8 @@ extractMember: anArchiveMemberHandler
^extractedFiles at: anArchiveMemberHandler ifAbsentPut: [
| temp |
temp := FileStream openTemporaryFile: Directory temporary, '/vfs'.
- Smalltalk system: command,
- (' copyout %1 %2 %3'
- bindWith: self name
- with: anArchiveMemberHandler name
- with: temp name).
+ Smalltalk system: ('%1 copyout %2 %3 %4'
+ % { command. self name. anArchiveMemberHandler name. temp name }).
File fullNameFor: temp name
]!
@@ -948,26 +942,17 @@ removeMember: anArchiveMemberHandler
ifTrue: [ 'rmdir' ]
ifFalse: [ 'rm' ].
- Smalltalk system: command,
- (' %1 %2 %3'
- bindWith: subcmd
- with: self name
- with: anArchiveMemberHandler name)!
+ Smalltalk system: ('%1 %2 %3 %4'
+ % { command. subcmd. self name. anArchiveMemberHandler name. })!
updateMember: anArchiveMemberHandler
"Update the member represented by anArchiveMemberHandler by
copying the file into which it was extracted back to the
archive."
- | temp |
- temp := FileStream openTemporaryFile: Directory temporary, '/vfs'.
- Smalltalk system: command,
- (' copyin %1 %2 %3'
- bindWith: self name
- with: anArchiveMemberHandler name
- with: anArchiveMemberHandler realFileName).
-
- ^temp name!
+ Smalltalk system: ('%1 copyin %2 %3 %4'
+ % { command. self name. anArchiveMemberHandler name.
+ anArchiveMemberHandler realFileName })!
refresh
"Extract the directory listing from the archive"
--- orig/net/SMTP.st
+++ mod/net/SMTP.st
@@ -83,9 +83,7 @@ example2Host: host
"self example2Host: 'localhost'."
| user message client |
- user := 'address@hidden'
- bindWith: (Smalltalk getenv: 'USER')
- with: IPAddress localHostName.
+ user := 'address@hidden' % { Smalltalk getenv: 'USER'. IPAddress
localHostName }.
message := MIME.MimeEntity readFrom:
('From: ', user, '
@@ -106,9 +104,7 @@ exampleHost: host
"self exampleHost: 'localhost'."
| user message client |
- user := 'address@hidden'
- bindWith: (Smalltalk getenv: 'USER')
- with: IPAddress localHostName.
+ user := 'address@hidden' % { Smalltalk getenv: 'USER'. IPAddress
localHostName }.
message := MIME.MimeEntity readFrom:
('From: ', user, '
To: ', user, '
--- orig/net/httpd/FileServer.st
+++ mod/net/httpd/FileServer.st
@@ -678,9 +678,7 @@ contentLength
!MultiRangeResponse methodsFor: 'caching'!
getBoundary
- ^'------%1-!-GST-!-%2'
- bindWith: Time secondClock printString
- with: Time millisecondClock printString!
+ ^'------%1-!-GST-!-%2' % { Time secondClock. Time millisecondClock }!
mimeType
"Cache the MIME type as computed by the FileResponse implementation"
--- orig/net/httpd/WebServer.st
+++ mod/net/httpd/WebServer.st
@@ -1138,7 +1138,7 @@ authorizer: aString
authorizer := aString!
challengeFor: aServlet
- ^'Basic realm="%1"' bindWith: aServlet name!
+ ^'Basic realm="%1"' % { aServlet name }!
authorize: aRequest in: aServlet ifAuthorized: aBlock
^(self authorize: aRequest)
--- orig/net/httpd/WikiServer.st
+++ mod/net/httpd/WikiServer.st
@@ -1276,10 +1276,9 @@ sendBody
emitMatchList
self findMatches.
referringPages isEmpty ifTrue: [ ^self emitNoMatches ].
- self heading: [self << ((referringPages size = 1
- ifTrue: ['There is 1 reference to the phrase:']
- ifFalse: ['There are %1 references to the phrase:'])
- bindWith: referringPages size printString)].
+ self heading: [
+ self << ('There %<is|are>2 %1 reference%<|s>2 to the phrase:'
+ % { referringPages size. referringPages size = 1 })].
self << '<I> ...'; << self searchString; << '...</I>'; lineBreak.
self << '<UL>'; nl.
referringPages do: [:each | self listItem: [self linkToPage: each]].
--- orig/scripts/Getopt.st
+++ mod/scripts/Getopt.st
@@ -40,5 +40,5 @@ Getopt
o := opt ifNil: [ '' ].
pat := o isString ifTrue: [ '--%1 %2' ] ifFalse: [ '-%1 %2' ].
a := arg ifNil: [ '' ].
- (pat bindWith: o with: a) displayNl ]
+ (pat % { o. a }) displayNl ]
ifError: [ 'ERROR' displayNl ]
--- orig/scripts/Package.st
+++ mod/scripts/Package.st
@@ -98,30 +98,25 @@ Kernel.PackageDirectories subclass: Pack
File extend [
emitRemove [
- ('rm -f %1' bindWith: self) displayNl
+ ('rm -f %1' % { self }) displayNl
]
emitSymlink: dest [
self isDirectory ifTrue: [ ^(Directory name: dest) emitMkdir ].
-
- ('$LN_S -f %1 %2'
- bindWith: self
- with: (File name: dest)) displayNl
+ ('$LN_S -f %1 %2' % { self. File name: dest }) displayNl
]
emitInstall: dest [
| mode |
mode := self isExecutable ifTrue: [ 8r755 ] ifFalse: [ 8r644 ].
('$INSTALL -m %1 %2 %3'
- bindWith: (mode printString: 8)
- with: self
- with: (File name: dest)) displayNl
+ % { mode printString: 8. self. File name: dest }) displayNl
]
]
Directory extend [
emitMkdir [
- ('$mkdir_p %1' bindWith: self) displayNl
+ ('$mkdir_p %1' % { self }) displayNl
]
]
--- orig/tests/AnsiRun.st
+++ mod/tests/AnsiRun.st
@@ -35,7 +35,7 @@ Transcript message: stdout -> #nextPutAl
Smalltalk arguments do: [ :each || results |
results := (Smalltalk at: each asSymbol) suite run.
- Transcript showCr: ('%1: %2' bindWith: each with: results printString).
+ Transcript showCr: ('%1: %2' % { each. results }).
results failureCount > 0 ifTrue: [ results failures printNl ].
results errorCount > 0 ifTrue: [ results errors printNl ].
results correctCount < results runCount ifTrue: [ ObjectMemory quit: 1 ]
--- orig/tests/ackermann.st
+++ mod/tests/ackermann.st
@@ -41,6 +41,6 @@ Eval [
ifTrue: [ 4 ]
ifFalse: [ Smalltalk arguments first asInteger ].
- ('Ack(3,%1): %2' bindWith: n with: (3 ack: n)) displayNl
+ ('Ack(3,%1): %2' % { n. (3 ack: n) }) displayNl
]
--- orig/tests/ary3.st
+++ mod/tests/ary3.st
@@ -38,5 +38,5 @@ Eval [
1000 timesRepeat: [
n to: 1 by: -1 do: [ :i | y at: i put: (y at: i) + (x at: i) ]
].
- ('%1 %2' bindWith: y first with: y last) displayNl
+ ('%1 %2' % { y first. y last }) displayNl
]
--- orig/tests/except.st
+++ mod/tests/except.st
@@ -72,6 +72,6 @@ Eval [
ifFalse: [ 1 max: Smalltalk arguments first asInteger ].
1 to: n do: [ :each | each someFunction ].
- ('Exceptions: HI=%1 / LO=%2'
- bindWith: HiException count with: LoException count) displayNl
+ ('Exceptions: HI=%1 / LO=%2' % { HiException count. LoException count })
+ displayNl
]
--- orig/tests/hash2.st
+++ mod/tests/hash2.st
@@ -43,8 +43,9 @@ Eval [
hash1 keysAndValuesDo: [ :k :v |
hash2 at: k put: (hash2 at: k ifAbsent: [0]) + v ]].
- ('%1 %2 %3 %4' bindWith: (hash1 at: 'foo_1')
- with: (hash1 at: 'foo_9999')
- with: (hash2 at: 'foo_1')
- with: (hash2 at: 'foo_9999')) displayNl
+ ('%1 %2 %3 %4' % {
+ hash1 at: 'foo_1'.
+ hash1 at: 'foo_9999'.
+ hash2 at: 'foo_1'.
+ hash2 at: 'foo_9999' }) displayNl
]
--- orig/tests/lists1.st
+++ mod/tests/lists1.st
@@ -36,7 +36,7 @@ SmallInteger extend [
[ a isEmpty ] whileFalse: [
b addLast: a removeLast ].
- ('%1 %2' bindWith: (b at: 1) with: (b at: 2)) displayNl.
+ ('%1 %2' % { b at: 1. b at: 2 }) displayNl.
b := b reverse.
(b includes: 0) printNl.
@@ -56,7 +56,7 @@ SmallInteger extend [
sum printNl.
a := a, b.
- ('%1 %2' bindWith: a size with: a last) displayNl
+ ('%1 %2' % { a size. a last }) displayNl
]
]
--- orig/tests/matrix.st
+++ mod/tests/matrix.st
@@ -77,7 +77,9 @@ Eval [
m1 := Array newMatrix: size columns: size.
m2 := Array newMatrix: size columns: size.
n timesRepeat: [ mm := m1 mmult: m2 ].
- ('%1 %2 %3 %4' bindWith: (mm atXY: address@hidden)
- with: (mm atXY: address@hidden) with: (mm atXY: address@hidden)
- with: (mm atXY: address@hidden)) displayNl
+ ('%1 %2 %3 %4' % {
+ mm atXY: address@hidden
+ mm atXY: address@hidden
+ mm atXY: address@hidden
+ mm atXY: address@hidden }) displayNl
]
--- orig/tests/prodcons.st
+++ mod/tests/prodcons.st
@@ -41,5 +41,5 @@ Eval [
join wait.
join wait.
- ('%1 %2' bindWith: produced with: consumed) displayNl
+ ('%1 %2' % { produced. consumed }) displayNl
]
--- orig/tests/sieve.st
+++ mod/tests/sieve.st
@@ -44,5 +44,5 @@ Eval [
count := count + 1 ]].
].
- ('Count: %1' bindWith: count) displayNl
+ ('Count: %1' % { count }) displayNl
]
--- orig/xml/XML.st
+++ mod/xml/XML.st
@@ -1739,7 +1739,7 @@ definition: aPattern
definition := aPattern!
description
- ^'an <%1> element' bindWith: tag!
+ ^'an <%1> element' % { tag }!
elementNamed: elementName
| list |
@@ -2076,8 +2076,7 @@ completeValidationAgainst: aParser
ndata isNil
ifFalse: [aParser dtd notationAt: ndata ifAbsent:
[aParser invalid: ('Unparsed entity "%1" uses an
undeclared notation "%2"'
- bindWith: name
- with: ndata)]]! !
+ % { name. ndata })]]! !
!SAXDriver methodsFor: 'other'!
@@ -2692,7 +2691,7 @@ normalizeFor: aParser
ifFalse: [aParser malformed: 'Incomplete translation'].
(self duplicatesNeedTested and: [t hasDuplicatesInFollowSet])
ifTrue: [aParser warn: ('Nondeterministic content model
%1'
- bindWith: self
printString)].
+ % { self })].
done add: t.
t followSet do: [:t1 |
(done includes: t1) ifFalse: [list add: t1]]].
@@ -2854,7 +2853,7 @@ named: aName
!NamePattern methodsFor: 'accessing'!
description
- ^'<%1>' bindWith: name!
+ ^'<%1>' % { name }!
name
^name! !
@@ -3041,7 +3040,7 @@ next
large values of ch. If primitive failure code can not be trusted to do
this, then the bounds check would have to be added back."
(ch isNil or: [(CharacterClasses at: ch asInteger + 1) > 0])
- ifFalse: [parser errorHandler fatalError: (BadCharacterSignal new
messageText:('A character with Unicode value %1 is not legal' bindWith: ch
asInteger))].
+ ifFalse: [parser errorHandler fatalError: (BadCharacterSignal new
messageText:('A character with Unicode value %1 is not legal' % { ch asInteger
}))].
^ch!
skip: n
@@ -3517,8 +3516,7 @@ hasExpanded: anEntity
[s == nil] whileFalse:
[s entity == anEntity
ifTrue: [self malformed: ('The %1 entity "%2" invokes itself
recursively'
- bindWith: anEntity entityType
- with: anEntity name)].
+ % { anEntity entityType. anEntity name
})].
s := s nextLink].
^false!
@@ -3918,7 +3916,7 @@ PERef: refType
exp := self dtd parameterEntityAt: nm.
exp == nil
ifTrue: [self warn: ('The parameter entity "%1" has not
been defined'
- bindWith: nm)].
+ % { nm })].
exp == nil
ifTrue: [self isValidating
ifTrue:
@@ -4060,7 +4058,7 @@ charEntity: data startedIn: str1
large values of ch. If primitive failure code can not be trusted to do
this, then the bounds check would have to be added back."
(CharacterClasses at: n + 1) = 0
- ifTrue: [sax fatalError: (BadCharacterSignal new messageText:('A
character with Unicode value %1 is not legal' bindWith: n))].
+ ifTrue: [sax fatalError: (BadCharacterSignal new messageText:('A
character with Unicode value %1 is not legal' % { n }))].
data nextPut: (Character value: n).
self getNextChar!
@@ -4071,7 +4069,7 @@ closeTag: tag
self skipSpace.
self mustFind: '>'.
nm = tag
- ifFalse: [self malformed: ('The close tag for %1 was not found'
bindWith: tag asString)].
+ ifFalse: [self malformed: ('The close tag for %1 was not found' % { tag
asString })].
sax endElement: nm namespace localName: nm type qName: nm asString.
elementStack last definesNamespaces
ifTrue: [elementStack last namespaces
@@ -4176,7 +4174,7 @@ elementContent: tag openedIn: str
braceCount := 0.
buffer reset.
[hereChar == nil
- ifTrue: [self malformed: ('The end tag for <%1> was expected' bindWith:
tag)].
+ ifTrue: [self malformed: ('The end tag for <%1> was expected' % { tag
})].
hereChar == $<
ifTrue:
[braceCount := 0.
@@ -4239,7 +4237,7 @@ generalEntityInText: str canBeExternal:
exp == nil
ifTrue:
[msg := 'The general entity "%1" has not been defined'
- bindWith: nm.
+ % { nm }.
self isValidating
ifTrue: [self invalid: msg]
ifFalse: [self warn: msg].
@@ -4270,7 +4268,7 @@ popTag
self isValidating
ifTrue:
[elementStack last canTerminate
- ifFalse: [self invalid: ('One of %1 was expected, but
none was found' bindWith: elementStack last followSetDescription)]].
+ ifFalse: [self invalid: ('One of %1 was expected, but
none was found' % { elementStack last followSetDescription })]].
elementStack removeLast.!
pushNewTag: nm
@@ -4287,13 +4285,13 @@ pushNewTag: nm
types == nil
ifTrue: [self invalid:
('"%1" is not permitted at this
point in the "%2" node'
- bindWith: nm asString
- with: elm tag
asString)].
+ % { nm asString.
+ elm tag asString })].
elm types: types].
elementStack addLast: (ElementContext new tag: nm).
p := self dtd elementFor: nm from: self.
p == nil
- ifTrue: [self invalid: ('Using a tag (%1) without
declaring it is not permitted' bindWith: nm asString)].
+ ifTrue: [self invalid: ('Using a tag (%1) without
declaring it is not permitted' % { nm asString })].
elementStack last type: p]
ifFalse:
[elementStack addLast: (ElementContext new tag: nm)]!
@@ -4357,7 +4355,7 @@ attType
'ENTITY' 'ENTITIES'
'NMTOKEN' 'NMTOKENS').
(all includes: nm)
- ifFalse: [self malformed: ('One of %1 was expected, but
none was found' bindWith: all storeString)].
+ ifFalse: [self malformed: ('One of %1 was expected, but
none was found' % { all })].
type := #(#{NOTATION_AT} #{CDATA_AT} #{ID_AT}
#{IDREF_AT} #{IDREFS_AT}
#{ENTITY_AT} #{ENTITIES_AT}
@@ -4586,7 +4584,7 @@ checkReservedAttributes: nm type: type v
ifFalse: [self malformed: 'xml:space must have a value
of "preserve" or "default"']].!
illegalLanguageCode: value
- self malformed: ('Illegal value (%1) for xml:lang' bindWith: value)!
+ self malformed: ('Illegal value (%1) for xml:lang' % { value })!
isValidName: aTag
aTag size = 0 ifTrue: [^false].
@@ -4615,7 +4613,7 @@ processAttributes: nm
attributes addLast: (self attributeFor: nm).
(attributes collect: [:i | i tag asString]) asSet size =
attributes size
ifFalse: [self malformed: ('The attribute "%1" was used
twice in this element''s tag'
- bindWith: attributes
last tag asString)]].
+ % { attributes last tag
asString })]].
self isValidating
ifTrue: [attributes := self validateAttributes: attributes for: nm].
attributes := self resolveNamespaces: attributes.
@@ -4642,7 +4640,7 @@ validateAttributes: attributes for: tag
attributeList do: [:i |
(attr includesKey: i key asString)
ifFalse: [self invalid: ('the attribute %1 was not defined in
the DTD'
- bindWith: i key)]].
+ % { i key })]].
attr do: [:adef | | a |
a := attributeList detect: [:at | at key isLike: adef name] ifNone: [].
a == nil
@@ -4654,8 +4652,8 @@ validateAttributes: attributes for: tag
(Attribute name: adef name
value: adef default)]
ifFalse: [adef isRequired
ifTrue: [self invalid: ('"%1" elements are
required to have a "%2" attribute'
- bindWith: tag
asString
- with: adef name
asString)]]]
+ % { tag
asString.
+ adef name
asString })]]]
ifFalse: [adef validateValueOf: a for: self]].
^attributeList size = 0
ifTrue: [nil]
@@ -4665,12 +4663,12 @@ validateAttributes: attributes for: tag
checkUnresolvedIDREFs
(self isValidating and: [unresolvedIDREFs isEmpty not])
- ifTrue: [self invalid: ('The IDREFs %1 have not been resolved to IDs'
bindWith: unresolvedIDREFs asSortedCollection asArray)]!
+ ifTrue: [self invalid: ('The IDREFs %1 have not been resolved to IDs' %
{ unresolvedIDREFs asSortedCollection asArray })]!
registerID: attribute
latestID := attribute value.
(definedIDs includes: latestID)
- ifTrue: [self invalid: ('The id "%1" was used more than once' bindWith:
latestID)].
+ ifTrue: [self invalid: ('The id "%1" was used more than once' % {
latestID })].
definedIDs add: latestID.
unresolvedIDREFs remove: latestID ifAbsent: []!
@@ -4797,7 +4795,7 @@ documentNode
^self document!
expected: string
- self malformed: ('%1 expected, but not found' bindWith: string)!
+ self malformed: ('%1 expected, but not found' % { string })!
expectedWhitespace
self malformed: 'White space expected but not found'!
@@ -4863,12 +4861,12 @@ validateEncoding: encName
c := encName first.
(c asInteger < 128 and: [c isLetter])
ifFalse: [self malformed: ('The first letter of the encoding ("%1")
must be an ASCII alphabetic letter'
- bindWith: encName)].
+ % { encName })].
2 to: encName size do: [:i |
c := encName at: i.
(c asInteger < 128 and: [c isLetter or: [c isDigit or: ['._-' includes:
c]]])
ifFalse: [self malformed: ('A letter in the encoding name
("%1") must be ''.'', ''_'', ''-'', or an ASCII letter or digit'
- bindWith: encName)]]!
+ % { encName })]]!
warn: aMessage
sax warning: (WarningSignal new messageText: aMessage)!
@@ -4979,7 +4977,7 @@ findNamespace: ns
nsURI = nil ifFalse: [^nsURI]].
^ns = ''
ifTrue: ['']
- ifFalse: [self invalid: ('The namespace qualifier %1 has not been bound
to a namespace URI' bindWith: ns)]!
+ ifFalse: [self invalid: ('The namespace qualifier %1 has not been bound
to a namespace URI' % { ns })]!
resolveNamespaces: attributes
| newAttributes showDecls t1 t2 k |
@@ -5008,8 +5006,8 @@ resolveNamespaces: attributes
(t1 type = t2 type and: [t1 namespace =
t2 namespace])
ifTrue:
[self malformed: ('The
attributes "%1" and "%2" have the same namespace and type'
-
bindWith: t1 asString
- with:
t2 asString).
+ % { t1
asString.
+ t2
asString }).
k := newAttributes
size].
k := k + 1]]].
elementStack last tag: (self correctTag: elementStack last tag).
@@ -5641,9 +5639,9 @@ validateValueOf: anAttribute for: aParse
type validateValueOf: anAttribute for: aParser.
(self isFixed not or: [anAttribute value = self default])
ifFalse: [aParser invalid: ('The attribute "%1" was declared FIXED, but
the value used in the document ("%2") did not match the default ("%3")'
- bindWith: anAttribute tag asString
- with: anAttribute value
- with: self default)].! !
+ % { anAttribute tag asString.
+ anAttribute value.
+ self default })].! !
!AttributeDef methodsFor: 'private'!
@@ -5905,22 +5903,22 @@ attributeFor: key subKey: k2 from: anErr
| val |
(val := attributeDefs at: key asString ifAbsent: []) == nil
ifTrue: [anErrorReporter invalid: ('The attribute "%1 %2" has not been
defined'
- bindWith: key asString
- with: k2 asString)].
+ % { key asString.
+ k2 asString })].
^val at: k2 asString
ifAbsent: [anErrorReporter invalid: ('The attribute "%1 %2" has not
been defined'
- bindWith: key asString
- with: k2 asString)]!
+ % { key asString.
+ k2 asString })]!
attributeFor: key subKey: k2 put: value from: anErrorReporter
| dict |
dict := attributeDefs at: key asString ifAbsentPut: [Dictionary new].
(dict includesKey: k2 asString)
ifTrue: [^anErrorReporter warn: ('The attribute "%1 %2" has been
defined more than once'
- bindWith: key asString
- with: k2 asString)].
+ % { key asString.
+ k2 asString })].
(value type isID and: [dict contains: [:attr | attr type isID]])
- ifTrue: [^anErrorReporter invalid: ('The element %1 has two attributes
typed as ID' bindWith: key asString)].
+ ifTrue: [^anErrorReporter invalid: ('The element %1 has two attributes
typed as ID' % { key asString })].
dict at: k2 asString put: value!
attributesFor: key
@@ -5943,7 +5941,7 @@ elementFor: key from: anErrorReporter
| val |
(val := elementDefs at: key asString ifAbsent: []) == nil
ifTrue: [anErrorReporter warn: ('The element "%1" has not been defined'
- bindWith: key asString)].
+ % { key asString })].
^val!
elementFor: key put: value from: anErrorReporter
@@ -5951,7 +5949,7 @@ elementFor: key put: value from: anError
ifTrue:
[| msg |
msg := ('The element "%1" has been defined more than once'
- bindWith: key asString).
+ % { key asString }).
anErrorReporter isValidating
ifTrue: [anErrorReporter invalid: msg]
ifFalse: [anErrorReporter warn: msg]].
@@ -5977,7 +5975,7 @@ generalEntityAt: key
generalEntityAt: key put: value from: anErrorReporter
(generalEntities includesKey: key)
ifTrue: [^anErrorReporter warn: ('The general entity "%1" has been
defined more than once'
- bindWith: key)].
+ % { key })].
generalEntities at: key put: value!
notationAt: name from: anErrorReporter
@@ -5997,7 +5995,7 @@ parameterEntityAt: key
parameterEntityAt: key put: value from: anErrorReporter
(parameterEntities includesKey: key)
ifTrue: [^anErrorReporter warn: ('The parameter entity "%1" has been
defined more than once'
- bindWith: key)].
+ % { key })].
parameterEntities at: key put: value! !
!DocumentType methodsFor: 'private'!
@@ -6133,8 +6131,7 @@ completeValidationAgainst: aParser from:
typeNames do: [:nm |
aParser dtd notationAt: nm ifAbsent:
[aParser invalid: ('Undeclared Notation "%1" used by attribute
type "%2"'
- bindWith: nm
- with: anAttributeDef tag
asString)]]!
+ % { nm. anAttributeDef tag
asString })]]!
validateValueOf: anAttribute for: aParser
| v |
@@ -6142,9 +6139,8 @@ validateValueOf: anAttribute for: aParse
v := anAttribute value.
(typeNames includes: v)
ifFalse: [aParser invalid: ('A NOTATION attribute (%1="%2") should have
had a value from %3.'
- bindWith: anAttribute tag asString
- with: v
- with: typeNames asArray)].! !
+ % { anAttribute tag asString
+ v. typeNames asArray })].! !
!NOTATION_AT class methodsFor: 'instance creation'!
@@ -6161,8 +6157,7 @@ validateValueOf: anAttribute for: aParse
ifTrue: [aParser invalid: 'white space must not occur in NMTOKEN
attributes'].
(aParser isValidNmToken: v)
ifFalse: [aParser invalid: ('An NMTOKEN attribute (%1="%2") does not
match the required syntax of an NmToken.'
- bindWith: anAttribute tag asString
- with: v)]! !
+ % { anAttribute tag asString. v })]! !
!IDREF_AT methodsFor: 'validating'!
@@ -6174,8 +6169,7 @@ validateValueOf: anAttribute for: aParse
ifTrue: [aParser invalid: 'white space must not occur in IDREF
attributes'].
(aParser isValidName: v)
ifFalse: [aParser invalid: ('An IDREF attribute (%1="%2") does not
match the required syntax of a Name.'
- bindWith: anAttribute tag asString
- with: v)].
+ % { anAttribute tag asString. v })].
aParser rememberIDREF: v! !
!NMTOKENS_AT methodsFor: 'validating'!
@@ -6187,8 +6181,7 @@ validateValueOf: anAttribute for: aParse
(all := self stringAsTokens: v) do: [:nm |
(aParser isValidNmToken: nm)
ifFalse: [aParser invalid: ('An NMTOKENS attribute (%1="%2")
does not match the required syntax of a list of NmTokens.'
- bindWith: anAttribute tag asString
- with: v)]].
+ % { anAttribute tag asString. v })]].
all size = 0 ifTrue: [aParser invalid: 'Attribute has empty list of
NMTOKENS'].! !
!ENTITY_AT methodsFor: 'validating'!
@@ -6208,17 +6201,14 @@ validateValueOf: anAttribute for: aParse
ifTrue: [aParser invalid: 'white space must not occur in ENTITY
attributes'].
(aParser isValidName: v)
ifFalse: [aParser invalid: ('An ENTITY attribute (%1="%2") does not
match the required syntax of a Name.'
- bindWith: anAttribute tag asString
- with: v)].
+ % { anAttribute tag asString. v })].
ent := aParser dtd generalEntityAt: v.
ent == nil
ifTrue: [aParser invalid: ('Undeclared unparsed entity "%1" used by
attribute type "%2"'
- bindWith: v
- with: anAttribute tag asString)]
+ % { v. anAttribute tag asString })]
ifFalse: [ent isParsed
ifTrue: [aParser invalid: ('The entity "%1" used by attribute
type "%2" is a parsed entity and should be unparsed'
- bindWith: v
- with: anAttribute tag asString)]
+ % { v. anAttribute tag asString
})]
ifFalse: []]! !
!CDATA_AT methodsFor: 'validating'!
@@ -6240,8 +6230,7 @@ validateValueOf: anAttribute for: aParse
ifTrue: [aParser invalid: 'white space must not occur in ID
attributes'].
(aParser isValidName: v)
ifFalse: [aParser invalid: ('An ID attribute (%1="%2") does not match
the required syntax of a Name.'
- bindWith: anAttribute tag asString
- with: v)].
+ % { anAttribute tag asString. v })].
aParser registerID: anAttribute! !
!ID_AT methodsFor: 'testing'!
@@ -6265,9 +6254,8 @@ validateValueOf: anAttribute for: aParse
v := anAttribute value.
(values includes: v)
ifFalse: [aParser invalid: ('An attribute (%1="%2") should have had a
value from %3.'
- bindWith: anAttribute tag asString
- with: v
- with: values asArray)]! !
+ % { anAttribute tag asString. v
+ values asArray })]! !
!Enumeration_AT class methodsFor: 'instance creation'!
@@ -6283,8 +6271,7 @@ validateValueOf: anAttribute for: aParse
(all := self stringAsTokens: v) do: [:nm |
(aParser isValidName: nm)
ifFalse: [aParser invalid: ('An IDREFS attribute (%1="%2") does
not match the required syntax of a list of Names.'
- bindWith: anAttribute tag asString
- with: v)].
+ % { anAttribute tag asString. v })].
aParser rememberIDREF: nm].
all size = 0 ifTrue: [aParser invalid: 'Attribute has empty list of
IDREFS'].! !
@@ -6304,17 +6291,14 @@ validateValueOf: anAttribute for: aParse
(all := self stringAsTokens: v) do: [:nm |
(aParser isValidName: nm)
ifFalse: [aParser invalid: ('An ENTITIES attribute (%1="%2")
does not match the required syntax of a list of Names.'
- bindWith: anAttribute tag asString
- with: v)].
+ % { anAttribute tag asString. v })].
ent := aParser dtd generalEntityAt: nm.
ent == nil
ifTrue: [aParser invalid: ('Undeclared unparsed entity "%1"
used by attribute type "%2"'
- bindWith: nm
- with: anAttribute tag asString)]
+ % { nm. anAttribute tag asString })]
ifFalse: [ent isParsed
ifTrue: [aParser invalid: ('The entity "%1" used by
attribute type "%2" is a parsed entity and should be unparsed'
- bindWith: nm
- with: anAttribute tag asString)]
+ % { nm. anAttribute tag
asString })]
ifFalse: []]].
all size = 0 ifTrue: [aParser invalid: 'Attribute has empty list of
ENTITIES'].! !
@@ -6396,7 +6380,7 @@ defineDefaultNamespace: attribute
defineNamespace: attribute from: aParser
(#('xmlns' 'xml') includes: attribute tag type)
- ifTrue: [self error: ('It is illegal to redefine the qualifier "%1".'
bindWith: attribute tag type)].
+ ifTrue: [self error: ('It is illegal to redefine the qualifier "%1".' %
{ attribute tag type })].
attribute value isEmpty ifTrue: [aParser invalid: 'It is not permitted to
have an empty URI as a namespace name'].
self namespaces at: attribute tag type put: attribute value!
--- orig/xml/XPath.st
+++ mod/xml/XPath.st
@@ -388,7 +388,7 @@ xpathCompareEquality: aData using: aBloc
ifTrue: [^nodes contains: [:nd1 |
aData unsortedNodes contains: [:nd2 |
aBlock value: nd1 xpathStringData value: nd2
xpathStringData]]].
- self error: ('Can''t compare a %1 with a node set' bindWith: aData class
printString)!
+ self error: ('Can''t compare a %1 with a node set' % { aData class })!
xpathCompareOrder: aData using: aBlock
^aData xpathIsNodeSet
@@ -448,6 +448,11 @@ xpathUsedVarNames
xpathUsedVarNames
^OrderedCollection new! !
+!Object methodsFor: 'xpath'!
+
+xpathUsedVarNames
+ ^OrderedCollection new! !
+
!XPathExpression methodsFor: 'matching'!
baseValueIn: aNodeContext
@@ -850,7 +855,7 @@ baseValueIn: aNodeContext
| var |
var := aNodeContext variables
at: self name
- ifAbsent: [self error: ('No binding found for the variable $%1'
bindWith: self name)].
+ ifAbsent: [self error: ('No binding found for the variable $%1' % {
self name })].
^var! !
!XPathVariable methodsFor: 'accessing'!
@@ -1372,7 +1377,7 @@ initializeNumeric
!XPathBinaryExpression class methodsFor: 'instance creation'!
operator: op with: arg1 with: arg2
- ^(operators at: op ifAbsent: [self error: ('Not implemented yet %1'
bindWith: op)]) copy
+ ^(operators at: op ifAbsent: [self error: ('Not implemented yet %1' % { op
})]) copy
operator: op with: arg1 with: arg2! !
!XPathSortingVector methodsFor: 'sorting'!
@@ -1611,7 +1616,7 @@ axis: axisName test: test
| stepClass step |
stepClass := self class nodeTypes
at: axisName
- ifAbsent: [self error: ('%1 is not an axis' bindWith:
axisName)].
+ ifAbsent: [self error: ('%1 is not an axis' % {
axisName })].
step := stepClass new.
step axisName: axisName. "Some classes represent multiple axes,
and must be told which"
step baseTest: test.
@@ -2028,6 +2033,9 @@ atEndOfExpression
init: streamOrString notifying: nothing failBlock: bah
self source: streamOrString!
+init: streamOrString notifying: nothing failBlock: bah
+ self source: streamOrString!
+
source: streamOrString
buffer := String new writeStream.
stack := OrderedCollection new.
@@ -2053,6 +2061,9 @@ result
initScanner
"Present for compatibility with the parser in VW."!
+initScanner
+ "Present for compatibility with the parser in VW."!
+
xmlNode: aNode
xmlNode := aNode! !
@@ -2060,7 +2071,7 @@ xmlNode: aNode
functionNamed: fName
functions == nil ifTrue: [functions := XPathFunction baseFunctions].
- ^(functions at: fName ifAbsent: [self error: ('Not implemented yet %1()'
bindWith: fName)]) copy!
+ ^(functions at: fName ifAbsent: [self error: ('Not implemented yet %1()' %
{ fName })]) copy!
namespaceAt: aQualifier
| elm ns |
@@ -2072,7 +2083,7 @@ namespaceAt: aQualifier
elm := elm parent].
aQualifier = 'xml' ifTrue: [^XML_URI].
self error: ('No namespace binding found for namespace qualifier "%1".'
- bindWith: aQualifier)!
+ % { aQualifier })!
peekFor: trialValue
"Test to see if tokenType matches aType and token equals trialValue. If
so,
@@ -2498,7 +2509,7 @@ xpathCompareEquality: aData using: aBloc
aData xpathIsNodeSet
ifTrue: [^aData unsortedNodes contains: [:nd2 |
aBlock value: self value: nd2 xpathStringData
xpathAsBoolean]].
- self error: ('Can''t compare a %1 with a boolean' bindWith: aData class
printString)!
+ self error: ('Can''t compare a %1 with a boolean' % { aData class })!
xpathCompareOrder: aData using: aBlock
| v |
@@ -2564,7 +2575,7 @@ xpathCompareEquality: aData using: aBloc
aData xpathIsNodeSet
ifTrue: [^aData unsortedNodes contains: [:nd2 |
aBlock value: self value: nd2 xpathStringData
xpathAsNumber]].
- self error: ('Can''t compare a %1 with a number' bindWith: aData class
printString)!
+ self error: ('Can''t compare a %1 with a number' % { aData class })!
xpathCompareOrder: aData using: aBlock
| v |
@@ -2631,7 +2642,7 @@ xpathCompareEquality: aData using: aBloc
aData xpathIsNodeSet
ifTrue: [^aData unsortedNodes contains: [:nd2 |
aBlock value: self value: nd2 xpathStringData]].
- self error: ('Can''t compare a %1 with a string' bindWith: aData class
printString)!
+ self error: ('Can''t compare a %1 with a string' % { aData class })!
xpathCompareOrder: aData using: aBlock
| v |
--- orig/xml/XSL.st
+++ mod/xml/XSL.st
@@ -419,7 +419,7 @@ addNamedTemplate: aRule
all := namedTemplates at: aRule name
ifAbsentPut: [OrderedCollection new].
(all contains: [:c | c importance = currentImportance value])
- ifTrue: [self error: ('There are two named templates named %1 with the
same importance' bindWith: aRule name)].
+ ifTrue: [self error: ('There are two named templates named %1 with the
same importance' % { aRule name })].
all add: aRule!
addRule: aRule
@@ -438,13 +438,13 @@ addVariable: aVariable
all := variables at: aVariable name
ifAbsentPut: [OrderedCollection new].
(all contains: [:c | c importance = currentImportance value])
- ifTrue: [self error: ('There are two variables named %1 with the same
importance' bindWith: aVariable name)].
+ ifTrue: [self error: ('There are two variables named %1 with the same
importance' % { aVariable name })].
all add: aVariable!
attributesForSet: setName
| list map |
list := attributeSets at: setName
- ifAbsent: [self error: ('No attribute set named "%1".' bindWith:
setName asString)].
+ ifAbsent: [self error: ('No attribute set named "%1".' % { setName
asString })].
map := Dictionary new.
list do: [:as |
(as allAttributesFrom: self) do: [:attr |
@@ -454,8 +454,8 @@ attributesForSet: setName
map do: [:singleList |
(singleList size > 1 and: [(singleList at: 1) key = (singleList at: 2)
key])
ifTrue: [self error: ('Attribute set "%1" includes more than
one definition of the attribute "%2".'
- bindWith: setName asString
- with: singleList first name asString)].
+ % { setName asString.
+ singleList first name asString })].
list add: singleList first value].
^list!
@@ -535,7 +535,7 @@ readString: aString
resolveAttributesForSet: setName
| list |
list := attributeSets at: setName
- ifAbsent: [self error: ('No attribute set named "%1".' bindWith:
setName asString)].!
+ ifAbsent: [self error: ('No attribute set named "%1".' % { setName
asString })].!
setOutput: anOutputCommand
output := anOutputCommand!
@@ -1291,11 +1291,11 @@ checkURISyntax: aString
type := aString copyFrom: n + 1 to: aString size.
ch := type at: 1.
(ch = $_ or: [ch isLetter])
- ifFalse: [self error: ('Type name syntax error in "%1".' bindWith:
type)].
+ ifFalse: [self error: ('Type name syntax error in "%1".' % { type })].
2 to: type size do: [:i |
ch := type at: i.
(ch isLetter or: [ch isDigit or: ['.-_' includes: ch]])
- ifFalse: [self error: ('Type name syntax error in "%1".'
bindWith: type)]]!
+ ifFalse: [self error: ('Type name syntax error in "%1".' % {
type })]]!
collate: node1 to: node2 within: aNodeContext
| list sign |
@@ -1309,8 +1309,7 @@ collate: node1 to: node2 within: aNodeCo
readAttribute: attName
^self readAttribute: attName
default: [self error: ('%1 needs to have an attribute named %2'
- bindWith: self tag asString
- with: attName)]!
+ % { self tag asString. attName })]!
readAttribute: attName default: def
| att |
@@ -1325,18 +1324,17 @@ readInteger: attName default: def
^att == nil
ifTrue: [def value]
ifFalse:
- [att isEmpty ifTrue: [self error: ('The %1 attribute is empty'
bindWith: attName)].
+ [att isEmpty ifTrue: [self error: ('The %1 attribute is empty'
% { attName })].
att := att readStream.
val := Number readFrom: att.
val = 0 ifTrue: [self error: 'Bad number format, ', (att
instVarAt: 1)].
- att atEnd ifFalse: [self error: ('The %1 attribute is not a
legal integer value' bindWith: attName)].
+ att atEnd ifFalse: [self error: ('The %1 attribute is not a
legal integer value' % { attName })].
val]!
readMatchPattern: attName
^self readMatchPattern: attName
default: [self error: ('%1 needs to have an attribute named %2'
- bindWith: self tag asString
- with: attName)]!
+ % { self tag asString. attName })]!
readMatchPattern: attName default: def
| att |
@@ -1350,8 +1348,7 @@ readMatchPattern: attName default: def
readSelectPattern: attName
^self readSelectPattern: attName
default: [self error: ('%1 needs to have an attribute named %2'
- bindWith: self tag asString
- with: attName)]!
+ % { self tag asString. attName })]!
readSelectPattern: attName default: def
| att d |
@@ -1372,8 +1369,7 @@ readTag: attName
att := self valueOfAttribute: attName ifAbsent: [nil].
^att == nil
ifTrue: [self error: ('%1 needs to have an attribute named %2'
- bindWith: self tag asString
- with: attName)]
+ % { self tag asString. attName })]
ifFalse: [att]!
readTagList: attName default: defaultBlock
@@ -1437,7 +1433,7 @@ generatesAttributes
isStylesheetEntry
Transcript nl; tab; show: ('Stylesheet contains a top-level element that
is not permitted (%1)'
- bindWith: self tag).
+ % { self tag }).
Transcript nl; tab; show: 'It has been ignored'.
^false!
@@ -1523,7 +1519,7 @@ resolveComputedTag: nm
qualifier := self findQualifierAtNamespace: 'quote:', ns.
qualifier == nil
ifTrue: [qualifier := self findQualifierAtNamespace:
ns].
- qualifier == nil ifTrue: [self error: ('The namespace %1 has
not been bound to a qualifier in this stylesheet, and automatic creation of
qualifiers has not been implemented.' bindWith: ns)].
+ qualifier == nil ifTrue: [self error: ('The namespace %1 has
not been bound to a qualifier in this stylesheet, and automatic creation of
qualifiers has not been implemented.' % { ns })].
NodeTag new qualifier: qualifier ns: ns type: type]
ifFalse:
[self checkQNameSyntax: nm.
@@ -1542,7 +1538,7 @@ resolveTag: aTagString
ifTrue: [self error: 'A qualified name cannot
begin or end with a colon.'].
qual := aTagString copyFrom: 1 to: c - 1.
ns := self findNamespaceAt: qual.
- ns == nil ifTrue: [self error: ('The namespace
qualifier %1 has not been bound to a namespace in this stylesheet' bindWith:
qual)].
+ ns == nil ifTrue: [self error: ('The namespace
qualifier %1 has not been bound to a namespace in this stylesheet' % { qual })].
"Use a # in the match to make sure there's at least one
more character"
('quote:#*' match: ns)
ifTrue: [ns := ns copyFrom: 'quote:' size + 1
to: ns size].
@@ -1988,7 +1984,7 @@ sequenceSrc
format: number by: aFormat
| n s |
aFormat size = 1
- ifFalse: [self error: ('Unrecognized number format = "%1"' bindWith:
aFormat)].
+ ifFalse: [self error: ('Unrecognized number format = "%1"' % { aFormat
})].
aFormat = 'a'
ifTrue:
[n := self radix: number base: 26.
@@ -2352,7 +2348,7 @@ topLevelAddToRuleDB: aDB
self tag namespace = XSL_URI
ifTrue: [self error: ('"%1" not recognized as an XSL command'
- bindWith: self tag asString)].
+ % { self tag asString })].
aDB addRule: self! !
!VariableDefinition methodsFor: 'loading'!
- [Help-smalltalk] [please review] CharacterArray>>#%,
Paolo Bonzini <=