PHP 8.2.31
Preview: generic_object.rb Size: 1.23 KB
/proc/thread-self/root/opt/alt/ruby23/lib64/ruby/2.3.0/json/generic_object.rb

# frozen_string_literal: false
require 'ostruct'

module JSON
  class GenericObject < OpenStruct
    class << self
      alias [] new

      def json_creatable?
        @json_creatable
      end

      attr_writer :json_creatable

      def json_create(data)
        data = data.dup
        data.delete JSON.create_id
        self[data]
      end

      def from_hash(object)
        case
        when object.respond_to?(:to_hash)
          result = new
          object.to_hash.each do |key, value|
            result[key] = from_hash(value)
          end
          result
        when object.respond_to?(:to_ary)
          object.to_ary.map { |a| from_hash(a) }
        else
          object
        end
      end

      def load(source, proc = nil, opts = {})
        result = ::JSON.load(source, proc, opts.merge(:object_class => self))
        result.nil? ? new : result
      end

      def dump(obj, *args)
        ::JSON.dump(obj, *args)
      end
    end
    self.json_creatable = false

    def to_hash
      table
    end

    def |(other)
      self.class[other.to_hash.merge(to_hash)]
    end

    def as_json(*)
      { JSON.create_id => self.class.name }.merge to_hash
    end

    def to_json(*a)
      as_json.to_json(*a)
    end
  end
end

Directory Contents

Dirs: 1 × Files: 4

Name Size Perms Modified Actions
add DIR
- drwxr-xr-x 2024-03-03 22:43:24
Edit Download
15.74 KB lrw-r--r-- 2023-07-26 14:39:32
Edit Download
539 B lrw-r--r-- 2023-07-26 14:39:32
Edit Download
1.23 KB lrw-r--r-- 2023-07-26 14:39:32
Edit Download
304 B lrw-r--r-- 2023-07-26 14:39:32
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).