Module: Bootsnap::CompileCache::YAML::Psych4::SafeLoad

Extended by:
SafeLoad
Included in:
SafeLoad
Defined in:
lib/bootsnap/compile_cache/yaml.rb

Instance Method Summary collapse

Instance Method Details

#input_to_output(data, kwargs) ⇒ Object



216
217
218
# File 'lib/bootsnap/compile_cache/yaml.rb', line 216

def input_to_output(data, kwargs)
  ::YAML.load(data, **(kwargs || {}))
end

#input_to_storage(contents, _) ⇒ Object



184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
# File 'lib/bootsnap/compile_cache/yaml.rb', line 184

def input_to_storage(contents, _)
  obj = begin
    CompileCache::YAML.strict_load(contents)
  rescue Psych::DisallowedClass, Psych::BadAlias, Uncompilable
    return UNCOMPILABLE
  end

  packer = CompileCache::YAML.msgpack_factory.packer
  packer.pack(true) # safe loaded
  begin
    packer.pack(obj)
  rescue NoMethodError, RangeError
    return UNCOMPILABLE
  end
  packer.to_s
end

#storage_to_output(data, kwargs) ⇒ Object



201
202
203
204
205
206
207
208
209
210
211
212
213
214
# File 'lib/bootsnap/compile_cache/yaml.rb', line 201

def storage_to_output(data, kwargs)
  if kwargs&.key?(:symbolize_names)
    kwargs[:symbolize_keys] = kwargs.delete(:symbolize_names)
  end

  unpacker = CompileCache::YAML.msgpack_factory.unpacker(kwargs)
  unpacker.feed(data)
  safe_loaded = unpacker.unpack
  if safe_loaded
    unpacker.unpack
  else
    UNCOMPILABLE
  end
end