src/router3.js
function match_(newHash, parents, hashes) {
    parents.push(parents[hashes.length].parentElement.closest(selClass));
    hashes.push(parents[hashes.length].getAttribute('hash'));

    if (parents[hashes.length]) {
      return match_(newHash, parents, hashes);
    } else {
      return hashes.slice(0, hashes.length).reverse().join('/');
    }
  }
function match_(newHash, parents, hashes) {
    parents.push(parents[hashes.length].parentElement.closest(selClass));
    hashes.push(parents[hashes.length].getAttribute('hash'));

    if (parents[hashes.length]) {
      return match_(newHash, parents, hashes);
    } else {
      return hashes.slice(0, hashes.length).reverse().join('/');
    }
  }
function match_ ( newHash , parents , hashes ) { parents . push ( parents [ hashes . length ] . parentElement . closest ( selClass ) ) ; hashes . push ( parents [ hashes . length ] . getAttribute ( 'hash' ) ) ; if ( parents [ hashes . length ] ) { return match_ ( newHash , parents , hashes ) ; } else { return hashes . slice ( 0 , hashes . length ) . reverse ( ) . join ( '/' ) ; } }
Match to chain-hash

@param {String} newHash - The new hash to navigate
@param {Array} parents - The array of pushed parents
@param {Array} hashes - The array of pushed hashes
@private
Match to chain - hash