Module: Castkit

Defined in:
lib/castkit.rb,
lib/castkit/error.rb,
lib/castkit/castkit.rb,
lib/castkit/version.rb,
lib/castkit/attribute.rb,
lib/castkit/validator.rb,
lib/castkit/serializer.rb,
lib/castkit/data_object.rb,
lib/castkit/configuration.rb,
lib/castkit/default_serializer.rb,
lib/castkit/attribute_extensions/access.rb,
lib/castkit/validators/string_validator.rb,
lib/castkit/attribute_extensions/casting.rb,
lib/castkit/attribute_extensions/options.rb,
lib/castkit/validators/numeric_validator.rb,
lib/castkit/data_object_extensions/config.rb,
lib/castkit/attribute_extensions/validation.rb,
lib/castkit/data_object_extensions/attributes.rb,
lib/castkit/attribute_extensions/serialization.rb,
lib/castkit/attribute_extensions/error_handling.rb,
lib/castkit/data_object_extensions/attribute_types.rb,
lib/castkit/data_object_extensions/deserialization.rb

Overview

Castkit is a lightweight, type-safe data object system for Ruby.

It provides a declarative DSL for defining DTOs with typecasting, validation, access control, serialization, deserialization, and OpenAPI-friendly schema generation.

Examples:

Defining a simple data object

class UserDto < Castkit::DataObject
  string :name
  integer :age, required: false
end

user = UserDto.new(name: "Alice", age: 30)
user.to_h #=> { name: "Alice", age: 30 }

Defined Under Namespace

Modules: AttributeExtensions, DataObjectExtensions, Validators Classes: Attribute, AttributeError, Configuration, DataObject, DataObjectError, DefaultSerializer, Error, SerializationError, Serializer, Validator

Constant Summary collapse

VERSION =
"0.1.1"

Class Method Summary collapse

Class Method Details

.configurationCastkit::Configuration

Retrieves the global Castkit configuration.

Returns:



36
37
38
# File 'lib/castkit/castkit.rb', line 36

def configuration
  @configuration ||= Configuration.new
end

.configure {|config| ... } ⇒ void

This method returns an undefined value.

Yields the global configuration object for customization.

Examples:

Castkit.configure do |config|
  config.enforce_boolean_casting = false
end

Yield Parameters:



29
30
31
# File 'lib/castkit/castkit.rb', line 29

def configure
  yield(configuration)
end

.dataobject?(obj) ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/castkit/castkit.rb', line 40

def dataobject?(obj)
  obj.is_a?(Class) && obj.ancestors.include?(Castkit::DataObject)
end