Sha256: cd896d27bf8f981e0e7d5c266228bc187e7a66004c81185e7cd6504ce87b8c03

Contents?: true

Size: 1.78 KB

Versions: 9

Compression:

Stored size: 1.78 KB

Contents

# frozen_string_literal: true

require 'fileutils'
require_relative 'base_generator'
require_relative 'path_generator'
require_relative 'components_generator'
require 'r2-oas/schema/v3/manager/file_manager'

module R2OAS
  module Schema
    module V3
      class SchemaGenerator < BaseGenerator
        def initialize(options = {})
          super(options)
          @docs = create_docs
          @options = options
        end

        def generate_docs
          logger.info '<From routes data>'
          generate_docs_from_routes_data
        end

        private

        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

        def process_when_generate_docs
          logger.info '<Update schema files>'
          @docs.each do |field_name, data|
            result = { field_name.to_s => data }

            case field_name
            when 'paths'
              logger.info ' [Generate OAS schema files (paths)] start'
              PathGenerator.new(result, @options).generate_docs
              logger.info ' [Generate OAS schema files (paths)] end'
            when 'components'
              logger.info ' [Generate OAS schema files (components)] start'
              ComponentsGenerator.new(result, @options).generate_docs
              logger.info ' [Generate OAS schema files (components)] end'
            else
              file_manager = FileManager.new(field_name, :relative)
              save_file_path = file_manager.save_file_path(type: :relative)
              store.add(save_file_path, result.to_yaml)

              yield file_manager.save_file_path(type: :relative) if block_given?
            end
          end
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
r2-oas-0.5.0 lib/r2-oas/schema/v3/generator/schema_generator.rb
r2-oas-0.4.1 lib/r2-oas/schema/v3/generator/schema_generator.rb
r2-oas-0.4.0 lib/r2-oas/schema/v3/generator/schema_generator.rb
r2-oas-0.3.4 lib/r2-oas/schema/v3/generator/schema_generator.rb
r2-oas-0.3.3 lib/r2-oas/schema/v3/generator/schema_generator.rb
r2-oas-0.3.2 lib/r2-oas/schema/v3/generator/schema_generator.rb
r2-oas-0.3.1 lib/r2-oas/schema/v3/generator/schema_generator.rb
r2-oas-0.3.0 lib/r2-oas/schema/v3/generator/schema_generator.rb
r2-oas-0.2.0 lib/r2-oas/schema/v3/generator/schema_generator.rb