steveklabnik / frappuccino

Functional Reactive Programming in Ruby.
https://github.com/steveklabnik/frappuccino
MIT License
354 stars 33 forks source link

Fix bugs with Stream derivative #on_value #7

Closed seadowg closed 11 years ago

seadowg commented 11 years ago

The Map and Select Streams were not respecting the change from an @on_value callback to a @callbacks list (my bad). I've moved this logic (as well as the duplicated Observable calls) into a protected #occur method on Stream to make extending Streams cleaner. I've also added some test cases that drove the changes out.

steveklabnik commented 11 years ago

Hey @seadowg !

(my bad).

It's actually my bad! I merged your PR, then forgot to update my local copy, and then said "Oh, I need to rebase" and didn't even think about it.

While on the plane the other day, (I started writing this gem in France, now I'm back in LA...) I noticed these issues and fixed some of them, so now this doesn't merge. You have some other good stuff in here, though, so would you mind rebasing for me? Sorry about that :/

seadowg commented 11 years ago

Haha no problem. Rebase went mostly smoothly (diverged from my origin at one point so annoyingly have one merge commit in there). Is it going to merge in now?

steveklabnik commented 11 years ago

It is, but I hate merge commits, so I'm going to fool around with it on the command line real quick.

steveklabnik commented 11 years ago

Okay, I ended up just cherry-picking https://github.com/seadowg/frappuccino-1/commit/1190f8e98018c831b74d258f4bcbd83cb10ae7d8 and all is well. :)

seadowg commented 11 years ago

Awesome. I'm gonna give my fork a clean up causeI think I derped on the rebase somewhat.

steveklabnik commented 11 years ago

It's all good. :)

One thing I've been thinking about: I'd like to cover all of Enumerable, but i think since it's all pull and not push, we'll have to re-implement all of ourselves. Bummer.

seadowg commented 11 years ago

Yeah that's definitely going to be cool. There are a few that we'd have to skip due to Events being infinite streams (such as #max, #to_a etc). Also anything that reorders the Stream isn't going to work (like #sort) because it breaks the semantics of the 'time ordering'.

steveklabnik commented 11 years ago

Right.