ovto 0.6.0.rc1 → 0.6.0

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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +2 -2
  3. data/Gemfile.lock +1 -1
  4. data/book/SUMMARY.md +1 -0
  5. data/book/api/actions.md +1 -1
  6. data/book/api/middleware.md +93 -0
  7. data/docs/api/Ovto.html +222 -25
  8. data/docs/api/Ovto/Actions.html +132 -40
  9. data/docs/api/Ovto/App.html +254 -40
  10. data/docs/api/Ovto/Component.html +96 -29
  11. data/docs/api/Ovto/Component/MoreThanOneNode.html +6 -6
  12. data/docs/api/Ovto/PureComponent.html +11 -11
  13. data/docs/api/Ovto/PureComponent/StateIsNotAvailable.html +6 -6
  14. data/docs/api/Ovto/Runtime.html +7 -7
  15. data/docs/api/Ovto/State.html +58 -42
  16. data/docs/api/Ovto/State/MissingValue.html +6 -6
  17. data/docs/api/Ovto/WiredActions.html +78 -35
  18. data/docs/api/_index.html +54 -11
  19. data/docs/api/actions.html +1 -1
  20. data/docs/api/app.html +1 -1
  21. data/docs/api/class_list.html +3 -3
  22. data/docs/api/component.html +1 -1
  23. data/docs/api/css/style.css +2 -2
  24. data/docs/api/fetch.html +1 -1
  25. data/docs/api/file.README.html +6 -6
  26. data/docs/api/file_list.html +2 -2
  27. data/docs/api/frames.html +2 -2
  28. data/docs/api/index.html +6 -6
  29. data/docs/api/js/app.js +14 -3
  30. data/docs/api/method_list.html +270 -30
  31. data/docs/api/pure_component.html +1 -1
  32. data/docs/api/state.html +1 -1
  33. data/docs/api/top-level-namespace.html +6 -6
  34. data/docs/guides/debugging.html +1 -1
  35. data/docs/guides/development.html +1 -1
  36. data/docs/guides/install.html +1 -1
  37. data/docs/guides/tutorial.html +1 -1
  38. data/docs/index.html +1 -1
  39. data/examples/static/Gemfile.lock +1 -1
  40. data/lib/ovto/version.rb +1 -1
  41. metadata +5 -5
  42. data/docs/api/Ovto/State/UnknownKey.html +0 -135
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b875f739a6664264591bc0e020bffc5a996f89c67e368027dd929f3e63799e32
4
- data.tar.gz: 55cbc02b48925e158db48660303c80259b684e22f7efb2d384880706a10dfa88
3
+ metadata.gz: d4dfe5798db6f31627dccb56a9d88dfbd80137f1190f5dae9a4adac0ce04d4af
4
+ data.tar.gz: 96c3ca007adddbfe5c81ac0f53e0ac3bcca78c8d246480b4f15474d0fd6e066f
5
5
  SHA512:
6
- metadata.gz: '028f462955c7f848c3da838a67730a834fef79e32e2f31cbc188866dbe9b6445f33f89398a3ff62ff272ba5248c88733e1bd8442921c3ca33d862ea7e33bfba3'
7
- data.tar.gz: a0be002c325590bad2459b864f9378b72ca47f7fc7aee36c80181edb05299c968d2484c2a63ab6d2b130c7569de0667d1d01b7f8db8a37f0ac27edb85f03253c
6
+ metadata.gz: 0e6e7adbef82402b2ddb96387a502d0382aa9dff8d184fc25276f9a5b4911ff54a6b4d9bde853c123deef378cdee508fe1a0a9d15590e0aeafb399c870d340a3
7
+ data.tar.gz: 3fe2f79ba887239d36fcfa03a88d65594db4d8c3e9ad4819a63bd63b5b3570f14611c56b05d5d51587d0dfe844f0d1f82d1775c916060c4b2e1442b7920cbaf9
@@ -1,6 +1,7 @@
1
- ## HEAD
1
+ ## v0.6.0 (2020-02-29)
2
2
 
3
3
  - feat: Ovto::Middleware (#18)
4
+ - Experimental. API may change during 0.6.x
4
5
  - feat(State): default_proc (#17)
5
6
  - feat(o): `o SubComp do ...end` now passes the block to `SubComp#render` (#16)
6
7
 
@@ -24,7 +25,6 @@ New features
24
25
  Example:
25
26
 
26
27
  o 'div', `{nodeName: ....}`
27
-
28
28
 
29
29
  ## v0.3.0 (2018-12-24)
30
30
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ovto (0.6.0.rc1)
4
+ ovto (0.6.0)
5
5
  opal (>= 0.11, < 2)
6
6
  rack (~> 2.0)
7
7
  thor (~> 0.20)
@@ -8,6 +8,7 @@
8
8
  - [Ovto::Actions](api/actions.md)
9
9
  - [Ovto::Component](api/component.md)
10
10
  - [Ovto::PureComponent](api/pure_component.md)
11
+ - [Ovto::Middleware](api/middleware.md)
11
12
  - [Ovto.fetch](api/fetch.md)
12
13
  - Guides
13
14
  - [Debugging](guides/debugging.md)
@@ -15,7 +15,7 @@ require 'ovto'
15
15
 
16
16
  class MyApp < Ovto::App
17
17
  class State < Ovto::State
18
- item :count, 0
18
+ item :count, default: 0
19
19
  end
20
20
 
21
21
  class Actions < Ovto::Actions
@@ -0,0 +1,93 @@
1
+ # Ovto::Middleware
2
+
3
+ When you are making a big app with Ovto, you may want to extract
4
+ certain parts which are independent from the app. Ovto::Middleware is
5
+ for such cases.
6
+
7
+ - A middleware has its own namespace of state and actions
8
+ - that is, you don't need to add prefixes to the names of states and actions of a middleware.
9
+
10
+ ## Example
11
+
12
+ ```rb
13
+ # 1. Middleware name must be valid as a method name in Ruby
14
+ class MyMiddleware < Ovto::Middleware("my_middleware")
15
+ def setup
16
+ # Called on app startup
17
+ end
18
+
19
+ # 2. Make a subclass of MyMiddleware's State
20
+ class State < MyMiddleware::State
21
+ item :count, default: 0
22
+ end
23
+
24
+ # 3. Make a subclass of MyMiddleware's Actions
25
+ class Actions < MyMiddleware::Actions
26
+ def increment(by:)
27
+ return {count: state.count + by}
28
+ end
29
+ end
30
+
31
+ # 4. Make a subclass of MyMiddleware's Component
32
+ class SomeComponent < MyMiddleware::Component
33
+ def render
34
+ o 'span', state.count
35
+ o 'button', onclick: ->{ actions.increment(by: 1) }
36
+ end
37
+ end
38
+ end
39
+
40
+ class MyApp < Ovto::App
41
+ # 5. Declare middlewares to use
42
+ use MyMiddleware
43
+
44
+ class State < Ovto::State; end
45
+ class Actions < Ovto::Actions; end
46
+
47
+ class MainComponent < Ovto::Component
48
+ def render
49
+ o 'div.counter' do
50
+ o MyMiddleware::SomeComponent
51
+ end
52
+ end
53
+ end
54
+ ```
55
+
56
+ ## Advanced
57
+
58
+ ### Getting middlware state from app
59
+
60
+ ```rb
61
+ class MyApp < Ovto::App
62
+ def MainComponent < Ovto::Component
63
+ def render
64
+ o 'span', state._middlewares.middleware1.some_state
65
+ end
66
+ end
67
+ ```
68
+
69
+ ### Calling middlware action from app
70
+
71
+ ```rb
72
+ class MyApp < Ovto::App
73
+ # From actions
74
+ def Actions < Ovto::Actions
75
+ def some_action
76
+ actions.middleware1.some_action()
77
+ end
78
+ end
79
+
80
+ # From component
81
+ def MainComponent < Ovto::Component
82
+ def render
83
+ o 'button', onclick: ->{ actions.middleware1.some_action() }
84
+ end
85
+ end
86
+ ```
87
+
88
+ ### Using a middleware from another middleware
89
+
90
+ ```rb
91
+ class Middleware1 < Ovto::Middleware("middleware1")
92
+ use Middleware2
93
+ ```
@@ -6,15 +6,15 @@
6
6
  <title>
7
7
  Module: Ovto
8
8
 
9
- &mdash; Documentation by YARD 0.9.20
9
+ &mdash; Documentation by YARD 0.9.24
10
10
 
11
11
  </title>
12
12
 
13
- <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" />
14
14
 
15
- <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" />
16
16
 
17
- <script type="text/javascript" charset="utf-8">
17
+ <script type="text/javascript">
18
18
  pathId = "Ovto";
19
19
  relpath = '';
20
20
  </script>
@@ -79,7 +79,7 @@
79
79
  <dl>
80
80
  <dt>Defined in:</dt>
81
81
  <dd>lib/ovto.rb<span class="defines">,<br />
82
- lib/ovto/app.rb,<br /> lib/ovto/fetch.rb,<br /> lib/ovto/state.rb,<br /> lib/ovto/actions.rb,<br /> lib/ovto/runtime.rb,<br /> lib/ovto/version.rb,<br /> lib/ovto/component.rb,<br /> lib/ovto/wired_actions.rb,<br /> lib/ovto/pure_component.rb</span>
82
+ lib/ovto/app.rb,<br /> lib/ovto/fetch.rb,<br /> lib/ovto/state.rb,<br /> lib/ovto/actions.rb,<br /> lib/ovto/runtime.rb,<br /> lib/ovto/version.rb,<br /> lib/ovto/component.rb,<br /> lib/ovto/middleware.rb,<br /> lib/ovto/wired_actions.rb,<br /> lib/ovto/pure_component.rb,<br /> lib/ovto/wired_action_set.rb</span>
83
83
  </dd>
84
84
  </dl>
85
85
 
@@ -89,9 +89,11 @@
89
89
  <p class="children">
90
90
 
91
91
 
92
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Ovto/Middleware.html" title="Ovto::Middleware (module)">Middleware</a></span>
93
+
92
94
 
93
95
 
94
- <strong class="classes">Classes:</strong> <span class='object_link'><a href="Ovto/Actions.html" title="Ovto::Actions (class)">Actions</a></span>, <span class='object_link'><a href="Ovto/App.html" title="Ovto::App (class)">App</a></span>, <span class='object_link'><a href="Ovto/Component.html" title="Ovto::Component (class)">Component</a></span>, <span class='object_link'><a href="Ovto/PureComponent.html" title="Ovto::PureComponent (class)">PureComponent</a></span>, <span class='object_link'><a href="Ovto/Runtime.html" title="Ovto::Runtime (class)">Runtime</a></span>, <span class='object_link'><a href="Ovto/State.html" title="Ovto::State (class)">State</a></span>, <span class='object_link'><a href="Ovto/WiredActions.html" title="Ovto::WiredActions (class)">WiredActions</a></span>
96
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Ovto/Actions.html" title="Ovto::Actions (class)">Actions</a></span>, <span class='object_link'><a href="Ovto/App.html" title="Ovto::App (class)">App</a></span>, <span class='object_link'><a href="Ovto/Component.html" title="Ovto::Component (class)">Component</a></span>, <span class='object_link'><a href="Ovto/PureComponent.html" title="Ovto::PureComponent (class)">PureComponent</a></span>, <span class='object_link'><a href="Ovto/Runtime.html" title="Ovto::Runtime (class)">Runtime</a></span>, <span class='object_link'><a href="Ovto/State.html" title="Ovto::State (class)">State</a></span>, <span class='object_link'><a href="Ovto/WiredActionSet.html" title="Ovto::WiredActionSet (class)">WiredActionSet</a></span>, <span class='object_link'><a href="Ovto/WiredActions.html" title="Ovto::WiredActions (class)">WiredActions</a></span>
95
97
 
96
98
 
97
99
  </p>
@@ -107,7 +109,12 @@
107
109
  <dt id="VERSION-constant" class="">VERSION =
108
110
 
109
111
  </dt>
110
- <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>0.5.0</span><span class='tstring_end'>&#39;</span></span></pre></dd>
112
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>0.6.0.rc1</span><span class='tstring_end'>&#39;</span></span></pre></dd>
113
+
114
+ <dt id="VALID_NAME_REXP-constant" class="">VALID_NAME_REXP =
115
+
116
+ </dt>
117
+ <dd><pre class="code"><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\A[a-zA-Z0-9_]+\z</span><span class='regexp_end'>/</span></span></pre></dd>
111
118
 
112
119
  </dl>
113
120
 
@@ -285,6 +292,56 @@
285
292
  <p>Call block.</p>
286
293
  </div></span>
287
294
 
295
+ </li>
296
+
297
+
298
+ <li class="public ">
299
+ <span class="summary_signature">
300
+
301
+ <a href="#Middleware-class_method" title="Middleware (class method)">.<strong>Middleware</strong>(name) &#x21d2; Object </a>
302
+
303
+
304
+
305
+ </span>
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+ <span class="summary_desc"><div class='inline'>
316
+ <p>Create an ancestor of middleware class Example: class MiddlewareExample
317
+ &lt; Ovto::Middleware(“middleware_example”).</p>
318
+ </div></span>
319
+
320
+ </li>
321
+
322
+
323
+ <li class="public ">
324
+ <span class="summary_signature">
325
+
326
+ <a href="#send_args_with_state-class_method" title="send_args_with_state (class method)">.<strong>send_args_with_state</strong>(obj, meth, args, state, &amp;block) &#x21d2; Object </a>
327
+
328
+
329
+
330
+ </span>
331
+
332
+
333
+
334
+
335
+
336
+
337
+
338
+
339
+
340
+ <span class="summary_desc"><div class='inline'>
341
+ <p>Something like `obj.meth(state: state, **args, &amp;block)` Safe even if
342
+ `obj.meth` does not have `state:`.</p>
343
+ </div></span>
344
+
288
345
  </li>
289
346
 
290
347
 
@@ -385,10 +442,10 @@
385
442
  <pre class="lines">
386
443
 
387
444
 
388
- 20</pre>
445
+ 22</pre>
389
446
  </td>
390
447
  <td>
391
- <pre class="code"><span class="info file"># File 'lib/ovto.rb', line 20</span>
448
+ <pre class="code"><span class="info file"># File 'lib/ovto.rb', line 22</span>
392
449
 
393
450
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_debug_trace'>debug_trace</span><span class='semicolon'>;</span> <span class='ivar'>@debug_trace</span><span class='semicolon'>;</span> <span class='kw'>end</span></pre>
394
451
  </td>
@@ -411,10 +468,10 @@
411
468
  <pre class="lines">
412
469
 
413
470
 
414
- 21</pre>
471
+ 23</pre>
415
472
  </td>
416
473
  <td>
417
- <pre class="code"><span class="info file"># File 'lib/ovto.rb', line 21</span>
474
+ <pre class="code"><span class="info file"># File 'lib/ovto.rb', line 23</span>
418
475
 
419
476
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_debug_trace='>debug_trace=</span><span class='lparen'>(</span><span class='id identifier rubyid_bool'>bool</span><span class='rparen'>)</span><span class='semicolon'>;</span> <span class='ivar'>@debug_trace</span> <span class='op'>=</span> <span class='id identifier rubyid_bool'>bool</span><span class='semicolon'>;</span> <span class='kw'>end</span></pre>
420
477
  </td>
@@ -437,12 +494,12 @@
437
494
  <pre class="lines">
438
495
 
439
496
 
440
- 22
441
- 23
442
- 24</pre>
497
+ 24
498
+ 25
499
+ 26</pre>
443
500
  </td>
444
501
  <td>
445
- <pre class="code"><span class="info file"># File 'lib/ovto.rb', line 22</span>
502
+ <pre class="code"><span class="info file"># File 'lib/ovto.rb', line 24</span>
446
503
 
447
504
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_debug_trace_log'>debug_trace_log</span><span class='lparen'>(</span><span class='id identifier rubyid_msg'>msg</span><span class='rparen'>)</span>
448
505
  <span class='id identifier rubyid_console'><span class='object_link'><a href="top-level-namespace.html#console-instance_method" title="#console (method)">console</a></span></span><span class='period'>.</span><span class='id identifier rubyid_log'>log</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Ovto: </span><span class='tstring_end'>&quot;</span></span><span class='op'>+</span><span class='id identifier rubyid_msg'>msg</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@debug_trace</span>
@@ -556,16 +613,16 @@
556
613
  <pre class="lines">
557
614
 
558
615
 
559
- 27
560
- 28
561
616
  29
562
617
  30
563
618
  31
564
619
  32
565
- 33</pre>
620
+ 33
621
+ 34
622
+ 35</pre>
566
623
  </td>
567
624
  <td>
568
- <pre class="code"><span class="info file"># File 'lib/ovto.rb', line 27</span>
625
+ <pre class="code"><span class="info file"># File 'lib/ovto.rb', line 29</span>
569
626
 
570
627
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='lparen'>(</span><span class='id identifier rubyid_obj'>obj</span><span class='rparen'>)</span>
571
628
  <span class='kw'>if</span> <span class='backtick'>`</span><span class='tstring_content'>obj.$inspect</span><span class='tstring_end'>`</span></span>
@@ -606,8 +663,6 @@
606
663
  <pre class="lines">
607
664
 
608
665
 
609
- 37
610
- 38
611
666
  39
612
667
  40
613
668
  41
@@ -627,10 +682,12 @@
627
682
  55
628
683
  56
629
684
  57
630
- 58</pre>
685
+ 58
686
+ 59
687
+ 60</pre>
631
688
  </td>
632
689
  <td>
633
- <pre class="code"><span class="info file"># File 'lib/ovto.rb', line 37</span>
690
+ <pre class="code"><span class="info file"># File 'lib/ovto.rb', line 39</span>
634
691
 
635
692
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_log_error'>log_error</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
636
693
  <span class='kw'>return</span> <span class='id identifier rubyid_block'>block</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span>
@@ -657,6 +714,146 @@
657
714
  </td>
658
715
  </tr>
659
716
  </table>
717
+ </div>
718
+
719
+ <div class="method_details ">
720
+ <h3 class="signature " id="Middleware-class_method">
721
+
722
+ .<strong>Middleware</strong>(name) &#x21d2; <tt>Object</tt>
723
+
724
+
725
+
726
+
727
+
728
+ </h3><div class="docstring">
729
+ <div class="discussion">
730
+
731
+ <p>Create an ancestor of middleware class Example:</p>
732
+
733
+ <pre class="code ruby"><code class="ruby">class MiddlewareExample &lt; Ovto::Middleware(&quot;middleware_example&quot;)
734
+ </code></pre>
735
+
736
+
737
+ </div>
738
+ </div>
739
+ <div class="tags">
740
+
741
+
742
+ </div><table class="source_code">
743
+ <tr>
744
+ <td>
745
+ <pre class="lines">
746
+
747
+
748
+ 6
749
+ 7
750
+ 8
751
+ 9
752
+ 10
753
+ 11
754
+ 12
755
+ 13
756
+ 14
757
+ 15
758
+ 16
759
+ 17
760
+ 18</pre>
761
+ </td>
762
+ <td>
763
+ <pre class="code"><span class="info file"># File 'lib/ovto/middleware.rb', line 6</span>
764
+
765
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='const'>Middleware</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
766
+ <span class='kw'>unless</span> <span class='const'><span class='object_link'><a href="#VALID_NAME_REXP-constant" title="Ovto::VALID_NAME_REXP (constant)">VALID_NAME_REXP</a></span></span> <span class='op'>=~</span> <span class='id identifier rubyid_name'>name</span>
767
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>invalid middleware name: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
768
+ <span class='kw'>end</span>
769
+ <span class='kw'>return</span> <span class='const'>Class</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="" title="Ovto (module)">Ovto</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Ovto/Middleware.html" title="Ovto::Middleware (module)">Middleware</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Ovto/Middleware/Base.html" title="Ovto::Middleware::Base (class)">Base</a></span></span><span class='rparen'>)</span><span class='lbrace'>{</span>
770
+ <span class='id identifier rubyid_const_set'>const_set</span><span class='lparen'>(</span><span class='symbol'>:OVTO_MIDDLEWARE_NAME</span><span class='comma'>,</span> <span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
771
+ <span class='id identifier rubyid_const_set'>const_set</span><span class='lparen'>(</span><span class='symbol'>:State</span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="" title="Ovto (module)">Ovto</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Ovto/State.html" title="Ovto::State (class)">State</a></span></span><span class='rparen'>)</span>
772
+ <span class='id identifier rubyid_const_set'>const_set</span><span class='lparen'>(</span><span class='symbol'>:Actions</span><span class='comma'>,</span> <span class='const'>Class</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="" title="Ovto (module)">Ovto</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Ovto/Middleware.html" title="Ovto::Middleware (module)">Middleware</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Ovto/Middleware/Actions.html" title="Ovto::Middleware::Actions (class)">Actions</a></span></span><span class='rparen'>)</span><span class='rparen'>)</span>
773
+ <span class='id identifier rubyid_const_get'>const_get</span><span class='lparen'>(</span><span class='symbol'>:Actions</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_const_set'>const_set</span><span class='lparen'>(</span><span class='symbol'>:OVTO_MIDDLEWARE_NAME</span><span class='comma'>,</span> <span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
774
+ <span class='id identifier rubyid_const_set'>const_set</span><span class='lparen'>(</span><span class='symbol'>:Component</span><span class='comma'>,</span> <span class='const'>Class</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="" title="Ovto (module)">Ovto</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Ovto/Middleware.html" title="Ovto::Middleware (module)">Middleware</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Ovto/Middleware/Component.html" title="Ovto::Middleware::Component (class)">Component</a></span></span><span class='rparen'>)</span><span class='rparen'>)</span>
775
+ <span class='id identifier rubyid_const_get'>const_get</span><span class='lparen'>(</span><span class='symbol'>:Component</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_const_set'>const_set</span><span class='lparen'>(</span><span class='symbol'>:OVTO_MIDDLEWARE_NAME</span><span class='comma'>,</span> <span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
776
+ <span class='rbrace'>}</span>
777
+ <span class='kw'>end</span></pre>
778
+ </td>
779
+ </tr>
780
+ </table>
781
+ </div>
782
+
783
+ <div class="method_details ">
784
+ <h3 class="signature " id="send_args_with_state-class_method">
785
+
786
+ .<strong>send_args_with_state</strong>(obj, meth, args, state, &amp;block) &#x21d2; <tt>Object</tt>
787
+
788
+
789
+
790
+
791
+
792
+ </h3><div class="docstring">
793
+ <div class="discussion">
794
+
795
+ <p>Something like `obj.meth(state: state, **args, &amp;block)` Safe even if
796
+ `obj.meth` does not have `state:`</p>
797
+
798
+
799
+ </div>
800
+ </div>
801
+ <div class="tags">
802
+
803
+
804
+ </div><table class="source_code">
805
+ <tr>
806
+ <td>
807
+ <pre class="lines">
808
+
809
+
810
+ 64
811
+ 65
812
+ 66
813
+ 67
814
+ 68
815
+ 69
816
+ 70
817
+ 71
818
+ 72
819
+ 73
820
+ 74
821
+ 75
822
+ 76
823
+ 77
824
+ 78
825
+ 79
826
+ 80
827
+ 81
828
+ 82
829
+ 83</pre>
830
+ </td>
831
+ <td>
832
+ <pre class="code"><span class="info file"># File 'lib/ovto.rb', line 64</span>
833
+
834
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_send_args_with_state'>send_args_with_state</span><span class='lparen'>(</span><span class='id identifier rubyid_obj'>obj</span><span class='comma'>,</span> <span class='id identifier rubyid_meth'>meth</span><span class='comma'>,</span> <span class='id identifier rubyid_args'>args</span><span class='comma'>,</span> <span class='id identifier rubyid_state'>state</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
835
+ <span class='id identifier rubyid_parameters'>parameters</span> <span class='op'>=</span> <span class='id identifier rubyid_obj'>obj</span><span class='period'>.</span><span class='id identifier rubyid_method'>method</span><span class='lparen'>(</span><span class='id identifier rubyid_meth'>meth</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_parameters'>parameters</span>
836
+ <span class='id identifier rubyid_accepts_state'>accepts_state</span> <span class='op'>=</span> <span class='backtick'>`</span><span class='tstring_content'>!parameters</span><span class='tstring_end'>`</span></span> <span class='op'>||</span> <span class='id identifier rubyid_parameters'>parameters</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_parameters'>parameters</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_item'>item</span><span class='op'>|</span>
837
+ <span class='id identifier rubyid_item'>item</span> <span class='op'>==</span> <span class='lbracket'>[</span><span class='symbol'>:key</span><span class='comma'>,</span> <span class='symbol'>:state</span><span class='rbracket'>]</span> <span class='op'>||</span>
838
+ <span class='id identifier rubyid_item'>item</span> <span class='op'>==</span> <span class='lbracket'>[</span><span class='symbol'>:keyreq</span><span class='comma'>,</span> <span class='symbol'>:state</span><span class='rbracket'>]</span> <span class='op'>||</span>
839
+ <span class='id identifier rubyid_item'>item</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='symbol'>:keyrest</span>
840
+ <span class='rbrace'>}</span>
841
+ <span class='kw'>if</span> <span class='id identifier rubyid_accepts_state'>accepts_state</span>
842
+ <span class='comment'># We can pass `state:` safely
843
+ </span> <span class='id identifier rubyid_args_with_state'>args_with_state</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='label'>state:</span> <span class='id identifier rubyid_state'>state</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
844
+ <span class='kw'>return</span> <span class='id identifier rubyid_obj'>obj</span><span class='period'>.</span><span class='id identifier rubyid___send__'>__send__</span><span class='lparen'>(</span><span class='id identifier rubyid_meth'>meth</span><span class='comma'>,</span> <span class='id identifier rubyid_args_with_state'>args_with_state</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
845
+ <span class='kw'>else</span>
846
+ <span class='comment'># Check it is empty (see https://github.com/opal/opal/issues/1872)
847
+ </span> <span class='kw'>if</span> <span class='id identifier rubyid_args'>args</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
848
+ <span class='kw'>return</span> <span class='id identifier rubyid_obj'>obj</span><span class='period'>.</span><span class='id identifier rubyid___send__'>__send__</span><span class='lparen'>(</span><span class='id identifier rubyid_meth'>meth</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
849
+ <span class='kw'>else</span>
850
+ <span class='kw'>return</span> <span class='id identifier rubyid_obj'>obj</span><span class='period'>.</span><span class='id identifier rubyid___send__'>__send__</span><span class='lparen'>(</span><span class='id identifier rubyid_meth'>meth</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_args'>args</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
851
+ <span class='kw'>end</span>
852
+ <span class='kw'>end</span>
853
+ <span class='kw'>end</span></pre>
854
+ </td>
855
+ </tr>
856
+ </table>
660
857
  </div>
661
858
 
662
859
  </div>
@@ -664,9 +861,9 @@
664
861
  </div>
665
862
 
666
863
  <div id="footer">
667
- Generated on Sun Dec 22 22:06:04 2019 by
864
+ Generated on Fri Feb 28 23:42:46 2020 by
668
865
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
669
- 0.9.20 (ruby-2.5.5).
866
+ 0.9.24 (ruby-2.5.5).
670
867
  </div>
671
868
 
672
869
  </div>