class R2OAS::Schema::V3::Components::ObjectGenerator

Public Class Methods

new(schema_data = {}, options = {}) click to toggle source
Calls superclass method R2OAS::Schema::V3::BaseGenerator::new
# File lib/r2-oas/schema/v3/generator/components/object_generator.rb, line 13
def initialize(schema_data = {}, options = {})
  super(options.except(:middle_category))
  @major_category = 'components'
  @middle_category = options[:middle_category]
  sorted_schema_data = deep_sort(schema_data, @middle_category)
  @components_objects = sorted_schema_data[@middle_category]
  @glob_schema_paths = create_glob_components_objects_paths
end

Public Instance Methods

generate_docs() click to toggle source
# File lib/r2-oas/schema/v3/generator/components/object_generator.rb, line 22
def generate_docs
  logger.info ' <From routes data>'
  generate_docs_from_routes_data
end

Private Instance Methods

create_glob_components_objects_paths() click to toggle source
# File lib/r2-oas/schema/v3/generator/components/object_generator.rb, line 55
def create_glob_components_objects_paths
  many_components_file_paths.select do |file_path|
    file_path.include? "#{schema_save_dir_path}/#{@major_category}/#{@middle_category}"
  end
end
generate_docs_from_routes_data() click to toggle source
# File lib/r2-oas/schema/v3/generator/components/object_generator.rb, line 31
def generate_docs_from_routes_data
  process_when_generate_docs do |save_file_path|
    logger.info "  Add schema file into store: \t#{save_file_path}"
  end
end
process_when_generate_docs() { |save_file_path| ... } click to toggle source
# File lib/r2-oas/schema/v3/generator/components/object_generator.rb, line 37
def process_when_generate_docs
  logger.info " <Update Components schema files (#{@major_category}/#{@middle_category})>"
  @components_objects&.each do |schema_name, data|
    result = {
      @major_category => {
        @middle_category => { schema_name.to_s => data }
      }
    }

    relative_path = "#{@major_category}/#{@middle_category}/#{schema_name}"
    file_manager = ComponentsFileManager.build(relative_path, :relative)
    save_file_path = file_manager.save_file_path(type: :relative)
    store.add(save_file_path, result.to_yaml)

    yield save_file_path if block_given?
  end
end