@@ -207,84 +207,6 @@ Elm.Native.Utils.make = function(elm) {
207 return Tuple2(posx, posy);
207 return Tuple2(posx, posy);
210− function portCheck(moduleName, ports) {
212− for (var i = ports.length; i--; ) {
213− expected[ports[i]] = 1;
215− for (var key in elm.ports_in) {
216− expected[key] = expected[key] || 0;
221− for (var key in expected) {
222− var result = expected[key];
223− if (result > 0) missing.push(key);
224− if (result < 0) extra.push(key);
226− if (missing.length > 0) {
227− throw new Error("Initialization Error: module " + moduleName +
228− " was not given inputs for the following ports: " +
229− missing.join(', '));
231− if (extra.length > 0) {
233− "Initialization Error: module " + moduleName +
234− " has been given ports that do not exist: " + extra.join(', '));
238− // On failure, return message. On success, return the value in an array.
239− // Wrapping in an array allows the programmer to pass in a null value.
240− function processInput(converter, v) {
241− try { var elmValue = converter(v); }
242− catch(e) { return "The given value caused a runtime error!\n" + e.toString(); }
244− var ctor = elmValue.ctor;
245− if (ctor === 'Nothing' || ctor === 'Left') {
246− return "The port's conversion function failed.";
247− } else if (ctor === 'Just' || ctor === 'Right') {
248− return [elmValue._0];
252− function portIn(name, converter) {
253− var port = elm.ports_in[name];
254− var result = processInput(converter, port.defaultValue);
255− if (typeof result === 'string') {
256− throw new Error("Initialization Error: The default value for port '" +
257− name + "' is invalid.\n" + result);
259− var signal = Signal.constant(result[0]);
260− port.subscribe(function(v) {
261− var result = processInput(converter, v);
262− if (typeof result === 'string') {
263− port.errorHandler(v)
265− elm.notify(signal.id, result[0]);
270− function portOut(name, signal) {
271− var subscribers = []
272− function subscribe(handler) {
273− subscribers.push(handler);
275− function unsubscribe(handler) {
276− subscribers.pop(subscribers.indexOf(handler));
278− Signal.lift(function(value) {
279− var len = subscribers.length;
280− for (var i = 0; i < len; ++i) {
281− subscribers[i](value);
284− elm.ports_out[name] = { subscribe:subscribe, unsubscribe:unsubscribe };
288 return elm.Native.Utils.values = {
210 return elm.Native.Utils.values = {
@@ -304,9 +226,6 @@ Elm.Native.Utils.make = function(elm) {
304 mod : F2(mod),
226 mod : F2(mod),
305 htmlHeight: F2(htmlHeight),
227 htmlHeight: F2(htmlHeight),
306 getXY: getXY,
228 getXY: getXY,
307− toFloat: function(x) { return +x; },
229+ toFloat: function(x) { return +x; }
308− portCheck: portCheck,