lib/eml/lib/endpoint_class.rb in eml-2.0.0 vs lib/eml/lib/endpoint_class.rb in eml-2.1.0
- old
+ new
@@ -3,39 +3,51 @@
module EML
class EndpointClass
extend T::Sig
+ sig do
+ params(class_type: String, resource_class: T.untyped, endpoint: String).
+ returns(T.untyped)
+ end
def self.call(class_type:, resource_class:, endpoint:)
new(
class_type: class_type,
resource_class: resource_class,
endpoint: endpoint
).call
end
+ sig do
+ params(class_type: String, resource_class: T.untyped, endpoint: String).
+ void
+ end
def initialize(class_type:, resource_class:, endpoint:)
- @class_type = class_type
- @resource_class = resource_class
- @endpoint = endpoint
+ @class_type = T.let(class_type, String)
+ @resource_class = T.let(resource_class, T.untyped)
+ @endpoint = T.let(endpoint, String)
+ @class_name = T.let(nil, T.nilable(String))
end
+ sig { returns(T.untyped) }
def call
Object.const_get(class_name) if Object.const_defined?(class_name)
end
private
+ sig { returns(String) }
def class_name
@class_name ||= begin
name_parts = @resource_class.name.split("::")
name = name_parts[0..-2] << @class_type
name << name_parts.last
name << action_class_name
name.join("::")
end
end
+ sig { returns(String) }
def action_class_name
@endpoint.capitalize.sub(/s$/, "")
end
end
end