/* ------------------------------------------------------------------------ */ _.withTest (['Array', 'topomerge'], function () { $assert ( [['all','your', 'to','us'], [ 'your', 'belong', 'us'], [ 'base','belong','to' ], [ 'your','base' ]].topoMerge (), /* -------------------------------------- */ ['all','your','base','belong','to','us']) /* ------------------------------------------------------------------------ */ }, function () { $mixin (Array, { topoMerge () { var edges = [] for (var i = 0, ni = this.length; i < ni; i++) { var sequence = this[i] for (var j = 0, nj = sequence.length - 1; j < nj; j++) { edges.push ([ sequence[j ], sequence[j + 1]]) } } return edges.topoSort () } }) })