Files
news.gitea.happylizard.me/bin/gems/facets-3.1.0/lib/standard/facets/ostruct.rb
T
pizza2d1 4cee170d66
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 9s
Add bin and edit workflow
2026-09-16 13:11:16 -06:00

92 lines
2.1 KiB
Ruby

require 'ostruct'
require 'facets/ostruct/initialize'
require 'facets/ostruct/to_h'
require 'facets/ostruct/merge'
require 'facets/ostruct/each'
require 'facets/ostruct/to_ostruct'
require 'facets/ostruct/op_fetch'
require 'facets/ostruct/op_store'
class OpenStruct
#--
# TO BE DEPRECATED
# Must consider that accessing instance_delegate instead can be dangerous.
# Might we us a Functor to ensure the table keys are always symbols?
#++
# Provides access to an OpenStruct's inner table.
#
# o = OpenStruct.new
# o.a = 1
# o.b = 2
# o.instance_delegate.map { |k, v| "#{k} #{v}" }
# #=> ["a 1", "b 2"]
#
# @deprecated Use `#marshal_dump` instead.
#
def instance_delegate
warn "OpenStruct#instance_delegate is deprecated, use #marshal_dump instead."
@table
end
# @deprecated Use `#marshal_dump` instead.
alias ostruct_delegate instance_delegate
# Insert/update hash data on the fly.
#
# o = OpenStruct.new
# o.ostruct_update(:a => 2)
# o.a #=> 2
#
# @deprecated Use #merge! instead.
#
def ostruct_update(other)
warn "OpenSrtuct#ostruct_update has been deprecated. Use #merge! instead."
merge!(other)
end
# Insert/update hash data on the fly.
#
# o = OpenStruct.new
# o.ostruct_update(:a => 2)
# o.a #=> 2
#
# @deprecated Use #merge! instead.
#
def __update__(other)
raise NameError, "OpenSrtuct#__update__ has been deprecated. Use #merge! instead."
#merge!(other)
end
# TODO: How to handle regular merge, since it lacks punctuation to make it safe.
# Maybe `#update!`? Kind of odd but could work.
# Merge hash data creating a new OpenStruct object.
#
# o = OpenStruct.new
# x = o.ostruct_merge(:a => 2)
# x.a #=> 2
#
def ostruct_merge(other)
o = dup
o.merge!(other)
o
end
# Merge hash data creating a new OpenStruct object.
#
# o = OpenStruct.new
# x = o.__merge__(:a => 2)
# x.a #=> 2
#
def __merge__(other)
o = dup
o.merge!(other)
o
end
end
# Copyright (c) 2005 Thomas Sawyer (Ruby License)