@@ -207,84 +207,6 @@ Elm.Native.Utils.make = function(elm) {
207207 return Tuple2(posx, posy);
208208 }
209209
210− function portCheck(moduleName, ports) {
211− var expected = {};
212− for (var i = ports.length; i--; ) {
213− expected[ports[i]] = 1;
214− }
215− for (var key in elm.ports_in) {
216− expected[key] = expected[key] || 0;
217− expected[key] -= 1;
218− }
219− var missing = [];
220− var extra = [];
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);
225− }
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(', '));
230− }
231− if (extra.length > 0) {
232− throw new Error(
233− "Initialization Error: module " + moduleName +
234− " has been given ports that do not exist: " + extra.join(', '));
235− }
236− }
237−
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(); }
243−
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];
249− }
250− return [elmValue];
251− }
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);
258− }
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)
264− } else {
265− elm.notify(signal.id, result[0]);
266− }
267− });
268− return signal;
269− }
270− function portOut(name, signal) {
271− var subscribers = []
272− function subscribe(handler) {
273− subscribers.push(handler);
274− }
275− function unsubscribe(handler) {
276− subscribers.pop(subscribers.indexOf(handler));
277− }
278− Signal.lift(function(value) {
279− var len = subscribers.length;
280− for (var i = 0; i < len; ++i) {
281− subscribers[i](value);
282− }
283− }, signal);
284− elm.ports_out[name] = { subscribe:subscribe, unsubscribe:unsubscribe };
285− return signal;
286− }
287−
288210 return elm.Native.Utils.values = {
289211 eq:eq,
290212 cmp:cmp,
@@ -304,9 +226,6 @@ Elm.Native.Utils.make = function(elm) {
304226 mod : F2(mod),
305227 htmlHeight: F2(htmlHeight),
306228 getXY: getXY,
307− toFloat: function(x) { return +x; },
308− portCheck: portCheck,
309− portOut: portOut,
310− portIn: portIn
229+ toFloat: function(x) { return +x; }
311230 };
312231};