@@ -128,6 +128,7 @@ portChanges = (from, to, kind) ->
128
128
129
129
fromNames = Object .keys from
130
130
toNames = Object .keys to
131
+
131
132
for name, target of from
132
133
existsNow = name in toNames
133
134
if not existsNow
@@ -177,10 +178,10 @@ removeByPredicate = (array, predicate) ->
177
178
return removed
178
179
179
180
findRenamedExports = (changes , kind ) ->
180
- rewritten = clone changes
181
+ rewritten = changes
181
182
182
183
findTargets = (type ) ->
183
- c = changes .filter (c) -> c .type == type and kind == kind
184
+ c = changes .filter (c) -> c .type == type and c . kind == kind
184
185
t = c .map (c) -> return " #{ c .process } .#{ c .port } "
185
186
res =
186
187
changes : c
@@ -192,35 +193,36 @@ findRenamedExports = (changes, kind) ->
192
193
removed = findTargets ' exported-port-removed'
193
194
194
195
for target, targetIdx in removed .targets
195
- addedIdx = added .targets .find target
196
+ addedIdx = added .targets .indexOf target
196
197
if addedIdx != - 1
197
198
# both added and removed exported port, targeting the same node+port was -> a rename
198
199
a = added .changes [addedIdx]
199
- r = added .changes [removedIdx]
200
-
201
- console .log a, ' \n ' , r
200
+ r = removed .changes [targetIdx]
202
201
203
- if not connEquals (a .data .target , b .data .target )
202
+ if not connEquals (a .data .target , r .data .target )
204
203
throw new Error " Sanity check failed, rename match did not have same target"
205
204
206
205
# rewrite changes
207
206
rewritten = removeByPredicate rewritten, (item ) ->
208
207
exportedPort = (item .type == ' exported-port-added' or item .type == ' exported-port-removed' )
209
- targetEquals = connEquals a .data .target , item .target
208
+ targetEquals = connEquals a .data .target , item .data . target
210
209
return item .kind == kind and exportedPort and targetEquals
211
210
212
211
rewritten .push
213
212
type : ' exported-port-renamed'
214
213
kind : kind
215
- data :
216
- target : a .target
214
+ data : a .data
215
+ previous :
216
+ name : r .data .name
217
217
218
218
return rewritten
219
219
220
220
applyHeuristics = (changes ) ->
221
- withHeuristics = findRenamedExports changes
221
+ rewritten = clone changes
222
+ rewritten = findRenamedExports (rewritten, ' inport' )
223
+ rewritten = findRenamedExports (rewritten, ' outport' )
222
224
223
- return withHeuristics
225
+ return rewritten
224
226
225
227
# calculate a list of changes between @from and @to
226
228
calculateDiff = (from , to ) ->
@@ -243,7 +245,7 @@ calculateDiff = (from, to) ->
243
245
244
246
diff =
245
247
raw : changes
246
- changes : changes # FIXME: apply heuristics
248
+ changes : applyHeuristics changes
247
249
return diff
248
250
249
251
formatEdge = (e ) ->
@@ -272,6 +274,7 @@ formatChangeTextual = (change) ->
272
274
when ' exported-port-added' then " + #{ formatExport (change .kind , d .target , d .name )} "
273
275
when ' exported-port-removed' then " - #{ formatExport (change .kind , d .target , d .name )} "
274
276
when ' exported-port-target-changed' then " . #{ formatExport (change .kind , d .target , d .name )} was #{ formatExport (change .kind , old .target , d .name )} "
277
+ when ' exported-port-renamed' then " .rename #{ formatExport (change .kind , d .target , d .name )} was #{ formatExport (change .kind , d .target , old .name )} "
275
278
else
276
279
throw new Error " Cannot format unsupported change type: #{ change .type } "
277
280
0 commit comments