//  StringExtensions.cs
//
//  GNOME Do is the legal property of its developers.
//  Please refer to the COPYRIGHT file distributed with this
//  source distribution.
//
//  This program is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//
//  You should have received a copy of the GNU General Public License
//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
//

using System;
using System.Linq;
using System.Collections.Generic;

namespace RemindMe
{
	
	public static class StringExtensions
	{
		
		//let's get cute and make playing with these strings more fun
		public static bool ContainsAny (this string str, IEnumerable<string> items)
		{
			foreach (string item in items) {
				if (str.Contains (item))
				    return true;
			}
			return false;
		}
		
		public static IEnumerable<string> Matches (this string str, IEnumerable<string> items)
		{
			foreach (string item in items) {
				if (str.Contains (item))
					yield return item;
			}
			yield break;
		}
		
		public static int LastIndexOfAny (this string str, IEnumerable<string> items, out string match)
		{
			int index = -1;
			match = "";
			
			foreach (string item in items) {
				if (str.Contains (item)) {
					if (str.LastIndexOf (item) > index) {
						index = str.LastIndexOf (item);
						match = item;
					}
				}
			}
			return index;
		}
		
		public static int LastIndexOfAny (this string str, IEnumerable<string> items)
		{
			string match;
			return str.LastIndexOfAny (items, out match);
		}
	}
}
