isomorfeus-data 2.5.5 → 22.9.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/isomorfeus/data/config.rb +8 -25
- data/lib/isomorfeus/data/enhancer.rb +291 -0
- data/lib/isomorfeus/data/file_accelerator.rb +95 -0
- data/lib/isomorfeus/data/object_accelerator.rb +82 -90
- data/lib/isomorfeus/data/rack_middleware.rb +73 -0
- data/lib/isomorfeus/data/reducer.rb +47 -17
- data/lib/isomorfeus/data/sid.rb +34 -0
- data/lib/isomorfeus/data/version.rb +1 -1
- data/lib/isomorfeus-data.rb +27 -32
- data/lib/lucid_data_generic.rb +163 -0
- data/lib/lucid_file.rb +137 -0
- data/lib/lucid_object.rb +431 -0
- metadata +51 -47
- data/lib/data_uri/open_uri.rb +0 -22
- data/lib/data_uri/uri.rb +0 -61
- data/lib/data_uri.rb +0 -4
- data/lib/isomorfeus/data/field_support.rb +0 -269
- data/lib/isomorfeus/data/generic_class_api.rb +0 -127
- data/lib/isomorfeus/data/generic_instance_api.rb +0 -171
- data/lib/isomorfeus/data/handler/generic.rb +0 -133
- data/lib/isomorfeus_data/lucid_file/base.rb +0 -10
- data/lib/isomorfeus_data/lucid_file/mixin.rb +0 -281
- data/lib/isomorfeus_data/lucid_object/base.rb +0 -10
- data/lib/isomorfeus_data/lucid_object/mixin.rb +0 -250
- data/lib/isomorfeus_data/lucid_query/base.rb +0 -10
- data/lib/isomorfeus_data/lucid_query/mixin.rb +0 -112
- data/lib/isomorfeus_data/lucid_query_result.rb +0 -113
- data/opal/iso_uri.rb +0 -29
- data/opal/uri/common.rb +0 -18
- data/opal/uri/generic.rb +0 -47
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: isomorfeus-data
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 22.9.0.rc1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jan Biedermann
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-
|
|
11
|
+
date: 2022-09-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -16,42 +16,42 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 7.0.
|
|
19
|
+
version: 7.0.3
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 7.0.
|
|
26
|
+
version: 7.0.3
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: oj
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 3.13.
|
|
33
|
+
version: 3.13.21
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 3.13.
|
|
40
|
+
version: 3.13.21
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: opal
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 1.5.
|
|
47
|
+
version: 1.5.1
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 1.5.
|
|
54
|
+
version: 1.5.1
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: opal-activesupport
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -66,118 +66,132 @@ dependencies:
|
|
|
66
66
|
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: 0.3.3
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: marcel
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: 1.0.2
|
|
76
|
+
type: :runtime
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: 1.0.2
|
|
69
83
|
- !ruby/object:Gem::Dependency
|
|
70
84
|
name: isomorfeus-asset-manager
|
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
|
72
86
|
requirements:
|
|
73
87
|
- - "~>"
|
|
74
88
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 0.
|
|
89
|
+
version: 0.15.1
|
|
76
90
|
type: :runtime
|
|
77
91
|
prerelease: false
|
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
93
|
requirements:
|
|
80
94
|
- - "~>"
|
|
81
95
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 0.
|
|
96
|
+
version: 0.15.1
|
|
83
97
|
- !ruby/object:Gem::Dependency
|
|
84
98
|
name: isomorfeus-ferret
|
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
|
86
100
|
requirements:
|
|
87
101
|
- - "~>"
|
|
88
102
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: 0.14.
|
|
103
|
+
version: 0.14.4
|
|
90
104
|
type: :runtime
|
|
91
105
|
prerelease: false
|
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
107
|
requirements:
|
|
94
108
|
- - "~>"
|
|
95
109
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: 0.14.
|
|
110
|
+
version: 0.14.4
|
|
97
111
|
- !ruby/object:Gem::Dependency
|
|
98
112
|
name: isomorfeus-i18n
|
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
|
100
114
|
requirements:
|
|
101
115
|
- - '='
|
|
102
116
|
- !ruby/object:Gem::Version
|
|
103
|
-
version:
|
|
117
|
+
version: 22.9.0.rc1
|
|
104
118
|
type: :runtime
|
|
105
119
|
prerelease: false
|
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
121
|
requirements:
|
|
108
122
|
- - '='
|
|
109
123
|
- !ruby/object:Gem::Version
|
|
110
|
-
version:
|
|
124
|
+
version: 22.9.0.rc1
|
|
111
125
|
- !ruby/object:Gem::Dependency
|
|
112
126
|
name: isomorfeus-policy
|
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
|
114
128
|
requirements:
|
|
115
129
|
- - '='
|
|
116
130
|
- !ruby/object:Gem::Version
|
|
117
|
-
version:
|
|
131
|
+
version: 22.9.0.rc1
|
|
118
132
|
type: :runtime
|
|
119
133
|
prerelease: false
|
|
120
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
135
|
requirements:
|
|
122
136
|
- - '='
|
|
123
137
|
- !ruby/object:Gem::Version
|
|
124
|
-
version:
|
|
138
|
+
version: 22.9.0.rc1
|
|
125
139
|
- !ruby/object:Gem::Dependency
|
|
126
140
|
name: isomorfeus-preact
|
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
|
128
142
|
requirements:
|
|
129
|
-
- -
|
|
143
|
+
- - '='
|
|
130
144
|
- !ruby/object:Gem::Version
|
|
131
|
-
version:
|
|
145
|
+
version: 22.9.0.rc1
|
|
132
146
|
type: :runtime
|
|
133
147
|
prerelease: false
|
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
149
|
requirements:
|
|
136
|
-
- -
|
|
150
|
+
- - '='
|
|
137
151
|
- !ruby/object:Gem::Version
|
|
138
|
-
version:
|
|
152
|
+
version: 22.9.0.rc1
|
|
139
153
|
- !ruby/object:Gem::Dependency
|
|
140
154
|
name: isomorfeus-redux
|
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
|
142
156
|
requirements:
|
|
143
|
-
- -
|
|
157
|
+
- - '='
|
|
144
158
|
- !ruby/object:Gem::Version
|
|
145
|
-
version:
|
|
159
|
+
version: 22.9.0.rc1
|
|
146
160
|
type: :runtime
|
|
147
161
|
prerelease: false
|
|
148
162
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
163
|
requirements:
|
|
150
|
-
- -
|
|
164
|
+
- - '='
|
|
151
165
|
- !ruby/object:Gem::Version
|
|
152
|
-
version:
|
|
166
|
+
version: 22.9.0.rc1
|
|
153
167
|
- !ruby/object:Gem::Dependency
|
|
154
168
|
name: isomorfeus-transport
|
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
|
156
170
|
requirements:
|
|
157
171
|
- - '='
|
|
158
172
|
- !ruby/object:Gem::Version
|
|
159
|
-
version:
|
|
173
|
+
version: 22.9.0.rc1
|
|
160
174
|
type: :runtime
|
|
161
175
|
prerelease: false
|
|
162
176
|
version_requirements: !ruby/object:Gem::Requirement
|
|
163
177
|
requirements:
|
|
164
178
|
- - '='
|
|
165
179
|
- !ruby/object:Gem::Version
|
|
166
|
-
version:
|
|
180
|
+
version: 22.9.0.rc1
|
|
167
181
|
- !ruby/object:Gem::Dependency
|
|
168
182
|
name: isomorfeus
|
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
|
170
184
|
requirements:
|
|
171
185
|
- - '='
|
|
172
186
|
- !ruby/object:Gem::Version
|
|
173
|
-
version:
|
|
187
|
+
version: 22.9.0.rc1
|
|
174
188
|
type: :development
|
|
175
189
|
prerelease: false
|
|
176
190
|
version_requirements: !ruby/object:Gem::Requirement
|
|
177
191
|
requirements:
|
|
178
192
|
- - '='
|
|
179
193
|
- !ruby/object:Gem::Version
|
|
180
|
-
version:
|
|
194
|
+
version: 22.9.0.rc1
|
|
181
195
|
- !ruby/object:Gem::Dependency
|
|
182
196
|
name: rake
|
|
183
197
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -214,28 +228,18 @@ extra_rdoc_files: []
|
|
|
214
228
|
files:
|
|
215
229
|
- LICENSE
|
|
216
230
|
- README.md
|
|
217
|
-
- lib/data_uri.rb
|
|
218
|
-
- lib/data_uri/open_uri.rb
|
|
219
|
-
- lib/data_uri/uri.rb
|
|
220
231
|
- lib/isomorfeus-data.rb
|
|
221
232
|
- lib/isomorfeus/data/config.rb
|
|
222
|
-
- lib/isomorfeus/data/
|
|
223
|
-
- lib/isomorfeus/data/
|
|
224
|
-
- lib/isomorfeus/data/generic_instance_api.rb
|
|
225
|
-
- lib/isomorfeus/data/handler/generic.rb
|
|
233
|
+
- lib/isomorfeus/data/enhancer.rb
|
|
234
|
+
- lib/isomorfeus/data/file_accelerator.rb
|
|
226
235
|
- lib/isomorfeus/data/object_accelerator.rb
|
|
236
|
+
- lib/isomorfeus/data/rack_middleware.rb
|
|
227
237
|
- lib/isomorfeus/data/reducer.rb
|
|
238
|
+
- lib/isomorfeus/data/sid.rb
|
|
228
239
|
- lib/isomorfeus/data/version.rb
|
|
229
|
-
- lib/
|
|
230
|
-
- lib/
|
|
231
|
-
- lib/
|
|
232
|
-
- lib/isomorfeus_data/lucid_object/mixin.rb
|
|
233
|
-
- lib/isomorfeus_data/lucid_query/base.rb
|
|
234
|
-
- lib/isomorfeus_data/lucid_query/mixin.rb
|
|
235
|
-
- lib/isomorfeus_data/lucid_query_result.rb
|
|
236
|
-
- opal/iso_uri.rb
|
|
237
|
-
- opal/uri/common.rb
|
|
238
|
-
- opal/uri/generic.rb
|
|
240
|
+
- lib/lucid_data_generic.rb
|
|
241
|
+
- lib/lucid_file.rb
|
|
242
|
+
- lib/lucid_object.rb
|
|
239
243
|
homepage: https://isomorfeus.com
|
|
240
244
|
licenses:
|
|
241
245
|
- MIT
|
|
@@ -253,9 +257,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
253
257
|
version: '0'
|
|
254
258
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
255
259
|
requirements:
|
|
256
|
-
- - "
|
|
260
|
+
- - ">"
|
|
257
261
|
- !ruby/object:Gem::Version
|
|
258
|
-
version:
|
|
262
|
+
version: 1.3.1
|
|
259
263
|
requirements: []
|
|
260
264
|
rubygems_version: 3.3.7
|
|
261
265
|
signing_key:
|
data/lib/data_uri/open_uri.rb
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
module URI
|
|
2
|
-
|
|
3
|
-
class Data
|
|
4
|
-
|
|
5
|
-
def open
|
|
6
|
-
io = StringIO.new(data)
|
|
7
|
-
OpenURI::Meta.init(io)
|
|
8
|
-
io.meta_add_field('content-type', content_type)
|
|
9
|
-
if block_given?
|
|
10
|
-
begin
|
|
11
|
-
yield io
|
|
12
|
-
ensure
|
|
13
|
-
io.close
|
|
14
|
-
end
|
|
15
|
-
else
|
|
16
|
-
io
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
end
|
data/lib/data_uri/uri.rb
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
module URI
|
|
2
|
-
class Data < Generic
|
|
3
|
-
COMPONENT = [:scheme, :opaque]
|
|
4
|
-
MIME_TYPE_RE = %r{^([-\w.+]+/[-\w.+]*)}
|
|
5
|
-
MIME_PARAM_RE = /^;([-\w.+]+)=([^;,]+)/
|
|
6
|
-
|
|
7
|
-
attr_reader :content_type, :data
|
|
8
|
-
|
|
9
|
-
def initialize(*args)
|
|
10
|
-
if args.length == 1
|
|
11
|
-
uri = args.first.to_s
|
|
12
|
-
unless uri.match(/^data:/)
|
|
13
|
-
raise URI::InvalidURIError.new('Invalid Data URI: ' + args.first.inspect)
|
|
14
|
-
end
|
|
15
|
-
@scheme = 'data'
|
|
16
|
-
@opaque = uri[5 .. -1]
|
|
17
|
-
else
|
|
18
|
-
super(*args)
|
|
19
|
-
end
|
|
20
|
-
@data = @opaque
|
|
21
|
-
if md = MIME_TYPE_RE.match(@data)
|
|
22
|
-
@content_type = md[1]
|
|
23
|
-
@data = @data[@content_type.length .. -1]
|
|
24
|
-
end
|
|
25
|
-
@content_type ||= 'text/plain'
|
|
26
|
-
@mime_params = {}
|
|
27
|
-
while md = MIME_PARAM_RE.match(@data)
|
|
28
|
-
@mime_params[md[1]] = md[2]
|
|
29
|
-
@data = @data[md[0].length .. -1]
|
|
30
|
-
end
|
|
31
|
-
if base64 = /^;base64/.match(@data)
|
|
32
|
-
@data = @data[7 .. -1]
|
|
33
|
-
end
|
|
34
|
-
unless /^,/.match(@data)
|
|
35
|
-
raise URI::InvalidURIError.new('Invalid data URI')
|
|
36
|
-
end
|
|
37
|
-
@data = @data[1 .. -1]
|
|
38
|
-
@data = base64 ? Base64.decode64(@data) : URI.decode(@data)
|
|
39
|
-
if @data.respond_to?(:force_encoding) && charset = @mime_params['charset']
|
|
40
|
-
@data.force_encoding(charset)
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def self.build(arg)
|
|
45
|
-
data = nil
|
|
46
|
-
content_type = nil
|
|
47
|
-
case arg
|
|
48
|
-
when IO
|
|
49
|
-
data = arg
|
|
50
|
-
when Hash
|
|
51
|
-
data = arg[:data]
|
|
52
|
-
content_type = arg[:content_type]
|
|
53
|
-
end
|
|
54
|
-
raise 'Invalid build argument: ' + arg.inspect unless data
|
|
55
|
-
if !content_type && data.respond_to?(:content_type)
|
|
56
|
-
content_type = data.content_type
|
|
57
|
-
end
|
|
58
|
-
new('data', nil, nil, nil, nil, nil, "#{content_type};base64,#{Base64.encode64(data.read).chop}", nil, nil)
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
data/lib/data_uri.rb
DELETED
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
module Isomorfeus
|
|
2
|
-
module Data
|
|
3
|
-
module FieldSupport
|
|
4
|
-
def self.included(base)
|
|
5
|
-
base.instance_exec do
|
|
6
|
-
@@object_validation_proc = proc do |v|
|
|
7
|
-
fail = false
|
|
8
|
-
if v.is_a?(Array)
|
|
9
|
-
v.each { |e| fail = true unless e.nil? || e.is_a?(LucidObject::Mixin) }
|
|
10
|
-
elsif !v.nil? && !v.is_a?(LucidObject::Mixin)
|
|
11
|
-
fail = true
|
|
12
|
-
end
|
|
13
|
-
raise "must be nil, a LucidObject::Mixin or a Array of LucidObject::Mixin" if fail
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def field_types
|
|
17
|
-
# determines how the item is stored in the index
|
|
18
|
-
@field_types ||= {}
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def field_options
|
|
22
|
-
# options for the index
|
|
23
|
-
@field_options ||= {}
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def field_conditions
|
|
27
|
-
# conditions for validating the field data
|
|
28
|
-
@field_conditions ||= {}
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def _register_field(name, type, options)
|
|
32
|
-
field_options[name] = {}
|
|
33
|
-
field_options[name][:default_boost] = options.delete(:default_boost) if options.key?(:default_boost)
|
|
34
|
-
field_options[name][:default_boost] = options.delete(:default_boost) if options.key?(:boost)
|
|
35
|
-
field_options[name][:index] = options.delete(:index) { :no }
|
|
36
|
-
field_options[name][:store] = options.delete(:store) if options.key?(:store)
|
|
37
|
-
field_options[name][:compress] = options.delete(:compress) if options.key?(:compress)
|
|
38
|
-
if field_options[name][:index] == :yes
|
|
39
|
-
field_options[name][:term_vector] = options.delete(:term_vector) { type == :text_field ? :with_positions_offsets : :no }
|
|
40
|
-
elsif field_options[name][:index] == :no
|
|
41
|
-
field_options[name][:term_vector] = :no
|
|
42
|
-
end
|
|
43
|
-
field_conditions[name] = options
|
|
44
|
-
field_types[name] = type
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def text_field(name, options = {})
|
|
48
|
-
field(name, :text_field, options)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def attribute(name, options = {})
|
|
52
|
-
field(name, :attribute, options)
|
|
53
|
-
end
|
|
54
|
-
alias embed attribute
|
|
55
|
-
|
|
56
|
-
def object(name, options = {})
|
|
57
|
-
default_options = { validate_block: @@object_validation_proc }
|
|
58
|
-
field(name, :object, default_options.merge(options))
|
|
59
|
-
end
|
|
60
|
-
alias reference object
|
|
61
|
-
|
|
62
|
-
def field?(field_name)
|
|
63
|
-
field_options.key?(field_name)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def text_field?(field_name)
|
|
67
|
-
field_types[field_name] == :text_field
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def attribute?(attr_name)
|
|
71
|
-
field_types[attr_name] == :attribute
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def object?(obj_name)
|
|
75
|
-
field_types[obj_name] == :object
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def validate_field!(field_name, val)
|
|
79
|
-
raise "no such field" unless field?(field_name)
|
|
80
|
-
Isomorfeus::Props::Validator.new(self.name, field_name, val, field_conditions[field_name]).validate!
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
def valid_field?(field_name, val)
|
|
84
|
-
validate_field!(field_name, val)
|
|
85
|
-
rescue
|
|
86
|
-
false
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def valid_text_field?(field_name, val)
|
|
90
|
-
return valid_field?(field_name, val) if text_field?(field_name)
|
|
91
|
-
false
|
|
92
|
-
rescue
|
|
93
|
-
false
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
def valid_attribute?(attr_name, val)
|
|
97
|
-
return valid_field?(attr_name, val) if attribute?(attr_name)
|
|
98
|
-
false
|
|
99
|
-
rescue
|
|
100
|
-
false
|
|
101
|
-
end
|
|
102
|
-
alias valid_embed? valid_attribute?
|
|
103
|
-
|
|
104
|
-
def valid_object?(obj_name, val)
|
|
105
|
-
return valid_field?(obj_name, val) if object?(obj_name)
|
|
106
|
-
false
|
|
107
|
-
rescue
|
|
108
|
-
false
|
|
109
|
-
end
|
|
110
|
-
alias valid_reference? valid_object?
|
|
111
|
-
|
|
112
|
-
def validate
|
|
113
|
-
Isomorfeus::Props::ValidateHashProxy.new
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
def _validate_field(field_name, val)
|
|
117
|
-
Isomorfeus.raise_error(message: "#{self.name}: No such text_field, attribute or object declared: '#{field_name}'!") unless field_conditions.key?(field_name)
|
|
118
|
-
Isomorfeus::Props::Validator.new(self.name, field_name, val, field_conditions[field_name]).validated_value
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
def _validate_fields(fields)
|
|
122
|
-
field_conditions.each_key do |field_name|
|
|
123
|
-
if field_conditions[field_name].key?(:required) && field_conditions[field_name][:required] && !fields.key?(field_name)
|
|
124
|
-
Isomorfeus.raise_error(message: "Required #{field_types[field_name]} #{field_name} not given!")
|
|
125
|
-
end
|
|
126
|
-
fields[field_name] = _validate_field(field_name, fields[field_name])
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
def _validate_field(field_name, val)
|
|
132
|
-
self.class._validate_field(field_name, val)
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
def _validate_fields(fields)
|
|
136
|
-
self.class._validate_fields(fields)
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
if RUBY_ENGINE == 'opal'
|
|
140
|
-
base.instance_exec do
|
|
141
|
-
def field(name, type, options)
|
|
142
|
-
_register_field(name, type, options)
|
|
143
|
-
|
|
144
|
-
if type == :object
|
|
145
|
-
define_method(name) do
|
|
146
|
-
_get_object(name)
|
|
147
|
-
end
|
|
148
|
-
else
|
|
149
|
-
define_method(name) do
|
|
150
|
-
_get_field(name)
|
|
151
|
-
end
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
define_method("#{name}=") do |val|
|
|
155
|
-
val = _validate_field(name, val)
|
|
156
|
-
changed!
|
|
157
|
-
@_changed_fields[name] = val
|
|
158
|
-
end
|
|
159
|
-
end
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
def validate_fields_function
|
|
163
|
-
%x{
|
|
164
|
-
if (typeof self.validate_fields_function === 'undefined') {
|
|
165
|
-
self.validate_fields_function = function(fields_object) {
|
|
166
|
-
try { self.$_validate_fields(Opal.Hash.$new(fields_object)) }
|
|
167
|
-
catch (e) { return e.message; }
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
return self.validate_fields_function;
|
|
171
|
-
}
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
def validate_field_function(field_name)
|
|
175
|
-
function_name = "validate_field_#{field_name}_function"
|
|
176
|
-
%x{
|
|
177
|
-
if (typeof self[function_name] === 'undefined') {
|
|
178
|
-
self[function_name] = function(value) {
|
|
179
|
-
try { self.$_validate_field(field_name, value); }
|
|
180
|
-
catch (e) { return e.message; }
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
return self[function_name];
|
|
184
|
-
}
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
def _get_field(name)
|
|
188
|
-
return @_changed_fields[name] if @_changed_fields.key?(name)
|
|
189
|
-
path = @_store_path + [name]
|
|
190
|
-
result = Redux.fetch_by_path(*path)
|
|
191
|
-
%x{
|
|
192
|
-
if (result === null) { return nil; }
|
|
193
|
-
else { return result; }
|
|
194
|
-
}
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
def _get_object(name)
|
|
198
|
-
return @_changed_fields[name] if @_changed_fields.key?(name)
|
|
199
|
-
return @_objects[name] if @_objects.key?(name)
|
|
200
|
-
path = @_store_path + [name]
|
|
201
|
-
sid_or_array = Redux.fetch_by_path(*path)
|
|
202
|
-
return nil if `(sid_or_array === null)`
|
|
203
|
-
if sid_or_array[0].is_a?(String)
|
|
204
|
-
@_objects[name] = Isomorfeus.instance_from_sid(sid_or_array)
|
|
205
|
-
elsif sid_or_array[0].is_a?(Array)
|
|
206
|
-
a = sid_or_array.map { |sid| Isomorfeus.instance_from_sid(sid) if sid }
|
|
207
|
-
a.compact!
|
|
208
|
-
@_objects[name] = a
|
|
209
|
-
end
|
|
210
|
-
@_objects[name]
|
|
211
|
-
end
|
|
212
|
-
|
|
213
|
-
def fields
|
|
214
|
-
raw_fields = Redux.fetch_by_path(*@_store_path)
|
|
215
|
-
hash = Hash.new(raw_fields)
|
|
216
|
-
hash.merge!(@_changed_fields) if @_changed_fields
|
|
217
|
-
hash
|
|
218
|
-
end
|
|
219
|
-
|
|
220
|
-
def _get_selected_fields
|
|
221
|
-
sel_fields = fields.dup
|
|
222
|
-
self.class.field_types.each do |field, type|
|
|
223
|
-
if type == :object
|
|
224
|
-
v = sel_fields[field]
|
|
225
|
-
sel_fields[field] = v.is_a?(Array) ? v.map(&:sid) : v&.sid
|
|
226
|
-
end
|
|
227
|
-
end
|
|
228
|
-
sel_fields
|
|
229
|
-
end
|
|
230
|
-
else
|
|
231
|
-
base.instance_exec do
|
|
232
|
-
def field(name, type, options)
|
|
233
|
-
_register_field(name, type, options)
|
|
234
|
-
|
|
235
|
-
define_method(name) do
|
|
236
|
-
@_raw_fields[name]
|
|
237
|
-
end
|
|
238
|
-
|
|
239
|
-
define_method("#{name}=") do |val|
|
|
240
|
-
val = _validate_field(name, val)
|
|
241
|
-
changed!
|
|
242
|
-
@_raw_fields[name] = val
|
|
243
|
-
end
|
|
244
|
-
end
|
|
245
|
-
end
|
|
246
|
-
|
|
247
|
-
def fields
|
|
248
|
-
@_raw_fields
|
|
249
|
-
end
|
|
250
|
-
|
|
251
|
-
def _get_selected_fields
|
|
252
|
-
sel_fields = fields.transform_keys(&:to_s)
|
|
253
|
-
ft = self.class.field_types
|
|
254
|
-
self.class.field_conditions.each do |field, options|
|
|
255
|
-
field_s = field.to_s
|
|
256
|
-
if options[:server_only]
|
|
257
|
-
sel_fields.delete(field_s)
|
|
258
|
-
elsif ft[field] == :object
|
|
259
|
-
v = sel_fields[field_s]
|
|
260
|
-
sel_fields[field_s] = v.is_a?(Array) ? v.map(&:sid) : v&.sid
|
|
261
|
-
end
|
|
262
|
-
end
|
|
263
|
-
sel_fields
|
|
264
|
-
end
|
|
265
|
-
end
|
|
266
|
-
end
|
|
267
|
-
end
|
|
268
|
-
end
|
|
269
|
-
end
|