Module: Castkit
- Defined in:
- lib/castkit.rb,
lib/castkit/cli.rb,
lib/castkit/error.rb,
lib/castkit/types.rb,
lib/castkit/castkit.rb,
lib/castkit/plugins.rb,
lib/castkit/version.rb,
lib/generators/base.rb,
lib/generators/type.rb,
lib/castkit/cli/list.rb,
lib/castkit/cli/main.rb,
lib/castkit/contract.rb,
lib/castkit/attribute.rb,
lib/castkit/inflector.rb,
lib/castkit/validator.rb,
lib/generators/plugin.rb,
lib/castkit/types/base.rb,
lib/castkit/types/date.rb,
lib/castkit/core/config.rb,
lib/castkit/data_object.rb,
lib/castkit/types/float.rb,
lib/generators/contract.rb,
lib/castkit/cli/generate.rb,
lib/castkit/types/string.rb,
lib/generators/attribute.rb,
lib/generators/validator.rb,
lib/castkit/configuration.rb,
lib/castkit/contract/base.rb,
lib/castkit/dsl/attribute.rb,
lib/castkit/types/boolean.rb,
lib/castkit/types/integer.rb,
lib/generators/serializer.rb,
lib/generators/data_object.rb,
lib/castkit/contract/result.rb,
lib/castkit/core/attributes.rb,
lib/castkit/dsl/data_object.rb,
lib/castkit/types/date_time.rb,
lib/castkit/validators/base.rb,
lib/castkit/serializers/base.rb,
lib/castkit/types/collection.rb,
lib/castkit/attributes/options.rb,
lib/castkit/contract/validator.rb,
lib/castkit/contract/data_object.rb,
lib/castkit/core/attribute_types.rb,
lib/castkit/dsl/attribute/access.rb,
lib/castkit/attributes/definition.rb,
lib/castkit/dsl/attribute/options.rb,
lib/castkit/dsl/data_object/plugins.rb,
lib/castkit/dsl/attribute/validation.rb,
lib/castkit/dsl/data_object/contract.rb,
lib/castkit/validators/float_validator.rb,
lib/castkit/validators/string_validator.rb,
lib/castkit/dsl/attribute/error_handling.rb,
lib/castkit/validators/boolean_validator.rb,
lib/castkit/validators/integer_validator.rb,
lib/castkit/validators/numeric_validator.rb,
lib/castkit/dsl/data_object/introspection.rb,
lib/castkit/dsl/data_object/serialization.rb,
lib/castkit/serializers/default_serializer.rb,
lib/castkit/dsl/data_object/deserialization.rb,
lib/castkit/validators/collection_validator.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.
Defined Under Namespace
Modules: Attributes, CLI, Contract, Contracts, Core, DSL, DataObjects, Generators, Inflector, Plugins, Serializers, Types, Validators Classes: Attribute, AttributeError, Configuration, ContractError, DataObject, DataObjectError, Error, SerializationError, TypeError, Validator
Constant Summary collapse
- VERSION =
"0.4.0"
Class Method Summary collapse
-
.configuration ⇒ Castkit::Configuration
Retrieves the global Castkit configuration instance.
-
.configure {|config| ... } ⇒ void
Yields the global configuration object for customization.
-
.dataobject?(obj) ⇒ Boolean
Checks whether a given object is a subclass of Castkit::DataObject.
-
.type_caster(type) ⇒ Proc
Returns a type caster lambda for the given type.
-
.type_deserializer(type) ⇒ Proc
Returns a deserializer lambda for the given type.
-
.type_serializer(type) ⇒ Proc
Returns a serializer lambda for the given type.
-
.type_validator(type) ⇒ Proc
Returns a validator lambda for the given type.
-
.warning(message) ⇒ void
Emits a warning to STDERR if ‘enable_warnings` is enabled in config.
Class Method Details
.configuration ⇒ Castkit::Configuration
Retrieves the global Castkit configuration instance.
49 50 51 |
# File 'lib/castkit/castkit.rb', line 49 def configuration @configuration ||= Configuration.new end |
.configure {|config| ... } ⇒ void
This method returns an undefined value.
Yields the global configuration object for customization.
42 43 44 |
# File 'lib/castkit/castkit.rb', line 42 def configure yield(configuration) end |
.dataobject?(obj) ⇒ Boolean
Checks whether a given object is a subclass of Castkit::DataObject.
65 66 67 68 69 70 |
# File 'lib/castkit/castkit.rb', line 65 def dataobject?(obj) obj.is_a?(Class) && ( obj <= Castkit::DataObject || obj.ancestors.include?(Castkit::DSL::DataObject) ) end |
.type_caster(type) ⇒ Proc
Returns a type caster lambda for the given type.
Type casting performs both validation and deserialization on the provided value.
78 79 80 81 82 83 84 |
# File 'lib/castkit/castkit.rb', line 78 def type_caster(type) type_definition = configuration.fetch_type(type) lambda do |value, validator: nil, options: {}, context: nil| type_definition.class.cast!(value, validator: validator, options: , context: context) end end |
.type_deserializer(type) ⇒ Proc
Returns a deserializer lambda for the given type.
98 99 100 |
# File 'lib/castkit/castkit.rb', line 98 def type_deserializer(type) ->(value) { configuration.fetch_type(type).deserialize(value) } end |
.type_serializer(type) ⇒ Proc
Returns a serializer lambda for the given type.
90 91 92 |
# File 'lib/castkit/castkit.rb', line 90 def type_serializer(type) ->(value) { configuration.fetch_type(type).serialize(value) } end |
.type_validator(type) ⇒ Proc
Returns a validator lambda for the given type.
106 107 108 |
# File 'lib/castkit/castkit.rb', line 106 def type_validator(type) ->(value) { configuration.fetch_type(type).validate!(value) } end |
.warning(message) ⇒ void
This method returns an undefined value.
Emits a warning to STDERR if ‘enable_warnings` is enabled in config.
57 58 59 |
# File 'lib/castkit/castkit.rb', line 57 def warning() warn if configuration.enable_warnings end |