Ejemplo n.º 1
0
 public IParserType HandleCharacter(char character)
 {
     if (character == ']')
     {
         return((IParserType)GetParent());
     }
     else if (character == '#')
     {
         _isCommented = true;
     }
     else if (character == '\n')
     {
         _isCommented = false;
     }
     else if (character != ' ' && !_isCommented)
     {
         var val = new ParserValue();
         val.SetParent("", this);
         val.HandleCharacter(character);
         return(val);
     }
     return(this);
 }
Ejemplo n.º 2
0
        public IParserType HandleCharacter(char character)
        {
            switch (character)
            {
            case '}':
                return((IParserType)GetParent());

            case '{':
                var obj = new ParserObject();
                obj.SetParent(_key, this);
                _key = "";
                return(obj);

            case '[':
                var arr = new ParserArray();
                arr.SetParent(_key, this);
                _key = "";
                return(arr);

            case '=':
                _key   = _value;
                _value = "";
                break;

            case ' ':
                if (_isQuoted)
                {
                    _value += character;
                }
                break;

            case '"':
                _isQuoted = !_isQuoted;
                break;

            case '#':
                _isCommented = true;
                break;

            case '\n':
                _isCommented = false;
                break;

            default:
                if (!_isCommented)
                {
                    if (_key != "")
                    {
                        var val = new ParserValue();
                        val.SetParent(_key, this);
                        _key = "";
                        return(val.HandleCharacter(character));
                    }
                    else
                    {
                        _value += character;
                    }
                }
                break;
            }
            return(this);
        }