Class: ROM::StructCompiler Private
- Inherits:
-
Dry::Types::Compiler
- Object
- Dry::Types::Compiler
- ROM::StructCompiler
- Extended by:
- Initializer
- Defined in:
- core/lib/rom/struct_compiler.rb
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Instance Method Summary collapse
-
#call(*args) ⇒ Object
(also: #[])
private
Build a struct class based on relation header ast.
-
#initialize ⇒ StructCompiler
constructor
private
A new instance of StructCompiler.
Constructor Details
#initialize ⇒ StructCompiler
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of StructCompiler.
21 22 23 24 |
# File 'core/lib/rom/struct_compiler.rb', line 21 def initialize(*) super @cache = cache.namespaced(:structs) end |
Instance Method Details
#call(*args) ⇒ Object Also known as: []
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Build a struct class based on relation header ast
30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'core/lib/rom/struct_compiler.rb', line 30 def call(*args) cache.fetch_or_store(args) do name, header, ns = args attributes = header.map(&method(:visit)).compact if attributes.empty? ROM::OpenStruct else build_class(name, ROM::Struct, ns) do |klass| klass.attributes(attributes.to_h) end end end end |