///// ------------------------------------------------------------------------------------ ///// <summary> ///// Gets a string of phones found in all the IPA character and IPA character run ///// members of all the pattern pieces (i.e. search item and before and after ///// environments). ///// </summary> ///// ------------------------------------------------------------------------------------ //public string[] GetPhonesInPattern() //{ // var bldrPhones = new StringBuilder(); // bldrPhones.Append(GetPhonesFromMember(SrchItemPatternGroup)); // bldrPhones.Append(GetPhonesFromMember(EnvBeforePatternGroup)); // bldrPhones.Append(GetPhonesFromMember(EnvAfterPatternGroup)); // return (bldrPhones.Length == 0 ? null : // App.Project.PhoneticParser.Parse(bldrPhones.ToString(), true, false)); //} ///// ------------------------------------------------------------------------------------ //public string[] GetPhonesInSearchItem() //{ // var bldrPhones = new StringBuilder(GetPhonesFromMember(SrchItemPatternGroup)); // return (bldrPhones.Length == 0 ? null : // App.Project.PhoneticParser.Parse(bldrPhones.ToString(), true, // ConvertPatternWithTranscriptionChanges)); //} ///// ------------------------------------------------------------------------------------ //public string[] GetPhonesInPrecedingEnv() //{ // var bldrPhones = new StringBuilder(GetPhonesFromMember(EnvBeforePatternGroup)); // return (bldrPhones.Length == 0 ? null : // App.Project.PhoneticParser.Parse(bldrPhones.ToString(), true, // ConvertPatternWithTranscriptionChanges)); //} /// ------------------------------------------------------------------------------------ //public string[] GetPhonesInFollowingEnv() //{ // var bldrPhones = new StringBuilder(GetPhonesFromMember(EnvAfterPatternGroup)); // return (bldrPhones.Length == 0 ? null : // App.Project.PhoneticParser.Parse(bldrPhones.ToString(), true, // ConvertPatternWithTranscriptionChanges)); //} ///// ------------------------------------------------------------------------------------ ///// <summary> ///// Gets an array of undefined phonetic characters found in all the IPA character and ///// IPA character run members of all the pattern pieces (i.e. search item and before ///// and after environments). ///// </summary> ///// ------------------------------------------------------------------------------------ //public char[] GetInvalidSymbolsInPattern() //{ // var undefinedChars = new List<char>(); // undefinedChars.AddRange(GetInvalidSymbolsInSearchItem()); // undefinedChars.AddRange(GetInvalidSymbolsInPrecedingEnv()); // undefinedChars.AddRange(GetInvalidSymbolsInFollowingEnv()); // return (undefinedChars.Count == 0 ? null : undefinedChars.ToArray()); //} ///// ------------------------------------------------------------------------------------ //public List<char> GetInvalidSymbolsInSearchItem() //{ // return GetInvalidCharsFromMember(SrchItemPatternGroup); //} ///// ------------------------------------------------------------------------------------ //public List<char> GetInvalidSymbolsInPrecedingEnv() //{ // return GetInvalidCharsFromMember(EnvBeforePatternGroup); //} ///// ------------------------------------------------------------------------------------ //public List<char> GetInvalidSymbolsInFollowingEnv() //{ // return GetInvalidCharsFromMember(EnvAfterPatternGroup); //} /// ------------------------------------------------------------------------------------ /// <summary> /// Gets a value indicating whether or not there is an invalid word boundary symbol /// found in the search pattern, and where it is. /// </summary> /// ------------------------------------------------------------------------------------ public WordBoundaryCondition GetWordBoundaryCondition() { string srchItemPattern = (SrchItemPatternGroup == null ? string.Empty : SrchItemPatternGroup.ToString()); if (srchItemPattern.StartsWith("#", StringComparison.Ordinal)) { return(WordBoundaryCondition.BeginningOfSearchItem); } return(srchItemPattern.EndsWith("#", StringComparison.Ordinal) ? WordBoundaryCondition.EndOfSearchItem : WordBoundaryCondition.NoCondition); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Searches a previously specified word or array of phonetic characters for a pattern /// match. /// </summary> /// ------------------------------------------------------------------------------------ public bool SearchWord(out int[] result) { result = new[] { -1, -1 }; if (m_phones == null) { return(false); } while (m_matchIndex < m_phones.Length) { result = new[] { -1, -1 }; // First, look for the search item. if (SrchItemPatternGroup == null || !SrchItemPatternGroup.Search(m_phones, m_matchIndex, out result)) { return(false); } // Save where the match was found. m_matchIndex = result[0]; // Now search before the match and after the match to // see if we match on the environment before and after. if (EnvBeforePatternGroup.Search(m_phones, m_matchIndex - 1)) { if (EnvAfterPatternGroup.Search(m_phones, m_matchIndex + result[1])) { m_matchIndex++; return(true); } } m_matchIndex++; } return(false); }