!7 cmodule AnalyzeWifiOut > DynPrintLog { transient new Set current; transient Set lastSet; transient S date = null; transient new L log; sclass Change { S date; Set newNetworks, disappearedNetworks; } start-thread { temp CloseableItIt it = linesFromFile(userDir("wifi.out")); for (S s : it) { if (startsWith(s, "BSS")) current.add(s); else if (nempty(s)) { wrapUp(); date = s; current = new Set; } } wrapUp(); printShortLog(); } void wrapUp { if (lastSet != null) { Set newNetworks = setMinusSet(current, lastSet); Set disappearedNetworks = setMinusSet(lastSet, current); if (nempty(newNetworks) || nempty(disappearedNetworks)) { log.add(nu Change(+date, +newNetworks, +disappearedNetworks)); print(date); for (S network : newNetworks) print("+" + network); for (S network : disappearedNetworks) print("-" + network); } } lastSet = current; } void printShortLog { print(); for (Change c : log) print(c.date + ":" + (empty(c.newNetworks) ? "" : " +" + l(c.newNetworks)) + (empty(c.disappearedNetworks) ? "" : " -" + l(c.disappearedNetworks))); } }