Esempio n. 1
0
        protected override ArrayType ImplDeserializeEnumerable(
            IValueSequence serialization,
            IRepositorySerializationContext context)
        {
            Object             array         = null;
            Int32              arraySize     = 0;
            Int32              idx           = 0;
            String             itemStrValue  = null;
            ICollection        coll          = null;
            IList              list          = null;
            NumericStringValue numericString = null;

            if ((coll = serialization.Value as ICollection) != null)
            {
                arraySize = coll.Count;
            }

            IEnumerator enumerator = ImplDeserializeEnumerable(
                serialization.Value, context).GetEnumerator();

            if (enumerator == null)
            {
                return(default(ArrayType));
            }
            if (!enumerator.MoveNext())
            {
                return(default(ArrayType));
            }

            array = new ArrayItemType [arraySize];

            list = array as IList;

            do
            {
                try
                {
                    if ((numericString = enumerator.Current as NumericStringValue) != null)
                    {
                        list [idx++] = numericString.ToType(typeof(ArrayItemType), null);
                    }
                    else if (Type.GetTypeCode(typeof(ArrayItemType)) == TypeCode.DateTime &&
                             (itemStrValue = enumerator.Current as String) != null)
                    {
                        list [idx++] = DateTime.ParseExact(itemStrValue, "o", null);
                    }

                    else
                    {
                        list [idx++] = enumerator.Current;
                    }
                }
                catch   { break;; }
            }while (enumerator.MoveNext());

            return((ArrayType)array);
        } // End of ImplDeserializeEnumerable (...)
Esempio n. 2
0
        } // End of ImplIsString (...)

        protected virtual ArrayList ImplParseArray(
            out JsonScanner.TokenBase endToken,
            TextReader textReader)
        {
            endToken = JsonScanner.EofToken.Singleton;

            if (textReader == null)
            {
                return(null);
            }

            JsonScanner.NumericToken numericToken = null;
            ArrayList retVal = new ArrayList();

            //JsonScanner.StringToken     strToken      = null;
            JsonScanner.TokenBase token = null;
            Object value = null;
            IValueProvider <Object> valueProvider = null;

            do
            {
                token = JsonScanner.Singleton.ScanToken(textReader);

                if (token == JsonScanner.SquaredOpenToken.Singleton)
                {
                }
                else if (token == JsonScanner.CurlyOpenToken.Singleton)
                {
                    value = ImplParseUnit(out token, textReader);

                    if (token != JsonScanner.CurlyCloseToken.Singleton)
                    {
                        return(null);
                    }
                }
                else if ((numericToken = token as JsonScanner.NumericToken) != null)
                {
                    value = new NumericStringValue(numericToken.Value);
                }
                else if ((valueProvider = token as IValueProvider <Object>) != null)
                {
                    value = valueProvider.Value;
                }
                else
                {
                    return(null); // Unespected token
                }
                retVal.Add(value);

                token = JsonScanner.Singleton.ScanToken(textReader);
            }while (token == JsonScanner.CommaToken.Singleton);

            endToken = token;

            return(retVal);
        } // End of ImplParseArray (...)
Esempio n. 3
0
        } // End of ImplBoundValueAlign (...)

        private Boolean _BoundNumberAlign()
        {
            NumericStringValue numericString = Value as NumericStringValue;

            if (numericString == null)
            {
                return(false);
            }

            ValueBinder.BoundObjectValue = numericString.ToType(
                ValueBinder.BoundObjectValue.GetType(), null);

            return(true);
        } // End of ImplBoundValueAlign (...)
Esempio n. 4
0
        } // End of ImplParseArray (...)

        protected virtual IValueUnit ImplParseUnit(
            out JsonScanner.TokenBase endToken,
            TextReader textReader)
        {
            endToken = JsonScanner.EofToken.Singleton;

            if (textReader == null)
            {
                return(null);
            }

            JsonScanner.NumericToken numericToken = null;
            String key = null;

            JsonScanner.TokenBase token  = null;
            ValueUnit             retVal = new ValueUnit();

            JsonScanner.StringToken strToken = null;
            Object value = null;
            IValueProvider <Object> valueProvider = null;

            do
            {
                token = JsonScanner.Singleton.ScanToken(textReader);

                if ((strToken = token as JsonScanner.StringToken) == null)
                {
                    return(null); // Unespected token
                }
                else
                {
                    key = strToken.Value;
                }

                token = JsonScanner.Singleton.ScanToken(textReader);

                if (token != JsonScanner.ColonToken.Singleton)
                {
                    return(null); // Unespected token
                }
                token = JsonScanner.Singleton.ScanToken(textReader);

                if ((strToken = token as JsonScanner.StringToken) != null)
                {
                    value = strToken.Value;
                }
                else if (token == JsonScanner.SquaredOpenToken.Singleton)
                {
                    value = ImplParseArray(out token, textReader);

                    if (token == JsonScanner.SquaredCloseToken.Singleton)
                    {
                        value = new ValueSequence((IEnumerable)value);
                    }
                    else
                    {
                        return(null);
                    }
                }
                else if (token == JsonScanner.CurlyOpenToken.Singleton)
                {
                    value = ImplParseUnit(out token, textReader);

                    if (token != JsonScanner.CurlyCloseToken.Singleton)
                    {
                        return(null);
                    }
                }
                else if ((numericToken = token as JsonScanner.NumericToken) != null)
                {
                    value = new NumericStringValue(numericToken.Value);
                }
                else if ((valueProvider = token as IValueProvider <Object>) != null)
                {
                    value = valueProvider.Value;
                }
                else
                {
                    return(null); // Unespected token
                }
                retVal.Add(new ValueItem(key, value));

                token = JsonScanner.Singleton.ScanToken(textReader);
            }while (token == JsonScanner.CommaToken.Singleton);

            endToken = token;

            return(retVal);
        } // End of ImplParseUnit (...)