Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="writer"></param>
        public override void WriteJson(JsonWriter writer)
        {
            using (new JsonObject(writer, RedmineKeys.USER))
            {
                writer.WriteProperty(RedmineKeys.LOGIN, Login);
                writer.WriteProperty(RedmineKeys.FIRST_NAME, FirstName);
                writer.WriteProperty(RedmineKeys.LAST_NAME, LastName);
                writer.WriteProperty(RedmineKeys.MAIL, Email);

                if (!string.IsNullOrEmpty(MailNotification))
                {
                    writer.WriteProperty(RedmineKeys.MAIL_NOTIFICATION, MailNotification);
                }

                if (!string.IsNullOrEmpty(Password))
                {
                    writer.WriteProperty(RedmineKeys.PASSWORD, Password);
                }

                if (AuthenticationModeId.HasValue)
                {
                    writer.WriteValueOrEmpty(RedmineKeys.AUTH_SOURCE_ID, AuthenticationModeId);
                }

                writer.WriteBoolean(RedmineKeys.MUST_CHANGE_PASSWORD, MustChangePassword);
                writer.WriteProperty(RedmineKeys.STATUS, ((int)Status).ToString(CultureInfo.InvariantCulture));

                if (CustomFields != null)
                {
                    writer.WriteArray(RedmineKeys.CUSTOM_FIELDS, CustomFields);
                }
            }
        }
Example #2
0
 protected override void ExportValue(ExportContext context, object value, JsonWriter writer)
 {
     Debug.Assert(context != null);
     Debug.Assert(value != null);
     Debug.Assert(writer != null);
     writer.WriteBoolean((bool)value);
 }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="writer"></param>
        public override void WriteJson(JsonWriter writer)
        {
            if (Values == null)
            {
                return;
            }

            var itemsCount = Values.Count;

            writer.WriteStartObject();
            writer.WriteProperty(RedmineKeys.ID, Id);
            writer.WriteProperty(RedmineKeys.NAME, Name);

            if (itemsCount > 1)
            {
                writer.WritePropertyName(RedmineKeys.VALUE);
                writer.WriteStartArray();
                foreach (var cfv in Values)
                {
                    writer.WriteValue(cfv.Info);
                }
                writer.WriteEndArray();

                writer.WriteBoolean(RedmineKeys.MULTIPLE, Multiple);
            }
            else
            {
                writer.WriteProperty(RedmineKeys.VALUE, itemsCount > 0 ? Values[0].Info : null);
            }

            writer.WriteEndObject();
        }
Example #4
0
        protected override void ExportValue(ExportContext context, object value, JsonWriter writer)
        {
            Debug.Assert(context != null);
            Debug.Assert(value != null);
            Debug.Assert(writer != null);

            writer.WriteBoolean((bool) value);
        }
Example #5
0
        private static void WriteDatum(JsonWriter writer, Spec.Datum datum)
        {
            switch (datum.type)
            {
            case Spec.Datum.DatumType.R_BOOL:
                writer.WriteBoolean(datum.r_bool);
                break;

            case Spec.Datum.DatumType.R_JSON:
                throw new NotSupportedException();

            case Spec.Datum.DatumType.R_NULL:
                writer.WriteNull();
                break;

            case Spec.Datum.DatumType.R_NUM:
                writer.WriteNumber(datum.r_num);
                break;

            case Spec.Datum.DatumType.R_STR:
                writer.WriteString(datum.r_str);
                break;

            case Spec.Datum.DatumType.R_ARRAY:
            {
                var newterm = new Term()
                {
                    type = Term.TermType.MAKE_ARRAY
                };
                newterm.args.AddRange(datum.r_array.Select(ap => new Term()
                    {
                        type  = Term.TermType.DATUM,
                        datum = ap,
                    }));
                WriteTerm(writer, newterm);
            }
            break;

            case Spec.Datum.DatumType.R_OBJECT:
            {
                var newterm = new Term()
                {
                    type = Term.TermType.MAKE_OBJ
                };
                newterm.optargs.AddRange(datum.r_object.Select(ap => new Term.AssocPair()
                    {
                        key = ap.key,
                        val = new Term()
                        {
                            type  = Term.TermType.DATUM,
                            datum = ap.val
                        }
                    }));
                WriteTerm(writer, newterm);
            }
            break;
            }
        }
        public void Serialize(ref JsonWriter writer, TEnum value, IJsonFormatterResolver formatterResolver)
        {
            if (value is null)
            {
                writer.WriteNull();
                return;
            }

            if (typeof(TValue) == typeof(bool))
            {
                writer.WriteBoolean((bool)(object)value.Value);
            }
            else if (typeof(TValue) == typeof(byte))
            {
                writer.WriteByte((byte)(object)value.Value);
            }
            else if (typeof(TValue) == typeof(sbyte))
            {
                writer.WriteSByte((sbyte)(object)value.Value);
            }
            else if (typeof(TValue) == typeof(short))
            {
                writer.WriteInt16((short)(object)value.Value);
            }
            else if (typeof(TValue) == typeof(ushort))
            {
                writer.WriteUInt16((ushort)(object)value.Value);
            }
            else if (typeof(TValue) == typeof(int))
            {
                writer.WriteInt32((int)(object)value.Value);
            }
            else if (typeof(TValue) == typeof(uint))
            {
                writer.WriteUInt32((uint)(object)value.Value);
            }
            else if (typeof(TValue) == typeof(long))
            {
                writer.WriteInt64((long)(object)value.Value);
            }
            else if (typeof(TValue) == typeof(ulong))
            {
                writer.WriteUInt64((ulong)(object)value.Value);
            }
            else if (typeof(TValue) == typeof(float))
            {
                writer.WriteSingle((float)(object)value.Value);
            }
            else if (typeof(TValue) == typeof(double))
            {
                writer.WriteDouble((double)(object)value.Value);
            }
            else
            {
                throw new ArgumentOutOfRangeException(typeof(TValue).ToString(), $"{typeof(TValue).Name} is not supported.");
            }
        }
Example #7
0
        public override void SerializePrimitive <T>(ref T val)
        {
            switch (val)
            {
            case bool v:
                jsonWriter.WriteBoolean(v);
                break;

            case int v:
                jsonWriter.WriteInt32(v);
                break;

            case uint v:
                jsonWriter.WriteUInt32(v);
                break;

            case float v:
                jsonWriter.WriteSingle(v);
                break;

            case double v:
                jsonWriter.WriteDouble(v);
                break;

            case long v:
                jsonWriter.WriteInt64(v);
                break;

            case ulong v:
                jsonWriter.WriteUInt64(v);
                break;

            case short v:
                jsonWriter.WriteInt16(v);
                break;

            case ushort v:
                jsonWriter.WriteUInt16(v);
                break;

            case char v:
                jsonWriter.WriteUInt16(v);
                break;

            case sbyte v:
                jsonWriter.WriteSByte(v);
                break;

            case byte v:
                jsonWriter.WriteByte(v);
                break;

            case decimal v:
                //jsonWriter.WriteNumberValue(v);
                break;
            }
        }
Example #8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="writer"></param>
        public override void WriteJson(JsonWriter writer)
        {
            using (new JsonObject(writer, RedmineKeys.ISSUE))
            {
                writer.WriteProperty(RedmineKeys.SUBJECT, Subject);
                writer.WriteProperty(RedmineKeys.DESCRIPTION, Description);
                writer.WriteProperty(RedmineKeys.NOTES, Notes);

                if (Id != 0)
                {
                    writer.WriteBoolean(RedmineKeys.PRIVATE_NOTES, PrivateNotes);
                }

                writer.WriteBoolean(RedmineKeys.IS_PRIVATE, IsPrivate);
                writer.WriteIdIfNotNull(RedmineKeys.PROJECT_ID, Project);
                writer.WriteIdIfNotNull(RedmineKeys.PRIORITY_ID, Priority);
                writer.WriteIdIfNotNull(RedmineKeys.STATUS_ID, Status);
                writer.WriteIdIfNotNull(RedmineKeys.CATEGORY_ID, Category);
                writer.WriteIdIfNotNull(RedmineKeys.TRACKER_ID, Tracker);
                writer.WriteIdIfNotNull(RedmineKeys.ASSIGNED_TO_ID, AssignedTo);
                writer.WriteIdIfNotNull(RedmineKeys.FIXED_VERSION_ID, FixedVersion);
                writer.WriteValueOrEmpty(RedmineKeys.ESTIMATED_HOURS, EstimatedHours);

                writer.WriteIdOrEmpty(RedmineKeys.PARENT_ISSUE_ID, ParentIssue);
                writer.WriteDateOrEmpty(RedmineKeys.START_DATE, StartDate);
                writer.WriteDateOrEmpty(RedmineKeys.DUE_DATE, DueDate);
                writer.WriteDateOrEmpty(RedmineKeys.UPDATED_ON, UpdatedOn);

                if (DoneRatio != null)
                {
                    writer.WriteProperty(RedmineKeys.DONE_RATIO, DoneRatio.Value.ToString(CultureInfo.InvariantCulture));
                }

                if (SpentHours != null)
                {
                    writer.WriteProperty(RedmineKeys.SPENT_HOURS, SpentHours.Value.ToString(CultureInfo.InvariantCulture));
                }

                writer.WriteArray(RedmineKeys.UPLOADS, Uploads);
                writer.WriteArray(RedmineKeys.CUSTOM_FIELDS, CustomFields);

                writer.WriteRepeatableElement(RedmineKeys.WATCHER_USER_IDS, (IEnumerable <IValue>)Watchers);
            }
        }
Example #9
0
        public void BoolTest(bool target)
        {
            var writer = new JsonWriter();

            writer.WriteBoolean(target);

            var reader = SameAsReference(target, writer.GetBuffer());

            reader.ReadBoolean().Is(target);
        }
Example #10
0
 public void Serialize(ref JsonWriter writer, BoolSetting value, IJsonFormatterResolver formatterResolver)
 {
     if (!value.IsEnabled)
     {
         return;
     }
     writer.WritePropertyName(value.Name);
     writer.WriteBoolean(value.TypedValue);
     WriteSeparatorIfNotTheLast(ref writer, value);
 }
        public void Serialize(ref JsonWriter writer, bool?value, IJsonFormatterResolver formatterResolver)
        {
            if (value == null)
            {
                writer.WriteNull();
                return;
            }

            writer.WriteBoolean(value.Value);
        }
 public void Serialize(JsonWriter writer, Boolean?value, IJsonFormatterResolver formatterResolver)
 {
     if (value == null)
     {
         writer.WriteNull();
     }
     else
     {
         writer.WriteBoolean(value.Value);
     }
 }
Example #13
0
        public void SerializeToPropertyName(ref JsonWriter writer, Boolean?value, IJsonFormatterResolver formatterResolver)
        {
            if (value == null)
            {
                writer.WriteNull(); return;
            }

            writer.WriteQuotation();
            writer.WriteBoolean(value.Value);
            writer.WriteQuotation();
        }
Example #14
0
 public void Serialize(ref JsonWriter writer, bool value, IJsonFormatterResolver formatterResolver)
 {
     if (_writeAsString)
     {
         writer.WriteString(value ? "true" : "false");
     }
     else
     {
         writer.WriteBoolean(value);
     }
 }
Example #15
0
        public void PrimitiveWrapperUtf16()
        {
            var value  = Fixture.Create <Boolean>();
            var writer = new JsonWriter <char>();

            writer.WriteBoolean(value);
            var output = writer.ToString();

            var reader       = new JsonReader <char>(output);
            var deserialized = reader.ReadBoolean();

            Assert.Equal(value, deserialized);
        }
Example #16
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="writer"></param>
        public override void WriteJson(JsonWriter writer)
        {
            using (new JsonObject(writer, RedmineKeys.PROJECT))
            {
                writer.WriteProperty(RedmineKeys.NAME, Name);
                writer.WriteProperty(RedmineKeys.IDENTIFIER, Identifier);
                writer.WriteIfNotDefaultOrNull(RedmineKeys.DESCRIPTION, Description);
                writer.WriteIfNotDefaultOrNull(RedmineKeys.HOMEPAGE, HomePage);
                writer.WriteBoolean(RedmineKeys.INHERIT_MEMBERS, InheritMembers);
                writer.WriteBoolean(RedmineKeys.IS_PUBLIC, IsPublic);
                writer.WriteIdIfNotNull(RedmineKeys.PARENT_ID, Parent);
                writer.WriteRepeatableElement(RedmineKeys.TRACKER_IDS, (IEnumerable <IValue>)Trackers);
                writer.WriteRepeatableElement(RedmineKeys.ENABLED_MODULE_NAMES, (IEnumerable <IValue>)EnabledModules);

                if (Id == 0)
                {
                    writer.WriteRepeatableElement(RedmineKeys.ISSUE_CUSTOM_FIELD_IDS, (IEnumerable <IValue>)CustomFields);
                    return;
                }

                writer.WriteArray(RedmineKeys.CUSTOM_FIELDS, CustomFields);
            }
        }
        public void Serialize(ref JsonWriter writer, Boolean[] value, IJsonFormatterResolver formatterResolver)
        {
            if (value == null)
            {
                writer.WriteNull();
            }
            else
            {
                writer.WriteBeginArray();

                if (value.Length != 0)
                {
                    writer.WriteBoolean(value[0]);
                }
                for (int i = 1; i < value.Length; i++)
                {
                    writer.WriteValueSeparator();
                    writer.WriteBoolean(value[i]);
                }

                writer.WriteEndArray();
            }
        }
Example #18
0
        private string WriteJson(string image, bool isDark, string color)
        {
            JsonWriter writer = new JsonWriter();

            writer.WriteBeginObject();
            writer.WritePropertyName("data");
            writer.WriteString(image);
            writer.WriteValueSeparator();
            writer.WritePropertyName("isDark");
            writer.WriteBoolean(isDark);
            writer.WriteValueSeparator();
            writer.WritePropertyName("color");
            writer.WriteString(color);
            writer.WriteEndObject();
            return(writer.ToString());
        }
Example #19
0
        public void Serialize(ref JsonWriter writer, Track track, IJsonFormatterResolver formatterResolver)
        {
            if (track == null)
            {
                writer.WriteNull();
                return;
            }

            var dateTimeFormatter = formatterResolver.GetFormatter <DateTime>();

            UnsafeMemory64.WriteRaw26(ref writer, this.stringByteKeys[0]);
            dateTimeFormatter.Serialize(ref writer, track.AddedToLibraryDateTime, formatterResolver);

            UnsafeMemory64.WriteRaw20(ref writer, this.stringByteKeys[1]);
            formatterResolver.GetFormatter <TrackAlbumAssociation>().Serialize(ref writer, track.AlbumAssociation, formatterResolver);

            UnsafeMemory64.WriteRaw9(ref writer, this.stringByteKeys[2]);
            IJsonFormatterHelper.SerializeList(ref writer, track.Composers, formatterResolver);

            UnsafeMemory64.WriteRaw12(ref writer, this.stringByteKeys[3]);
            formatterResolver.GetFormatter <TimeSpan?>().Serialize(ref writer, track.Duration, formatterResolver);

            UnsafeMemory64.WriteRaw17(ref writer, this.stringByteKeys[4]);
            formatterResolver.GetFormatter <ulong?>().Serialize(ref writer, track.FileSizeBytes, formatterResolver);

            UnsafeMemory64.WriteRaw11(ref writer, this.stringByteKeys[5]);
            writer.WriteBoolean(track.IsLoved);

            UnsafeMemory64.WriteRaw24(ref writer, this.stringByteKeys[6]);
            formatterResolver.GetFormatter <DateTime?>().Serialize(ref writer, track.LastModifiedDateTime, formatterResolver);

            UnsafeMemory64.WriteRaw12(ref writer, this.stringByteKeys[8]);
            formatterResolver.GetFormatter <Uri>().Serialize(ref writer, track.Location, formatterResolver);

            UnsafeMemory64.WriteRaw14(ref writer, this.stringByteKeys[9]);
            IJsonFormatterHelper.SerializeList(ref writer, track.Performers, formatterResolver);

            UnsafeMemory64.WriteRaw9(ref writer, this.stringByteKeys[10]);
            writer.WriteString(track.Title);

            UnsafeMemory64.WriteRaw8(ref writer, this.stringByteKeys[11]);
            formatterResolver.GetFormatter <uint?>().Serialize(ref writer, track.Year, formatterResolver);

            writer.WriteEndObject();
        }
Example #20
0
        public void Serialize(ref JsonWriter writer, BitArray value, IJsonFormatterResolver formatterResolver)
        {
            if (value == null)
            {
                writer.WriteNull(); return;
            }

            writer.WriteBeginArray();
            for (int i = 0; i < value.Length; i++)
            {
                if (i != 0)
                {
                    writer.WriteValueSeparator();
                }
                writer.WriteBoolean(value[i]);
            }
            writer.WriteEndArray();
        }
Example #21
0
        public void Serialize(ref JsonWriter writer, Union <bool, DynamicMapping> value, IJsonFormatterResolver formatterResolver)
        {
            if (value == null)
            {
                writer.WriteNull();
                return;
            }

            switch (value.Tag)
            {
            case 0:
                writer.WriteBoolean(value.Item1);
                break;

            case 1:
                writer.WriteString(value.Item2.GetStringValue());
                break;
            }
        }
Example #22
0
 private static void WriteContact()
 {
     using (JsonWriter writer = CreateJsonWriter(Console.Out))
     {
         writer.WriteStartObject();                         //  {
         writer.WriteMember("Name");                        //      "Name" :
         writer.WriteString("John Doe");                    //          "John Doe",
         writer.WriteMember("PermissionToCall");            //      "PermissionToCall" :
         writer.WriteBoolean(true);                         //          true,
         writer.WriteMember("PhoneNumbers");                //      "PhoneNumbers" :
         writer.WriteStartArray();                          //          [
         WritePhoneNumber(writer,                           //            { "Location": "Home",
                          "Home", "555-555-1234");          //              "Number": "555-555-1234" },
         WritePhoneNumber(writer,                           //            { "Location": "Work",
                          "Work", "555-555-9999 Ext. 123"); //              "Number": "555-555-9999 Ext. 123" }
         writer.WriteEndArray();                            //          ]
         writer.WriteEndObject();                           //  }
     }
 }
 public void SerializeToPropertyName(ref JsonWriter writer, Boolean value, IJsonFormatterResolver formatterResolver)
 {
     writer.WriteQuotation();
     writer.WriteBoolean(value);
     writer.WriteQuotation();
 }
 public void Serialize(ref JsonWriter writer, Boolean value, IJsonFormatterResolver formatterResolver)
 {
     writer.WriteBoolean(value);
 }
Example #25
0
        public void Serialize(ref JsonWriter writer, IGeoShapeQuery value, IJsonFormatterResolver formatterResolver)
        {
            var fieldName = value.Field;

            if (fieldName == null)
            {
                writer.WriteNull();
                return;
            }

            var settings = formatterResolver.GetConnectionSettings();
            var field    = settings.Inferrer.Field(fieldName);

            if (field.IsNullOrEmpty())
            {
                writer.WriteNull();
                return;
            }

            writer.WriteBeginObject();
            var name           = value.Name;
            var boost          = value.Boost;
            var ignoreUnmapped = value.IgnoreUnmapped;

            if (!name.IsNullOrEmpty())
            {
                writer.WritePropertyName("_name");
                writer.WriteString(name);
                writer.WriteValueSeparator();
            }
            if (boost != null)
            {
                writer.WritePropertyName("boost");
                writer.WriteDouble(boost.Value);
                writer.WriteValueSeparator();
            }
            if (ignoreUnmapped != null)
            {
                writer.WritePropertyName("ignore_unmapped");
                writer.WriteBoolean(ignoreUnmapped.Value);
                writer.WriteValueSeparator();
            }

            writer.WritePropertyName(field);

            writer.WriteBeginObject();

            var written = false;

            if (value.Shape != null)
            {
                writer.WritePropertyName("shape");
                var shapeFormatter = formatterResolver.GetFormatter <IGeoShape>();
                shapeFormatter.Serialize(ref writer, value.Shape, formatterResolver);
                written = true;
            }
            else if (value.IndexedShape != null)
            {
                writer.WritePropertyName("indexed_shape");
                var fieldLookupFormatter = formatterResolver.GetFormatter <IFieldLookup>();
                fieldLookupFormatter.Serialize(ref writer, value.IndexedShape, formatterResolver);
                written = true;
            }

            if (value.Relation.HasValue)
            {
                if (written)
                {
                    writer.WriteValueSeparator();
                }

                writer.WritePropertyName("relation");
                formatterResolver.GetFormatter <GeoShapeRelation>()
                .Serialize(ref writer, value.Relation.Value, formatterResolver);
            }

            writer.WriteEndObject();
            writer.WriteEndObject();
        }
Example #26
0
        public void Serialize(ref JsonWriter writer, IPercentilesAggregation value, IJsonFormatterResolver formatterResolver)
        {
            if (value == null)
            {
                writer.WriteNull();
                return;
            }

            writer.WriteBeginObject();
            var propertyWritten = false;

            if (value.Meta != null && value.Meta.Any())
            {
                writer.WritePropertyName("meta");
                var formatter = formatterResolver.GetFormatter <IDictionary <string, object> >();
                formatter.Serialize(ref writer, value.Meta, formatterResolver);
                propertyWritten = true;
            }

            if (value.Field != null)
            {
                if (propertyWritten)
                {
                    writer.WriteValueSeparator();
                }

                var settings = formatterResolver.GetConnectionSettings();
                writer.WritePropertyName("field");
                writer.WriteString(settings.Inferrer.Field(value.Field));
                propertyWritten = true;
            }

            if (value.Script != null)
            {
                if (propertyWritten)
                {
                    writer.WriteValueSeparator();
                }

                writer.WritePropertyName("script");
                var formatter = formatterResolver.GetFormatter <IScript>();
                formatter.Serialize(ref writer, value.Script, formatterResolver);
                propertyWritten = true;
            }

            if (value.Method != null)
            {
                if (propertyWritten)
                {
                    writer.WriteValueSeparator();
                }

                switch (value.Method)
                {
                case ITDigestMethod tdigest:
                {
                    writer.WritePropertyName("tdigest");
                    writer.WriteBeginObject();
                    if (tdigest.Compression.HasValue)
                    {
                        writer.WritePropertyName("compression");
                        writer.WriteDouble(tdigest.Compression.Value);
                    }
                    writer.WriteEndObject();
                    break;
                }

                case IHDRHistogramMethod hdr:
                {
                    writer.WritePropertyName("hdr");
                    writer.WriteBeginObject();
                    if (hdr.NumberOfSignificantValueDigits.HasValue)
                    {
                        writer.WritePropertyName("number_of_significant_value_digits");
                        writer.WriteInt32(hdr.NumberOfSignificantValueDigits.Value);
                    }
                    writer.WriteEndObject();
                    break;
                }
                }

                propertyWritten = true;
            }

            if (value.Missing.HasValue)
            {
                if (propertyWritten)
                {
                    writer.WriteValueSeparator();
                }

                writer.WritePropertyName("missing");
                writer.WriteDouble(value.Missing.Value);
                propertyWritten = true;
            }

            if (value.Percents != null)
            {
                if (propertyWritten)
                {
                    writer.WriteValueSeparator();
                }

                writer.WritePropertyName("percents");
                var formatter = formatterResolver.GetFormatter <IEnumerable <double> >();
                formatter.Serialize(ref writer, value.Percents, formatterResolver);
                propertyWritten = true;
            }

            if (value.Keyed.HasValue)
            {
                if (propertyWritten)
                {
                    writer.WriteValueSeparator();
                }

                writer.WritePropertyName("keyed");
                writer.WriteBoolean(value.Keyed.Value);
                propertyWritten = true;
            }

            if (!string.IsNullOrEmpty(value.Format))
            {
                if (propertyWritten)
                {
                    writer.WriteValueSeparator();
                }

                writer.WritePropertyName("format");
                writer.WriteString(value.Format);
            }

            writer.WriteEndObject();
        }
Example #27
0
        /// <summary>
        /// Removes indentation in JSON byte representation
        /// </summary>
        internal static void WriteUnindented(ref JsonReader reader, ref JsonWriter writer)
        {
            var token = reader.GetCurrentJsonToken();

            switch (token)
            {
            case JsonToken.BeginObject:
            {
                writer.WriteBeginObject();
                var c = 0;
                while (reader.ReadIsInObject(ref c))
                {
                    if (c != 1)
                    {
                        writer.WriteRaw((byte)',');
                    }
                    writer.WritePropertyName(reader.ReadPropertyName());
                    WriteUnindented(ref reader, ref writer);
                }
                writer.WriteEndObject();
            }
            break;

            case JsonToken.BeginArray:
            {
                writer.WriteBeginArray();
                var c = 0;
                while (reader.ReadIsInArray(ref c))
                {
                    if (c != 1)
                    {
                        writer.WriteRaw((byte)',');
                    }
                    WriteUnindented(ref reader, ref writer);
                }
                writer.WriteEndArray();
            }
            break;

            case JsonToken.Number:
                var segment = reader.ReadNumberSegment();
                for (var i = 0; i < segment.Count; i++)
                {
                    // segment.Array never null
                    // ReSharper disable once PossibleNullReferenceException
                    writer.WriteRawUnsafe(segment.Array[i + segment.Offset]);
                }
                break;

            case JsonToken.String:
                var s = reader.ReadString();
                writer.WriteString(s);
                break;

            case JsonToken.True:
            case JsonToken.False:
                var b = reader.ReadBoolean();
                writer.WriteBoolean(b);
                break;

            case JsonToken.Null:
                reader.ReadIsNull();
                writer.WriteNull();
                break;
            }
        }
Example #28
0
        public void Serialize(ref JsonWriter writer, IMovingAverageAggregation value, IJsonFormatterResolver formatterResolver)
        {
            if (value == null)
            {
                writer.WriteNull();
                return;
            }

            writer.WriteBeginObject();
            var propertyWritten = false;

            if (value.BucketsPath != null)
            {
                writer.WritePropertyName("buckets_path");
                var formatter = formatterResolver.GetFormatter <IBucketsPath>();
                formatter.Serialize(ref writer, value.BucketsPath, formatterResolver);
                propertyWritten = true;
            }
            if (value.GapPolicy != null)
            {
                if (propertyWritten)
                {
                    writer.WriteValueSeparator();
                }

                writer.WritePropertyName("gap_policy");
                writer.WriteString(value.GapPolicy.GetStringValue());
                propertyWritten = true;
            }
            if (!value.Format.IsNullOrEmpty())
            {
                if (propertyWritten)
                {
                    writer.WriteValueSeparator();
                }

                writer.WritePropertyName("format");
                writer.WriteString(value.Format);
                propertyWritten = true;
            }
            if (value.Window != null)
            {
                if (propertyWritten)
                {
                    writer.WriteValueSeparator();
                }

                writer.WritePropertyName("window");
                writer.WriteInt32(value.Window.Value);
                propertyWritten = true;
            }
            if (value.Minimize != null)
            {
                if (propertyWritten)
                {
                    writer.WriteValueSeparator();
                }

                writer.WritePropertyName("minimize");
                writer.WriteBoolean(value.Minimize.Value);
                propertyWritten = true;
            }
            if (value.Predict != null)
            {
                if (propertyWritten)
                {
                    writer.WriteValueSeparator();
                }

                writer.WritePropertyName("predict");
                writer.WriteInt32(value.Predict.Value);
                propertyWritten = true;
            }
            if (value.Model != null)
            {
                if (propertyWritten)
                {
                    writer.WriteValueSeparator();
                }

                writer.WritePropertyName("model");
                writer.WriteString(value.Model.Name);
                writer.WriteValueSeparator();
                writer.WritePropertyName("settings");

                switch (value.Model.Name)
                {
                case "ewma":
                    Serialize(ref writer, (IEwmaModel)value.Model, formatterResolver);
                    break;

                case "linear":
                    Serialize(ref writer, (ILinearModel)value.Model, formatterResolver);
                    break;

                case "simple":
                    Serialize(ref writer, (ISimpleModel)value.Model, formatterResolver);
                    break;

                case "holt":
                    Serialize(ref writer, (IHoltLinearModel)value.Model, formatterResolver);
                    break;

                case "holt_winters":
                    Serialize(ref writer, (IHoltWintersModel)value.Model, formatterResolver);
                    break;

                default:
                    Serialize(ref writer, value.Model, formatterResolver);
                    break;
                }
            }
            writer.WriteEndObject();
        }
Example #29
0
 public override void WriteBoolean(bool value)
 {
     Palette.Boolean.Apply();
     inner.WriteBoolean(value);
 }
Example #30
0
        public void Serialize(ref JsonWriter writer, Attachment value, IJsonFormatterResolver formatterResolver)
        {
            if (value == null)
            {
                writer.WriteNull();
                return;
            }

            if (!value.ContainsMetadata)
            {
                writer.WriteString(value.Content);
            }
            else
            {
                writer.WriteBeginObject();
                writer.WritePropertyName("content");
                writer.WriteString(value.Content);

                if (!string.IsNullOrEmpty(value.Author))
                {
                    writer.WriteValueSeparator();
                    writer.WritePropertyName("author");
                    writer.WriteString(value.Author);
                }

                if (value.ContentLength.HasValue)
                {
                    writer.WriteValueSeparator();
                    writer.WritePropertyName("content_length");
                    writer.WriteInt64(value.ContentLength.Value);
                }

                if (!string.IsNullOrEmpty(value.ContentType))
                {
                    writer.WriteValueSeparator();
                    writer.WritePropertyName("content_type");
                    writer.WriteString(value.ContentType);
                }

                if (value.Date.HasValue)
                {
                    writer.WriteValueSeparator();
                    writer.WritePropertyName("date");
                    formatterResolver.GetFormatter <DateTime?>().Serialize(ref writer, value.Date, formatterResolver);
                }

                if (value.DetectLanguage.HasValue)
                {
                    writer.WriteValueSeparator();
                    writer.WritePropertyName("detect_language");
                    writer.WriteBoolean(value.DetectLanguage.Value);
                }

                if (value.IndexedCharacters.HasValue)
                {
                    writer.WriteValueSeparator();
                    writer.WritePropertyName("indexed_chars");
                    writer.WriteInt64(value.IndexedCharacters.Value);
                }

                if (!string.IsNullOrEmpty(value.Keywords))
                {
                    writer.WriteValueSeparator();
                    writer.WritePropertyName("keywords");
                    writer.WriteString(value.Keywords);
                }

                if (!string.IsNullOrEmpty(value.Language))
                {
                    writer.WriteValueSeparator();
                    writer.WritePropertyName("language");
                    writer.WriteString(value.Language);
                }

                if (!string.IsNullOrEmpty(value.Name))
                {
                    writer.WriteValueSeparator();
                    writer.WritePropertyName("name");
                    writer.WriteString(value.Name);
                }

                if (!string.IsNullOrEmpty(value.Title))
                {
                    writer.WriteValueSeparator();
                    writer.WritePropertyName("title");
                    writer.WriteString(value.Title);
                }

                writer.WriteEndObject();
            }
        }
Example #31
0
        public void Serialize(ref JsonWriter writer, object value, IJsonFormatterResolver formatterResolver)
        {
            if (value == null)
            {
                writer.WriteNull();
                return;
            }

            var t = value.GetType();

            int key;

            if (typeToJumpCode.TryGetValue(t, out key))
            {
                switch (key)
                {
                case 0: writer.WriteBoolean((bool)value); return;

                case 1: CharFormatter.Default.Serialize(ref writer, (char)value, formatterResolver); return;

                case 2: writer.WriteSByte((sbyte)value); return;

                case 3: writer.WriteByte((byte)value); return;

                case 4: writer.WriteInt16((Int16)value); return;

                case 5: writer.WriteUInt16((UInt16)value); return;

                case 6: writer.WriteInt32((int)value); return;

                case 7: writer.WriteUInt32((UInt32)value); return;

                case 8: writer.WriteInt64((long)value); return;

                case 9: writer.WriteUInt64((UInt64)value); return;

                case 10: writer.WriteSingle((float)value); return;

                case 11: writer.WriteDouble((double)value); return;

                case 12: ISO8601DateTimeFormatter.Default.Serialize(ref writer, (DateTime)value, formatterResolver); return;

                case 13: writer.WriteString((string)value); return;

                case 14: ByteArrayFormatter.Default.Serialize(ref writer, (byte[])value, formatterResolver); return;

                default:
                    break;
                }
            }

            if (t.IsEnum)
            {
                writer.WriteString(t.ToString()); // enum as string
                return;
            }

            var dict = value as IDictionary; // check dictionary first

            if (dict != null)
            {
                var count = 0;
                writer.WriteBeginObject();
                foreach (DictionaryEntry item in dict)
                {
                    if (count++ != 0)
                    {
                        writer.WriteValueSeparator();
                    }
                    writer.WritePropertyName((string)item.Key);
                    Serialize(ref writer, item.Value, formatterResolver);
                }
                writer.WriteEndObject();
                return;
            }

            var collection = value as ICollection;

            if (collection != null)
            {
                var count = 0;
                writer.WriteBeginArray();
                foreach (var item in collection)
                {
                    if (count++ != 0)
                    {
                        writer.WriteValueSeparator();
                    }
                    Serialize(ref writer, item, formatterResolver);
                }
                writer.WriteEndArray();
                return;
            }

            throw new InvalidOperationException("Not supported primitive object resolver. type:" + t.Name);
        }