Module: ROM::SQL::Attribute::TypeExtensions
- Defined in:
- lib/rom/sql/attribute.rb
Overview
Type-specific methods
Class Method Summary collapse
-
.[](type) ⇒ Hash
Gets extensions for a type.
-
.register(type, &block) ⇒ Object
Registers a set of operations supported for a specific type.
Class Method Details
.[](type) ⇒ Hash
Gets extensions for a type
31 32 33 34 |
# File 'lib/rom/sql/attribute.rb', line 31 def [](type) unwrapped = type.optional? ? type.right : type @types[unwrapped.pristine] || EMPTY_HASH end |
.register(type, &block) ⇒ Object
Registers a set of operations supported for a specific type
48 49 50 51 52 53 54 |
# File 'lib/rom/sql/attribute.rb', line 48 def register(type, &block) raise ArgumentError, "Type #{ type } already registered" if @types.key?(type) mod = Module.new(&block) ctx = Object.new.extend(mod) functions = mod.public_instance_methods.each_with_object({}) { |m, ms| ms[m] = ctx.method(m) } @types[type] = functions end |