Ejemplo n.º 1
0
        ///// ------------------------------------------------------------------------------------
        ///// <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);
        }
Ejemplo n.º 2
0
        /// ------------------------------------------------------------------------------------
        /// <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);
        }