コード例 #1
0
ファイル: SpellWord.cs プロジェクト: mshmelev/SpellChecker
        /// <summary>
        /// 
        /// </summary>
        /// <param name="rule"></param>
        /// <returns></returns>
        public bool CanApplyRule(AffixRule rule)
        {
            int n = AffixRules.Length;
            char checkingRuleName= rule.Name;
            for (int i = 0; i < n; ++i)
            {
                if (AffixRules[i].Name == checkingRuleName)
                    return true;
            }

            return false;
        }
コード例 #2
0
        /// <summary>
        /// Informs whether the newRule can be combined with appliedRule (to a word).
        /// </summary>
        /// <param name="newRule"></param>
        /// <param name="appliedRule"></param>
        /// <returns></returns>
        private bool CanCombineRules(AffixRule newRule, AffixRule appliedRule)
        {
            if (newRule == null || appliedRule == null)
                return true;

            // Only 1 rule of each type (SuffixRule of PrefixRule) can be combined.
            if (newRule is SuffixRule && appliedRule is SuffixRule)
                return false;
            if (newRule is PrefixRule && appliedRule is PrefixRule)
                return false;

            // SuffixRule and PrefixRule can be comined if they are both combinable (CanCombine= true).
            if (newRule.CanCombine && appliedRule.CanCombine)
                return true;

            return false;
        }