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/validator.rb,
lib/castkit/configuration.rb,
lib/castkit/contract/base.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/types/date_time.rb,
lib/castkit/validators/base.rb,
lib/castkit/serializers/base.rb,
lib/castkit/types/collection.rb,
lib/castkit/core/registerable.rb,
lib/castkit/contract/validator.rb,
lib/castkit/contract/data_object.rb,
lib/castkit/core/attribute_types.rb,
lib/castkit/ext/attribute/access.rb,
lib/castkit/ext/attribute/options.rb,
lib/castkit/ext/data_object/plugins.rb,
lib/castkit/ext/attribute/validation.rb,
lib/castkit/ext/data_object/contract.rb,
lib/castkit/validators/float_validator.rb,
lib/castkit/validators/string_validator.rb,
lib/castkit/ext/attribute/error_handling.rb,
lib/castkit/validators/boolean_validator.rb,
lib/castkit/validators/integer_validator.rb,
lib/castkit/validators/numeric_validator.rb,
lib/castkit/ext/data_object/serialization.rb,
lib/castkit/serializers/default_serializer.rb,
lib/castkit/ext/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: CLI, Contract, Contracts, Core, DataObjects, Ext, Generators, Inflector, Plugins, Serializers, Types, Validators Classes: Attribute, AttributeError, Configuration, ContractError, DataObject, DataObjectError, Error, SerializationError, TypeError, Validator
Constant Summary collapse
- VERSION =
"0.3.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 |
# File 'lib/castkit/castkit.rb', line 65 def dataobject?(obj) obj.is_a?(Class) && obj.ancestors.include?(Castkit::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.
75 76 77 78 79 80 81 |
# File 'lib/castkit/castkit.rb', line 75 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.
95 96 97 |
# File 'lib/castkit/castkit.rb', line 95 def type_deserializer(type) ->(value) { configuration.fetch_type(type).deserialize(value) } end |
.type_serializer(type) ⇒ Proc
Returns a serializer lambda for the given type.
87 88 89 |
# File 'lib/castkit/castkit.rb', line 87 def type_serializer(type) ->(value) { configuration.fetch_type(type).serialize(value) } end |
.type_validator(type) ⇒ Proc
Returns a validator lambda for the given type.
103 104 105 |
# File 'lib/castkit/castkit.rb', line 103 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 |