mirror of
https://github.com/rojo-rbx/rojo.git
synced 2026-04-20 20:55:50 +00:00
* Switch git submodules to Wally packages * Update build snapshot * Add wally to foreman and use latest versions * Install packages in CI runners * Fix indents * Install packages in the correct directory * Install packages in correct dir of release action too * Remove submodules from ci checkout * Remove submodules from release checkout * Update selene with latest fix * Fix whitespace Co-authored-by: Lucien Greathouse <me@lpghatguy.com>
41 lines
1.0 KiB
Lua
41 lines
1.0 KiB
Lua
local Packages = script.Parent.Parent.Parent.Packages
|
|
local Log = require(Packages.Log)
|
|
local RbxDom = require(Packages.RbxDom)
|
|
|
|
local encodeProperty = require(script.Parent.encodeProperty)
|
|
|
|
return function(instance, instanceId, properties)
|
|
local update = {
|
|
id = instanceId,
|
|
changedProperties = {},
|
|
}
|
|
|
|
for propertyName in pairs(properties) do
|
|
if propertyName == "Name" then
|
|
update.changedName = instance.Name
|
|
else
|
|
local descriptor = RbxDom.findCanonicalPropertyDescriptor(instance.ClassName, propertyName)
|
|
|
|
if not descriptor then
|
|
Log.debug("Could not sync back property {:?}.{}", instance, propertyName)
|
|
continue
|
|
end
|
|
|
|
local encodeSuccess, encodeResult = encodeProperty(instance, propertyName, descriptor)
|
|
|
|
if not encodeSuccess then
|
|
Log.debug("Could not sync back property {:?}.{}: {}", instance, propertyName, encodeResult)
|
|
continue
|
|
end
|
|
|
|
update.changedProperties[propertyName] = encodeResult
|
|
end
|
|
end
|
|
|
|
if next(update.changedProperties) == nil and update.changedName == nil then
|
|
return nil
|
|
end
|
|
|
|
return update
|
|
end
|