ae_easy-core 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/CODE_OF_CONDUCT.md +1 -1
  3. data/Gemfile +1 -1
  4. data/LICENSE +1 -1
  5. data/README.md +8 -4
  6. data/Rakefile +0 -10
  7. data/ae_easy-core.gemspec +6 -13
  8. data/lib/ae_easy/core.rb +4 -256
  9. metadata +18 -125
  10. data/doc/AeEasy.html +0 -117
  11. data/doc/AeEasy/Core.html +0 -1590
  12. data/doc/AeEasy/Core/Config.html +0 -311
  13. data/doc/AeEasy/Core/Exception.html +0 -117
  14. data/doc/AeEasy/Core/Exception/OutdatedError.html +0 -135
  15. data/doc/AeEasy/Core/Helper.html +0 -117
  16. data/doc/AeEasy/Core/Helper/Cookie.html +0 -1070
  17. data/doc/AeEasy/Core/Mock.html +0 -282
  18. data/doc/AeEasy/Core/Mock/FakeDb.html +0 -3779
  19. data/doc/AeEasy/Core/Mock/FakeExecutor.html +0 -3289
  20. data/doc/AeEasy/Core/Mock/FakeFinisher.html +0 -160
  21. data/doc/AeEasy/Core/Mock/FakeParser.html +0 -160
  22. data/doc/AeEasy/Core/Mock/FakeSeeder.html +0 -160
  23. data/doc/AeEasy/Core/Plugin.html +0 -117
  24. data/doc/AeEasy/Core/Plugin/CollectionVault.html +0 -299
  25. data/doc/AeEasy/Core/Plugin/ConfigBehavior.html +0 -541
  26. data/doc/AeEasy/Core/Plugin/ContextIntegrator.html +0 -445
  27. data/doc/AeEasy/Core/Plugin/Executor.html +0 -259
  28. data/doc/AeEasy/Core/Plugin/ExecutorBehavior.html +0 -344
  29. data/doc/AeEasy/Core/Plugin/Finisher.html +0 -265
  30. data/doc/AeEasy/Core/Plugin/FinisherBehavior.html +0 -142
  31. data/doc/AeEasy/Core/Plugin/InitializeHook.html +0 -220
  32. data/doc/AeEasy/Core/Plugin/Parser.html +0 -270
  33. data/doc/AeEasy/Core/Plugin/ParserBehavior.html +0 -235
  34. data/doc/AeEasy/Core/Plugin/Seeder.html +0 -674
  35. data/doc/AeEasy/Core/Plugin/SeederBehavior.html +0 -142
  36. data/doc/AeEasy/Core/SmartCollection.html +0 -1087
  37. data/doc/_index.html +0 -364
  38. data/doc/class_list.html +0 -51
  39. data/doc/css/common.css +0 -1
  40. data/doc/css/full_list.css +0 -58
  41. data/doc/css/style.css +0 -496
  42. data/doc/file.README.html +0 -91
  43. data/doc/file_list.html +0 -56
  44. data/doc/frames.html +0 -17
  45. data/doc/index.html +0 -91
  46. data/doc/js/app.js +0 -303
  47. data/doc/js/full_list.js +0 -216
  48. data/doc/js/jquery.js +0 -4
  49. data/doc/method_list.html +0 -939
  50. data/doc/top-level-namespace.html +0 -110
  51. data/lib/ae_easy/core/config.rb +0 -27
  52. data/lib/ae_easy/core/exception.rb +0 -8
  53. data/lib/ae_easy/core/exception/outdated_error.rb +0 -9
  54. data/lib/ae_easy/core/helper.rb +0 -8
  55. data/lib/ae_easy/core/helper/cookie.rb +0 -209
  56. data/lib/ae_easy/core/mock.rb +0 -45
  57. data/lib/ae_easy/core/mock/fake_db.rb +0 -561
  58. data/lib/ae_easy/core/mock/fake_executor.rb +0 -373
  59. data/lib/ae_easy/core/mock/fake_finisher.rb +0 -28
  60. data/lib/ae_easy/core/mock/fake_parser.rb +0 -33
  61. data/lib/ae_easy/core/mock/fake_seeder.rb +0 -28
  62. data/lib/ae_easy/core/plugin.rb +0 -19
  63. data/lib/ae_easy/core/plugin/collection_vault.rb +0 -23
  64. data/lib/ae_easy/core/plugin/config_behavior.rb +0 -43
  65. data/lib/ae_easy/core/plugin/context_integrator.rb +0 -60
  66. data/lib/ae_easy/core/plugin/executor.rb +0 -19
  67. data/lib/ae_easy/core/plugin/executor_behavior.rb +0 -32
  68. data/lib/ae_easy/core/plugin/finisher.rb +0 -19
  69. data/lib/ae_easy/core/plugin/finisher_behavior.rb +0 -9
  70. data/lib/ae_easy/core/plugin/initialize_hook.rb +0 -17
  71. data/lib/ae_easy/core/plugin/parser.rb +0 -19
  72. data/lib/ae_easy/core/plugin/parser_behavior.rb +0 -17
  73. data/lib/ae_easy/core/plugin/seeder.rb +0 -44
  74. data/lib/ae_easy/core/plugin/seeder_behavior.rb +0 -9
  75. data/lib/ae_easy/core/smart_collection.rb +0 -236
  76. data/lib/ae_easy/core/version.rb +0 -6
@@ -1,142 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>
7
- Module: AeEasy::Core::Plugin::SeederBehavior
8
-
9
- &mdash; Documentation by YARD 0.9.20
10
-
11
- </title>
12
-
13
- <link rel="stylesheet" href="../../../css/style.css" type="text/css" charset="utf-8" />
14
-
15
- <link rel="stylesheet" href="../../../css/common.css" type="text/css" charset="utf-8" />
16
-
17
- <script type="text/javascript" charset="utf-8">
18
- pathId = "AeEasy::Core::Plugin::SeederBehavior";
19
- relpath = '../../../';
20
- </script>
21
-
22
-
23
- <script type="text/javascript" charset="utf-8" src="../../../js/jquery.js"></script>
24
-
25
- <script type="text/javascript" charset="utf-8" src="../../../js/app.js"></script>
26
-
27
-
28
- </head>
29
- <body>
30
- <div class="nav_wrap">
31
- <iframe id="nav" src="../../../class_list.html?1"></iframe>
32
- <div id="resizer"></div>
33
- </div>
34
-
35
- <div id="main" tabindex="-1">
36
- <div id="header">
37
- <div id="menu">
38
-
39
- <a href="../../../_index.html">Index (S)</a> &raquo;
40
- <span class='title'><span class='object_link'><a href="../../../AeEasy.html" title="AeEasy (module)">AeEasy</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../../Core.html" title="AeEasy::Core (module)">Core</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Plugin.html" title="AeEasy::Core::Plugin (module)">Plugin</a></span></span>
41
- &raquo;
42
- <span class="title">SeederBehavior</span>
43
-
44
- </div>
45
-
46
- <div id="search">
47
-
48
- <a class="full_list_link" id="class_list_link"
49
- href="../../../class_list.html">
50
-
51
- <svg width="24" height="24">
52
- <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
- <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
- <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
- </svg>
56
- </a>
57
-
58
- </div>
59
- <div class="clear"></div>
60
- </div>
61
-
62
- <div id="content"><h1>Module: AeEasy::Core::Plugin::SeederBehavior
63
-
64
-
65
-
66
- </h1>
67
- <div class="box_info">
68
-
69
-
70
-
71
-
72
-
73
-
74
- <dl>
75
- <dt>Includes:</dt>
76
- <dd><span class='object_link'><a href="ExecutorBehavior.html" title="AeEasy::Core::Plugin::ExecutorBehavior (module)">ExecutorBehavior</a></span></dd>
77
- </dl>
78
-
79
-
80
-
81
-
82
- <dl>
83
- <dt>Included in:</dt>
84
- <dd><span class='object_link'><a href="Seeder.html" title="AeEasy::Core::Plugin::Seeder (module)">Seeder</a></span></dd>
85
- </dl>
86
-
87
-
88
-
89
- <dl>
90
- <dt>Defined in:</dt>
91
- <dd>lib/ae_easy/core/plugin/seeder_behavior.rb</dd>
92
- </dl>
93
-
94
- </div>
95
-
96
-
97
-
98
-
99
-
100
-
101
-
102
- <h2>Instance Attribute Summary</h2>
103
-
104
- <h3 class="inherited">Attributes included from <span class='object_link'><a href="ContextIntegrator.html" title="AeEasy::Core::Plugin::ContextIntegrator (module)">ContextIntegrator</a></span></h3>
105
- <p class="inherited"><span class='object_link'><a href="ContextIntegrator.html#context-instance_method" title="AeEasy::Core::Plugin::ContextIntegrator#context (method)">#context</a></span></p>
106
-
107
-
108
-
109
-
110
-
111
-
112
-
113
-
114
-
115
- <h2>Method Summary</h2>
116
-
117
- <h3 class="inherited">Methods included from <span class='object_link'><a href="ExecutorBehavior.html" title="AeEasy::Core::Plugin::ExecutorBehavior (module)">ExecutorBehavior</a></span></h3>
118
- <p class="inherited"><span class='object_link'><a href="ExecutorBehavior.html#enqueue-instance_method" title="AeEasy::Core::Plugin::ExecutorBehavior#enqueue (method)">#enqueue</a></span>, <span class='object_link'><a href="ExecutorBehavior.html#save-instance_method" title="AeEasy::Core::Plugin::ExecutorBehavior#save (method)">#save</a></span></p>
119
-
120
-
121
-
122
-
123
-
124
-
125
-
126
-
127
-
128
- <h3 class="inherited">Methods included from <span class='object_link'><a href="ContextIntegrator.html" title="AeEasy::Core::Plugin::ContextIntegrator (module)">ContextIntegrator</a></span></h3>
129
- <p class="inherited"><span class='object_link'><a href="ContextIntegrator.html#initialize_hook_core_context_integrator-instance_method" title="AeEasy::Core::Plugin::ContextIntegrator#initialize_hook_core_context_integrator (method)">#initialize_hook_core_context_integrator</a></span>, <span class='object_link'><a href="ContextIntegrator.html#mock_context-instance_method" title="AeEasy::Core::Plugin::ContextIntegrator#mock_context (method)">#mock_context</a></span></p>
130
-
131
-
132
- </div>
133
-
134
- <div id="footer">
135
- Generated on Fri Sep 27 02:01:31 2019 by
136
- <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
137
- 0.9.20 (ruby-2.5.3).
138
- </div>
139
-
140
- </div>
141
- </body>
142
- </html>
@@ -1,1087 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>
7
- Class: AeEasy::Core::SmartCollection
8
-
9
- &mdash; Documentation by YARD 0.9.20
10
-
11
- </title>
12
-
13
- <link rel="stylesheet" href="../../css/style.css" type="text/css" charset="utf-8" />
14
-
15
- <link rel="stylesheet" href="../../css/common.css" type="text/css" charset="utf-8" />
16
-
17
- <script type="text/javascript" charset="utf-8">
18
- pathId = "AeEasy::Core::SmartCollection";
19
- relpath = '../../';
20
- </script>
21
-
22
-
23
- <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
24
-
25
- <script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
26
-
27
-
28
- </head>
29
- <body>
30
- <div class="nav_wrap">
31
- <iframe id="nav" src="../../class_list.html?1"></iframe>
32
- <div id="resizer"></div>
33
- </div>
34
-
35
- <div id="main" tabindex="-1">
36
- <div id="header">
37
- <div id="menu">
38
-
39
- <a href="../../_index.html">Index (S)</a> &raquo;
40
- <span class='title'><span class='object_link'><a href="../../AeEasy.html" title="AeEasy (module)">AeEasy</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Core.html" title="AeEasy::Core (module)">Core</a></span></span>
41
- &raquo;
42
- <span class="title">SmartCollection</span>
43
-
44
- </div>
45
-
46
- <div id="search">
47
-
48
- <a class="full_list_link" id="class_list_link"
49
- href="../../class_list.html">
50
-
51
- <svg width="24" height="24">
52
- <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
- <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
- <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
- </svg>
56
- </a>
57
-
58
- </div>
59
- <div class="clear"></div>
60
- </div>
61
-
62
- <div id="content"><h1>Class: AeEasy::Core::SmartCollection
63
-
64
-
65
-
66
- </h1>
67
- <div class="box_info">
68
-
69
- <dl>
70
- <dt>Inherits:</dt>
71
- <dd>
72
- <span class="inheritName">Array</span>
73
-
74
- <ul class="fullTree">
75
- <li>Object</li>
76
-
77
- <li class="next">Array</li>
78
-
79
- <li class="next">AeEasy::Core::SmartCollection</li>
80
-
81
- </ul>
82
- <a href="#" class="inheritanceTree">show all</a>
83
-
84
- </dd>
85
- </dl>
86
-
87
-
88
-
89
-
90
-
91
-
92
-
93
-
94
-
95
-
96
-
97
- <dl>
98
- <dt>Defined in:</dt>
99
- <dd>lib/ae_easy/core/smart_collection.rb</dd>
100
- </dl>
101
-
102
- </div>
103
-
104
- <h2>Overview</h2><div class="docstring">
105
- <div class="discussion">
106
-
107
- <p>Smart collection capable to avoid duplicates on insert by matching id</p>
108
-
109
- <pre class="code ruby"><code class="ruby">defined fields along events.
110
- </code></pre>
111
-
112
-
113
- </div>
114
- </div>
115
- <div class="tags">
116
-
117
-
118
- </div>
119
-
120
- <h2>
121
- Constant Summary
122
- <small><a href="#" class="constants_summary_toggle">collapse</a></small>
123
- </h2>
124
-
125
- <dl class="constants">
126
-
127
- <dt id="EVENTS-constant" class="">EVENTS =
128
- <div class="docstring">
129
- <div class="discussion">
130
-
131
- <p>Implemented event list.</p>
132
-
133
-
134
- </div>
135
- </div>
136
- <div class="tags">
137
-
138
-
139
- </div>
140
- </dt>
141
- <dd><pre class="code"><span class='lbracket'>[</span>
142
- <span class='symbol'>:before_defaults</span><span class='comma'>,</span>
143
- <span class='symbol'>:before_match</span><span class='comma'>,</span>
144
- <span class='symbol'>:before_insert</span><span class='comma'>,</span>
145
- <span class='symbol'>:after_insert</span>
146
- <span class='rbracket'>]</span></pre></dd>
147
-
148
- </dl>
149
-
150
-
151
-
152
-
153
-
154
- <h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
155
- <ul class="summary">
156
-
157
- <li class="public ">
158
- <span class="summary_signature">
159
-
160
- <a href="#defaults-instance_method" title="#defaults (instance method)">#<strong>defaults</strong> &#x21d2; Object </a>
161
-
162
-
163
-
164
- </span>
165
-
166
-
167
-
168
-
169
- <span class="note title readonly">readonly</span>
170
-
171
-
172
-
173
-
174
-
175
-
176
-
177
-
178
-
179
- <span class="summary_desc"><div class='inline'>
180
- <p>Default fields values.</p>
181
- </div></span>
182
-
183
- </li>
184
-
185
-
186
- <li class="public ">
187
- <span class="summary_signature">
188
-
189
- <a href="#key_fields-instance_method" title="#key_fields (instance method)">#<strong>key_fields</strong> &#x21d2; Object </a>
190
-
191
-
192
-
193
- </span>
194
-
195
-
196
-
197
-
198
- <span class="note title readonly">readonly</span>
199
-
200
-
201
-
202
-
203
-
204
-
205
-
206
-
207
-
208
- <span class="summary_desc"><div class='inline'>
209
- <p>Key fields, analog to primary keys.</p>
210
- </div></span>
211
-
212
- </li>
213
-
214
-
215
- </ul>
216
-
217
-
218
-
219
-
220
-
221
- <h2>
222
- Instance Method Summary
223
- <small><a href="#" class="summary_toggle">collapse</a></small>
224
- </h2>
225
-
226
- <ul class="summary">
227
-
228
- <li class="public ">
229
- <span class="summary_signature">
230
-
231
- <a href="#<<-instance_method" title="#&lt;&lt; (instance method)">#<strong>&lt;&lt;</strong>(item) &#x21d2; Object </a>
232
-
233
-
234
-
235
- </span>
236
-
237
-
238
-
239
-
240
-
241
-
242
-
243
-
244
-
245
- <span class="summary_desc"><div class='inline'>
246
- <p>Add/remplace an item avoiding duplicates.</p>
247
- </div></span>
248
-
249
- </li>
250
-
251
-
252
- <li class="public ">
253
- <span class="summary_signature">
254
-
255
- <a href="#bind_event-instance_method" title="#bind_event (instance method)">#<strong>bind_event</strong>(key, &amp;block) &#x21d2; Object </a>
256
-
257
-
258
-
259
- </span>
260
-
261
-
262
-
263
-
264
-
265
-
266
-
267
-
268
-
269
- <span class="summary_desc"><div class='inline'>
270
- <p>Add event binding by key and block.</p>
271
- </div></span>
272
-
273
- </li>
274
-
275
-
276
- <li class="public ">
277
- <span class="summary_signature">
278
-
279
- <a href="#find_match-instance_method" title="#find_match (instance method)">#<strong>find_match</strong>(filter) &#x21d2; Hash<sup>?</sup> </a>
280
-
281
-
282
-
283
- </span>
284
-
285
-
286
-
287
-
288
-
289
-
290
-
291
-
292
-
293
- <span class="summary_desc"><div class='inline'>
294
- <p>Find an item by matching filter keys.</p>
295
- </div></span>
296
-
297
- </li>
298
-
299
-
300
- <li class="public ">
301
- <span class="summary_signature">
302
-
303
- <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(key_fields, opts = {}) &#x21d2; SmartCollection </a>
304
-
305
-
306
-
307
- </span>
308
-
309
-
310
- <span class="note title constructor">constructor</span>
311
-
312
-
313
-
314
-
315
-
316
-
317
-
318
-
319
- <span class="summary_desc"><div class='inline'>
320
- <p>Initialize collection.</p>
321
- </div></span>
322
-
323
- </li>
324
-
325
-
326
- <li class="public ">
327
- <span class="summary_signature">
328
-
329
- <a href="#match_keys%3F-instance_method" title="#match_keys? (instance method)">#<strong>match_keys?</strong>(item_a, item_b) &#x21d2; Boolean </a>
330
-
331
-
332
-
333
- </span>
334
-
335
-
336
-
337
-
338
-
339
-
340
-
341
-
342
-
343
- <span class="summary_desc"><div class='inline'>
344
- <p>Check whenever two items keys match.</p>
345
- </div></span>
346
-
347
- </li>
348
-
349
-
350
- </ul>
351
-
352
-
353
-
354
- <div id="constructor_details" class="method_details_list">
355
- <h2>Constructor Details</h2>
356
-
357
- <div class="method_details first">
358
- <h3 class="signature first" id="initialize-instance_method">
359
-
360
- #<strong>initialize</strong>(key_fields, opts = {}) &#x21d2; <tt><span class='object_link'><a href="" title="AeEasy::Core::SmartCollection (class)">SmartCollection</a></span></tt>
361
-
362
-
363
-
364
-
365
-
366
- </h3><div class="docstring">
367
- <div class="discussion">
368
-
369
- <div class="note notetag">
370
- <strong>Note:</strong>
371
- <div class='inline'>
372
- <p>Defaults will apply to missing fields and null values only.</p>
373
- </div>
374
- </div>
375
-
376
-
377
- <p>Initialize collection</p>
378
-
379
-
380
- </div>
381
- </div>
382
- <div class="tags">
383
-
384
- <div class="examples">
385
- <p class="tag_title">Examples:</p>
386
-
387
-
388
- <p class="example_title"><div class='inline'>
389
- <p>With default values.</p>
390
- </div></p>
391
-
392
- <pre class="example code"><code><span class='id identifier rubyid_count'>count</span> <span class='op'>=</span> <span class='int'>0</span>
393
- <span class='id identifier rubyid_defaults'>defaults</span> <span class='op'>=</span> <span class='lbrace'>{</span>
394
- <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>id</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_lambda'>lambda</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_item'>item</span><span class='op'>|</span> <span class='id identifier rubyid_count'>count</span> <span class='op'>+=</span> <span class='int'>1</span><span class='rbrace'>}</span><span class='comma'>,</span>
395
- <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>aaa</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='int'>111</span><span class='comma'>,</span>
396
- <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>bbb</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_proc'>proc</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_item'>item</span><span class='op'>|</span> <span class='id identifier rubyid_item'>item</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ccc</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>?</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>No ccc</span><span class='tstring_end'>&#39;</span></span> <span class='op'>:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Has ccc</span><span class='tstring_end'>&#39;</span></span><span class='rbrace'>}</span>
397
- <span class='rbrace'>}</span>
398
- <span class='id identifier rubyid_values'>values</span> <span class='op'>=</span> <span class='lbracket'>[</span>
399
- <span class='lbrace'>{</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>aaa</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Defaults apply on nil values only</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>bbb</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='kw'>nil</span><span class='rbrace'>}</span><span class='comma'>,</span>
400
- <span class='lbrace'>{</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ccc</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>ddd</span><span class='tstring_end'>&#39;</span></span><span class='rbrace'>}</span><span class='comma'>,</span>
401
- <span class='lbrace'>{</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>id</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>abc123</span><span class='tstring_end'>&#39;</span></span><span class='rbrace'>}</span>
402
- <span class='rbracket'>]</span>
403
- <span class='id identifier rubyid_new_item'>new_item</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>bbb</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Look mom! no ccc</span><span class='tstring_end'>&#39;</span></span><span class='rbrace'>}</span>
404
- <span class='id identifier rubyid_collection'>collection</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="" title="AeEasy::Core::SmartCollection (class)">SmartCollection</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>id</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='label'>defaults:</span> <span class='id identifier rubyid_defaults'>defaults</span>
405
- <span class='id identifier rubyid_collection'>collection</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_new_item'>new_item</span>
406
- <span class='id identifier rubyid_collection'>collection</span>
407
- <span class='comment'># =&gt; [
408
- </span><span class='comment'># {&#39;id&#39; =&gt; 1, &#39;aaa&#39; =&gt; &#39;Defaults apply on nil values only&#39;, &#39;bbb&#39; =&gt; &#39;No ccc&#39;},
409
- </span><span class='comment'># {&#39;id&#39; =&gt; 2, &#39;aaa&#39; =&gt; 111, &#39;bbb&#39; =&gt; &#39;Has ccc&#39;, &#39;ccc&#39; =&gt; &#39;ddd&#39;},
410
- </span><span class='comment'># {&#39;id&#39; =&gt; &#39;abc123&#39;, &#39;aaa&#39; =&gt; 111, &#39;bbb&#39; =&gt; &#39;No ccc&#39;},
411
- </span><span class='comment'># {&#39;id&#39; =&gt; 3, &#39;aaa&#39; =&gt; 111, &#39;bbb&#39; =&gt; &#39;Look mom! no ccc&#39;}
412
- </span><span class='comment'># ]</span></code></pre>
413
-
414
- </div>
415
- <p class="tag_title">Parameters:</p>
416
- <ul class="param">
417
-
418
- <li>
419
-
420
- <span class='name'>key_fields</span>
421
-
422
-
423
- <span class='type'>(<tt>Array</tt>)</span>
424
-
425
-
426
-
427
- &mdash;
428
- <div class='inline'>
429
- <p>Key fields, analog to primary keys.</p>
430
- </div>
431
-
432
- </li>
433
-
434
- <li>
435
-
436
- <span class='name'>opts</span>
437
-
438
-
439
- <span class='type'>(<tt>Hash</tt>)</span>
440
-
441
-
442
- <em class="default">(defaults to: <tt>{}</tt>)</em>
443
-
444
-
445
- &mdash;
446
- <div class='inline'>
447
- <p>({}) Configuration options.</p>
448
- </div>
449
-
450
- </li>
451
-
452
- </ul>
453
-
454
-
455
-
456
-
457
-
458
-
459
- <p class="tag_title">Options Hash (<tt>opts</tt>):</p>
460
- <ul class="option">
461
-
462
- <li>
463
- <span class="name">:values</span>
464
- <span class="type">(<tt>Array</tt>)</span>
465
- <span class="default">
466
-
467
- &mdash; default:
468
- <tt>[]</tt>
469
-
470
- </span>
471
-
472
- &mdash; <div class='inline'>
473
- <p>Initial values; will avoid duplicates on insert.</p>
474
- </div>
475
-
476
- </li>
477
-
478
- <li>
479
- <span class="name">:defaults</span>
480
- <span class="type">(<tt>Hash</tt>)</span>
481
- <span class="default">
482
-
483
- &mdash; default:
484
- <tt>{}</tt>
485
-
486
- </span>
487
-
488
- &mdash; <div class='inline'>
489
- <p>Default values. `proc` values will be executed to get default value.</p>
490
- </div>
491
-
492
- </li>
493
-
494
- </ul>
495
-
496
-
497
-
498
- </div><table class="source_code">
499
- <tr>
500
- <td>
501
- <pre class="lines">
502
-
503
-
504
- 50
505
- 51
506
- 52
507
- 53
508
- 54
509
- 55</pre>
510
- </td>
511
- <td>
512
- <pre class="code"><span class="info file"># File 'lib/ae_easy/core/smart_collection.rb', line 50</span>
513
-
514
- <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span> <span class='id identifier rubyid_key_fields'>key_fields</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
515
- <span class='ivar'>@key_fields</span> <span class='op'>=</span> <span class='id identifier rubyid_key_fields'>key_fields</span> <span class='op'>||</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
516
- <span class='ivar'>@defaults</span> <span class='op'>=</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:defaults</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
517
- <span class='kw'>super</span> <span class='int'>0</span>
518
- <span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:values</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_item'>item</span><span class='op'>|</span> <span class='kw'>self</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_item'>item</span><span class='rbrace'>}</span>
519
- <span class='kw'>end</span></pre>
520
- </td>
521
- </tr>
522
- </table>
523
- </div>
524
-
525
- </div>
526
-
527
- <div id="instance_attr_details" class="attr_details">
528
- <h2>Instance Attribute Details</h2>
529
-
530
-
531
- <span id=""></span>
532
- <div class="method_details first">
533
- <h3 class="signature first" id="defaults-instance_method">
534
-
535
- #<strong>defaults</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
536
-
537
-
538
-
539
-
540
-
541
- </h3><div class="docstring">
542
- <div class="discussion">
543
-
544
- <p>Default fields values. Apply to missing fields and null values.</p>
545
-
546
-
547
- </div>
548
- </div>
549
- <div class="tags">
550
-
551
-
552
- </div><table class="source_code">
553
- <tr>
554
- <td>
555
- <pre class="lines">
556
-
557
-
558
- 17
559
- 18
560
- 19</pre>
561
- </td>
562
- <td>
563
- <pre class="code"><span class="info file"># File 'lib/ae_easy/core/smart_collection.rb', line 17</span>
564
-
565
- <span class='kw'>def</span> <span class='id identifier rubyid_defaults'>defaults</span>
566
- <span class='ivar'>@defaults</span>
567
- <span class='kw'>end</span></pre>
568
- </td>
569
- </tr>
570
- </table>
571
- </div>
572
-
573
-
574
- <span id=""></span>
575
- <div class="method_details ">
576
- <h3 class="signature " id="key_fields-instance_method">
577
-
578
- #<strong>key_fields</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
579
-
580
-
581
-
582
-
583
-
584
- </h3><div class="docstring">
585
- <div class="discussion">
586
-
587
- <p>Key fields, analog to primary keys.</p>
588
-
589
-
590
- </div>
591
- </div>
592
- <div class="tags">
593
-
594
-
595
- </div><table class="source_code">
596
- <tr>
597
- <td>
598
- <pre class="lines">
599
-
600
-
601
- 15
602
- 16
603
- 17</pre>
604
- </td>
605
- <td>
606
- <pre class="code"><span class="info file"># File 'lib/ae_easy/core/smart_collection.rb', line 15</span>
607
-
608
- <span class='kw'>def</span> <span class='id identifier rubyid_key_fields'>key_fields</span>
609
- <span class='ivar'>@key_fields</span>
610
- <span class='kw'>end</span></pre>
611
- </td>
612
- </tr>
613
- </table>
614
- </div>
615
-
616
- </div>
617
-
618
-
619
- <div id="instance_method_details" class="method_details_list">
620
- <h2>Instance Method Details</h2>
621
-
622
-
623
- <div class="method_details first">
624
- <h3 class="signature first" id="<<-instance_method">
625
-
626
- #<strong>&lt;&lt;</strong>(item) &#x21d2; <tt>Object</tt>
627
-
628
-
629
-
630
-
631
-
632
- </h3><div class="docstring">
633
- <div class="discussion">
634
-
635
- <p>Add/remplace an item avoiding duplicates</p>
636
-
637
-
638
- </div>
639
- </div>
640
- <div class="tags">
641
-
642
-
643
- </div><table class="source_code">
644
- <tr>
645
- <td>
646
- <pre class="lines">
647
-
648
-
649
- 224
650
- 225
651
- 226
652
- 227
653
- 228
654
- 229
655
- 230
656
- 231
657
- 232
658
- 233</pre>
659
- </td>
660
- <td>
661
- <pre class="code"><span class="info file"># File 'lib/ae_easy/core/smart_collection.rb', line 224</span>
662
-
663
- <span class='kw'>def</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_item'>item</span>
664
- <span class='id identifier rubyid_item'>item</span> <span class='op'>=</span> <span class='id identifier rubyid_call_event'>call_event</span> <span class='symbol'>:before_defaults</span><span class='comma'>,</span> <span class='id identifier rubyid_item'>item</span><span class='comma'>,</span> <span class='id identifier rubyid_item'>item</span>
665
- <span class='id identifier rubyid_apply_defaults'>apply_defaults</span> <span class='id identifier rubyid_item'>item</span>
666
- <span class='id identifier rubyid_item'>item</span> <span class='op'>=</span> <span class='id identifier rubyid_call_event'>call_event</span> <span class='symbol'>:before_match</span><span class='comma'>,</span> <span class='id identifier rubyid_item'>item</span><span class='comma'>,</span> <span class='id identifier rubyid_item'>item</span>
667
- <span class='id identifier rubyid_match'>match</span> <span class='op'>=</span> <span class='id identifier rubyid_find_match'>find_match</span> <span class='id identifier rubyid_item'>item</span>
668
- <span class='id identifier rubyid_item'>item</span> <span class='op'>=</span> <span class='id identifier rubyid_call_event'>call_event</span> <span class='symbol'>:before_insert</span><span class='comma'>,</span> <span class='id identifier rubyid_item'>item</span><span class='comma'>,</span> <span class='id identifier rubyid_item'>item</span><span class='comma'>,</span> <span class='id identifier rubyid_match'>match</span>
669
- <span class='id identifier rubyid_delete'>delete</span> <span class='id identifier rubyid_match'>match</span> <span class='kw'>unless</span> <span class='id identifier rubyid_match'>match</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
670
- <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_item'>item</span><span class='rparen'>)</span>
671
- <span class='id identifier rubyid_call_event'>call_event</span> <span class='symbol'>:after_insert</span><span class='comma'>,</span> <span class='id identifier rubyid_result'>result</span><span class='comma'>,</span> <span class='id identifier rubyid_item'>item</span><span class='comma'>,</span> <span class='id identifier rubyid_match'>match</span>
672
- <span class='kw'>end</span></pre>
673
- </td>
674
- </tr>
675
- </table>
676
- </div>
677
-
678
- <div class="method_details ">
679
- <h3 class="signature " id="bind_event-instance_method">
680
-
681
- #<strong>bind_event</strong>(key, &amp;block) &#x21d2; <tt>Object</tt>
682
-
683
-
684
-
685
-
686
-
687
- </h3><div class="docstring">
688
- <div class="discussion">
689
-
690
- <div class="note notetag">
691
- <strong>Note:</strong>
692
- <div class='inline'>
693
- <p>Some events will expect a return value to replace item on insertion:</p>
694
- <ul><li>
695
- <p>`before_match`</p>
696
- </li><li>
697
- <p>`before_defaults`</p>
698
- </li><li>
699
- <p>`before_insert`</p>
700
- </li></ul>
701
- </div>
702
- </div>
703
-
704
-
705
- <p>Add event binding by key and block.</p>
706
-
707
-
708
- </div>
709
- </div>
710
- <div class="tags">
711
-
712
- <div class="examples">
713
- <p class="tag_title">Examples:</p>
714
-
715
-
716
- <p class="example_title"><div class='inline'>
717
- <p>before_defaults</p>
718
- </div></p>
719
-
720
- <pre class="example code"><code><span class='id identifier rubyid_defaults'>defaults</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>aaa</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='int'>111</span><span class='rbrace'>}</span>
721
- <span class='id identifier rubyid_collection'>collection</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="" title="AeEasy::Core::SmartCollection (class)">SmartCollection</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="AeEasy::Core::SmartCollection#initialize (method)">new</a></span></span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='comma'>,</span>
722
- <span class='label'>defaults:</span> <span class='id identifier rubyid_defaults'>defaults</span>
723
- <span class='id identifier rubyid_collection'>collection</span><span class='period'>.</span><span class='id identifier rubyid_bind_event'>bind_event</span><span class='lparen'>(</span><span class='symbol'>:before_defaults</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_collection'>collection</span><span class='comma'>,</span> <span class='id identifier rubyid_item'>item</span><span class='op'>|</span>
724
- <span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_collection'>collection</span>
725
- <span class='comment'># =&gt; []
726
- </span> <span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_item'>item</span>
727
- <span class='comment'># =&gt; {&#39;bbb&#39; =&gt; 222}
728
- </span>
729
- <span class='comment'># Sending the item back is required, or a new one
730
- </span> <span class='comment'># in case you want to replace item to insert.
731
- </span> <span class='id identifier rubyid_item'>item</span>
732
- <span class='kw'>end</span>
733
- <span class='id identifier rubyid_data'>data</span> <span class='op'>&lt;&lt;</span> <span class='lbrace'>{</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>bbb</span><span class='tstring_end'>&#39;</span></span> <span class='op'>=&gt;</span> <span class='int'>222</span><span class='rbrace'>}</span>
734
- <span class='id identifier rubyid_data'>data</span>
735
- <span class='comment'># =&gt; [{&#39;aaa&#39; =&gt; 111, &#39;bbb&#39; =&gt; 222}]</span></code></pre>
736
-
737
-
738
- <p class="example_title"><div class='inline'>
739
- <p>before_match</p>
740
- </div></p>
741
-
742
- <pre class="example code"><code>keys = [&#39;id&#39;]
743
- defaults = {&#39;aaa&#39; =&gt; 111}
744
- values = [
745
- {&#39;id&#39; =&gt; 1, &#39;ccc&#39; =&gt; 333}
746
- ]
747
- collection = SmartCollection.new keys,
748
- defaults: defaults
749
- values: values
750
- collection.bind_event(:before_match) do |collection, item|
751
- puts collection
752
- # =&gt; [{&#39;id&#39; =&gt; 1, &#39;aaa&#39; =&gt; 111, &#39;ccc&#39; =&gt; 333}]
753
- puts item
754
- # =&gt; {&#39;id&#39; =&gt; 1, &#39;aaa&#39; =&gt; 111, &#39;bbb&#39; =&gt; 222}
755
-
756
- # Sending the item back is required, or a new one
757
- # in case you want to replace item to insert.
758
- item
759
- end
760
- data &lt;&lt; {&#39;id&#39; =&gt; 1, &#39;bbb&#39; =&gt; 222}
761
- data
762
- # =&gt; [{&#39;id&#39; =&gt; 1, &#39;aaa&#39; =&gt; 111, &#39;bbb&#39; =&gt; 222}]</code></pre>
763
-
764
-
765
- <p class="example_title"><div class='inline'>
766
- <p>before_insert</p>
767
- </div></p>
768
-
769
- <pre class="example code"><code>keys = [&#39;id&#39;]
770
- defaults = {&#39;aaa&#39; =&gt; 111}
771
- values = [
772
- {&#39;id&#39; =&gt; 1, &#39;ccc&#39; =&gt; 333}
773
- ]
774
- collection = SmartCollection.new keys,
775
- defaults: defaults
776
- values: values
777
- collection.bind_event(:before_insert) do |collection, item, match|
778
- puts collection
779
- # =&gt; [{&#39;id&#39; =&gt; 1, &#39;aaa&#39; =&gt; 111, &#39;ccc&#39; =&gt; 333}]
780
- puts item
781
- # =&gt; {&#39;id&#39; =&gt; 1, &#39;aaa&#39; =&gt; 111, &#39;bbb&#39; =&gt; 222}
782
- puts match
783
- # =&gt; {&#39;id&#39; =&gt; 1, &#39;aaa&#39; =&gt; 111, &#39;ccc&#39; =&gt; 333}
784
-
785
- # Sending the item back is required, or a new one
786
- # in case you want to replace item to insert.
787
- item
788
- end
789
- data &lt;&lt; {&#39;id&#39; =&gt; 1, &#39;bbb&#39; =&gt; 222}
790
- data
791
- # =&gt; [{&#39;id&#39; =&gt; 1, &#39;aaa&#39; =&gt; 111, &#39;bbb&#39; =&gt; 222}]</code></pre>
792
-
793
-
794
- <p class="example_title"><div class='inline'>
795
- <p>after_insert</p>
796
- </div></p>
797
-
798
- <pre class="example code"><code>keys = [&#39;id&#39;]
799
- defaults = {&#39;aaa&#39; =&gt; 111}
800
- values = [
801
- {&#39;id&#39; =&gt; 1, &#39;ccc&#39; =&gt; 333}
802
- ]
803
- collection = SmartCollection.new keys,
804
- defaults: defaults
805
- values: values
806
- collection.bind_event(:after_insert) do |collection, item, match|
807
- puts collection
808
- # =&gt; [{&#39;id&#39; =&gt; 1, &#39;aaa&#39; =&gt; 111, &#39;bbb&#39; =&gt; 222}]
809
- puts item
810
- # =&gt; {&#39;id&#39; =&gt; 1, &#39;aaa&#39; =&gt; 111, &#39;bbb&#39; =&gt; 222}
811
- puts match
812
- # =&gt; {&#39;id&#39; =&gt; 1, &#39;aaa&#39; =&gt; 111, &#39;ccc&#39; =&gt; 333}
813
- # No need to send item back since it is already inserted
814
- end
815
- data &lt;&lt; {&#39;id&#39; =&gt; 1, &#39;bbb&#39; =&gt; 222}
816
- data
817
- # =&gt; [{&#39;id&#39; =&gt; 1, &#39;aaa&#39; =&gt; 111, &#39;bbb&#39; =&gt; 222}]</code></pre>
818
-
819
- </div>
820
- <p class="tag_title">Parameters:</p>
821
- <ul class="param">
822
-
823
- <li>
824
-
825
- <span class='name'>key</span>
826
-
827
-
828
- <span class='type'>(<tt>Symbol</tt>)</span>
829
-
830
-
831
-
832
- &mdash;
833
- <div class='inline'>
834
- <p>Event name.</p>
835
- </div>
836
-
837
- </li>
838
-
839
- </ul>
840
-
841
- <p class="tag_title">Raises:</p>
842
- <ul class="raise">
843
-
844
- <li>
845
-
846
-
847
- <span class='type'>(<tt>ArgumentError</tt>)</span>
848
-
849
-
850
-
851
- &mdash;
852
- <div class='inline'>
853
- <p>When unknown event key.</p>
854
- </div>
855
-
856
- </li>
857
-
858
- </ul>
859
-
860
- </div><table class="source_code">
861
- <tr>
862
- <td>
863
- <pre class="lines">
864
-
865
-
866
- 161
867
- 162
868
- 163
869
- 164
870
- 165
871
- 166</pre>
872
- </td>
873
- <td>
874
- <pre class="code"><span class="info file"># File 'lib/ae_easy/core/smart_collection.rb', line 161</span>
875
-
876
- <span class='kw'>def</span> <span class='id identifier rubyid_bind_event'>bind_event</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span>
877
- <span class='kw'>unless</span> <span class='const'><span class='object_link'><a href="#EVENTS-constant" title="AeEasy::Core::SmartCollection::EVENTS (constant)">EVENTS</a></span></span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span> <span class='id identifier rubyid_key'>key</span>
878
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Unknown event &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
879
- <span class='kw'>end</span>
880
- <span class='lparen'>(</span><span class='id identifier rubyid_events'>events</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_block'>block</span>
881
- <span class='kw'>end</span></pre>
882
- </td>
883
- </tr>
884
- </table>
885
- </div>
886
-
887
- <div class="method_details ">
888
- <h3 class="signature " id="find_match-instance_method">
889
-
890
- #<strong>find_match</strong>(filter) &#x21d2; <tt>Hash</tt><sup>?</sup>
891
-
892
-
893
-
894
-
895
-
896
- </h3><div class="docstring">
897
- <div class="discussion">
898
-
899
- <div class="note notetag">
900
- <strong>Note:</strong>
901
- <div class='inline'>
902
- <p><em>Warning:</em> It uses table scan to filter and will be slow.</p>
903
- </div>
904
- </div>
905
-
906
-
907
- <p>Find an item by matching filter keys</p>
908
-
909
-
910
- </div>
911
- </div>
912
- <div class="tags">
913
- <p class="tag_title">Parameters:</p>
914
- <ul class="param">
915
-
916
- <li>
917
-
918
- <span class='name'>filter</span>
919
-
920
-
921
- <span class='type'>(<tt>Hash</tt>)</span>
922
-
923
-
924
-
925
- </li>
926
-
927
- </ul>
928
-
929
- <p class="tag_title">Returns:</p>
930
- <ul class="return">
931
-
932
- <li>
933
-
934
-
935
- <span class='type'>(<tt>Hash</tt>, <tt>nil</tt>)</span>
936
-
937
-
938
-
939
- &mdash;
940
- <div class='inline'>
941
- <p>First existing item match or nil when no match.</p>
942
- </div>
943
-
944
- </li>
945
-
946
- </ul>
947
-
948
- </div><table class="source_code">
949
- <tr>
950
- <td>
951
- <pre class="lines">
952
-
953
-
954
- 217
955
- 218
956
- 219
957
- 220
958
- 221</pre>
959
- </td>
960
- <td>
961
- <pre class="code"><span class="info file"># File 'lib/ae_easy/core/smart_collection.rb', line 217</span>
962
-
963
- <span class='kw'>def</span> <span class='id identifier rubyid_find_match'>find_match</span> <span class='id identifier rubyid_filter'>filter</span>
964
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_find'>find</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_item'>item</span><span class='op'>|</span>
965
- <span class='id identifier rubyid_match_keys?'>match_keys?</span> <span class='id identifier rubyid_item'>item</span><span class='comma'>,</span> <span class='id identifier rubyid_filter'>filter</span>
966
- <span class='kw'>end</span>
967
- <span class='kw'>end</span></pre>
968
- </td>
969
- </tr>
970
- </table>
971
- </div>
972
-
973
- <div class="method_details ">
974
- <h3 class="signature " id="match_keys?-instance_method">
975
-
976
- #<strong>match_keys?</strong>(item_a, item_b) &#x21d2; <tt>Boolean</tt>
977
-
978
-
979
-
980
-
981
-
982
- </h3><div class="docstring">
983
- <div class="discussion">
984
-
985
- <p>Check whenever two items keys match.</p>
986
-
987
-
988
- </div>
989
- </div>
990
- <div class="tags">
991
- <p class="tag_title">Parameters:</p>
992
- <ul class="param">
993
-
994
- <li>
995
-
996
- <span class='name'>item_a</span>
997
-
998
-
999
- <span class='type'>(<tt>Hash</tt>)</span>
1000
-
1001
-
1002
-
1003
- &mdash;
1004
- <div class='inline'>
1005
- <p>Item to match.</p>
1006
- </div>
1007
-
1008
- </li>
1009
-
1010
- <li>
1011
-
1012
- <span class='name'>item_b</span>
1013
-
1014
-
1015
- <span class='type'>(<tt>Hash</tt>)</span>
1016
-
1017
-
1018
-
1019
- &mdash;
1020
- <div class='inline'>
1021
- <p>Item to match.</p>
1022
- </div>
1023
-
1024
- </li>
1025
-
1026
- </ul>
1027
-
1028
- <p class="tag_title">Returns:</p>
1029
- <ul class="return">
1030
-
1031
- <li>
1032
-
1033
-
1034
- <span class='type'>(<tt>Boolean</tt>)</span>
1035
-
1036
-
1037
-
1038
- </li>
1039
-
1040
- </ul>
1041
-
1042
- </div><table class="source_code">
1043
- <tr>
1044
- <td>
1045
- <pre class="lines">
1046
-
1047
-
1048
- 187
1049
- 188
1050
- 189
1051
- 190
1052
- 191
1053
- 192
1054
- 193
1055
- 194
1056
- 195</pre>
1057
- </td>
1058
- <td>
1059
- <pre class="code"><span class="info file"># File 'lib/ae_easy/core/smart_collection.rb', line 187</span>
1060
-
1061
- <span class='kw'>def</span> <span class='id identifier rubyid_match_keys?'>match_keys?</span> <span class='id identifier rubyid_item_a'>item_a</span><span class='comma'>,</span> <span class='id identifier rubyid_item_b'>item_b</span>
1062
- <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_key_fields'>key_fields</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_key_fields'>key_fields</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span> <span class='op'>&lt;</span> <span class='int'>1</span>
1063
- <span class='kw'>return</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='id identifier rubyid_item_a'>item_a</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_item_b'>item_b</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1064
- <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_item_a'>item_a</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_item_b'>item_b</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1065
- <span class='id identifier rubyid_key_fields'>key_fields</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_key'>key</span><span class='op'>|</span>
1066
- <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_item_a'>item_a</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span> <span class='op'>!=</span> <span class='id identifier rubyid_item_b'>item_b</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span>
1067
- <span class='kw'>end</span>
1068
- <span class='kw'>true</span>
1069
- <span class='kw'>end</span></pre>
1070
- </td>
1071
- </tr>
1072
- </table>
1073
- </div>
1074
-
1075
- </div>
1076
-
1077
- </div>
1078
-
1079
- <div id="footer">
1080
- Generated on Fri Sep 27 02:01:31 2019 by
1081
- <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1082
- 0.9.20 (ruby-2.5.3).
1083
- </div>
1084
-
1085
- </div>
1086
- </body>
1087
- </html>