moo/kernel/Boolean.moo

92 lines
928 B
Smalltalk

class Boolean(Object)
{
/* TODO: do i need to really define methods defined in True and False here?
and call subclassResponsibiltiy?" */
}
class(#final, #limited) True(Boolean)
{
method not
{
^false
}
method & aBoolean
{
^aBoolean
}
method | aBoolean
{
^true
}
method and: aBlock
{
^aBlock value
}
method or: aBlock
{
^true
}
method ifTrue: trueBlock ifFalse: falseBlock
{
^trueBlock value.
}
method ifTrue: trueBlock
{
^trueBlock value.
}
method ifFalse: falseBlock
{
^nil.
}
}
class(#final, #limited) False(Boolean)
{
method not
{
^true
}
method & aBoolean
{
^false
}
method | aBoolean
{
^aBoolean
}
method and: aBlock
{
^false
}
method or: aBlock
{
^aBlock value
}
method ifTrue: trueBlock ifFalse: falseBlock
{
^falseBlock value.
}
method ifTrue: trueBlock
{
^nil.
}
method ifFalse: falseBlock
{
^falseBlock value.
}
}