Example #1
0
        public void WriteInstance(ObjectInstance jsObject, IResultModifier modifier = null)
        {
            _writer.StartWriteObject();

            modifier?.Modify(jsObject);
            WriteRawObjectProperties(jsObject);

            _writer.WriteObjectEnd();
        }
Example #2
0
        private void WriteInstance(ObjectInstance jsObject, IResultModifier modifier, bool isRoot, bool filterProperties)
        {
            _writer.StartWriteObject();

            modifier?.Modify(jsObject);

            if (jsObject is BlittableObjectInstance blittableJsObject)
            {
                WriteBlittableInstance(blittableJsObject, isRoot, filterProperties);
            }
            else
            {
                WriteJsInstance(jsObject, isRoot, filterProperties);
            }

            _writer.WriteObjectEnd();
        }
Example #3
0
        public static BlittableJsonReaderObject Translate(JsonOperationContext context, Engine scriptEngine, ObjectInstance objectInstance, IResultModifier modifier = null, BlittableJsonDocumentBuilder.UsageMode usageMode = BlittableJsonDocumentBuilder.UsageMode.None)
        {
            if (objectInstance == null)
            {
                return(null);
            }

            if (objectInstance is BlittableObjectInstance boi && boi.Changed == false)
            {
                return(boi.Blittable.Clone(context));
            }

            using (var writer = new ManualBlittableJsonDocumentBuilder <UnmanagedWriteBuffer>(context))
            {
                writer.Reset(usageMode);
                writer.StartWriteObjectDocument();

                var blittableBridge = new JsBlittableBridge(writer, usageMode, scriptEngine);
                blittableBridge.WriteInstance(objectInstance, modifier);

                writer.FinalizeDocument();

                return(writer.CreateReader());
            }
        }