"danielv" == danielv danielv@netvision.net.il writes:
danielv> ^{[self class = aRenameVariableChange class]. danielv> [className = aRenameVariableChange changeClassName]. danielv> [isMeta = aRenameVariableChange isMeta]. danielv> [oldName = aRenameVariableChange oldName]. danielv> [newName = aRenameVariableChange newName]} allTrue
danielv> Note that the conditions should be tested in order and lazily - stops at danielv> the first false.
danielv> The implementation is as follows - Collection> allTrue danielv> ^self detect: [:e | e value not] ifNone: [nil]) isNil
Well, rather than alter Collection for this one-off, you could keep it all here with:
{[self class = aRenameVariableChange class]. [className = aRenameVariableChange changeClassName]. [isMeta = aRenameVariableChange isMeta]. [oldName = aRenameVariableChange oldName]. [newName = aRenameVariableChange newName]} do: [:e | e value ifFalse: [^false]]. ^true
But the regularity of the pattern still irks me. You're still faster cutting and pasting some of that code than simply typing it, which is always a red flag for me. Maybe an "associationsDo:", like
{(self class) -> #class. classname -> #classChangeName. isMeta -> #isMeta. oldname -> #oldName. newName -> #newName} associationsDo: [:e | e key = (aRenameVariableChange perform: e value) ifFalse: [^false]]. ^true
No, maybe that's no better. :)