Class: GrapeOAS::TypeResolvers::PrimitiveResolver

Inherits:
Object
  • Object
show all
Extended by:
Base
Defined in:
lib/grape_oas/type_resolvers/primitive_resolver.rb

Overview

Resolves primitive types like “Integer”, “String”, “Boolean”, “Float”.

This is the fallback resolver that handles basic Ruby types and their string representations. It’s registered last in the resolver chain.

Constant Summary collapse

PRIMITIVES =

Known primitive type mappings

{
  "String" => { type: Constants::SchemaTypes::STRING },
  "Integer" => { type: Constants::SchemaTypes::INTEGER, format: "int32" },
  "Float" => { type: Constants::SchemaTypes::NUMBER, format: "float" },
  "BigDecimal" => { type: Constants::SchemaTypes::NUMBER, format: "double" },
  "Numeric" => { type: Constants::SchemaTypes::NUMBER },
  "Boolean" => { type: Constants::SchemaTypes::BOOLEAN },
  "Grape::API::Boolean" => { type: Constants::SchemaTypes::BOOLEAN },
  "TrueClass" => { type: Constants::SchemaTypes::BOOLEAN },
  "FalseClass" => { type: Constants::SchemaTypes::BOOLEAN },
  "Date" => { type: Constants::SchemaTypes::STRING, format: "date" },
  "DateTime" => { type: Constants::SchemaTypes::STRING, format: "date-time" },
  "Time" => { type: Constants::SchemaTypes::STRING, format: "date-time" },
  "Hash" => { type: Constants::SchemaTypes::OBJECT },
  "Array" => { type: Constants::SchemaTypes::ARRAY },
  "File" => { type: Constants::SchemaTypes::FILE },
  "Rack::Multipart::UploadedFile" => { type: Constants::SchemaTypes::FILE },
  "Symbol" => { type: Constants::SchemaTypes::STRING }
}.freeze

Class Method Summary collapse

Methods included from Base

build_schema, handles?, infer_format_from_name, primitive_to_schema_type, resolve_class

Class Method Details

.build_schema(type) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/grape_oas/type_resolvers/primitive_resolver.rb', line 40

def build_schema(type)
  type_str = normalize_type(type)

  # Check direct mapping first
  if PRIMITIVES.key?(type_str)
    mapping = PRIMITIVES[type_str]
    return ApiModel::Schema.new(
      type: mapping[:type],
      format: mapping[:format],
    )
  end

  # Try to resolve and build schema
  resolved = resolve_class(type_str)
  if resolved
    build_from_resolved(resolved)
  else
    # Default fallback
    ApiModel::Schema.new(type: Constants::SchemaTypes::STRING)
  end
end

.handles?(type) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
38
# File 'lib/grape_oas/type_resolvers/primitive_resolver.rb', line 35

def handles?(type)
  type_str = normalize_type(type)
  PRIMITIVES.key?(type_str) || resolvable_to_primitive?(type)
end