angular.module('sharedModule')

.filter('highlight', function ($sce) {
    return function (str, termsToHighlight) {
        if (!str) {
            return str;
        }
        if (typeof termsToHighlight === 'string') {
            termsToHighlight = termsToHighlight.split(/\s+/);
        }
        // Sort terms by length
        termsToHighlight.sort(function (a, b) {
            return b.length - a.length;
        });
        // Regex to simultaneously replace terms
        var regex = new RegExp('(' + termsToHighlight.join('|') + ')', 'gi');
        return $sce.trustAsHtml(str.replace(regex, '<span class="highlight">$&</span>'));
    };
});
