Sha256: f14724debb650fb5ca5cbe757a300687ee4aeed3b0ac537fd940bf211ae9239a

Contents?: true

Size: 1.05 KB

Versions: 33

Compression:

Stored size: 1.05 KB

Contents

# frozen_string_literal: true

module Cocina
  module Generator
    # Class for generating from an openapi value
    class SchemaValue < SchemaBase
      # rubocop:disable Layout/LineLength
      def generate
        "#{description}#{example}attribute :#{name.camelize(:lower)}, Types::#{dry_datatype(schema_doc)}#{default}#{enum}#{omittable}"
      end
      # rubocop:enable Layout/LineLength

      private

      def enum
        return '' unless schema_doc.enum

        items = use_types? ? "*#{parent.name}::TYPES" : schema_doc.enum.map { |item| quote(item) }.join(', ')

        ".enum(#{items})"
      end

      def use_types?
        parent.is_a?(Schema) && key == 'type'
      end

      def default
        # If type is boolean and default is false, erroneously getting a nil.
        # Assuming that if required, then default is false.
        default = schema_doc.default
        default = false if default.nil? && schema_doc.type == 'boolean' && required
        return '' if default.nil?

        ".default(#{quote(default)})"
      end
    end
  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
cocina-models-0.57.0 lib/cocina/generator/schema_value.rb
cocina-models-0.56.1 lib/cocina/generator/schema_value.rb
cocina-models-0.56.0 lib/cocina/generator/schema_value.rb
cocina-models-0.55.0 lib/cocina/generator/schema_value.rb
cocina-models-0.54.0 lib/cocina/generator/schema_value.rb
cocina-models-0.54.0.beta.2 lib/cocina/generator/schema_value.rb
cocina-models-0.53.1 lib/cocina/generator/schema_value.rb
cocina-models-0.54.0.beta.1 lib/cocina/generator/schema_value.rb
cocina-models-0.53.0 lib/cocina/generator/schema_value.rb
cocina-models-0.52.0 lib/cocina/generator/schema_value.rb
cocina-models-0.51.0 lib/cocina/generator/schema_value.rb
cocina-models-0.50.0 lib/cocina/generator/schema_value.rb
cocina-models-0.49.0 lib/cocina/generator/schema_value.rb
cocina-models-0.48.0 lib/cocina/generator/schema_value.rb
cocina-models-0.47.2 lib/cocina/generator/schema_value.rb
cocina-models-0.47.1 lib/cocina/generator/schema_value.rb
cocina-models-0.47.0 lib/cocina/generator/schema_value.rb
cocina-models-0.46.0 lib/cocina/generator/schema_value.rb
cocina-models-0.45.0 lib/cocina/generator/schema_value.rb
cocina-models-0.44.0 lib/cocina/generator/schema_value.rb