SIL.FieldWorks.IText.ConcordanceControl.GetMatcher C# (CSharp) Method

GetMatcher() private method

private GetMatcher ( int ws ) : IMatcher
ws int
return IMatcher
		private IMatcher GetMatcher(int ws)
		{
			IMatcher matcher = null;

			SetupSearchPattern(ws);

			if (m_rbtnUseRegExp.Checked)
				matcher = new RegExpMatcher(m_vwPattern);
			else if (m_rbtnWholeItem.Checked)
			{
				// See whether we can use the MUCH more efficient ExactLiteralMatcher
				if (!m_vwPattern.UseRegularExpressions
					&& m_vwPattern.MatchDiacritics
					&& m_vwPattern.MatchOldWritingSystem
					&& m_vwPattern.Pattern.RunCount == 1)
				{
					string target = m_vwPattern.Pattern.Text;
					int nVar;
					int wsMatch = m_vwPattern.Pattern.get_Properties(0).GetIntPropValues((int) FwTextPropType.ktptWs,
																					out nVar);
					if (m_vwPattern.MatchCase)
						return new ExactLiteralMatcher(target, wsMatch);
					return new ExactCaseInsensitiveLiteralMatcher(target, wsMatch);
				}
				matcher = new ExactMatcher(m_vwPattern);
			}
			else if (m_rbtnAtEnd.Checked)
				matcher = new EndMatcher(m_vwPattern);
			else if (m_rbtnAtStart.Checked)
				matcher = new BeginMatcher(m_vwPattern);
			else
				matcher = new AnywhereMatcher(m_vwPattern);

			if (!matcher.IsValid())
			{
				if (matcher is RegExpMatcher)
					ShowRegExpMatcherError(matcher);
				else
					MessageBox.Show(this, matcher.ErrorMessage(), "Warning", MessageBoxButtons.OK, MessageBoxIcon.Error);
			}
			return matcher;
		}