-
Notifications
You must be signed in to change notification settings - Fork 29
/
Copy pathform_core.rb
44 lines (34 loc) · 1.13 KB
/
form_core.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# frozen_string_literal: true
require "form_core/engine"
require "form_core/errors"
require "form_core/coder"
require "form_core/coders/hash_coder"
require "form_core/coders/yaml_coder"
require "form_core/virtual_model"
require "form_core/concerns/models/form"
require "form_core/concerns/models/field"
module FormCore
class << self
def virtual_model_class
@virtual_model_class ||= VirtualModel
end
def virtual_model_class=(klass)
raise ArgumentError, "#{klass} should be sub-class of #{VirtualModel}." unless klass && klass < VirtualModel
@reserved_names = nil
@virtual_model_class = klass
end
def reserved_names
@reserved_names ||= Set.new(
%i[def class module private public protected allocate new parent superclass] +
virtual_model_class.instance_methods(true)
)
end
def virtual_model_coder_class
@virtual_model_coder_class ||= HashCoder
end
def virtual_model_coder_class=(klass)
raise ArgumentError, "#{klass} should be sub-class of #{Coder}." unless klass && klass < Coder
@virtual_model_coder_class = klass
end
end
end