示例#1
0
文件: Segmenter.cs 项目: JRetza/cog
        private void ApplyModifiers(IEnumerable <Capture> modifiers, StringBuilder sb, FeatureStruct fs)
        {
            var modStrs = new List <string>();

            foreach (Capture modifier in modifiers)
            {
                string modStr  = modifier.Value;
                Symbol modInfo = _modifiers[modStr];
                if (modInfo.FeatureStruct != null && !modInfo.FeatureStruct.IsEmpty)
                {
                    if (modInfo.Overwrite)
                    {
                        fs.PriorityUnion(modInfo.FeatureStruct);
                    }
                    else
                    {
                        fs.Add(modInfo.FeatureStruct);
                    }

                    if (modStr.Length == 1 && IsStackingDiacritic(modStr[0]))
                    {
                        sb.Append(modStr);
                    }
                    else
                    {
                        modStrs.Add(modStr);
                    }
                }
            }
            modStrs.OrderBy(str => str).Aggregate(sb, (s, modStr) => s.Append(modStr));
        }
示例#2
0
文件: Segmenter.cs 项目: rmunn/cog
        private void ApplyModifiers(IEnumerable<Capture> modifiers, StringBuilder sb, FeatureStruct fs)
        {
            var modStrs = new List<string>();
            foreach (Capture modifier in modifiers)
            {
                string modStr = modifier.Value;
                Symbol modInfo = _modifiers[modStr];
                if (modInfo.FeatureStruct != null && !modInfo.FeatureStruct.IsEmpty)
                {
                    if (modInfo.Overwrite)
                        fs.PriorityUnion(modInfo.FeatureStruct);
                    else
                        fs.Add(modInfo.FeatureStruct);

                    if (modStr.Length == 1 && IsStackingDiacritic(modStr[0]))
                        sb.Append(modStr);
                    else
                        modStrs.Add(modStr);
                }
            }
            modStrs.OrderBy(str => str).Aggregate(sb, (s, modStr) => s.Append(modStr));
        }