The
newname
strategy is a variant of the
new
strategy, which generates a new unique string. Newname generates unique strings, just like new, but it also accepts a prefix that will be part of the generated string. By default, the numbering is also done per prefix. For example, if you apply
newname
three times to the string
"foo"
, then the results will be
"foo_0"
,
"foo_1"
and
"foo_2"
. If
newname
is applied to
"bar"
after this, then the result will be
"bar_0"
, not
"bar_4"
. Thus, The
newname
strategy is very useful for generating more user-friendly, unique names in a program transformation.
The library strategy
newname
trims any trailing digits up to the rightmost '_'. Hence, repeated application of
newname
will not result in
mutiple numeric postfixes (for example
a_0_0
)
Example
<newname> "a" // produces "a_0"
; <newname> "b" // produces "b_0"
; <newname> "b_1" // produces "b_2"
; <newname> "b_1729" // produces "b_3"
; <newname> "b_a" // produces "b_a_0"