From 4000c396505ce3243ccc841d2a35d89e90cf08b9 Mon Sep 17 00:00:00 2001 From: Juju Adams Date: Fri, 3 Nov 2023 20:32:46 +0000 Subject: [PATCH 1/2] Removes Config JSON and Loose JSON --- objects/oTestConfigJSON/Create_0.gml | 37 - objects/oTestConfigJSON/oTest.yy | 33 - objects/oTestConfigJSON/oTestConfigJSON.yy | 33 - objects/oTestLooseJSON/Create_0.gml | 59 -- objects/oTestLooseJSON/oTest.yy | 33 - objects/oTestLooseJSON/oTestLooseJSON.yy | 33 - .../SnapBufferReadConfigJSON.gml | 663 ------------------ .../SnapBufferReadConfigJSON.yy | 11 - .../SnapBufferReadLooseJSON.gml | 658 ----------------- .../SnapBufferReadLooseJSON.yy | 11 - .../SnapBufferWriteLooseJSON.gml | 231 ------ .../SnapBufferWriteLooseJSON.yy | 11 - .../SnapFromConfigJSON/SnapFromConfigJSON.gml | 15 - .../SnapFromConfigJSON/SnapFromConfigJSON.yy | 11 - .../SnapFromLooseJSON/SnapFromLooseJSON.gml | 15 - .../SnapFromLooseJSON/SnapFromLooseJSON.yy | 11 - scripts/SnapToLooseJSON/SnapToLooseJSON.gml | 19 - scripts/SnapToLooseJSON/SnapToLooseJSON.yy | 11 - snap.yyp | 10 - 19 files changed, 1905 deletions(-) delete mode 100644 objects/oTestConfigJSON/Create_0.gml delete mode 100644 objects/oTestConfigJSON/oTest.yy delete mode 100644 objects/oTestConfigJSON/oTestConfigJSON.yy delete mode 100644 objects/oTestLooseJSON/Create_0.gml delete mode 100644 objects/oTestLooseJSON/oTest.yy delete mode 100644 objects/oTestLooseJSON/oTestLooseJSON.yy delete mode 100644 scripts/SnapBufferReadConfigJSON/SnapBufferReadConfigJSON.gml delete mode 100644 scripts/SnapBufferReadConfigJSON/SnapBufferReadConfigJSON.yy delete mode 100644 scripts/SnapBufferReadLooseJSON/SnapBufferReadLooseJSON.gml delete mode 100644 scripts/SnapBufferReadLooseJSON/SnapBufferReadLooseJSON.yy delete mode 100644 scripts/SnapBufferWriteLooseJSON/SnapBufferWriteLooseJSON.gml delete mode 100644 scripts/SnapBufferWriteLooseJSON/SnapBufferWriteLooseJSON.yy delete mode 100644 scripts/SnapFromConfigJSON/SnapFromConfigJSON.gml delete mode 100644 scripts/SnapFromConfigJSON/SnapFromConfigJSON.yy delete mode 100644 scripts/SnapFromLooseJSON/SnapFromLooseJSON.gml delete mode 100644 scripts/SnapFromLooseJSON/SnapFromLooseJSON.yy delete mode 100644 scripts/SnapToLooseJSON/SnapToLooseJSON.gml delete mode 100644 scripts/SnapToLooseJSON/SnapToLooseJSON.yy diff --git a/objects/oTestConfigJSON/Create_0.gml b/objects/oTestConfigJSON/Create_0.gml deleted file mode 100644 index 133c168..0000000 --- a/objects/oTestConfigJSON/Create_0.gml +++ /dev/null @@ -1,37 +0,0 @@ -var _string = @"{ - a: 1 - b: 2 - b: 2.5 - c: [ - { - a: 12 - b: 23 - } - c - ] - c: [ - d - e - f - ] - - d: {} - d: { - z: 26 - } - - e: { - z: [ - a - ] - } - - e: { - z: [ - b - ] - } -}"; - -var _json = SnapFromConfigJSON(_string); -show_debug_message(SnapVisualize(_json)); \ No newline at end of file diff --git a/objects/oTestConfigJSON/oTest.yy b/objects/oTestConfigJSON/oTest.yy deleted file mode 100644 index 87a2326..0000000 --- a/objects/oTestConfigJSON/oTest.yy +++ /dev/null @@ -1,33 +0,0 @@ -{ - "spriteId": null, - "solid": false, - "visible": true, - "spriteMaskId": null, - "persistent": false, - "parentObjectId": null, - "physicsObject": false, - "physicsSensor": false, - "physicsShape": 1, - "physicsGroup": 1, - "physicsDensity": 0.5, - "physicsRestitution": 0.1, - "physicsLinearDamping": 0.1, - "physicsAngularDamping": 0.1, - "physicsFriction": 0.2, - "physicsStartAwake": true, - "physicsKinematic": false, - "physicsShapePoints": [], - "eventList": [ - {"isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,"parent":{"name":"oTest","path":"objects/oTest/oTest.yy",},"resourceVersion":"1.0","name":null,"tags":[],"resourceType":"GMEvent",}, - ], - "properties": [], - "overriddenProperties": [], - "parent": { - "name": "snap", - "path": "snap.yyp", - }, - "resourceVersion": "1.0", - "name": "oTest", - "tags": [], - "resourceType": "GMObject", -} \ No newline at end of file diff --git a/objects/oTestConfigJSON/oTestConfigJSON.yy b/objects/oTestConfigJSON/oTestConfigJSON.yy deleted file mode 100644 index 91b4a80..0000000 --- a/objects/oTestConfigJSON/oTestConfigJSON.yy +++ /dev/null @@ -1,33 +0,0 @@ -{ - "resourceType": "GMObject", - "resourceVersion": "1.0", - "name": "oTestConfigJSON", - "spriteId": null, - "solid": false, - "visible": true, - "managed": true, - "spriteMaskId": null, - "persistent": false, - "parentObjectId": null, - "physicsObject": false, - "physicsSensor": false, - "physicsShape": 1, - "physicsGroup": 1, - "physicsDensity": 0.5, - "physicsRestitution": 0.1, - "physicsLinearDamping": 0.1, - "physicsAngularDamping": 0.1, - "physicsFriction": 0.2, - "physicsStartAwake": true, - "physicsKinematic": false, - "physicsShapePoints": [], - "eventList": [ - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,}, - ], - "properties": [], - "overriddenProperties": [], - "parent": { - "name": "SNAP", - "path": "SNAP.yyp", - }, -} \ No newline at end of file diff --git a/objects/oTestLooseJSON/Create_0.gml b/objects/oTestLooseJSON/Create_0.gml deleted file mode 100644 index 49f2b01..0000000 --- a/objects/oTestLooseJSON/Create_0.gml +++ /dev/null @@ -1,59 +0,0 @@ -struct = { - a : true, - b : false, - c : undefined, - d : 1/9, - e : 15/100, - array : [ - 5, - 6, - 7, - { - struct : "struct!", - nested : { - nested : "nested!", - array : [ - "more", - "MORE", - "M O R E" - ] - } - } - ], - test : "text! ", - test2: " text!", - test3 : "\"Hello world!\"", - url : "https://www.jujuadams.com/", - func : function() {}, - pointer: ptr(id), - instance: id, -}; - -var _string = SnapToLooseJSON(struct); -show_debug_message(_string); -output = SnapFromLooseJSON(_string); - -show_debug_message(SnapToLooseJSON(SnapFromLooseJSON(SnapToLooseJSON(struct)))); -show_debug_message(SnapToLooseJSON(struct, false, false, true)); -show_debug_message(SnapToLooseJSON(struct, false, true )); -show_debug_message(SnapToLooseJSON(struct, true, false)); -show_debug_message(SnapToLooseJSON(struct, true, true, true)); - -var _string = @'{ -a: 1 //Comment -/* -b: "2" -*/ -c: /*oops*/3, -d: 4//done -e: "string! //"'; -_string += "\nf: @'multiline\n\nstring'\n}"; - -show_debug_message(SnapFromLooseJSON(_string)); - -var _output = SnapFromLooseJSON("{\"f\":\"a\\\\b\"}"); -show_debug_message(_output); - -var _output = SnapFromLooseJSON("{[a,b]:{value:c,other value:d}}"); -_output.b.value = "e"; -show_debug_message(_output); \ No newline at end of file diff --git a/objects/oTestLooseJSON/oTest.yy b/objects/oTestLooseJSON/oTest.yy deleted file mode 100644 index 87a2326..0000000 --- a/objects/oTestLooseJSON/oTest.yy +++ /dev/null @@ -1,33 +0,0 @@ -{ - "spriteId": null, - "solid": false, - "visible": true, - "spriteMaskId": null, - "persistent": false, - "parentObjectId": null, - "physicsObject": false, - "physicsSensor": false, - "physicsShape": 1, - "physicsGroup": 1, - "physicsDensity": 0.5, - "physicsRestitution": 0.1, - "physicsLinearDamping": 0.1, - "physicsAngularDamping": 0.1, - "physicsFriction": 0.2, - "physicsStartAwake": true, - "physicsKinematic": false, - "physicsShapePoints": [], - "eventList": [ - {"isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,"parent":{"name":"oTest","path":"objects/oTest/oTest.yy",},"resourceVersion":"1.0","name":null,"tags":[],"resourceType":"GMEvent",}, - ], - "properties": [], - "overriddenProperties": [], - "parent": { - "name": "snap", - "path": "snap.yyp", - }, - "resourceVersion": "1.0", - "name": "oTest", - "tags": [], - "resourceType": "GMObject", -} \ No newline at end of file diff --git a/objects/oTestLooseJSON/oTestLooseJSON.yy b/objects/oTestLooseJSON/oTestLooseJSON.yy deleted file mode 100644 index 0007f45..0000000 --- a/objects/oTestLooseJSON/oTestLooseJSON.yy +++ /dev/null @@ -1,33 +0,0 @@ -{ - "resourceType": "GMObject", - "resourceVersion": "1.0", - "name": "oTestLooseJSON", - "spriteId": null, - "solid": false, - "visible": true, - "managed": true, - "spriteMaskId": null, - "persistent": false, - "parentObjectId": null, - "physicsObject": false, - "physicsSensor": false, - "physicsShape": 1, - "physicsGroup": 1, - "physicsDensity": 0.5, - "physicsRestitution": 0.1, - "physicsLinearDamping": 0.1, - "physicsAngularDamping": 0.1, - "physicsFriction": 0.2, - "physicsStartAwake": true, - "physicsKinematic": false, - "physicsShapePoints": [], - "eventList": [ - {"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,}, - ], - "properties": [], - "overriddenProperties": [], - "parent": { - "name": "SNAP", - "path": "SNAP.yyp", - }, -} \ No newline at end of file diff --git a/scripts/SnapBufferReadConfigJSON/SnapBufferReadConfigJSON.gml b/scripts/SnapBufferReadConfigJSON/SnapBufferReadConfigJSON.gml deleted file mode 100644 index 6521a0a..0000000 --- a/scripts/SnapBufferReadConfigJSON/SnapBufferReadConfigJSON.gml +++ /dev/null @@ -1,663 +0,0 @@ -// Feather disable all -/// @return Nested struct/array data that represents the contents of the "Config JSON" string -/// -/// @param buffer Buffer to read data from -/// @param offset Offset in the buffer to read data from -/// -/// @jujuadams 2023-04-08 - -function SnapBufferReadConfigJSON(_buffer, _inOffset = undefined) -{ - if (_inOffset != undefined) - { - var _oldOffset = buffer_tell(_buffer); - buffer_seek(_buffer, buffer_seek_start, _inOffset); - } - - var _bufferSize = buffer_get_size(_buffer); - - var _result = undefined; - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - - if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("/"))) - { - __SnapBufferReadConfigJSONComment(_buffer, _bufferSize); - } - else if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("*"))) - { - __SnapBufferReadConfigJSONMultilineComment(_buffer, _bufferSize); - } - else if (_byte == ord("[")) - { - _result = __SnapBufferReadConfigJSONArray(_buffer, _bufferSize); - } - else if (_byte == ord("{")) - { - _result = __SnapBufferReadConfigJSONStruct(_buffer, _bufferSize); - } - else if (_byte > 0x20) - { - show_error("SNAP:\nFound unexpected character " + chr(_byte) + " (decimal=" + string(_byte) + ")\nWas expecting either { or [\n ", true); - } - } - - if (_inOffset != undefined) - { - buffer_seek(_buffer, buffer_seek_start, _oldOffset); - } - - return _result; -} - -function __SnapBufferReadConfigJSONArray(_buffer, _bufferSize) -{ - var _result = []; - - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - - if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("/"))) - { - __SnapBufferReadConfigJSONComment(_buffer, _bufferSize); - } - else if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("*"))) - { - __SnapBufferReadConfigJSONMultilineComment(_buffer, _bufferSize); - } - else if (_byte == ord("]")) - { - return _result; - } - else if ((_byte == ord(":")) || (_byte == ord(","))) - { - show_error("SNAP:\nFound unexpected character " + chr(_byte) + " (decimal=" + string(_byte) + ")\nWas expecting a value\n ", true); - } - else if (_byte > 0x20) - { - var _value = __SnapBufferReadConfigJSONValue(_buffer, _bufferSize, _byte); - array_push(_result, _value); - - //Find a comma, newline, or closing bracket - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - if (_byte == ord("]")) - { - return _result; - } - else if ((_byte == ord(",")) || (_byte == ord("\n")) || (_byte == ord("\r"))) - { - break; - } - else if (_byte > 0x20) - { - show_error("SNAP:\nFound unexpected character " + chr(_byte) + " (decimal=" + string(_byte) + ")\nWas expecting comma, newline, or closing bracket\n ", true); - } - } - } - } - - show_error("SNAP:\nFound unterminated array\n ", true); -} - -function __SnapBufferReadConfigJSONStruct(_buffer, _bufferSize) -{ - var _result = {}; - - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - - if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("/"))) - { - __SnapBufferReadConfigJSONComment(_buffer, _bufferSize); - } - else if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("*"))) - { - __SnapBufferReadConfigJSONMultilineComment(_buffer, _bufferSize); - } - else if (_byte == ord("}")) - { - //Handle empty structs - if (array_length(_result) <= 0) array_push(_result, {}); - - return _result; - } - else if ((_byte == ord(":")) || (_byte == ord(","))) - { - show_error("SNAP:\nFound unexpected character " + chr(_byte) + " (decimal=" + string(_byte) + ")\nWas expecting a key\n ", true); - } - else if (_byte > 0x20) - { - var _key = __SnapBufferReadConfigJSONValue(_buffer, _bufferSize, _byte); - - if (!is_string(_key)) - { - if (is_array(_key)) - { - var _keyArray = _key; - var _keyArrayLength = array_length(_keyArray); - - if (_keyArrayLength <= 0) - { - show_error("SNAP:\nStruct key arrays must have at least one element\n ", true); - } - else if (_keyArrayLength <= 1) - { - if (!is_string(_keyArray[0])) show_error("SNAP:\nStruct keys must be strings (key was " + string(_keyArray[0]) + ", typeof=" + typeof(_keyArray[0]) + ")\n ", true); - } - } - else - { - show_error("SNAP:\nStruct keys must be strings (key was " + string(_key) + ", typeof=" + typeof(_key) + ")\n ", true); - } - } - - //Find a colon - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - - if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("*"))) - { - __SnapBufferReadConfigJSONMultilineComment(_buffer, _bufferSize); - } - else if (_byte == ord(":")) - { - break; - } - else if (_byte > 0x20) - { - show_error("SNAP:\nFound unexpected character " + chr(_byte) + " (decimal=" + string(_byte) + ")\nWas expecting a colon\n ", true); - } - } - - //Find the start of a value - var _byte = 0x00; - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - - if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("*"))) - { - __SnapBufferReadConfigJSONMultilineComment(_buffer, _bufferSize); - } - else if (_byte > 0x20) - { - break; - } - } - if (_byte <= 0x20) show_error("SNAP:\nCould not find start of value for key \"" + _key + "\"\n ", true); - - //Read a value and store it in the struct - var _value = __SnapBufferReadConfigJSONValue(_buffer, _bufferSize, _byte); - - if (is_string(_key)) - { - __SnapBufferReadConfigJSONStructMerge(_result, _key, _value); - } - else //Is an array - { - //Use the original return value to set the first key - __SnapBufferReadConfigJSONStructMerge(_result, _keyArray[0], _value); - - //Use duplicate return values for subsequent keys - var _i = 1; - repeat(_keyArrayLength-1) - { - var _key = _keyArray[_i]; - if (!is_string(_key)) show_error("SNAP:\nStruct keys must be strings (key was " + string(_key) + ", typeof=" + typeof(_key) + ")\n ", true); - __SnapBufferReadConfigJSONStructMerge(_result, _key, __SnapBufferReadConfigJSONDeepCopyInner(_value, self, self)); - ++_i; - } - } - - //Find a comma, newline, or closing bracket - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - - if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("*"))) - { - __SnapBufferReadConfigJSONMultilineComment(_buffer, _bufferSize); - } - else if (_byte == ord("}")) - { - return _result; - } - else if ((_byte == ord(",")) || (_byte == ord("\n")) || (_byte == ord("\r"))) - { - break; - } - else if (_byte > 0x20) - { - show_error("SNAP:\nFound unexpected character " + chr(_byte) + " (decimal=" + string(_byte) + ")\nWas expecting comma, newline, or closing bracket\n ", true); - } - } - } - } - - show_error("SNAP:\nFound unterminated struct\n ", true); -} - -function __SnapBufferReadConfigJSONStructMerge(_rootStruct, _key, _newValue) -{ - if (variable_struct_exists(_rootStruct, _key)) - { - var _oldValue = _rootStruct[$ _key]; - if (is_array(_oldValue)) - { - if (is_array(_newValue)) - { - //Merge the new values into the old values - var _i = 0; - repeat(array_length(_newValue)) - { - array_push(_oldValue, _newValue[_i]); - ++_i; - } - - return; - } - } - else if (is_struct(_oldValue)) - { - if (is_struct(_newValue)) - { - //Merge the new values into the old values - var _variableNameArray = variable_struct_get_names(_newValue); - var _i = 0; - repeat(array_length(_variableNameArray)) - { - var _variableName = _variableNameArray[_i]; - __SnapBufferReadConfigJSONStructMerge(_oldValue, _variableName, _newValue[$ _variableName]); - ++_i; - } - - return; - } - } - } - - _rootStruct[$ _key] = _newValue; -} - -function __SnapBufferReadConfigJSONValue(_buffer, _bufferSize, _firstByte) -{ - if (_firstByte == ord("[")) - { - return __SnapBufferReadConfigJSONArray(_buffer, _bufferSize); - } - else if (_firstByte == ord("{")) - { - return __SnapBufferReadConfigJSONStruct(_buffer, _bufferSize); - } - else if (_firstByte == ord("\"")) - { - return __SnapBufferReadConfigJSONDelimitedString(_buffer, _bufferSize); - } - else - { - return __SnapBufferReadConfigJSONString(_buffer, _bufferSize); - } -} - -function __SnapBufferReadConfigJSONDelimitedString(_buffer, _bufferSize) -{ - static _cacheBuffer = buffer_create(1024, buffer_grow, 1); - buffer_seek(_cacheBuffer, buffer_seek_start, 0); - - var _start = buffer_tell(_buffer); - var _stringUsesCache = false; - - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - - if (_byte == ord("\"")) - { - if (_stringUsesCache) - { - var _size = buffer_tell(_buffer) - _start-1; - if (_size > 0) - { - buffer_copy(_buffer, _start, _size, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_cacheBuffer, buffer_seek_relative, _size); - } - - buffer_write(_cacheBuffer, buffer_u8, 0x00); - buffer_seek(_cacheBuffer, buffer_seek_start, 0); - var _result = buffer_read(_cacheBuffer, buffer_string); - } - else - { - var _end = buffer_tell(_buffer)-1; - var _oldByte = buffer_peek(_buffer, _end, buffer_u8); - buffer_poke(_buffer, _end, buffer_u8, 0x00); - var _result = buffer_peek(_buffer, _start, buffer_string); - buffer_poke(_buffer, _end, buffer_u8, _oldByte); - } - - return _result; - } - else if (_byte == ord("\\")) - { - _stringUsesCache = true; - - var _size = buffer_tell(_buffer) - _start-1; - if (_size > 0) - { - buffer_copy(_buffer, _start, _size, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_cacheBuffer, buffer_seek_relative, _size); - } - - var _byte = buffer_read(_buffer, buffer_u8); - switch(_byte) - { - case ord("n"): buffer_write(_cacheBuffer, buffer_u8, ord("\n")); break; - case ord("r"): buffer_write(_cacheBuffer, buffer_u8, ord("\r")); break; - case ord("t"): buffer_write(_cacheBuffer, buffer_u8, ord("\t")); break; - - case ord("u"): - var _oldByte = buffer_peek(_buffer, buffer_tell(_buffer)+4, buffer_u8); - buffer_poke(_buffer, buffer_tell(_buffer)+4, buffer_u8, 0x00); - var _hex = buffer_read(_buffer, buffer_string); - buffer_seek(_buffer, buffer_seek_relative, -1); - buffer_poke(_buffer, buffer_tell(_buffer), buffer_u8, _oldByte); - - var _value = int64(ptr(_hex)); - if (_value <= 0x7F) //0xxxxxxx - { - buffer_write(_cacheBuffer, buffer_u8, _value); - } - else if (_value <= 0x07FF) //110xxxxx 10xxxxxx - { - buffer_write(_cacheBuffer, buffer_u8, 0xC0 | ((_value >> 6) & 0x1F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ( _value & 0x3F)); - } - else if (_value <= 0xFFFF) //1110xxxx 10xxxxxx 10xxxxxx - { - buffer_write(_cacheBuffer, buffer_u8, 0xC0 | ( _value & 0x0F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 4) & 0x3F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 10) & 0x3F)); - } - else if (_value <= 0x10000) //11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - { - buffer_write(_cacheBuffer, buffer_u8, 0xC0 | ( _value & 0x07)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 3) & 0x3F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 9) & 0x3F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 15) & 0x3F)); - } - break; - - default: - if ((_byte & $E0) == $C0) //110xxxxx 10xxxxxx - { - buffer_copy(_buffer, buffer_tell(_buffer)+1, 1, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_buffer, buffer_seek_relative, 1); - buffer_seek(_cacheBuffer, buffer_seek_relative, 1); - } - else if ((_byte & $F0) == $E0) //1110xxxx 10xxxxxx 10xxxxxx - { - buffer_copy(_buffer, buffer_tell(_buffer)+1, 2, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_buffer, buffer_seek_relative, 2); - buffer_seek(_cacheBuffer, buffer_seek_relative, 2); - } - else if ((_byte & $F8) == $F0) //11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - { - buffer_copy(_buffer, buffer_tell(_buffer)+1, 3, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_buffer, buffer_seek_relative, 3); - buffer_seek(_cacheBuffer, buffer_seek_relative, 3); - } - else - { - buffer_write(_cacheBuffer, buffer_u8, _byte); - } - break; - } - - _start = buffer_tell(_buffer); - } - } - - show_error("SNAP:\nFound unterminated string\n ", true); -} - -function __SnapBufferReadConfigJSONString(_buffer, _bufferSize) -{ - static _cacheBuffer = buffer_create(1024, buffer_grow, 1); - buffer_seek(_cacheBuffer, buffer_seek_start, 0); - - var _result = undefined; - - var _start = buffer_tell(_buffer)-1; - var _end = _start+1; - - var _stringUsesCache = false; - - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - - if ((_byte == ord(":")) - || (_byte == ord(",")) - || (_byte == ord("}")) - || (_byte == ord("]")) - || (_byte == ord("\n")) - || (_byte == ord("\r")) - || ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("*")))) - { - if (_stringUsesCache) - { - var _size = _end - _start; - if (_size > 0) - { - buffer_copy(_buffer, _start, _size, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_cacheBuffer, buffer_seek_relative, _size); - } - - buffer_write(_cacheBuffer, buffer_u8, 0x00); - buffer_seek(_cacheBuffer, buffer_seek_start, 0); - var _result = buffer_read(_cacheBuffer, buffer_string); - } - else - { - var _oldByte = buffer_peek(_buffer, _end, buffer_u8); - buffer_poke(_buffer, _end, buffer_u8, 0x00); - var _result = buffer_peek(_buffer, _start, buffer_string); - buffer_poke(_buffer, _end, buffer_u8, _oldByte); - - if (_result == "true") - { - _result = true; - } - else if (_result == "false") - { - _result = false; - } - else if (_result == "null") - { - _result = undefined; - } - else - { - try - { - _result = real(_result); - } - catch(_error) - { - //Not a number apparently - } - } - } - - buffer_seek(_buffer, buffer_seek_relative, -1); - - if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("*"))) - { - __SnapBufferReadConfigJSONMultilineComment(_buffer, _bufferSize); - } - - return _result; - } - else if (_byte == ord("\\")) - { - _stringUsesCache = true; - - var _size = buffer_tell(_buffer) - _start-1; - if (_size > 0) - { - buffer_copy(_buffer, _start, _size, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_cacheBuffer, buffer_seek_relative, _size); - } - - var _byte = buffer_read(_buffer, buffer_u8); - switch(_byte) - { - case ord("n"): buffer_write(_cacheBuffer, buffer_u8, ord("\n")); break; - case ord("r"): buffer_write(_cacheBuffer, buffer_u8, ord("\r")); break; - case ord("t"): buffer_write(_cacheBuffer, buffer_u8, ord("\t")); break; - - case ord("u"): - var _oldByte = buffer_peek(_buffer, buffer_tell(_buffer)+4, buffer_u8); - buffer_poke(_buffer, buffer_tell(_buffer)+4, buffer_u8, 0x00); - var _hex = buffer_read(_buffer, buffer_string); - buffer_seek(_buffer, buffer_seek_relative, -1); - buffer_poke(_buffer, buffer_tell(_buffer), buffer_u8, _oldByte); - - var _value = int64(ptr(_hex)); - if (_value <= 0x7F) //0xxxxxxx - { - buffer_write(_cacheBuffer, buffer_u8, _value); - } - else if (_value <= 0x07FF) //110xxxxx 10xxxxxx - { - buffer_write(_cacheBuffer, buffer_u8, 0xC0 | ((_value >> 6) & 0x1F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ( _value & 0x3F)); - } - else if (_value <= 0xFFFF) //1110xxxx 10xxxxxx 10xxxxxx - { - buffer_write(_cacheBuffer, buffer_u8, 0xC0 | ( _value & 0x0F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 4) & 0x3F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 10) & 0x3F)); - } - else if (_value <= 0x10000) //11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - { - buffer_write(_cacheBuffer, buffer_u8, 0xC0 | ( _value & 0x07)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 3) & 0x3F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 9) & 0x3F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 15) & 0x3F)); - } - break; - - default: - if ((_byte & $E0) == $C0) //110xxxxx 10xxxxxx - { - buffer_copy(_buffer, buffer_tell(_buffer)+1, 1, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_buffer, buffer_seek_relative, 1); - buffer_seek(_cacheBuffer, buffer_seek_relative, 1); - } - else if ((_byte & $F0) == $E0) //1110xxxx 10xxxxxx 10xxxxxx - { - buffer_copy(_buffer, buffer_tell(_buffer)+1, 2, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_buffer, buffer_seek_relative, 2); - buffer_seek(_cacheBuffer, buffer_seek_relative, 2); - } - else if ((_byte & $F8) == $F0) //11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - { - buffer_copy(_buffer, buffer_tell(_buffer)+1, 3, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_buffer, buffer_seek_relative, 3); - buffer_seek(_cacheBuffer, buffer_seek_relative, 3); - } - else - { - buffer_write(_cacheBuffer, buffer_u8, _byte); - } - break; - } - - _start = buffer_tell(_buffer); - } - else if (_byte > 0x20) - { - _end = buffer_tell(_buffer); - } - } - - show_error("SNAP:\nFound unterminated value\n ", true); -} - -function __SnapBufferReadConfigJSONComment(_buffer, _bufferSize) -{ - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - if ((_byte == ord("\n")) || (_byte == ord("\r"))) - { - buffer_seek(_buffer, buffer_seek_relative, -1); - break; - } - } -} - -function __SnapBufferReadConfigJSONMultilineComment(_buffer, _bufferSize) -{ - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - if (_byte == ord("*")) - { - _byte = buffer_read(_buffer, buffer_u8); - if (_byte == ord("/")) break; - } - } -} - -function __SnapBufferReadConfigJSONDeepCopyInner(_value, _oldStruct, _newStruct) -{ - var _copy = _value; - - if (is_method(_value)) - { - var _self = method_get_self(_value); - if (_self == _oldStruct) - { - //If this method is bound to the source struct, create a new method bound to the new struct - _value = method(_newStruct, method_get_index(_value)); - } - else if (_self != undefined) - { - //If the scope of the method isn't (global) then spit out a warning - show_debug_message("SnapDeepCopy(): Warning! Deep copy found a method reference that could not be appropriately handled"); - } - } - else if (is_struct(_value)) - { - var _namesArray = variable_struct_get_names(_value); - var _copy = {}; - var _i = 0; - repeat(array_length(_namesArray)) - { - var _name = _namesArray[_i]; - _copy[$ _name] = __SnapBufferReadConfigJSONDeepCopyInner(_value[$ _name], _value, _copy); - ++_i; - } - } - else if (is_array(_value)) - { - var _count = array_length(_value); - var _copy = array_create(_count); - var _i = 0; - repeat(_count) - { - _copy[@ _i] = __SnapBufferReadConfigJSONDeepCopyInner(_value[_i], _oldStruct, _newStruct); - ++_i; - } - } - - return _copy; -} diff --git a/scripts/SnapBufferReadConfigJSON/SnapBufferReadConfigJSON.yy b/scripts/SnapBufferReadConfigJSON/SnapBufferReadConfigJSON.yy deleted file mode 100644 index 0112355..0000000 --- a/scripts/SnapBufferReadConfigJSON/SnapBufferReadConfigJSON.yy +++ /dev/null @@ -1,11 +0,0 @@ -{ - "resourceType": "GMScript", - "resourceVersion": "1.0", - "name": "SnapBufferReadConfigJSON", - "isDnD": false, - "isCompatibility": false, - "parent": { - "name": "Config JSON", - "path": "folders/SNAP/Config JSON.yy", - }, -} \ No newline at end of file diff --git a/scripts/SnapBufferReadLooseJSON/SnapBufferReadLooseJSON.gml b/scripts/SnapBufferReadLooseJSON/SnapBufferReadLooseJSON.gml deleted file mode 100644 index 875d980..0000000 --- a/scripts/SnapBufferReadLooseJSON/SnapBufferReadLooseJSON.gml +++ /dev/null @@ -1,658 +0,0 @@ -// Feather disable all -/// @return Nested struct/array data that represents the contents of the "Loose JSON" string -/// -/// @param buffer Buffer to read data from -/// @param offset Offset in the buffer to read data from -/// -/// @jujuadams 2022-12-11 - -function SnapBufferReadLooseJSON(_buffer, _inOffset = undefined) -{ - if (_inOffset != undefined) - { - var _oldOffset = buffer_tell(_buffer); - buffer_seek(_buffer, buffer_seek_start, _inOffset); - } - - var _bufferSize = buffer_get_size(_buffer); - - var _result = undefined; - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - - if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("/"))) - { - __SnapBufferReadLooseJSONComment(_buffer, _bufferSize); - } - else if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("*"))) - { - __SnapBufferReadLooseJSONMultilineComment(_buffer, _bufferSize); - } - else if (_byte == ord("[")) - { - _result = __SnapBufferReadLooseJSONArray(_buffer, _bufferSize); - } - else if (_byte == ord("{")) - { - _result = __SnapBufferReadLooseJSONStruct(_buffer, _bufferSize); - } - else if (_byte > 0x20) - { - show_error("SNAP:\nFound unexpected character " + chr(_byte) + " (decimal=" + string(_byte) + ")\nWas expecting either { or [\n ", true); - } - } - - if (_inOffset != undefined) - { - buffer_seek(_buffer, buffer_seek_start, _oldOffset); - } - - return _result; -} - -function __SnapBufferReadLooseJSONArray(_buffer, _bufferSize) -{ - var _result = []; - - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - - if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("/"))) - { - __SnapBufferReadLooseJSONComment(_buffer, _bufferSize); - } - else if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("*"))) - { - __SnapBufferReadLooseJSONMultilineComment(_buffer, _bufferSize); - } - else if (_byte == ord("]")) - { - return _result; - } - else if ((_byte == ord(":")) || (_byte == ord(","))) - { - show_error("SNAP:\nFound unexpected character " + chr(_byte) + " (decimal=" + string(_byte) + ")\nWas expecting a value\n ", true); - } - else if (_byte > 0x20) - { - var _value = __SnapBufferReadLooseJSONValue(_buffer, _bufferSize, _byte); - array_push(_result, _value); - - //Find a comma, newline, or closing bracket - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - if (_byte == ord("]")) - { - return _result; - } - else if ((_byte == ord(",")) || (_byte == ord("\n")) || (_byte == ord("\r"))) - { - break; - } - else if (_byte > 0x20) - { - show_error("SNAP:\nFound unexpected character " + chr(_byte) + " (decimal=" + string(_byte) + ")\nWas expecting comma, newline, or closing bracket\n ", true); - } - } - } - } - - show_error("SNAP:\nFound unterminated array\n ", true); -} - -function __SnapBufferReadLooseJSONStruct(_buffer, _bufferSize) -{ - var _result = {}; - - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - - if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("/"))) - { - __SnapBufferReadLooseJSONComment(_buffer, _bufferSize); - } - else if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("*"))) - { - __SnapBufferReadLooseJSONMultilineComment(_buffer, _bufferSize); - } - else if (_byte == ord("}")) - { - return _result; - } - else if ((_byte == ord(":")) || (_byte == ord(","))) - { - show_error("SNAP:\nFound unexpected character " + chr(_byte) + " (decimal=" + string(_byte) + ")\nWas expecting a key\n ", true); - } - else if (_byte > 0x20) - { - var _key = __SnapBufferReadLooseJSONValue(_buffer, _bufferSize, _byte); - - if (!is_string(_key)) - { - if (is_array(_key)) - { - var _keyArray = _key; - var _keyArrayLength = array_length(_keyArray); - - if (_keyArrayLength <= 0) - { - show_error("SNAP:\nStruct key arrays must have at least one element\n ", true); - } - else if (_keyArrayLength <= 1) - { - if (!is_string(_keyArray[0])) show_error("SNAP:\nStruct keys must be strings (key was " + string(_keyArray[0]) + ", typeof=" + typeof(_keyArray[0]) + ")\n ", true); - } - } - else - { - show_error("SNAP:\nStruct keys must be strings (key was " + string(_key) + ", typeof=" + typeof(_key) + ")\n ", true); - } - } - - //Find a colon - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - - if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("*"))) - { - __SnapBufferReadLooseJSONMultilineComment(_buffer, _bufferSize); - } - else if (_byte == ord(":")) - { - break; - } - else if (_byte > 0x20) - { - show_error("SNAP:\nFound unexpected character " + chr(_byte) + " (decimal=" + string(_byte) + ")\nWas expecting a colon\n ", true); - } - } - - //Find the start of a value - var _byte = 0x00; - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - - if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("*"))) - { - __SnapBufferReadLooseJSONMultilineComment(_buffer, _bufferSize); - } - else if (_byte > 0x20) - { - break; - } - } - if (_byte <= 0x20) show_error("SNAP:\nCould not find start of value for key \"" + _key + "\"\n ", true); - - //Read a value and store it in the struct - var _value = __SnapBufferReadLooseJSONValue(_buffer, _bufferSize, _byte); - - if (is_string(_key)) - { - _result[$ _key] = _value; - } - else //Is an array - { - //Use the original return value to set the first key - _result[$ _keyArray[0]] = _value; - - //Use duplicate return values for subsequent keys - var _i = 1; - repeat(_keyArrayLength-1) - { - var _key = _keyArray[_i]; - if (!is_string(_key)) show_error("SNAP:\nStruct keys must be strings (key was " + string(_key) + ", typeof=" + typeof(_key) + ")\n ", true); - _result[$ _key] = __SnapBufferReadLooseJSONDeepCopyInner(_value, self, self); - ++_i; - } - } - - //Find a comma, newline, or closing bracket - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - - if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("*"))) - { - __SnapBufferReadLooseJSONMultilineComment(_buffer, _bufferSize); - } - else if (_byte == ord("}")) - { - return _result; - } - else if ((_byte == ord(",")) || (_byte == ord("\n")) || (_byte == ord("\r"))) - { - break; - } - else if (_byte > 0x20) - { - show_error("SNAP:\nFound unexpected character " + chr(_byte) + " (decimal=" + string(_byte) + ")\nWas expecting comma, newline, or closing bracket\n ", true); - } - } - } - } - - show_error("SNAP:\nFound unterminated struct\n ", true); -} - -function __SnapBufferReadLooseJSONValue(_buffer, _bufferSize, _firstByte) -{ - if (_firstByte == ord("[")) - { - return __SnapBufferReadLooseJSONArray(_buffer, _bufferSize); - } - else if (_firstByte == ord("{")) - { - return __SnapBufferReadLooseJSONStruct(_buffer, _bufferSize); - } - else if (_firstByte == ord("\"")) - { - return __SnapBufferReadLooseJSONDelimitedString(_buffer, _bufferSize); - } - else if ((_firstByte == ord("@")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("'"))) - { - buffer_seek(_buffer, buffer_seek_relative, 1); - return __SnapBufferReadLooseJSONMultilineString(_buffer, _bufferSize); - } - else - { - return __SnapBufferReadLooseJSONString(_buffer, _bufferSize); - } -} - -function __SnapBufferReadLooseJSONDelimitedString(_buffer, _bufferSize) -{ - static _cacheBuffer = buffer_create(1024, buffer_grow, 1); - buffer_seek(_cacheBuffer, buffer_seek_start, 0); - - var _start = buffer_tell(_buffer); - var _stringUsesCache = false; - - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - - if (_byte == ord("\"")) - { - if (_stringUsesCache) - { - var _size = buffer_tell(_buffer) - _start-1; - if (_size > 0) - { - buffer_copy(_buffer, _start, _size, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_cacheBuffer, buffer_seek_relative, _size); - } - - buffer_write(_cacheBuffer, buffer_u8, 0x00); - buffer_seek(_cacheBuffer, buffer_seek_start, 0); - var _result = buffer_read(_cacheBuffer, buffer_string); - } - else - { - var _end = buffer_tell(_buffer)-1; - var _oldByte = buffer_peek(_buffer, _end, buffer_u8); - buffer_poke(_buffer, _end, buffer_u8, 0x00); - var _result = buffer_peek(_buffer, _start, buffer_string); - buffer_poke(_buffer, _end, buffer_u8, _oldByte); - } - - return _result; - } - else if (_byte == ord("\\")) - { - _stringUsesCache = true; - - var _size = buffer_tell(_buffer) - _start-1; - if (_size > 0) - { - buffer_copy(_buffer, _start, _size, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_cacheBuffer, buffer_seek_relative, _size); - } - - var _byte = buffer_read(_buffer, buffer_u8); - switch(_byte) - { - case ord("n"): buffer_write(_cacheBuffer, buffer_u8, ord("\n")); break; - case ord("r"): buffer_write(_cacheBuffer, buffer_u8, ord("\r")); break; - case ord("t"): buffer_write(_cacheBuffer, buffer_u8, ord("\t")); break; - - case ord("u"): - var _oldByte = buffer_peek(_buffer, buffer_tell(_buffer)+4, buffer_u8); - buffer_poke(_buffer, buffer_tell(_buffer)+4, buffer_u8, 0x00); - var _hex = buffer_read(_buffer, buffer_string); - buffer_seek(_buffer, buffer_seek_relative, -1); - buffer_poke(_buffer, buffer_tell(_buffer), buffer_u8, _oldByte); - - var _value = int64(ptr(_hex)); - if (_value <= 0x7F) //0xxxxxxx - { - buffer_write(_cacheBuffer, buffer_u8, _value); - } - else if (_value <= 0x07FF) //110xxxxx 10xxxxxx - { - buffer_write(_cacheBuffer, buffer_u8, 0xC0 | ((_value >> 6) & 0x1F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ( _value & 0x3F)); - } - else if (_value <= 0xFFFF) //1110xxxx 10xxxxxx 10xxxxxx - { - buffer_write(_cacheBuffer, buffer_u8, 0xC0 | ( _value & 0x0F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 4) & 0x3F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 10) & 0x3F)); - } - else if (_value <= 0x10000) //11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - { - buffer_write(_cacheBuffer, buffer_u8, 0xC0 | ( _value & 0x07)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 3) & 0x3F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 9) & 0x3F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 15) & 0x3F)); - } - break; - - default: - if ((_byte & $E0) == $C0) //110xxxxx 10xxxxxx - { - buffer_copy(_buffer, buffer_tell(_buffer)+1, 1, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_buffer, buffer_seek_relative, 1); - buffer_seek(_cacheBuffer, buffer_seek_relative, 1); - } - else if ((_byte & $F0) == $E0) //1110xxxx 10xxxxxx 10xxxxxx - { - buffer_copy(_buffer, buffer_tell(_buffer)+1, 2, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_buffer, buffer_seek_relative, 2); - buffer_seek(_cacheBuffer, buffer_seek_relative, 2); - } - else if ((_byte & $F8) == $F0) //11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - { - buffer_copy(_buffer, buffer_tell(_buffer)+1, 3, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_buffer, buffer_seek_relative, 3); - buffer_seek(_cacheBuffer, buffer_seek_relative, 3); - } - else - { - buffer_write(_cacheBuffer, buffer_u8, _byte); - } - break; - } - - _start = buffer_tell(_buffer); - } - } - - show_error("SNAP:\nFound unterminated string\n ", true); -} - -function __SnapBufferReadLooseJSONMultilineString(_buffer, _bufferSize) -{ - static _cacheBuffer = buffer_create(1024, buffer_grow, 1); - buffer_seek(_cacheBuffer, buffer_seek_start, 0); - - var _start = buffer_tell(_buffer); - var _inString = false; - - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - - if (_byte == ord("\"")) - { - if ((buffer_peek(_buffer, buffer_tell(_buffer)-2, buffer_u8) != ord("\\")) - && (buffer_peek(_buffer, buffer_tell(_buffer)-3, buffer_u8) != ord("\\"))) - { - _inString = !_inString; - } - } - else if (!_inString && (_byte == ord("'"))) - { - var _end = buffer_tell(_buffer)-1; - var _oldByte = buffer_peek(_buffer, _end, buffer_u8); - buffer_poke(_buffer, _end, buffer_u8, 0x00); - var _result = buffer_peek(_buffer, _start, buffer_string); - buffer_poke(_buffer, _end, buffer_u8, _oldByte); - - return _result; - } - } - - show_error("SNAP:\nFound unterminated multiline string\n ", true); -} - -function __SnapBufferReadLooseJSONString(_buffer, _bufferSize) -{ - static _cacheBuffer = buffer_create(1024, buffer_grow, 1); - buffer_seek(_cacheBuffer, buffer_seek_start, 0); - - var _result = undefined; - - var _start = buffer_tell(_buffer)-1; - var _end = _start+1; - - var _stringUsesCache = false; - - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - - if ((_byte == ord(":")) - || (_byte == ord(",")) - || (_byte == ord("}")) - || (_byte == ord("]")) - || (_byte == ord("\n")) - || (_byte == ord("\r")) - || ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("*")))) - { - if (_stringUsesCache) - { - var _size = _end - _start; - if (_size > 0) - { - buffer_copy(_buffer, _start, _size, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_cacheBuffer, buffer_seek_relative, _size); - } - - buffer_write(_cacheBuffer, buffer_u8, 0x00); - buffer_seek(_cacheBuffer, buffer_seek_start, 0); - var _result = buffer_read(_cacheBuffer, buffer_string); - } - else - { - var _oldByte = buffer_peek(_buffer, _end, buffer_u8); - buffer_poke(_buffer, _end, buffer_u8, 0x00); - var _result = buffer_peek(_buffer, _start, buffer_string); - buffer_poke(_buffer, _end, buffer_u8, _oldByte); - - if (_result == "true") - { - _result = true; - } - else if (_result == "false") - { - _result = false; - } - else if (_result == "null") - { - _result = undefined; - } - else - { - try - { - _result = real(_result); - } - catch(_error) - { - //Not a number apparently - } - } - } - - buffer_seek(_buffer, buffer_seek_relative, -1); - - if ((_byte == ord("/")) && (buffer_peek(_buffer, buffer_tell(_buffer), buffer_u8) == ord("*"))) - { - __SnapBufferReadLooseJSONMultilineComment(_buffer, _bufferSize); - } - - return _result; - } - else if (_byte == ord("\\")) - { - _stringUsesCache = true; - - var _size = buffer_tell(_buffer) - _start-1; - if (_size > 0) - { - buffer_copy(_buffer, _start, _size, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_cacheBuffer, buffer_seek_relative, _size); - } - - var _byte = buffer_read(_buffer, buffer_u8); - switch(_byte) - { - case ord("n"): buffer_write(_cacheBuffer, buffer_u8, ord("\n")); break; - case ord("r"): buffer_write(_cacheBuffer, buffer_u8, ord("\r")); break; - case ord("t"): buffer_write(_cacheBuffer, buffer_u8, ord("\t")); break; - - case ord("u"): - var _oldByte = buffer_peek(_buffer, buffer_tell(_buffer)+4, buffer_u8); - buffer_poke(_buffer, buffer_tell(_buffer)+4, buffer_u8, 0x00); - var _hex = buffer_read(_buffer, buffer_string); - buffer_seek(_buffer, buffer_seek_relative, -1); - buffer_poke(_buffer, buffer_tell(_buffer), buffer_u8, _oldByte); - - var _value = int64(ptr(_hex)); - if (_value <= 0x7F) //0xxxxxxx - { - buffer_write(_cacheBuffer, buffer_u8, _value); - } - else if (_value <= 0x07FF) //110xxxxx 10xxxxxx - { - buffer_write(_cacheBuffer, buffer_u8, 0xC0 | ((_value >> 6) & 0x1F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ( _value & 0x3F)); - } - else if (_value <= 0xFFFF) //1110xxxx 10xxxxxx 10xxxxxx - { - buffer_write(_cacheBuffer, buffer_u8, 0xC0 | ( _value & 0x0F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 4) & 0x3F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 10) & 0x3F)); - } - else if (_value <= 0x10000) //11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - { - buffer_write(_cacheBuffer, buffer_u8, 0xC0 | ( _value & 0x07)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 3) & 0x3F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 9) & 0x3F)); - buffer_write(_cacheBuffer, buffer_u8, 0x80 | ((_value >> 15) & 0x3F)); - } - break; - - default: - if ((_byte & $E0) == $C0) //110xxxxx 10xxxxxx - { - buffer_copy(_buffer, buffer_tell(_buffer)+1, 1, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_buffer, buffer_seek_relative, 1); - buffer_seek(_cacheBuffer, buffer_seek_relative, 1); - } - else if ((_byte & $F0) == $E0) //1110xxxx 10xxxxxx 10xxxxxx - { - buffer_copy(_buffer, buffer_tell(_buffer)+1, 2, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_buffer, buffer_seek_relative, 2); - buffer_seek(_cacheBuffer, buffer_seek_relative, 2); - } - else if ((_byte & $F8) == $F0) //11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - { - buffer_copy(_buffer, buffer_tell(_buffer)+1, 3, _cacheBuffer, buffer_tell(_cacheBuffer)); - buffer_seek(_buffer, buffer_seek_relative, 3); - buffer_seek(_cacheBuffer, buffer_seek_relative, 3); - } - else - { - buffer_write(_cacheBuffer, buffer_u8, _byte); - } - break; - } - - _start = buffer_tell(_buffer); - } - else if (_byte > 0x20) - { - _end = buffer_tell(_buffer); - } - } - - show_error("SNAP:\nFound unterminated value\n ", true); -} - -function __SnapBufferReadLooseJSONComment(_buffer, _bufferSize) -{ - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - if ((_byte == ord("\n")) || (_byte == ord("\r"))) - { - buffer_seek(_buffer, buffer_seek_relative, -1); - break; - } - } -} - -function __SnapBufferReadLooseJSONMultilineComment(_buffer, _bufferSize) -{ - while(buffer_tell(_buffer) < _bufferSize) - { - var _byte = buffer_read(_buffer, buffer_u8); - if (_byte == ord("*")) - { - _byte = buffer_read(_buffer, buffer_u8); - if (_byte == ord("/")) break; - } - } -} - -function __SnapBufferReadLooseJSONDeepCopyInner(_value, _oldStruct, _newStruct) -{ - var _copy = _value; - - if (is_method(_value)) - { - var _self = method_get_self(_value); - if (_self == _oldStruct) - { - //If this method is bound to the source struct, create a new method bound to the new struct - _value = method(_newStruct, method_get_index(_value)); - } - else if (_self != undefined) - { - //If the scope of the method isn't (global) then spit out a warning - show_debug_message("SnapDeepCopy(): Warning! Deep copy found a method reference that could not be appropriately handled"); - } - } - else if (is_struct(_value)) - { - var _namesArray = variable_struct_get_names(_value); - var _copy = {}; - var _i = 0; - repeat(array_length(_namesArray)) - { - var _name = _namesArray[_i]; - _copy[$ _name] = __SnapBufferReadLooseJSONDeepCopyInner(_value[$ _name], _value, _copy); - ++_i; - } - } - else if (is_array(_value)) - { - var _count = array_length(_value); - var _copy = array_create(_count); - var _i = 0; - repeat(_count) - { - _copy[@ _i] = __SnapBufferReadLooseJSONDeepCopyInner(_value[_i], _oldStruct, _newStruct); - ++_i; - } - } - - return _copy; -} diff --git a/scripts/SnapBufferReadLooseJSON/SnapBufferReadLooseJSON.yy b/scripts/SnapBufferReadLooseJSON/SnapBufferReadLooseJSON.yy deleted file mode 100644 index 867a398..0000000 --- a/scripts/SnapBufferReadLooseJSON/SnapBufferReadLooseJSON.yy +++ /dev/null @@ -1,11 +0,0 @@ -{ - "resourceType": "GMScript", - "resourceVersion": "1.0", - "name": "SnapBufferReadLooseJSON", - "isDnD": false, - "isCompatibility": false, - "parent": { - "name": "Loose JSON", - "path": "folders/SNAP/Loose JSON.yy", - }, -} \ No newline at end of file diff --git a/scripts/SnapBufferWriteLooseJSON/SnapBufferWriteLooseJSON.gml b/scripts/SnapBufferWriteLooseJSON/SnapBufferWriteLooseJSON.gml deleted file mode 100644 index 8c2f30f..0000000 --- a/scripts/SnapBufferWriteLooseJSON/SnapBufferWriteLooseJSON.gml +++ /dev/null @@ -1,231 +0,0 @@ -// Feather disable all -/// @return "Loose JSON" string that encodes the struct/array nested data -/// -/// @param buffer Buffer to write data into -/// @param struct/array The data to be encoded. Can contain structs, arrays, strings, and numbers. N.B. Will not encode ds_list, ds_map etc. -/// @param [pretty] (bool) Whether to format the string to be human readable. Defaults to -/// @param [alphabetizeStructs] (bool) Sorts struct variable names is ascending alphabetical order as per ds_list_sort(). Defaults to -/// @param [accurateFloats] (bool) Whether to output floats at a higher accuracy than GM normally defaults to. Defaults to . Setting this to confers a performance penalty -/// -/// @jujuadams 2022-10-30 - -function SnapBufferWriteLooseJSON(_buffer, _value, _pretty = false, _alphabetise = false, _accurateFloats = false) -{ - return __SnapToLooseJSONBufferValue(_buffer, _value, _pretty, _alphabetise, _accurateFloats, ""); -} - -function __SnapToLooseJSONBufferValue(_buffer, _value, _pretty, _alphabetise, _accurateFloats, _indent) -{ - if (is_real(_value) || is_int32(_value) || is_int64(_value)) - { - buffer_write(_buffer, buffer_text, SnapNumberToString(_value, _accurateFloats)); - } - else if (is_string(_value)) - { - //Sanitise strings - _value = string_replace_all(_value, "\\", "\\\\"); - _value = string_replace_all(_value, "\n", "\\n"); - _value = string_replace_all(_value, "\r", "\\r"); - _value = string_replace_all(_value, "\t", "\\t"); - _value = string_replace_all(_value, "\"", "\\\""); - - //If the string uses reserved characters, wrap the string in quote marks - //TODO - Use a buffer here since that's probably faster than all these string_pos() checks - if ((_value == "true") - || (_value == "false") - || (_value == "null") - || (string_pos(":", _value) > 0) - || (string_pos(",", _value) > 0) - || (string_pos("{", _value) > 0) - || (string_pos("}", _value) > 0) - || (string_pos("[", _value) > 0) - || (string_pos("]", _value) > 0) - || (ord(string_char_at(_value, 1)) <= 0x20) - || (ord(string_char_at(_value, string_length(_value))) <= 0x20)) - { - buffer_write(_buffer, buffer_u8, 0x22); // Double quote - buffer_write(_buffer, buffer_text, _value); - buffer_write(_buffer, buffer_u8, 0x22); // Double quote - } - else - { - buffer_write(_buffer, buffer_text, _value); - } - } - else if (is_array(_value)) - { - var _array = _value; - - var _count = array_length(_array); - if (_count <= 0) - { - buffer_write(_buffer, buffer_u16, 0x5D5B); //Open then close square bracket - } - else - { - if (_pretty) - { - buffer_write(_buffer, buffer_u16, 0x0A5B); //Open square bracket + newline - - var _preIndent = _indent; - _indent += chr(0x09); //Tab - - var _i = 0; - repeat(_count) - { - buffer_write(_buffer, buffer_text, _indent); - __SnapToLooseJSONBufferValue(_buffer, _array[_i], _pretty, _alphabetise, _accurateFloats, _indent); - buffer_write(_buffer, buffer_u16, 0x0A2C); //Comma + newline - ++_i; - } - - _indent = _preIndent; - - buffer_seek(_buffer, buffer_seek_relative, -2); - buffer_write(_buffer, buffer_u8, 0x0A); //Newline - buffer_write(_buffer, buffer_text, _indent); - buffer_write(_buffer, buffer_u8, 0x5D); //Close square bracket - } - else - { - buffer_write(_buffer, buffer_u8, 0x5B); //Open square bracket - - var _i = 0; - repeat(_count) - { - __SnapToLooseJSONBufferValue(_buffer, _array[_i], _pretty, _alphabetise, _accurateFloats, _indent); - buffer_write(_buffer, buffer_u8, 0x2C); //Comma - ++_i; - } - - if (_count > 0) buffer_seek(_buffer, buffer_seek_relative, -1); - buffer_write(_buffer, buffer_u8, 0x5D); //Close square bracket - } - } - } - else if (is_method(_value)) //Implicitly also a struct so we have to check this first - { - buffer_write(_buffer, buffer_text, string(_value)); - } - else if (is_struct(_value)) - { - var _struct = _value; - - var _names = variable_struct_get_names(_struct); - if (_alphabetise) array_sort(_names, true); - - var _count = array_length(_names); - if (_count <= 0) - { - buffer_write(_buffer, buffer_u16, 0x7D7B); //Open then close curly bracket - } - else - { - if (_pretty) - { - buffer_write(_buffer, buffer_u16, 0x0A7B); //Open curly bracket + newline - - var _preIndent = _indent; - _indent += chr(0x09); //Tab - - var _i = 0; - repeat(_count) - { - var _name = _names[_i]; - if (!is_string(_name)) show_error("SNAP:\nKeys must be strings\n ", true); - - buffer_write(_buffer, buffer_text, _indent); - __SnapToLooseJSONBufferValue(_buffer, _name, _pretty, _alphabetise, _accurateFloats, _indent); - buffer_write(_buffer, buffer_u16, 0x203A); // <: > - - __SnapToLooseJSONBufferValue(_buffer, _struct[$ _name], _pretty, _alphabetise, _accurateFloats, _indent); - - buffer_write(_buffer, buffer_u16, 0x0A2C); //Comma + newline - - ++_i; - } - - _indent = _preIndent; - - buffer_seek(_buffer, buffer_seek_relative, -2); - buffer_write(_buffer, buffer_u8, 0x0A); //Newline - buffer_write(_buffer, buffer_text, _indent); - buffer_write(_buffer, buffer_u8, 0x7D); //Close curly bracket - } - else - { - buffer_write(_buffer, buffer_u8, 0x7B); //Open curly bracket - - var _i = 0; - repeat(_count) - { - var _name = _names[_i]; - if (!is_string(_name)) show_error("SNAP:\nKeys must be strings\n ", true); - - __SnapToLooseJSONBufferValue(_buffer, _name, _pretty, _alphabetise, _accurateFloats, _indent); - buffer_write(_buffer, buffer_u8, 0x3A); // : - - __SnapToLooseJSONBufferValue(_buffer, _struct[$ _name], _pretty, _alphabetise, _accurateFloats, _indent); - - buffer_write(_buffer, buffer_u8, 0x2C); //Comma - - ++_i; - } - - buffer_seek(_buffer, buffer_seek_relative, -1); - buffer_write(_buffer, buffer_u8, 0x7D); //Close curly bracket - } - } - } - else if (is_undefined(_value)) - { - buffer_write(_buffer, buffer_text, "null"); - } - else if (is_bool(_value)) - { - buffer_write(_buffer, buffer_text, _value? "true" : "false"); - } - else if (is_ptr(_value)) - { - buffer_write(_buffer, buffer_text, string(_value)); - } - else - { - // YoYoGames in their finite wisdom added a new datatype in GMS2022.5 that doesn't stringify nicely - // string(instance.id) = "ref 100001" - // This means we end up writing a string with a space in it to JSON. This is leads to invalid output - // We can check but string comparison is slow and gross - // - // Instance IDs have the following detectable characteristics: - // typeof(value) = "ref" - // is_array(value) = false * - // is_bool(value) = false * - // is_infinity(value) = false - // is_int32(value) = false * - // is_int64(value) = false * - // is_method(value) = false * - // is_nan(value) = false - // is_numeric(value) = true - // is_ptr(value) = false * - // is_real(value) = false * - // is_string(value) = false * - // is_struct(value) = false * - // is_undefined(value) = false * - // is_vec3(value) = false * (covered by is_array()) - // is_vec4(value) = false * (covered by is_array()) - // - // Up above we've already tested the datatypes marked with asterisks - // We can fish out instance references by checking and then excluding int32 and int64 datatypes - - if (is_numeric(_value)) - { - buffer_write(_buffer, buffer_text, string(real(_value))); //Save the numeric component of the instance ID - } - else - { - buffer_write(_buffer, buffer_text, string(_value)); - } - } - - return _buffer; -} diff --git a/scripts/SnapBufferWriteLooseJSON/SnapBufferWriteLooseJSON.yy b/scripts/SnapBufferWriteLooseJSON/SnapBufferWriteLooseJSON.yy deleted file mode 100644 index 7ca99e2..0000000 --- a/scripts/SnapBufferWriteLooseJSON/SnapBufferWriteLooseJSON.yy +++ /dev/null @@ -1,11 +0,0 @@ -{ - "resourceType": "GMScript", - "resourceVersion": "1.0", - "name": "SnapBufferWriteLooseJSON", - "isDnD": false, - "isCompatibility": false, - "parent": { - "name": "Loose JSON", - "path": "folders/SNAP/Loose JSON.yy", - }, -} \ No newline at end of file diff --git a/scripts/SnapFromConfigJSON/SnapFromConfigJSON.gml b/scripts/SnapFromConfigJSON/SnapFromConfigJSON.gml deleted file mode 100644 index f1b1616..0000000 --- a/scripts/SnapFromConfigJSON/SnapFromConfigJSON.gml +++ /dev/null @@ -1,15 +0,0 @@ -// Feather disable all -/// @return Nested struct/array data that represents the contents of the "Config JSON" string -/// -/// @param string The "Config JSON" string to be decoded -/// -/// @jujuadams 2023-04-07 - -function SnapFromConfigJSON(_string) -{ - var _buffer = buffer_create(string_byte_length(_string), buffer_fixed, 1); - buffer_write(_buffer, buffer_text, _string); - var _data = SnapBufferReadConfigJSON(_buffer, 0); - buffer_delete(_buffer); - return _data; -} diff --git a/scripts/SnapFromConfigJSON/SnapFromConfigJSON.yy b/scripts/SnapFromConfigJSON/SnapFromConfigJSON.yy deleted file mode 100644 index d021e39..0000000 --- a/scripts/SnapFromConfigJSON/SnapFromConfigJSON.yy +++ /dev/null @@ -1,11 +0,0 @@ -{ - "resourceType": "GMScript", - "resourceVersion": "1.0", - "name": "SnapFromConfigJSON", - "isDnD": false, - "isCompatibility": false, - "parent": { - "name": "Config JSON", - "path": "folders/SNAP/Config JSON.yy", - }, -} \ No newline at end of file diff --git a/scripts/SnapFromLooseJSON/SnapFromLooseJSON.gml b/scripts/SnapFromLooseJSON/SnapFromLooseJSON.gml deleted file mode 100644 index 2c40c87..0000000 --- a/scripts/SnapFromLooseJSON/SnapFromLooseJSON.gml +++ /dev/null @@ -1,15 +0,0 @@ -// Feather disable all -/// @return Nested struct/array data that represents the contents of the "Loose JSON" string -/// -/// @param string The "Loose JSON" string to be decoded -/// -/// @jujuadams 2022-12-23 - -function SnapFromLooseJSON(_string) -{ - var _buffer = buffer_create(string_byte_length(_string), buffer_fixed, 1); - buffer_write(_buffer, buffer_text, _string); - var _data = SnapBufferReadLooseJSON(_buffer, 0); - buffer_delete(_buffer); - return _data; -} diff --git a/scripts/SnapFromLooseJSON/SnapFromLooseJSON.yy b/scripts/SnapFromLooseJSON/SnapFromLooseJSON.yy deleted file mode 100644 index b3ca03d..0000000 --- a/scripts/SnapFromLooseJSON/SnapFromLooseJSON.yy +++ /dev/null @@ -1,11 +0,0 @@ -{ - "resourceType": "GMScript", - "resourceVersion": "1.0", - "name": "SnapFromLooseJSON", - "isDnD": false, - "isCompatibility": false, - "parent": { - "name": "Loose JSON", - "path": "folders/SNAP/Loose JSON.yy", - }, -} \ No newline at end of file diff --git a/scripts/SnapToLooseJSON/SnapToLooseJSON.gml b/scripts/SnapToLooseJSON/SnapToLooseJSON.gml deleted file mode 100644 index f9b4945..0000000 --- a/scripts/SnapToLooseJSON/SnapToLooseJSON.gml +++ /dev/null @@ -1,19 +0,0 @@ -// Feather disable all -/// @return "Loose JSON" string that encodes the struct/array nested data -/// -/// @param struct/array The data to be encoded. Can contain structs, arrays, strings, and numbers. N.B. Will not encode ds_list, ds_map etc. -/// @param [pretty] (bool) Whether to format the string to be human readable. Defaults to -/// @param [alphabetizeStructs] (bool) Sorts struct variable names is ascending alphabetical order as per array_sort(). Defaults to -/// @param [accurateFloats] (bool) Whether to output floats at a higher accuracy than GM normally defaults to. Defaults to . Setting this to confers a performance penalty -/// -/// @jujuadams 2022-12-23 - -function SnapToLooseJSON(_ds, _pretty = false, _alphabetise = false, _accurateFloats = false) -{ - var _buffer = buffer_create(1024, buffer_grow, 1); - SnapBufferWriteLooseJSON(_buffer, _ds, _pretty, _alphabetise, _accurateFloats); - buffer_seek(_buffer, buffer_seek_start, 0); - var _string = buffer_read(_buffer, buffer_string); - buffer_delete(_buffer); - return _string; -} diff --git a/scripts/SnapToLooseJSON/SnapToLooseJSON.yy b/scripts/SnapToLooseJSON/SnapToLooseJSON.yy deleted file mode 100644 index 32e3e6c..0000000 --- a/scripts/SnapToLooseJSON/SnapToLooseJSON.yy +++ /dev/null @@ -1,11 +0,0 @@ -{ - "resourceType": "GMScript", - "resourceVersion": "1.0", - "name": "SnapToLooseJSON", - "isDnD": false, - "isCompatibility": false, - "parent": { - "name": "Loose JSON", - "path": "folders/SNAP/Loose JSON.yy", - }, -} \ No newline at end of file diff --git a/snap.yyp b/snap.yyp index 567ef5a..89181ed 100644 --- a/snap.yyp +++ b/snap.yyp @@ -4,10 +4,8 @@ "name": "SNAP", "resources": [ {"id":{"name":"oTestHash","path":"objects/oTestHash/oTestHash.yy",},"order":19,}, - {"id":{"name":"SnapBufferReadLooseJSON","path":"scripts/SnapBufferReadLooseJSON/SnapBufferReadLooseJSON.yy",},"order":3,}, {"id":{"name":"oTestReconstruction","path":"objects/oTestReconstruction/oTestReconstruction.yy",},"order":22,}, {"id":{"name":"SnapToJSON","path":"scripts/SnapToJSON/SnapToJSON.yy",},"order":0,}, - {"id":{"name":"SnapFromLooseJSON","path":"scripts/SnapFromLooseJSON/SnapFromLooseJSON.yy",},"order":1,}, {"id":{"name":"SnapToYAML","path":"scripts/SnapToYAML/SnapToYAML.yy",},"order":0,}, {"id":{"name":"SnapBufferWrite2DArray","path":"scripts/SnapBufferWrite2DArray/SnapBufferWrite2DArray.yy",},"order":2,}, {"id":{"name":"SnapBufferReadTilemapOverwrite","path":"scripts/SnapBufferReadTilemapOverwrite/SnapBufferReadTilemapOverwrite.yy",},"order":7,}, @@ -27,9 +25,6 @@ {"id":{"name":"SnapBufferReadNSV","path":"scripts/SnapBufferReadNSV/SnapBufferReadNSV.yy",},"order":3,}, {"id":{"name":"SnapFromQML","path":"scripts/SnapFromQML/SnapFromQML.yy",},"order":1,}, {"id":{"name":"SnapBufferWriteQML","path":"scripts/SnapBufferWriteQML/SnapBufferWriteQML.yy",},"order":2,}, - {"id":{"name":"SnapToLooseJSON","path":"scripts/SnapToLooseJSON/SnapToLooseJSON.yy",},"order":0,}, - {"id":{"name":"SnapFromConfigJSON","path":"scripts/SnapFromConfigJSON/SnapFromConfigJSON.yy",},"order":1,}, - {"id":{"name":"SnapBufferReadConfigJSON","path":"scripts/SnapBufferReadConfigJSON/SnapBufferReadConfigJSON.yy",},"order":2,}, {"id":{"name":"oTestINI","path":"objects/oTestINI/oTestINI.yy",},"order":14,}, {"id":{"name":"oTestString","path":"objects/oTestString/oTestString.yy",},"order":3,}, {"id":{"name":"SnapBufferReadINI","path":"scripts/SnapBufferReadINI/SnapBufferReadINI.yy",},"order":2,}, @@ -41,7 +36,6 @@ {"id":{"name":"SnapForeach","path":"scripts/SnapForeach/SnapForeach.yy",},"order":1,}, {"id":{"name":"SnapToGML","path":"scripts/SnapToGML/SnapToGML.yy",},"order":0,}, {"id":{"name":"SnapBufferWriteJSON","path":"scripts/SnapBufferWriteJSON/SnapBufferWriteJSON.yy",},"order":2,}, - {"id":{"name":"SnapBufferWriteLooseJSON","path":"scripts/SnapBufferWriteLooseJSON/SnapBufferWriteLooseJSON.yy",},"order":2,}, {"id":{"name":"SnapStringFromFile","path":"scripts/SnapStringFromFile/SnapStringFromFile.yy",},"order":10,}, {"id":{"name":"SnapFromVDF","path":"scripts/SnapFromVDF/SnapFromVDF.yy",},"order":1,}, {"id":{"name":"oTestNSV","path":"objects/oTestNSV/oTestNSV.yy",},"order":12,}, @@ -69,7 +63,6 @@ {"id":{"name":"SnapBufferReadMessagePack","path":"scripts/SnapBufferReadMessagePack/SnapBufferReadMessagePack.yy",},"order":1,}, {"id":{"name":"oTestMessagepack","path":"objects/oTestMessagepack/oTestMessagepack.yy",},"order":10,}, {"id":{"name":"SnapBufferReadQML","path":"scripts/SnapBufferReadQML/SnapBufferReadQML.yy",},"order":3,}, - {"id":{"name":"oTestConfigJSON","path":"objects/oTestConfigJSON/oTestConfigJSON.yy",},"order":8,}, {"id":{"name":"oTestMerge","path":"objects/oTestMerge/oTestMerge.yy",},"order":5,}, {"id":{"name":"oTestYAML","path":"objects/oTestYAML/oTestYAML.yy",},"order":15,}, {"id":{"name":"SnapBufferReadTilemapNew","path":"scripts/SnapBufferReadTilemapNew/SnapBufferReadTilemapNew.yy",},"order":6,}, @@ -92,7 +85,6 @@ {"id":{"name":"oTestQML","path":"objects/oTestQML/oTestQML.yy",},"order":20,}, {"id":{"name":"TestGlobalConstructor","path":"scripts/TestGlobalConstructor/TestGlobalConstructor.yy",},"order":24,}, {"id":{"name":"oTestBinary","path":"objects/oTestBinary/oTestBinary.yy",},"order":9,}, - {"id":{"name":"oTestLooseJSON","path":"objects/oTestLooseJSON/oTestLooseJSON.yy",},"order":7,}, {"id":{"name":"oTestGrid","path":"objects/oTestGrid/oTestGrid.yy",},"order":17,}, {"id":{"name":"SnapBufferReadGML","path":"scripts/SnapBufferReadGML/SnapBufferReadGML.yy",},"order":3,}, {"id":{"name":"oTest2DArray","path":"objects/oTest2DArray/oTest2DArray.yy",},"order":18,}, @@ -125,14 +117,12 @@ ], "Folders": [ {"resourceType":"GMFolder","resourceVersion":"1.0","name":"SNAP","folderPath":"folders/SNAP.yy","order":0,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Config JSON","folderPath":"folders/SNAP/Config JSON.yy","order":3,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"CSV","folderPath":"folders/SNAP/CSV.yy","order":5,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Custom Binary","folderPath":"folders/SNAP/Custom Binary.yy","order":7,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"GML","folderPath":"folders/SNAP/GML.yy","order":11,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Grids & 2D Arrays & Tilemaps","folderPath":"folders/SNAP/Grids & 2D Arrays & Tilemaps.yy","order":12,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"INI","folderPath":"folders/SNAP/INI.yy","order":10,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"JSON","folderPath":"folders/SNAP/JSON.yy","order":1,}, - {"resourceType":"GMFolder","resourceVersion":"1.0","name":"Loose JSON","folderPath":"folders/SNAP/Loose JSON.yy","order":2,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"MessagePack","folderPath":"folders/SNAP/MessagePack.yy","order":8,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"NSV","folderPath":"folders/SNAP/NSV.yy","order":6,}, {"resourceType":"GMFolder","resourceVersion":"1.0","name":"QML","folderPath":"folders/SNAP/QML.yy","order":13,}, From bdec5acd811753f661869eb29dacf55e1b8b1319 Mon Sep 17 00:00:00 2001 From: Juju Adams Date: Fri, 3 Nov 2023 21:08:57 +0000 Subject: [PATCH 2/2] 6.1.0 --- README.md | 2 +- options/windows/options_windows.yy | 2 +- scripts/__SnapSystem/__SnapSystem.gml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0b77b93..18bb615 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

-

SNAP 6.0.1

+

SNAP 6.1.0

Data format converters for GameMaker Studio 2022 LTS by Juju Adams

diff --git a/options/windows/options_windows.yy b/options/windows/options_windows.yy index a42bb0a..ed8fd3d 100644 --- a/options/windows/options_windows.yy +++ b/options/windows/options_windows.yy @@ -4,7 +4,7 @@ "name": "Windows", "option_windows_display_name": "SNAP", "option_windows_executable_name": "${project_name}.exe", - "option_windows_version": "6.0.1.0", + "option_windows_version": "6.1.0.0", "option_windows_company_info": "@jujuadams", "option_windows_product_info": "SNAP", "option_windows_copyright_info": "@jujuadams 2023", diff --git a/scripts/__SnapSystem/__SnapSystem.gml b/scripts/__SnapSystem/__SnapSystem.gml index d7ed707..d83b32f 100644 --- a/scripts/__SnapSystem/__SnapSystem.gml +++ b/scripts/__SnapSystem/__SnapSystem.gml @@ -1,5 +1,5 @@ // Feather disable all -#macro __SNAP_VERSION "6.0.1" -#macro __SNAP_DATE "2023-10-27" +#macro __SNAP_VERSION "6.1.0" +#macro __SNAP_DATE "2023-11-03" show_debug_message("SNAP: Welcome to SNAP by @jujuadams! This is version " + __SNAP_VERSION + ", " + __SNAP_DATE);