[squeak-dev] I'd like to contribute to the JSON project

Levente Uzonyi leves at caesar.elte.hu
Mon Nov 9 14:17:03 UTC 2020


Hi Marcel,

On Mon, 9 Nov 2020, Marcel Taeumel wrote:

> Hi Levente.
> Sounds right. If an object can answer to some extra messages via #doesNotUnderstand:, one should also override #respondsTo:. It is like #= and #hash.

In that case JsonObject >> #respondsTo: should return true for all unary 
and one-argument keyword selectors. But I doubt that's what Christoph 
would like to have.


Levente

> 
> I did not know about #dictionaryClass:. That's a powerful hook.
> 
> Best,
> Marcel
>
>       Am 09.11.2020 03:07:54 schrieb Levente Uzonyi <leves at caesar.elte.hu>:
>
>       Hi Christoph,
>
>       On Sun, 8 Nov 2020, Christoph Thiede wrote:
>
>       > Hi Levente,
>       >
>       > would you mind to merge JSON-ct.41 (#respondsTo:) as well? This would be
>       > great because I depend on this functionality in another project and
>       > currently require your JSON fork in my baseline. :-)
>
>       I cannot merge it because that would bring back long removed methods, and
>       MC wouldn't allow me to reject those.
>       But I can add the changes manually.
>       If I'm not mistaken, it's just a single method JsonObject >> #respondsTo:.
>
>       What is the purpose of that method?
>       I'm asking because it has got no comment, so I'm not sure its
>       implementation is correct.
>       For example, should
>
>       JsonObject new respondsTo: #foo:
>
>       return false?
>       What should the following return?
>
>       JsonObject new
>       foo: 1;
>       respondsTo: #foo:
>
>       Another question is whether it is generally useful or not?
>       If it's not, you can still have the desired behavior by creating a
>       subclass. E.g.:
>
>       JsonObject subclass: #PseudoObject
>       instanceVariableNames: ''
>       classVariableNames: ''
>       poolDictionaries: ''
>       category: 'PseudoObject'
> 
>
>       PseudoObject >> respondsTo: aSymbol
>
>       ^ (super respondsTo: aSymbol)
>       or: [self includesKey: aSymbol]
> 
>
>       (Json new
>       dictionaryClass: PseudoObject;
>       readFrom: '{"foo": 42}' readStream)
>       respondsTo: #foo
>       "==> true"
> 
>
>       Levente
>
>       >
>       > Best,
>       > Christoph
>       >
>       >
>       >
>       > --
>       > Sent from: http://forum.world.st/Squeak-Dev-f45488.html
> 
> 
>


More information about the Squeak-dev mailing list