adding IAssociative to Domina events

I'm trying to make Domina events usable as maps so that they can be used with dispatch! just like maps.  (The use-case is that I might want to receive an event, modify it slightly, and then dispatch a new event based on the old one.)  I added the IAssociative protocol in the reify of create-listener-function and assoc now works.  The next step would be making them seq-able and, eventually, printable as maps.  Any guidance on the next two steps or the overall approach?
And your suggested change (with a slight tweak) works and tests pass.  (I
can't run the IE tests, but all the others pass.)

On Sun, Dec 14, 2014 at 12:40 PM, Nikola Chubrich <nchubrich@gmail.com>
wrote:
>
> Actually the new one is here:
>
> https://github.com/levand/domina/pull/74
>
> I closed the old pull request (which is over a year old at this point
> based on an old version of Domina) and did a fresh fork.  This doesn't have
> the project.clj problem.
>
> On Sun, Dec 14, 2014 at 12:34 PM, Nikola Chubrich <nchubrich@gmail.com>
> wrote:
>>
>> I just realized I pushed up the old commit (I have two different repos).
>> Why don't I close this pull request and start a new one (that was my
>> intention to begin with).  I'll try your change to IPrintWithWriter; I
>> think what happened is I wrote IPrintWithWriter first, before I had made it
>> seqable.
>>
>> On Sun, Dec 14, 2014 at 11:55 AM, Creighton Kirkendall <
>> notifications@github.com> wrote:
>>>
>>> In src/cljs/domina/events.cljs
>>> <https://github.com/levand/domina/pull/56#discussion-diff-21798682>:
>>>
>>> > @@ -44,7 +45,19 @@
>>> >               val
>>> >               (aget evt (name k))))
>>> >           (-lookup [o k not-found] (or (-lookup o k)
>>> > -                                      not-found))))
>>> > +                                      not-found))
>>> > +         ISeqable
>>> > +         (-seq [o]
>>> > +           (map #(vector % (gobj/get evt %)) (prim-seq (gobj/getKeys evt) 0)))
>>> > +         IPrintWithWriter
>>> > +         (-pr-writer [o writer opts]
>>> > +           (let [pr-pair (fn [keyval] (pr-sequential-writer writer pr-writer "" " " "" opts keyval))]
>>> > +             (pr-sequential-writer writer pr-pair "{" ", " "}" opts
>>> > +                                   (reify
>>> > +                                     ISeqable
>>> > +                                     (-seq [o]
>>> > +                                       (map #(vector % (gobj/get evt %)) (prim-seq (gobj/getKeys evt) 0))))
>>>
>>> Why is this reify here with the same -seq as o. This is the same as
>>> calling (seq o). Maybe something like:
>>>
>>> IPrintWithWriter
>>> (-pr-writer [o writer opts]
>>>   (-write writer "domina.event" (into {} (seq o))))
>>>
>>> —
>>> Reply to this email directly or view it on GitHub
>>> <https://github.com/levand/domina/pull/56/files#r21798682>.
>>>
>>