Author: jbeard Date: Mon Aug 16 05:42:28 2010 New Revision: 985795 URL: http://svn.apache.org/viewvc?rev=985795&view=rev Log: Previous change made generated code use Array.filter method, which broke IE. Added new compatibility code. All ahead-of-time, in-browser unit tests pass, as well as tests with rhino.
Modified: commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/SCXMLCompiler.js commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/main.js commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractStatechartGenerator.xsl Modified: commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/SCXMLCompiler.js URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/SCXMLCompiler.js?rev=985795&r1=985794&r2=985795&view=diff ============================================================================== --- commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/SCXMLCompiler.js (original) +++ commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/SCXMLCompiler.js Mon Aug 16 05:42:28 2010 @@ -51,7 +51,7 @@ require.def("src/javascript/scxml/cgf/SC if(!options.inFiles) return false; if(options.ie){ - options.noMap = options.noForEach = options.noIndexOf = options.noSome = true; + options.noMap = options.noForEach = options.noIndexOf = options.noSome = options.noFilter = true; } var backendModuleToImport = Modified: commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/main.js URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/main.js?rev=985795&r1=985794&r2=985795&view=diff ============================================================================== --- commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/main.js (original) +++ commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/main.js Mon Aug 16 05:42:28 2010 @@ -48,6 +48,7 @@ require.def("src/javascript/scxml/cgf/ma noForEach : true, noIndexOf : true, noMap : true, + noFilter : true, beautify : true, log : true, verbose : true, Modified: commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractStatechartGenerator.xsl URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractStatechartGenerator.xsl?rev=985795&r1=985794&r2=985795&view=diff ============================================================================== --- commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractStatechartGenerator.xsl (original) +++ commons/sandbox/gsoc/2010/scxml-js/trunk/src/xslt/backends/js/AbstractStatechartGenerator.xsl Mon Aug 16 05:42:28 2010 @@ -27,6 +27,7 @@ <param name="noMap" select="false()"/> <param name="noForEach" select="false()"/> <param name="noSome" select="false()"/> + <param name="noFilter" select="false()"/> <!-- these variables get overridden by subclasses --> <variable name="enumeratedEventDispatchInvocation"/> @@ -98,6 +99,10 @@ <call-template name="genNoSomeArrayPrototypeExtension"/> </if> + <if test="$noFilter"> + <call-template name="genNoFilterArrayPrototypeExtension"/> + </if> + function <value-of select="@name"/>StatechartExecutionContext(){ var self = this; //used in the rare occasions we call public functions from inside this class @@ -979,6 +984,18 @@ } </template> + <template name="genNoFilterArrayPrototypeExtension"> + if(!Array.filter){ + Array.prototype.filter = function(fn){ + var toReturn = []; + for(var i=0; i < this.length; i++){ + if(fn(this[i])) toReturn.push(this[i]); + } + return toReturn; + } + } + </template> + <variable name="genInPredicateFunction"> function In(state){ state = typeof state == "string" ? self._states[state] : state;