public RubyRepresenter(RubyContext/*!*/ context, Serializer/*!*/ serializer, YamlOptions/*!*/ opts) : base(serializer, opts) { _context = context; _objectToYamlMethod = context.GetClass(typeof(object)).ResolveMethod("to_yaml", VisibilityContext.AllVisible).Info; _TagUri = CallSite<Func<CallSite, object, object>>.Create( RubyCallAction.Make(context, "taguri", RubyCallSignature.WithImplicitSelf(0)) ); _ToYamlStyle = CallSite<Func<CallSite, object, object>>.Create( RubyCallAction.Make(context, "to_yaml_style", RubyCallSignature.WithImplicitSelf(0)) ); _ToYamlNode = CallSite<Func<CallSite, object, RubyRepresenter, object>>.Create( RubyCallAction.Make(context, "to_yaml_node", RubyCallSignature.WithImplicitSelf(1)) ); _ToYaml = CallSite<Func<CallSite, object, RubyRepresenter, object>>.Create( RubyCallAction.Make(context, "to_yaml", RubyCallSignature.WithImplicitSelf(0)) ); _ToYamlProperties = CallSite<Func<CallSite, object, object>>.Create( RubyCallAction.Make(context, "to_yaml_properties", RubyCallSignature.WithImplicitSelf(0)) ); }
public Representer(Serializer/*!*/ serializer, char defaultStyle) { ContractUtils.RequiresNotNull(serializer, "serializer"); if (defaultStyle != '"' && defaultStyle != '\'' && defaultStyle != '\0') { throw new ArgumentException("must be single quote, double quote, or zero", "defaultStyle"); } _serializer = serializer; _defaultStyle = defaultStyle; }
public static object QuickEmit(YamlCallSiteStorage/*!*/ siteStorage, [NotNull]BlockParam/*!*/ block, RubyModule/*!*/ self, object objectId, [NotNull]Hash/*!*/ opts) { // TODO: load from opts YamlOptions cfg = YamlOptions.DefaultOptions; MutableStringWriter writer = new MutableStringWriter(MutableString.CreateMutable(RubyEncoding.Binary)); Serializer s = new Serializer(writer, cfg); RubyRepresenter rep = new RubyRepresenter(siteStorage); object result; if (block.Yield(new Syck.Out(rep), out result)) { return result; } s.Serialize(rep.ToNode(result)); s.Close(); return writer.String; }
internal static object DumpAll(RubyRepresenter/*!*/ rep, IEnumerable/*!*/ objs, RubyIO io) { TextWriter writer; if (io != null) { writer = new RubyIOWriter(io); } else { // the output is ascii: writer = new MutableStringWriter(MutableString.CreateMutable(RubyEncoding.Binary)); } YamlOptions cfg = YamlOptions.DefaultOptions; Serializer s = new Serializer(writer, cfg); foreach (object obj in objs) { s.Serialize(rep.Represent(obj)); rep.ForgetObjects(); } s.Close(); if (io != null) { return io; } else { return ((MutableStringWriter)writer).String; } }
public RubyRepresenter(RubyContext/*!*/ context, Serializer/*!*/ serializer, YamlOptions/*!*/ opts) : base(serializer, opts) { _context = context; _objectToYamlMethod = context.GetClass(typeof(object)).ResolveMethod("to_yaml", RubyClass.IgnoreVisibility).Info; }
public static object QuickEmit(RubyContext/*!*/ context, BlockParam/*!*/ block, RubyModule/*!*/ self, object objectId, params object[] opts) { if (block == null) { throw RubyExceptions.NoBlockGiven(); } MutableStringWriter writer = new MutableStringWriter(); //We currently don't support serialization options, so we just ignore opts argument YamlOptions cfg = YamlOptions.DefaultOptions; using (Serializer s = new Serializer(new Emitter(writer, cfg), cfg)) { RubyRepresenter r = new RubyRepresenter(context, s, cfg); object result; block.Yield(r, out result); s.Serialize(result as Node); return writer.String; } }
internal static object DumpAll(RubyContext/*!*/ context, [NotNull]IEnumerable objs, [Optional]RubyIO io) { TextWriter writer; if (io != null) { writer = new RubyIOWriter(io); } else { writer = new MutableStringWriter(); } YamlOptions cfg = YamlOptions.DefaultOptions; using (Serializer s = new Serializer(new Emitter(writer, cfg), cfg)) { RubyRepresenter r = new RubyRepresenter(context, s, cfg); foreach (object obj in objs) { r.Represent(obj); } } if (null != io) { return io; } else { return ((MutableStringWriter)writer).String; } }
public Representer(Serializer/*!*/ serializer, YamlOptions opts) : this(serializer, opts.UseDouble ? '"' : (opts.UseSingle ? '\'' : '\0')) { }
public static MutableString QuickEmit(RubyContext/*!*/ context, [NotNull]BlockParam/*!*/ block, RubyModule/*!*/ self, object objectId, [NotNull]Hash/*!*/ opts) { YamlOptions cfg = YamlOptions.DefaultOptions; MutableStringWriter writer = new MutableStringWriter(); Emitter emitter = new Emitter(writer, cfg); using (Serializer s = new Serializer(emitter, cfg)) { RubyRepresenter r = new RubyRepresenter(context, s, cfg); object result; block.Yield(r, out result); s.Serialize(result as Node); return writer.String; } }
public static object QuickEmit(RubyContext/*!*/ context, [NotNull]BlockParam/*!*/ block, RubyModule/*!*/ self, object objectId, [NotNull]Hash/*!*/ opts) { YamlOptions cfg = YamlOptions.DefaultOptions; // TODO: encoding MutableStringWriter writer = new MutableStringWriter(MutableString.CreateMutable(RubyEncoding.UTF8)); Emitter emitter = new Emitter(writer, cfg); using (Serializer s = new Serializer(emitter, cfg)) { RubyRepresenter r = new RubyRepresenter(context, s, cfg); object result; if (block.Yield(r, out result)) { return result; } s.Serialize(result as Node); return writer.String; } }