on master help sign in
cosmetic: clean up record functions
commitc2b4782d7901991df8accbfd78cee14d84d094a4 authorEvan Czaplicki <info@elm-lang.org> dateSun 17 Aug 2014, 18:54 (12 years ago) parent7bc4690
1 file changed+31−23
libraries/Native/Utils.js+31−23
libraries/Native/Utils.js+31−23
@@ -123,38 +123,46 @@ Elm.Native.Utils.make = function(elm) {
123123 var count = 0;
124124 function guid(_) { return count++ }
125125
126− function copy(r) {
127− var o = {};
128− for (var i in r) { o[i] = r[i]; }
129− return o;
126+ function copy(oldRecord) {
127+ var newRecord = {};
128+ for (var key in oldRecord) {
129+ newRecord[key] = oldRecord[key];
130+ }
131+ return newRecord;
130132 }
131133
132− function remove(x,r) {
133− var o = copy(r);
134− if (x in o._) {
135− o[x] = o._[x][0];
136− o._[x] = o._[x].slice(1);
137− if (o._[x].length === 0) { delete o._[x]; }
134+ function remove(key, oldRecord) {
135+ var record = copy(oldRecord);
136+ if (key in record._) {
137+ record[key] = record._[key][0];
138+ record._[key] = record._[key].slice(1);
139+ if (record._[key].length === 0) {
140+ delete record._[key];
141+ }
138142 } else {
139− delete o[x];
143+ delete record[key];
140144 }
141− return o;
145+ return record;
142146 }
143147
144− function replace(kvs,r) {
145− var o = copy(r);
146− for (var i = kvs.length; i--; ) {
147− var kvsi = kvs[i];
148− o[kvsi[0]] = kvsi[1];
148+ function replace(keyValuePairs, oldRecord) {
149+ var record = copy(oldRecord);
150+ for (var i = keyValuePairs.length; i--; ) {
151+ var pair = keyValuePairs[i];
152+ record[pair[0]] = pair[1];
149153 }
150− return o;
154+ return record;
151155 }
152156
153− function insert(x,v,r) {
154− var o = copy(r);
155− if (x in o) o._[x] = [o[x]].concat(x in o._ ? o._[x].slice(0) : []);
156− o[x] = v;
157− return o;
157+ function insert(key, value, oldRecord) {
158+ var newRecord = copy(oldRecord);
159+ if (key in newRecord) {
160+ var values = newRecord._[key];
161+ var copiedValues = values ? values.slice(0) : [];
162+ newRecord._[key] = [newRecord[key]].concat(copiedValues);
163+ }
164+ newRecord[key] = value;
165+ return newRecord;
158166 }
159167
160168 function max(a,b) { return a > b ? a : b }