Using ActiveSupport::JSON in PrototypeHelper, ScriptaculousHelper

Hi all,

I was looking at this ticket:

http://dev.rubyonrails.org/ticket/6265

and it got me thinking: is there any reason we're not using the tasty
ActiveSupport::JSON encoder to assemble options for the various helper
methods in PrototypeHelper and ScriptaculousHelper?

At the moment, they use options_for_javascript() in JavaScriptHelper,
which is a half-hearted JSON generator that doesn't handle strings vs.
literals very well, let alone nested hashes, arrays, etc. The result is
a bunch of scattered JSON-generating code in the individual helper
methods (e.g. visual_effect()).

It would seem logical to make use of ActiveSupport::JSON instead, and
keep all that knowledge in one place. I've done a bit of experimenting,
and it does seem to make things neater.

The only problem I can think of is that options_for_javascript()
currently doesn't automatically add quotes around strings, whereas
AS::JSON does. So there's lots of code in the wild that adds the
single-quotes manually for certain options:

visual_effect(:highlight, "posts", :endcolor => "'#eeeeee'")

We'd probably have to work around this to maintain compatibility, which
might just make the code even more complicated than it is now. So maybe
this is a wild goose chase.

Thoughts?

Chris