Sha256: 3fba226bce0ebde036d333d306c7729f2d755cc4c5592d2164d02c952c6b94e9

Contents?: true

Size: 1.6 KB

Versions: 3

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

module R2OAS
  module Schema
    module V3
      class Store
        attr_accessor :root_doc
        attr_accessor :components_schema_name_list, :appended_components_schema_name_list
        attr_accessor :components_request_body_name_list, :appended_components_request_body_name_list

        def initialize(type = :obj)
          @data = {}
          @data['type'] = type
          @data['data'] = {}
          @root_doc = {}
          @components_schema_name_list = []
          @appended_components_schema_name_list = []
          @components_request_body_name_list = []
          @appended_components_request_body_name_list = []
        end

        def add(obj_type, key, value)
          @data['data'][obj_type] ||= {}
          # MEMO:
          # Do not save the same thing in store by using unique contents for schema name
          @data['data'][obj_type][key] ||= value
        end

        def gets(obj_type)
          (@data['data'][obj_type] || {}).values.present? ? @data['data'][obj_type].values : []
        end

        class << self
          extend Forwardable

          def_delegators :instance, :add, :gets, :root_doc
          def_delegators :instance, :components_schema_name_list, :appended_components_schema_name_list
          def_delegators :instance, :components_request_body_name_list, :appended_components_request_body_name_list

          def create(type = :obj)
            instance(type)
          end

          private

          def instance(type)
            @instance ||= {}
            @instance[type] ||= new(type)
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
r2-oas-0.5.0 lib/r2-oas/schema/v3/object/store.rb
r2-oas-0.4.1 lib/r2-oas/schema/v3/object/store.rb
r2-oas-0.4.0 lib/r2-oas/schema/v3/object/store.rb