Class: LcpRuby::Types::TypeRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/lcp_ruby/types/type_registry.rb

Class Method Summary collapse

Class Method Details

.clear!Object



17
18
19
# File 'lib/lcp_ruby/types/type_registry.rb', line 17

def clear!
  @registry = {}
end

.default_index_visible?(name) ⇒ Boolean

Returns whether the type appears in default index columns. Default true; only ‘false` opts out (per Decision 11 walk semantics).

Returns:

  • (Boolean)


31
32
33
34
# File 'lib/lcp_ruby/types/type_registry.rb', line 31

def default_index_visible?(name)
  val = walk(name, &:default_index_visible)
  val.nil? ? true : val
end

.null_false_validation_for(name) ⇒ Object

Returns the array of validation rules to emit/apply when a field of this type has ‘null: false`. Empty array `[]` (explicit “no implicit validation”) is preserved through the `||` because `[]` is truthy in Ruby — fallthrough triggers only on nil.



40
41
42
# File 'lib/lcp_ruby/types/type_registry.rb', line 40

def null_false_validation_for(name)
  walk(name, &:null_false_validation) || [ { "type" => "presence" } ]
end

.register(name, type_definition) ⇒ Object



5
6
7
# File 'lib/lcp_ruby/types/type_registry.rb', line 5

def register(name, type_definition)
  registry[name.to_s] = type_definition
end

.registered?(name) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/lcp_ruby/types/type_registry.rb', line 13

def registered?(name)
  registry.key?(name.to_s)
end

.renderer_for(name) ⇒ Object

Returns the type’s default renderer key (existing TypeDefinition#renderer field), walking the base_type chain so custom types inherit base-type defaults unless explicitly overridden. Returns nil if no value is set anywhere along the chain.



25
26
27
# File 'lib/lcp_ruby/types/type_registry.rb', line 25

def renderer_for(name)
  walk(name, &:renderer)
end

.reserved_clashes_for(name) ⇒ Object

Returns method names that this type generates from a field’s name. Validator + generator preflight reject field names whose generated method shadows existing AR/Relation methods.



47
48
49
# File 'lib/lcp_ruby/types/type_registry.rb', line 47

def reserved_clashes_for(name)
  walk(name, &:reserved_clashes) || []
end

.resolve(name) ⇒ Object



9
10
11
# File 'lib/lcp_ruby/types/type_registry.rb', line 9

def resolve(name)
  registry[name.to_s]
end