No, that's not it. So I tried:
(def audio-context (js/AudioContext.))
(.decodeAudioData audio-context (js/ArrayBuffer. 256) #(println "ok" %)
#(println "error" %))
and it compiled to:
;var zv = new AudioContext;
zv.Rd(new ArrayBuffer(256), function(a) {
return fo.c(mh(["ok", a], 0));
}, function(a) {
return fo.c(mh(["error", a], 0));
});
This has really got me stumped.
Crispin
On Wednesday, January 28, 2015 at 6:23:29 PM UTC+8, Thomas Heller wrote:
>
> I just have a guess for you.
>
> AudioContext.decodeAudioData parameters are declared as ArrayBuffer,
> Function, Function but you are passing "data" which is a String not an
> ArrayBuffer. Maybe the type inference thinks you are calling a method that
> is not defined in the externs?
>
> Maybe it will work if you pass an ArrayBuffer? Other than that I see no
> reason why it would munge the name.
>
> /thomas
>
> On Wednesday, January 28, 2015 at 2:14:31 AM UTC+1, Crispin Wellington
> wrote:
>>
>> Hi there,
>>
>> I have been trying to compile some audio code in clojurescript in
>> advanced mode. I have setup the w3c_audio.js extern (from:
>> http://closureplease.com/externs/) into my extern list. When I compile,
>> it prevents the munging of "AudioContext" (without the extern, this is
>> being munged, so the extern is 'working'). But it doesn't prevent the
>> munging of methods on AudioContext object.
>>
>> A super minimal example (but not working code):
>>
>> (def audio-context (js/AudioContext.))
>> (.decodeAudioData audio-context "data" #(println "ok" %) #(println
>> "error" %))
>>
>> compiles with advanced to:
>>
>> ;var zv = new AudioContext;
>> zv.Rd("data", function(a) {
>> return fo.c(mh([a], 0));
>> }, function() {
>> return(0).call(null);
>> });
>>
>> zv.Rd is wrong. It should be zv.decodeAudioData.
>>
>> The externs file does indeed have this function prototype. here are the
>> excerpts:
>>
>> /**
>> * @constructor
>> */
>> var AudioContext = function() {};
>>
>> ....
>>
>> /**
>> * @param {ArrayBuffer} audioData
>> * @param {Function} successCallback
>> * @param {Function=} errorCallback
>> */
>> AudioContext.prototype.decodeAudioData = function(audioData,
>> successCallback,
>> errorCallback) {};
>>
>> Why would closure compiler protect the AudioContext name, but munge the
>> decodeAudioData name? What am I doing wrong?
>>
>> Regards
>>
>> Crispin Wellington
>>
>>
>>
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.