Class: Skit::JsonSchema::Definitions::EnumType

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/skit/json_schema/definitions/enum_type.rb

Overview

Represents a T::Enum type for code generation

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(class_name:, values:, nullable: false) ⇒ EnumType

Returns a new instance of EnumType.



27
28
29
30
31
# File 'lib/skit/json_schema/definitions/enum_type.rb', line 27

def initialize(class_name:, values:, nullable: false)
  @class_name = class_name
  @values = values
  @nullable = nullable
end

Instance Attribute Details

#class_nameObject (readonly)

Returns the value of attribute class_name.



12
13
14
# File 'lib/skit/json_schema/definitions/enum_type.rb', line 12

def class_name
  @class_name
end

#nullableObject (readonly)

Returns the value of attribute nullable.



18
19
20
# File 'lib/skit/json_schema/definitions/enum_type.rb', line 18

def nullable
  @nullable
end

#valuesObject (readonly)

Returns the value of attribute values.



15
16
17
# File 'lib/skit/json_schema/definitions/enum_type.rb', line 15

def values
  @values
end

Class Method Details

.value_literal(value) ⇒ Object



60
61
62
63
64
65
66
67
# File 'lib/skit/json_schema/definitions/enum_type.rb', line 60

def self.value_literal(value)
  case value
  when String
    value.inspect
  when Integer, Float
    value.to_s
  end
end

.value_to_member_name(value) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/skit/json_schema/definitions/enum_type.rb', line 45

def self.value_to_member_name(value)
  case value
  when String
    result = NamingUtils.to_pascal_case(value)
    return "Empty" if result.empty?

    result = "Val#{result}" if result.match?(/\A\d/)
    result
  when Integer, Float
    NamingUtils.number_to_name(value)
  end
end

Instance Method Details

#to_sorbet_typeObject



34
35
36
# File 'lib/skit/json_schema/definitions/enum_type.rb', line 34

def to_sorbet_type
  nullable ? "T.nilable(#{@class_name})" : @class_name
end

#with_nullableObject



39
40
41
# File 'lib/skit/json_schema/definitions/enum_type.rb', line 39

def with_nullable
  EnumType.new(class_name: @class_name, values: @values, nullable: true)
end