| define([
  'jquery'
], function ($) {
  function oldMatcher (matcher) {
    function wrappedMatcher (params, data) {
      var match = $.extend(true, {}, data);
      if (params.term == null || $.trim(params.term) === '') {
        return match;
      }
      if (data.children) {
        for (var c = data.children.length - 1; c >= 0; c--) {
          var child = data.children[c];
          // Check if the child object matches
          // The old matcher returned a boolean true or false
          var doesMatch = matcher(params.term, child.text, child);
          // If the child didn't match, pop it off
          if (!doesMatch) {
            match.children.splice(c, 1);
          }
        }
        if (match.children.length > 0) {
          return match;
        }
      }
      if (matcher(params.term, data.text, data)) {
        return match;
      }
      return null;
    }
    return wrappedMatcher;
  }
  return oldMatcher;
});
 |