Sha256: 8f08f78ba479c45f486e2c094c7439dfd4c1485336aa034b7773cdaa8a2e7bda
Contents?: true
Size: 1.15 KB
Versions: 3
Compression:
Stored size: 1.15 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 # optional has to come before default or the default value that gets set will be nil. "#{description}#{example}attribute :#{name.camelize(:lower)}, Types::#{dry_datatype(schema_doc)}#{optional}#{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
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
cocina-models-0.58.2 | lib/cocina/generator/schema_value.rb |
cocina-models-0.58.1 | lib/cocina/generator/schema_value.rb |
cocina-models-0.58.0 | lib/cocina/generator/schema_value.rb |