diff --git a/lib/coffee-script/browser.js b/lib/coffee-script/browser.js index 9623cedd..3b51fee2 100644 --- a/lib/coffee-script/browser.js +++ b/lib/coffee-script/browser.js @@ -1,6 +1,7 @@ // Generated by CoffeeScript 1.5.0 (function() { - var CoffeeScript, runScripts; + var CoffeeScript, runScripts, + __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; CoffeeScript = require('./coffee-script'); @@ -29,8 +30,11 @@ return; } - CoffeeScript.load = function(url, callback) { + CoffeeScript.load = function(url, callback, options) { var xhr; + if (options == null) { + options = {}; + } xhr = window.ActiveXObject ? new window.ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest(); xhr.open('GET', url, true); if ('overrideMimeType' in xhr) { @@ -40,7 +44,7 @@ var _ref; if (xhr.readyState === 4) { if ((_ref = xhr.status) === 0 || _ref === 200) { - CoffeeScript.run(xhr.responseText); + CoffeeScript.run(xhr.responseText, options); } else { throw new Error("Could not load " + url); } @@ -53,14 +57,15 @@ }; runScripts = function() { - var coffees, execute, index, length, s, scripts; + var coffees, coffeetypes, execute, index, length, s, scripts; scripts = document.getElementsByTagName('script'); + coffeetypes = ['text/coffeescript', 'text/literate-coffeescript']; coffees = (function() { - var _i, _len, _results; + var _i, _len, _ref, _results; _results = []; for (_i = 0, _len = scripts.length; _i < _len; _i++) { s = scripts[_i]; - if (s.type === 'text/coffeescript') { + if (_ref = s.type, __indexOf.call(coffeetypes, _ref) >= 0) { _results.push(s); } } @@ -69,13 +74,17 @@ index = 0; length = coffees.length; (execute = function() { - var script; + var mediatype, options, script; script = coffees[index++]; - if ((script != null ? script.type : void 0) === 'text/coffeescript') { + mediatype = script != null ? script.type : void 0; + if (__indexOf.call(coffeetypes, mediatype) >= 0) { + options = { + literate: mediatype === 'text/literate-coffeescript' + }; if (script.src) { - return CoffeeScript.load(script.src, execute); + return CoffeeScript.load(script.src, execute, options); } else { - CoffeeScript.run(script.innerHTML); + CoffeeScript.run(script.innerHTML, options); return execute(); } } diff --git a/src/browser.coffee b/src/browser.coffee index 471d6e3e..da208d47 100644 --- a/src/browser.coffee +++ b/src/browser.coffee @@ -17,7 +17,7 @@ CoffeeScript.run = (code, options = {}) -> return unless window? # Load a remote script from the current domain via XHR. -CoffeeScript.load = (url, callback) -> +CoffeeScript.load = (url, callback, options = {}) -> xhr = if window.ActiveXObject new window.ActiveXObject('Microsoft.XMLHTTP') else @@ -27,7 +27,7 @@ CoffeeScript.load = (url, callback) -> xhr.onreadystatechange = -> if xhr.readyState is 4 if xhr.status in [0, 200] - CoffeeScript.run xhr.responseText + CoffeeScript.run xhr.responseText, options else throw new Error "Could not load #{url}" callback() if callback @@ -38,16 +38,19 @@ CoffeeScript.load = (url, callback) -> # This happens on page load. runScripts = -> scripts = document.getElementsByTagName 'script' - coffees = (s for s in scripts when s.type is 'text/coffeescript') + coffeetypes = ['text/coffeescript', 'text/literate-coffeescript'] + coffees = (s for s in scripts when s.type in coffeetypes) index = 0 length = coffees.length do execute = -> script = coffees[index++] - if script?.type is 'text/coffeescript' + mediatype = script?.type + if mediatype in coffeetypes + options = {literate: mediatype is 'text/literate-coffeescript'} if script.src - CoffeeScript.load script.src, execute + CoffeeScript.load script.src, execute, options else - CoffeeScript.run script.innerHTML + CoffeeScript.run script.innerHTML, options execute() null