Esempio n. 1
0
        private void ReadFormat04(string line)
        {
            string[] format = line.Split('=');
            if (AliasTypes.Contains(format[0]))
            {
                return;
            }
            if (format[0].Contains("C*") && format[1].Contains("%C%*") && format[1].Contains("|") && format[1].Contains("{") && format[1].Contains("}"))
            {
                string n = format[0];
                string f = format[1].Split('|')[0];
                string s = format[1].Split('|')[1];
                s = s.Substring(s.IndexOf('{') + 1, s.Length - s.IndexOf('}'));
                for (int i = 0; i < MULTICONSONANT_LIMIT; i++)
                {
                    var final_n = n.Replace("C*", String.Concat(Enumerable.Repeat("C", i + 1)));
                    var final_f = f.Replace("%C%*", string.Join(s, Enumerable.Repeat("%C%", i + 1)));

                    Format[final_n] = final_f;
                    AliasTypes.Add(final_n);
                }
            }
            else
            {
                Format[format[0]] = format[1];
                AliasTypes.Add(format[0]);
            }
        }
Esempio n. 2
0
        private string GetAliasedValue2(Entity entity, string AttributeName, AliasTypes AliasType = AliasTypes.String)
        {
            string Value = "";

            if (entity.Attributes.ContainsKey(AttributeName))
            {
                // AliasedValue Alias = entity.GetAttributeValue<AliasedValue>(AttributeName); //(AliasedValue) entity.Attributes[AttributeName];

                if (entity.Attributes.Contains(AttributeName))
                {
                    if (AliasType == AliasTypes.String)
                    {
                        Value = entity.Attributes[AttributeName].ToString();
                    }
                    else if (AliasType == AliasTypes.DateTime)
                    {
                        Value = ((DateTime)entity.Attributes[AttributeName]).ToString("yyyy-MM-dd");
                    }
                    else if (AliasType == AliasTypes.OptionSet)
                    {
                        Value = ((OptionSetValue)entity.Attributes[AttributeName]).Value.ToString();
                    }
                    else if (AliasType == AliasTypes.EntityReference)
                    {
                        Value = ((EntityReference)entity.Attributes[AttributeName]).Name.ToString();
                    }
                }
            }
            else
            {
                //Logger.LogException(new ArgumentNullException(), PriorityLevel.MEDIUM, AttributeName + " has no value", IOrganizationService);
            }

            return(Value);
        }
Esempio n. 3
0
 private void ReadFormat(string line)
 {
     string[] format = line.Split('=');
     if (AliasTypes.Contains(format[0]))
     {
         return;
     }
     Format[format[0]] = format[1];
     AliasTypes.Add(format[0]);
 }
        /// <summary>Registers specified types using Type.Name and Type.FullName as alias.</summary>
        /// <param name="types">A variable-length parameters list containing types to register.</param>
        /// <returns>An Fluent EvalContext.</returns>
        public EvalContext RegisterType(params Type[] types)
        {
            foreach (var type in types)
            {
                AliasTypes.AddOrUpdate(type.Name, type, (s, t) => type);
                AliasTypes.AddOrUpdate(type.FullName, type, (s, t) => type);
            }

            return(this);
        }
        /// <summary>Unregisters specified types using Type.Name and Type.FullName as alias.</summary>
        /// <param name="types">A variable-length parameters list containing types to unregister.</param>
        /// <returns>A Fluent EvalContext.</returns>
        public EvalContext UnregisterType(params Type[] types)
        {
            foreach (var type in types)
            {
                Type outType;

                AliasTypes.TryRemove(type.Name, out outType);
                AliasTypes.TryRemove(type.FullName, out outType);
            }
            return(this);
        }
        /// <summary>Unregisters all kind of alias (Extension Methods, Names, Static Members, Types and Values).</summary>
        /// <returns>An Fluent EvalContext.</returns>
        public EvalContext UnregisterAll()
        {
            AliasExtensionMethods.Clear();
            AliasGlobalConstants.Clear();
            AliasGlobalVariables.Clear();
            AliasNames.Clear();
            AliasStaticMembers.Clear();
            AliasTypes.Clear();

            return(this);
        }
        /// <summary>Unregisters member from specified types.</summary>
        /// <param name="members">A variable-length parameters list containing members.</param>
        /// <returns>An Fluent EvalContext.</returns>
        public EvalContext UnregisterMember(params MemberInfo[] members)
        {
            foreach (var member in members)
            {
                if (member.DeclaringType != null)
                {
                    if (AliasTypes.ContainsKey(member.DeclaringType.FullName))
                    {
                        UnregisterType(member.DeclaringType);
                        RegisterMember(member.DeclaringType);
                    }
                }

                ConcurrentDictionary <MemberInfo, byte> values;
                if (AliasMembers.TryGetValue(member.Name, out values))
                {
                    byte outByte;
                    values.TryRemove(member, out outByte);
                }
            }

            return(this);
        }
Esempio n. 8
0
        public void ReadAtlas()
        {
            string[] atlas = File.ReadAllLines(GetAtlasPath(), Encoding.UTF8);
            int      i     = 0;

            if (atlas[0] != "[MAIN]")
            {
                throw new Exception("Can't find main section");
            }
            ;
            i++;

            while (!atlas[i].StartsWith("["))
            {
                if (atlas[i].StartsWith("Version"))
                {
                    ReadVersion(atlas[i]);
                }
                if (atlas[i].StartsWith("Vowels"))
                {
                    ReadVowels(atlas[i]);
                }
                if (atlas[i].StartsWith("Consonants"))
                {
                    ReadConsonants(atlas[i]);
                }
                if (atlas[i].StartsWith("Rests"))
                {
                    ReadRest(atlas[i]);
                }
                if (atlas[i].StartsWith("ExampleWord"))
                {
                    ExampleWord = atlas[i].Substring("ExampleWord=".Length).Trim().ToLower();
                }
                i++;
            }

            if (Rests == null)
            {
                throw new Exception("Can't find Rests definition");
            }
            if (Consonants == null)
            {
                throw new Exception("Can't find Consonants definition");
            }
            if (Vowels == null)
            {
                throw new Exception("Can't find Vowels definition");
            }

            BuildPatterns();


            // Read02();
            if (Version == "0.3")
            {
                Read03(atlas, i);
            }
            else if (Version == "0.4")
            {
                Read04(atlas, i);
            }
            else
            {
                throw new Exception($"{VoicebankType} {Version}\n\nCurrent plugin version requests 0.3 or higher Atlas version.");
            }

            FormatRegex = new Dictionary <string, string>();
            foreach (var alias_type in AliasTypes)
            {
                string pattern = Format[alias_type].Replace("%V%", VowelPattern);
                pattern = pattern.Replace("%C%", ConsonantPattern);
                pattern = pattern.Replace("%R%", RestPattern);
                FormatRegex[alias_type] = pattern;
            }
            AliasTypes = AliasTypes.OrderBy(n => n.Length).ToList();
        }
Esempio n. 9
0
 public bool CanGenerateOnPosition(AliasType aliasType, int position)
 {
     return(AliasTypes.ContainsKey(aliasType) ? AliasTypes[aliasType].IsAllowedOnPosition(position) : false);
 }