Exemplo n.º 1
0
        static void InterfaceTest()
        {
            string yaml = @"
Description: All automobiles
Name: All autos
Vehicles: 
    - type: Car
      make: BMW
    - type: Truck
      make: Volvo
";

            //ChoYamlReader.DeserializeText<Auto>(yaml, configuration:
            //    new ChoYamlRecordConfiguration().Map<Auto, Auto.F>(f => f.Vehicles, m => m))
            using (var parser = ChoYamlReader <Auto> .LoadText(yaml)
                                .WithField(f => f.Vehicles, itemRecordTypeSelector: (o) =>
            {
                dynamic rec = ChoDynamicObject.New(o as IDictionary <object, object>);
                if (rec.type == "Car")
                {
                    return(typeof(Car));
                }
                else
                {
                    return(typeof(Truck));
                }
            })
                   )
            {
                foreach (var e in parser)
                {
                    Console.WriteLine(e.Dump());
                }
            }
        }
Exemplo n.º 2
0
        static void CustomSerialization()
        {
            dynamic address = new ChoDynamicObject();

            address.Street = "10 River Rd";
            address.City   = "Princeton";

            dynamic state = new ChoDynamicObject();

            state.State = "NJ";
            state.Zip   = "09930";

            address.State = state;

            StringBuilder sb = new StringBuilder();

            using (var w = new ChoXmlWriter(sb)
                           .WithXmlAttributeField("id")
                           .WithXmlElementField("address")
                           .Setup(s => s.RecordFieldWriteError += (o, e) => Console.WriteLine(e.Exception.ToString()))
                           .Setup(s => s.RecordFieldSerialize += (o, e) =>
            {
                e.Source = "dd";
                //e.Source = "<{0}>DD</{0}>".FormatString(e.PropertyName);
                //e.Handled = true;
            })
                   )
            {
                //w.Write(new KeyValuePair<int, string>(1, "MM"));
                //w.Write(new KeyValuePair<int, string>(1, "MM"));
                w.Write(new { id = "2s->", address = address });
                w.Write(new { id = "1s->", address = address });
            }
            Console.WriteLine(sb.ToString());
        }
Exemplo n.º 3
0
        public static void DynamicXmlTest()
        {
            ChoDynamicObject src = new ChoDynamicObject("Item1");

            IDictionary <string, object> x = src as IDictionary <string, object>;

            x.Add("@Id", 100);
            x.Add("@Name", "Raj");

            //x.Add("@@Value", "Hello!");
            ChoDynamicObject sd = new ChoDynamicObject();

            ((IDictionary <string, object>)sd).Add("@@Value", "0001-01-11T00:00:00");

            x.Add("StartDate", sd);

            ChoDynamicObject id1 = new ChoDynamicObject("Id");

            ((IDictionary <string, object>)id1).Add("@@Value", 101);

            ChoDynamicObject id2 = new ChoDynamicObject();

            ((IDictionary <string, object>)id2).Add("@@Value", 102);

            ChoDynamicObject id3 = new ChoDynamicObject();

            ((IDictionary <string, object>)id3).Add("@@Value", 103);

            x.Add("SelectedIds", new object[] { id1, id2, id3 });

            Console.WriteLine(src.GetXml());
        }
Exemplo n.º 4
0
        static void DeserializeSubClassedItems()
        {
            string yaml = @"
Type: Item
Name: fuel_cansiter
DisplayName: Fuel Canister
Sprite: fuel_canister_1
MaxStackSize: 10
MaxHP: 15
Value: 30
Components:
      - Explosive:
        - Damage: 10
        - Range: 25
      - Burnable:
        - FlameSize: 10
        - HealthThreshold: 0.4
";


            using (var r = ChoYamlReader <Thing> .LoadText(yaml)
                           .WithField(f => f.Components, itemConverter: (o) =>
            {
                dynamic rec = ChoDynamicObject.New(o as IDictionary <object, object>);
                if (rec.ContainsKey(nameof(Explosive)))
                {
                    IList list = rec.Explosive.ToArray();
                    var dict = list.OfType <IDictionary <object, object> >().SelectMany(d => d.ToList()).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

                    return(dict.ConvertToObject(typeof(Explosive)));
                }
                else if (rec.ContainsKey(nameof(Burnable)))
                {
                    IList list = rec.Burnable.ToArray();
                    var dict = list.OfType <IDictionary <object, object> >().SelectMany(d => d.ToList()).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

                    return(dict.ConvertToObject(typeof(Burnable)));
                }
                else
                {
                    return(null);
                }
            })
                   )
            {
                foreach (var rec in r)
                {
                    Console.WriteLine(rec.Dump());
                }
            }
        }
Exemplo n.º 5
0
        static void Sample12()
        {
            using (var jr = new ChoJSONReader("sample12.json")
                   )
            {
                foreach (var x1 in jr)
                {
                    foreach (var z1 in x1)
                    {
                        dynamic newObj = new ChoDynamicObject();
                        newObj.name = z1.Key;

                        foreach (var kvp in (ChoDynamicObject)z1.Value)
                        {
                            ((ChoDynamicObject)newObj).AddOrUpdate(kvp.Key, kvp.Value);
                        }

                        Console.WriteLine(ChoUtility.DumpAsJson(newObj));
                    }
                }
            }
        }
Exemplo n.º 6
0
        static void IntArrayTest()
        {
            dynamic address = new ChoDynamicObject();

            address.Street = "10 River Rd";
            address.City   = "Princeton";

            dynamic state = new ChoDynamicObject();

            state.State = "NJ";
            state.Zip   = "09930";

            address.State = state;

            using (var w = new ChoCSVWriter("intarray.csv")
                           .Setup(s => s.RecordFieldWriteError += (o, e) => Console.WriteLine(e.Exception.ToString()))
                           .Configure(c => c.NestedColumnSeparator = '/')
                   )
            {
                //w.Write(new KeyValuePair<int, string>(1, "MM"));
                //w.Write(new KeyValuePair<int, string>(1, "MM"));
                w.Write(new { id = "1s->", address = address });
            }
        }