Ejemplo n.º 1
0
 private static void PopulizeTextToken(SkillConditionToken textToken, List <SkillConditionToken> result)
 {
     if (!string.IsNullOrEmpty(textToken.Value))
     {
         result.Add(textToken);
     }
 }
Ejemplo n.º 2
0
        private static bool ExpectToken(SkillConditionTokenType type, SkillConditionToken token)
        {
            if (token.Type != type)
            {
                UnityEngine.Debug.LogError("Expected Token: " + type);
                return(false);
            }

            return(true);
        }
Ejemplo n.º 3
0
        private static int?ReadNumber(SkillConditionToken token)
        {
            if (!ExpectToken(SkillConditionTokenType.TextOrNumber, token))
            {
                return(null);
            }

            int result = -1;

            if (int.TryParse(token.Value, out result))
            {
                return(result);
            }

            UnityEngine.Debug.LogError("Expected Token: Number");
            return(null);
        }
Ejemplo n.º 4
0
        public static List <SkillConditionToken> Tokenize(string unprocessedText)
        {
            var result    = new List <SkillConditionToken>();
            var textToken = new SkillConditionToken(SkillConditionTokenType.TextOrNumber);
            var text      = unprocessedText.Replace("\t", string.Empty).Replace(" ", string.Empty).Replace("\r", string.Empty).Replace("\n", string.Empty);

            for (int i = 0; i < text.Length; i++)
            {
                switch (text[i])
                {
                case '&':
                    PopulizeTextToken(textToken, result);
                    textToken = new SkillConditionToken(SkillConditionTokenType.TextOrNumber);

                    result.Add(new SkillConditionToken(SkillConditionTokenType.And, "&"));
                    break;

                case '|':
                    PopulizeTextToken(textToken, result);
                    textToken = new SkillConditionToken(SkillConditionTokenType.TextOrNumber);

                    result.Add(new SkillConditionToken(SkillConditionTokenType.Or, "|"));
                    break;

                case '[':
                    PopulizeTextToken(textToken, result);
                    textToken = new SkillConditionToken(SkillConditionTokenType.TextOrNumber);

                    result.Add(new SkillConditionToken(SkillConditionTokenType.SquareBracketOpen, "["));
                    break;

                case ']':
                    PopulizeTextToken(textToken, result);
                    textToken = new SkillConditionToken(SkillConditionTokenType.TextOrNumber);

                    result.Add(new SkillConditionToken(SkillConditionTokenType.SquareBracketClose, "["));
                    break;

                case '(':
                    PopulizeTextToken(textToken, result);
                    textToken = new SkillConditionToken(SkillConditionTokenType.TextOrNumber);

                    result.Add(new SkillConditionToken(SkillConditionTokenType.RoundBracketOpen, "("));
                    break;

                case ')':
                    PopulizeTextToken(textToken, result);
                    textToken = new SkillConditionToken(SkillConditionTokenType.TextOrNumber);

                    result.Add(new SkillConditionToken(SkillConditionTokenType.RoundBracketClose, ")"));
                    break;

                case ',':
                    PopulizeTextToken(textToken, result);
                    textToken = new SkillConditionToken(SkillConditionTokenType.TextOrNumber);

                    result.Add(new SkillConditionToken(SkillConditionTokenType.Comma, ","));
                    break;

                case ':':
                    PopulizeTextToken(textToken, result);
                    textToken = new SkillConditionToken(SkillConditionTokenType.TextOrNumber);

                    result.Add(new SkillConditionToken(SkillConditionTokenType.DoubleDot, ":"));
                    break;

                default:
                    textToken.Value += text[i];
                    break;
                }
            }

            PopulizeTextToken(textToken, result);
            return(result);
        }