// Feather disable all /// @param buffer Buffer to write the data to /// @param struct The data to be encoded /// /// @jujuadams 2022-10-30 function SnapBufferWriteXML(_buffer, _struct) { var _prologStruct = _struct[$ "prolog"]; if (is_struct(_prologStruct)) { var _attributeStruct = _prologStruct[$ "attributes"]; if (is_struct(_attributeStruct)) { var _names = variable_struct_get_names(_attributeStruct); var _count = array_length(_names); if (_count > 0) { buffer_write(_buffer, buffer_text, "\n"); } } } var _children = _struct[$ "children"]; if (is_array(_children)) { var _i = 0; repeat(array_length(_children)) { __SnapToXMLBufferInner(_buffer, _children[_i], ""); ++_i; } } } function __SnapToXMLBufferInner(_buffer, _struct, _indent) { buffer_write(_buffer, buffer_text, _indent); buffer_write(_buffer, buffer_text, "<"); buffer_write(_buffer, buffer_text, _struct.type); var _attributeStruct = _struct[$ "attributes"]; if (is_struct(_attributeStruct)) { var _names = variable_struct_get_names(_attributeStruct); var _i = 0; repeat(array_length(_names)) { var _key = _names[_i]; var _value = _attributeStruct[$ _key]; buffer_write(_buffer, buffer_text, " "); buffer_write(_buffer, buffer_text, _key); buffer_write(_buffer, buffer_text, "=\""); buffer_write(_buffer, buffer_text, string(_value)); buffer_write(_buffer, buffer_text, "\""); ++_i; } } buffer_write(_buffer, buffer_text, ">"); var _content = _struct[$ "text"]; if (_content != undefined) { buffer_write(_buffer, buffer_text, string(_content)); } else { var _children = _struct[$ "children"]; if (is_array(_children)) { var _count = array_length(_children); if (_count > 0) { var _preIndent = _indent; _indent += chr(0x09); var _i = 0; repeat(_count) { buffer_write(_buffer, buffer_u8, 13); __SnapToXMLBufferInner(_buffer, _children[_i], _indent); ++_i; } _indent = _preIndent; buffer_write(_buffer, buffer_u8, 13); buffer_write(_buffer, buffer_text, _indent); } } } buffer_write(_buffer, buffer_text, ""); }