I'd like to contribute to the JSON project

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
37 messages Options
12
Reply | Threaded
Open this post in threaded view
|

I'd like to contribute to the JSON project

Christoph Thiede

Hi all,


I'd like to contribute to the JSON project, but apparently I lack the required access rights. Would it be possible to review this patch, which adds UTF-16 support for JSON strings, with the final goal to introduce it into the repository? :-)


Best,

Christoph




JSON-ct.40.mcz (21K) Download Attachment
Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

Christoph Thiede

Here is a second small but, as I hope, useful patch.


Name: JSON-ct.41
Author: ct
Time: 5 September 2020, 10:04:48.328336 pm
UUID: 15667ebd-25e5-2f45-a758-7ab8df09a3e1
Ancestors: JSON-ct.40

Implements #respondsTo: on JsonObject.

Usage:
| anObject |
anObject := Json readFrom: '{"foo": 42}' readStream.
(anObject respondsTo: #foo)
ifTrue: [anObject foo]
ifFalse: ["fallback code"].

This is especially helpful when using JsonObjects anywhere in the system as polymorphic substitution for other classes.

Have a nice weekend!
Best,
Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Thiede, Christoph
Gesendet: Samstag, 5. September 2020 21:59 Uhr
An: Squeak Dev; Tony Garnock-Jones; Niephaus, Fabio
Betreff: [squeak-dev] I'd like to contribute to the JSON project
 

Hi all,


I'd like to contribute to the JSON project, but apparently I lack the required access rights. Would it be possible to review this patch, which adds UTF-16 support for JSON strings, with the final goal to introduce it into the repository? :-)


Name: JSON-ct.40
Author: ct
Time: 5 September 2020, 9:48:49.742336 pm
UUID: 85bcdb2a-a65e-b14f-90a6-eb6ad8f82eba
Ancestors: JSON-tonyg.39

Adds support and tests for UTF16 unicode strings.

Unicode sequences should not be parsed as two separate characters but rather as a single one with 4 bytes. For more information, see https://tools.ietf.org/id/draft-ietf-json-rfc4627bis-09.html#rfc.section.7.


Best,

Christoph




JSON-ct.41.mcz (22K) Download Attachment
Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

Levente Uzonyi
In reply to this post by Christoph Thiede
Hi Christoph,

Your code looks correct to me, though it's a bit too slow for my taste.
I've fixed it in my fork of JSON[1] as well.

Levente
[1] http://squeaksource.com/PostgresV3/JSON-ul.55.mcz

On Sat, 5 Sep 2020, Thiede, Christoph wrote:

>
> Hi all,
>
>
> I'd like to contribute to the JSON project, but apparently I lack the required access rights. Would it be possible to review this patch, which adds UTF-16 support for JSON strings, with the final goal to introduce it into the
> repository? :-)
>
>
> Best,
>
> Christoph
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

Christoph Thiede

Hi Levente,


is there no active development happening on http://www.squeaksource.com/JSON any longer? Is your fork specialized for optimized code? I was rather trying to reuse existing functionality such as #nextHexDigit. Just for interest, how much faster did you get the code by optimizing my changes? ;-)


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Levente Uzonyi <[hidden email]>
Gesendet: Sonntag, 6. September 2020 02:13:56
An: The general-purpose Squeak developers list
Cc: Niephaus, Fabio
Betreff: Re: [squeak-dev] I'd like to contribute to the JSON project
 
Hi Christoph,

Your code looks correct to me, though it's a bit too slow for my taste.
I've fixed it in my fork of JSON[1] as well.

Levente
[1] http://squeaksource.com/PostgresV3/JSON-ul.55.mcz

On Sat, 5 Sep 2020, Thiede, Christoph wrote:

>
> Hi all,
>
>
> I'd like to contribute to the JSON project, but apparently I lack the required access rights. Would it be possible to review this patch, which adds UTF-16 support for JSON strings, with the final goal to introduce it into the
> repository? :-)
>
>
> Best,
>
> Christoph
>
>
>


Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

Tobias Pape
Hi

Tony could add you ..

Best regards
        -Tobias

> On 08.09.2020, at 10:42, Thiede, Christoph <[hidden email]> wrote:
>
> Hi Levente,
>
> is there no active development happening on http://www.squeaksource.com/JSON any longer? Is your fork specialized for optimized code? I was rather trying to reuse existing functionality such as #nextHexDigit. Just for interest, how much faster did you get the code by optimizing my changes? ;-)
>
> Best,
> Christoph
> Von: Squeak-dev <[hidden email]> im Auftrag von Levente Uzonyi <[hidden email]>
> Gesendet: Sonntag, 6. September 2020 02:13:56
> An: The general-purpose Squeak developers list
> Cc: Niephaus, Fabio
> Betreff: Re: [squeak-dev] I'd like to contribute to the JSON project
>  
> Hi Christoph,
>
> Your code looks correct to me, though it's a bit too slow for my taste.
> I've fixed it in my fork of JSON[1] as well.
>
> Levente
> [1] http://squeaksource.com/PostgresV3/JSON-ul.55.mcz
>
> On Sat, 5 Sep 2020, Thiede, Christoph wrote:
>
> >
> > Hi all,
> >
> >
> > I'd like to contribute to the JSON project, but apparently I lack the required access rights. Would it be possible to review this patch, which adds UTF-16 support for JSON strings, with the final goal to introduce it into the
> > repository? :-)
> >
> >
> > Best,
> >
> > Christoph
> >
> >
> >



Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

timrowledge


> On 2020-09-08, at 9:30 AM, Tobias Pape <[hidden email]> wrote:
>
> Hi
>
> Tony could add you ..

For a fairly widely used facility like this it would be nice to gather all the best bits into one well maintained place. I use the 'raw' version with my Weatherstation and Levente's version in the postgres package for a work thing... nice to have just one.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
All new: The software is not compatible with previous versions.



Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

Christoph Thiede

Without wanting to step on anyone's toes, +1 for centralizing packages like this. If Levente hadn't explained in his email that his repository is a fork, I would not even have known which version to develop against. Such things are confusing and impede open source contributions.


Are you talking about integrating it into the Trunk or would this be another step?


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von tim Rowledge <[hidden email]>
Gesendet: Dienstag, 8. September 2020 21:00:03
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] I'd like to contribute to the JSON project
 


> On 2020-09-08, at 9:30 AM, Tobias Pape <[hidden email]> wrote:
>
> Hi
>
> Tony could add you ..

For a fairly widely used facility like this it would be nice to gather all the best bits into one well maintained place. I use the 'raw' version with my Weatherstation and Levente's version in the postgres package for a work thing... nice to have just one.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
All new: The software is not compatible with previous versions.





Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

Levente Uzonyi
In reply to this post by Christoph Thiede
Hi Christoph,

On Tue, 8 Sep 2020, Thiede, Christoph wrote:

>
> Hi Levente,
>
>
> is there no active development happening on http://www.squeaksource.com/JSON any longer?

Last commit is from 2016. I wanted to have our changes added to the main
repository[1].

> Is your fork specialized for optimized code?

It has got performance improvements and new features as well. There are
quite a few changes, so I suggest you go through the MC history if you
want to know what has been changed.

>I was rather trying to reuse existing functionality such as #nextHexDigit. Just for
> interest, how much faster did you get the code by optimizing my changes? ;-)

I haven't measured it. The parser has been rewritten, so the code is quite
different. But I expect my version to be at least a magnitude faster.


Levente

[1] http://forum.world.st/Another-version-of-JSON-in-the-Inbox-td5066614.html

>
>
> Best,
>
> Christoph
>
> _________________________________________________________________________________________________________________________________________________________________________________________________________________________________
> Von: Squeak-dev <[hidden email]> im Auftrag von Levente Uzonyi <[hidden email]>
> Gesendet: Sonntag, 6. September 2020 02:13:56
> An: The general-purpose Squeak developers list
> Cc: Niephaus, Fabio
> Betreff: Re: [squeak-dev] I'd like to contribute to the JSON project  
> Hi Christoph,
>
> Your code looks correct to me, though it's a bit too slow for my taste.
> I've fixed it in my fork of JSON[1] as well.
>
> Levente
> [1] http://squeaksource.com/PostgresV3/JSON-ul.55.mcz
>
> On Sat, 5 Sep 2020, Thiede, Christoph wrote:
>
> >
> > Hi all,
> >
> >
> > I'd like to contribute to the JSON project, but apparently I lack the required access rights. Would it be possible to review this patch, which adds UTF-16 support for JSON strings, with the final goal to introduce it into
> the
> > repository? :-)
> >
> >
> > Best,
> >
> > Christoph
> >
> >
> >
>
>

Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

Christoph Thiede

Hi all, hi Levente,


I just wanted to send you a fix for parsing "\u2139\ufffd", but then I realized that you already had fixed this in the repository. So what, at least I understood my own error!


However, is there an option to subscribe to arbitrary packages (such as the JSON package) in order to get notified via email about new changes to it? :-)


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Levente Uzonyi <[hidden email]>
Gesendet: Dienstag, 8. September 2020 22:22:10
An: The general-purpose Squeak developers list
Cc: Niephaus, Fabio
Betreff: Re: [squeak-dev] I'd like to contribute to the JSON project
 
Hi Christoph,

On Tue, 8 Sep 2020, Thiede, Christoph wrote:

>
> Hi Levente,
>
>
> is there no active development happening on http://www.squeaksource.com/JSON any longer?

Last commit is from 2016. I wanted to have our changes added to the main
repository[1].

> Is your fork specialized for optimized code?

It has got performance improvements and new features as well. There are
quite a few changes, so I suggest you go through the MC history if you
want to know what has been changed.

>I was rather trying to reuse existing functionality such as #nextHexDigit. Just for
> interest, how much faster did you get the code by optimizing my changes? ;-)

I haven't measured it. The parser has been rewritten, so the code is quite
different. But I expect my version to be at least a magnitude faster.


Levente

[1] http://forum.world.st/Another-version-of-JSON-in-the-Inbox-td5066614.html

>
>
> Best,
>
> Christoph
>
> _________________________________________________________________________________________________________________________________________________________________________________________________________________________________
> Von: Squeak-dev <[hidden email]> im Auftrag von Levente Uzonyi <[hidden email]>
> Gesendet: Sonntag, 6. September 2020 02:13:56
> An: The general-purpose Squeak developers list
> Cc: Niephaus, Fabio
> Betreff: Re: [squeak-dev] I'd like to contribute to the JSON project  
> Hi Christoph,
>
> Your code looks correct to me, though it's a bit too slow for my taste.
> I've fixed it in my fork of JSON[1] as well.
>
> Levente
> [1] http://squeaksource.com/PostgresV3/JSON-ul.55.mcz
>
> On Sat, 5 Sep 2020, Thiede, Christoph wrote:
>
> >
> > Hi all,
> >
> >
> > I'd like to contribute to the JSON project, but apparently I lack the required access rights. Would it be possible to review this patch, which adds UTF-16 support for JSON strings, with the final goal to introduce it into
> the
> > repository? :-)
> >
> >
> > Best,
> >
> > Christoph
> >
> >
> >
>
>


Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

Jakob Reschke
Am Di., 29. Sept. 2020 um 02:37 Uhr schrieb Thiede, Christoph
<[hidden email]>:
>
> However, is there an option to subscribe to arbitrary packages (such as the JSON package) in order to get notified via email about new changes to it? :-)
>

Lately I have seen a bot that automatically posts a pull request for
your npm package.json if a dependency has a new release...

Could have been https://github.com/renovatebot/renovate

Now there is probably nothing like "releases" going on in the JSON
package, but maybe a similar service can be achieved for Monticello or
Metacello configurations.


Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

Levente Uzonyi
In reply to this post by Christoph Thiede
Hi Christoph,

On Tue, 29 Sep 2020, Thiede, Christoph wrote:

>
> Hi all, hi Levente,
>
>
> I just wanted to send you a fix for parsing "\u2139\ufffd", but then I realized that you already had fixed this in the repository. So what, at least I understood my own error!

That's really weird because we even had a small discussion about it in
this thread:
http://forum.world.st/I-d-like-to-contribute-to-the-JSON-project-tp5121353p5121357.html

>
>
> However, is there an option to subscribe to arbitrary packages (such as the JSON package) in order to get notified via email about new changes to it? :-)

Email? I don't think so. RSS is probably the closest thing:
https://squeaksource.com/feed.rss


Levente

>
>
> Best,
>
> Christoph
>
> _________________________________________________________________________________________________________________________________________________________________________________________________________________________________
> Von: Squeak-dev <[hidden email]> im Auftrag von Levente Uzonyi <[hidden email]>
> Gesendet: Dienstag, 8. September 2020 22:22:10
> An: The general-purpose Squeak developers list
> Cc: Niephaus, Fabio
> Betreff: Re: [squeak-dev] I'd like to contribute to the JSON project  
> Hi Christoph,
>
> On Tue, 8 Sep 2020, Thiede, Christoph wrote:
>
> >
> > Hi Levente,
> >
> >
> > is there no active development happening on http://www.squeaksource.com/JSON any longer?
>
> Last commit is from 2016. I wanted to have our changes added to the main
> repository[1].
>
> > Is your fork specialized for optimized code?
>
> It has got performance improvements and new features as well. There are
> quite a few changes, so I suggest you go through the MC history if you
> want to know what has been changed.
>
> >I was rather trying to reuse existing functionality such as #nextHexDigit. Just for
> > interest, how much faster did you get the code by optimizing my changes? ;-)
>
> I haven't measured it. The parser has been rewritten, so the code is quite
> different. But I expect my version to be at least a magnitude faster.
>
>
> Levente
>
> [1] http://forum.world.st/Another-version-of-JSON-in-the-Inbox-td5066614.html
>
> >
> >
> > Best,
> >
> > Christoph
> >
> >________________________________________________________________________________________________________________________________________________________________________________________________________________________________
> _
> > Von: Squeak-dev <[hidden email]> im Auftrag von Levente Uzonyi <[hidden email]>
> > Gesendet: Sonntag, 6. September 2020 02:13:56
> > An: The general-purpose Squeak developers list
> > Cc: Niephaus, Fabio
> > Betreff: Re: [squeak-dev] I'd like to contribute to the JSON project  
> > Hi Christoph,
> >
> > Your code looks correct to me, though it's a bit too slow for my taste.
> > I've fixed it in my fork of JSON[1] as well.
> >
> > Levente
> > [1] http://squeaksource.com/PostgresV3/JSON-ul.55.mcz
> >
> > On Sat, 5 Sep 2020, Thiede, Christoph wrote:
> >
> > >
> > > Hi all,
> > >
> > >
> > > I'd like to contribute to the JSON project, but apparently I lack the required access rights. Would it be possible to review this patch, which adds UTF-16 support for JSON strings, with the final goal to introduce it into
> > the
> > > repository? :-)
> > >
> > >
> > > Best,
> > >
> > > Christoph
> > >
> > >
> > >
> >
> >
>
>

Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

Chris Muller-3
I forgot about this fork you did Levente, I should probably switch!  BUT, JSON is such crucial functionality these days, what do y'all think about integrating it into the base image?  I guess we have some basic functionality on WebUtils... looks pretty compact, is there more to JSON than that?
 
Email? I don't think so. RSS is probably the closest thing:
https://squeaksource.com/feed.rss


Actually, squeaksource does support email notifications (it's how we're getting trunk commit notifications), but only the admin can add/remove them -- I assume because it was intended for publishing to mailing lists, so we should find a way to improve that.  Still, in the meantime, an admin of the project could add your email, Christoph.  Then, it's just a matter of whether or not squeaksource.com instance of SqueakSource is hooked up to a mail server, or not..


Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

Christoph Thiede

Hi Levente, Hi Chris,


> That's really weird because we even had a small discussion about it in this thread:
> http://forum.world.st/I-d-like-to-contribute-to-the-JSON-project-tp5121353p5121357.html

Of course, I'm just replying to this thread, but I did not realize before that you did not only optimize but also fix my code :)


Email? I don't think so. RSS is probably the closest thing:

https://squeaksource.com/feed.rss


Ah! This looks promising! Can we have an RSS feed for every single repository? I cannot find the JSON repository in the linked feed.

BUT, JSON is such crucial functionality these days, what do y'all think about integrating it into the base image?

+1! This would also save you some work when writing Metacello baselines where at the moment, you have to specify the dependency manually ...

I guess we have some basic functionality on WebUtils... looks pretty compact, is there more to JSON than that?

Interesting, never heard of that before! JSON has some more features indeed, I guess. For example, it provides JsonObject, a subclass of Dictionary that implements dynamic forwarding to its property. I find this extremely handy when writing or prototyping REST applications because you can use these objects polymorphic with a custom class instance! Also, WebUtils do not support some special JSON constructs such as certain string escapes such as \f or UTF-16 char codes (see the start of this thread).

Still, in the meantime, an admin of the project could add your email, Christoph.  Then, it's just a matter of whether or not squeaksource.com instance of SqueakSource is hooked up to a mail server, or not..

No need for special treatment :) It would be great to subscribe to emails for every single project, but how expensive would that be? RSS sounds easier to me (as it's already implemented in some way), there are external services that can email you about RSS news. Where are the sources for it, is it SqueakSource, SqueakSource 2, or SqueakSource 3?

Best,
Christoph

Von: Squeak-dev <[hidden email]> im Auftrag von Chris Muller <[hidden email]>
Gesendet: Mittwoch, 30. September 2020 00:25:17
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] I'd like to contribute to the JSON project
 
I forgot about this fork you did Levente, I should probably switch!  BUT, JSON is such crucial functionality these days, what do y'all think about integrating it into the base image?  I guess we have some basic functionality on WebUtils... looks pretty compact, is there more to JSON than that?
 
Email? I don't think so. RSS is probably the closest thing:
https://squeaksource.com/feed.rss


Actually, squeaksource does support email notifications (it's how we're getting trunk commit notifications), but only the admin can add/remove them -- I assume because it was intended for publishing to mailing lists, so we should find a way to improve that.  Still, in the meantime, an admin of the project could add your email, Christoph.  Then, it's just a matter of whether or not squeaksource.com instance of SqueakSource is hooked up to a mail server, or not..


Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

Christoph Thiede
In reply to this post by Christoph Thiede
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. :-)

Best,
Christoph



--
Sent from: http://forum.world.st/Squeak-Dev-f45488.html

Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

Levente Uzonyi
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

Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

marcel.taeumel
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.

I did not know about #dictionaryClass:. That's a powerful hook.

Best,
Marcel

Am 09.11.2020 03:07:54 schrieb Levente Uzonyi <[hidden email]>:

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



Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

Christoph Thiede

+1 for answering true for every simple setter selector as an addition for the implementation I proposed earlier. Sorry I forgot the setters!


For the purpose, I like to make much use of JsonObjects instead of first-class object instances in some scenarios, especially at the beginning of a project when it's an easy hack to mock not-yet implemented classes, or when communicating with a RESTful API. Thanks to dynamic forwarding (see JsonObject >> #doesNotUnderstand:), I can use these JsonObjects interchangeably (polymorphically) with first-class object instances. However, it is a common practice to check whether an object responds to a message before actually sending it, i.e. to determine its type or capabilities dynamically, which is done via #respondsTo:. To strengthen the interchangeability of JsonObject with first-class object instances, I'd like to send #respondsTo: to JsonObjects in order to find out whether it "has" a certain property, for instance:


newOrder respondsTo: #deadline "Check whether the order is an order limited-in-time or whether not. newOrder might be a subinstance of the (abstract) class Order, or a JsonObject."


For more context, see also this thread: http://forum.world.st/Should-you-override-doesNotUnderstand-and-respondsTo-together-td5110969.html


So a better implementation of JsonObject >> #respondsTo: might be the following:


respondsTo: aSymbol

^ (super respondsTo: aSymbol)
or: [aSymbol isSimpleGetter and: [self includesKey: aSymbol]]
or: [aSymbol isSimpleSetter]

Provided that Json does not need to be compatible with older Squeak versions (the simple[GS]etter stuff is quite new). :-)


Best,

Christoph


Von: Squeak-dev <[hidden email]> im Auftrag von Taeumel, Marcel
Gesendet: Montag, 9. November 2020 08:04:20
An: squeak-dev
Betreff: Re: [squeak-dev] I'd like to contribute to the JSON project
 
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.

I did not know about #dictionaryClass:. That's a powerful hook.

Best,
Marcel

Am 09.11.2020 03:07:54 schrieb Levente Uzonyi <[hidden email]>:

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



Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

Levente Uzonyi
In reply to this post by marcel.taeumel
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 <[hidden email]>:
>
>       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
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

Christoph Thiede

But I doubt that's what Christoph would like to have.


That is right, I was assuming some kind of late-binding prototypical object model.


For instance, a similar model seems to be used for JavaScript objects:


> x = {}
{}
> x.foo
undefined
x.hasOwnProperty('foo')
false
> x.foo = 42
42
> x.foo
42
x.hasOwnProperty('foo')
true

However, I see your concerns, Levente ... My proposal would violate the contract "if and only if #respondsTo: returns true, sending the message will not cause a MNU", if there was any contract like. But do we need logical equivalency for such a contract or would simple causality ("if #respondsTo: returns true, then sending the message will not cause a MNU") suffice? Hm ...


Best,

Christoph



Von: Squeak-dev <[hidden email]> im Auftrag von Levente Uzonyi <[hidden email]>
Gesendet: Montag, 9. November 2020 15:17 Uhr
An: The general-purpose Squeak developers list
Betreff: Re: [squeak-dev] I'd like to contribute to the JSON project
 
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 <[hidden email]>:
>
>       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


>
>
>



Carpe Squeak!
Reply | Threaded
Open this post in threaded view
|

Re: I'd like to contribute to the JSON project

Eliot Miranda-2
In reply to this post by marcel.taeumel


On Sun, Nov 8, 2020 at 11:04 PM Marcel Taeumel <[hidden email]> 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.

And canUnderstand: ?  Or is that being too picky?


I did not know about #dictionaryClass:. That's a powerful hook.

Best,
Marcel

Am 09.11.2020 03:07:54 schrieb Levente Uzonyi <[hidden email]>:

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




--
_,,,^..^,,,_
best, Eliot


12