ovto 0.4.1 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.gitmodules +3 -0
  4. data/CHANGELOG.md +15 -2
  5. data/Gemfile +2 -2
  6. data/Gemfile.lock +23 -27
  7. data/README.md +2 -2
  8. data/book/SUMMARY.md +3 -1
  9. data/book/api/actions.md +1 -1
  10. data/book/api/fetch.md +3 -3
  11. data/book/api/middleware.md +99 -0
  12. data/book/api/pure_component.md +30 -0
  13. data/book/guides/install.md +76 -0
  14. data/book/guides/tutorial.md +3 -3
  15. data/book/ovtologo.png +0 -0
  16. data/docs/api/Array.html +190 -0
  17. data/docs/api/Hash.html +196 -0
  18. data/docs/api/Ovto/Actions.html +132 -40
  19. data/docs/api/Ovto/App.html +254 -40
  20. data/docs/api/Ovto/Component/MoreThanOneNode.html +6 -6
  21. data/docs/api/Ovto/Component.html +102 -27
  22. data/docs/api/Ovto/Middleware/Actions.html +428 -0
  23. data/docs/api/Ovto/Middleware/Base.html +606 -0
  24. data/docs/api/Ovto/Middleware/Component.html +355 -0
  25. data/docs/api/Ovto/Middleware.html +288 -0
  26. data/docs/api/Ovto/PureComponent/StateIsNotAvailable.html +124 -0
  27. data/docs/api/Ovto/PureComponent.html +368 -0
  28. data/docs/api/Ovto/Runtime.html +7 -7
  29. data/docs/api/Ovto/State/MissingValue.html +6 -6
  30. data/docs/api/Ovto/State/{UnknownKey.html → UnknownStateKey.html} +11 -11
  31. data/docs/api/Ovto/State.html +59 -43
  32. data/docs/api/Ovto/WiredActionSet.html +636 -0
  33. data/docs/api/Ovto/WiredActions.html +78 -35
  34. data/docs/api/Ovto.html +226 -29
  35. data/docs/api/_index.html +99 -11
  36. data/docs/api/actions.html +36 -10
  37. data/docs/api/app.html +35 -9
  38. data/docs/api/class_list.html +3 -3
  39. data/docs/api/component.html +37 -11
  40. data/docs/api/css/style.css +2 -2
  41. data/docs/api/fetch.html +40 -14
  42. data/docs/api/file.README.html +8 -8
  43. data/docs/api/file_list.html +2 -2
  44. data/docs/api/frames.html +2 -2
  45. data/docs/api/index.html +8 -8
  46. data/docs/api/js/app.js +14 -3
  47. data/docs/api/method_list.html +318 -22
  48. data/docs/api/middleware.html +498 -0
  49. data/docs/api/pure_component.html +428 -0
  50. data/docs/api/state.html +35 -9
  51. data/docs/api/top-level-namespace.html +9 -7
  52. data/docs/gitbook/gitbook.js +2 -2
  53. data/docs/gitbook/theme.js +1 -1
  54. data/docs/guides/debugging.html +35 -9
  55. data/docs/guides/development.html +35 -9
  56. data/docs/guides/install.html +452 -0
  57. data/docs/guides/tutorial.html +101 -66
  58. data/docs/index.html +37 -17
  59. data/docs/ovtologo.png +0 -0
  60. data/docs/search_index.json +1 -1
  61. data/examples/sinatra/Gemfile +2 -0
  62. data/examples/sinatra/Gemfile.lock +33 -31
  63. data/examples/sinatra/app.rb +1 -4
  64. data/examples/sinatra/config.ru +6 -6
  65. data/examples/static/Gemfile.lock +10 -14
  66. data/lib/ovto/actions.rb +11 -0
  67. data/lib/ovto/app.rb +37 -13
  68. data/lib/ovto/component.rb +149 -73
  69. data/lib/ovto/fetch.rb +1 -1
  70. data/lib/ovto/middleware.rb +121 -0
  71. data/lib/ovto/pure_component.rb +22 -0
  72. data/lib/ovto/state.rb +13 -5
  73. data/lib/ovto/version.rb +1 -1
  74. data/lib/ovto/wired_action_set.rb +40 -0
  75. data/lib/ovto/wired_actions.rb +49 -11
  76. data/lib/ovto.rb +27 -0
  77. data/ovto.gemspec +1 -1
  78. metadata +35 -9
@@ -7,7 +7,7 @@
7
7
  <title>Getting Started · GitBook</title>
8
8
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
9
9
  <meta name="description" content="">
10
- <meta name="generator" content="GitBook 3.2.3">
10
+ <meta name="generator" content="GitBook 3.2.2">
11
11
 
12
12
 
13
13
 
@@ -57,6 +57,8 @@
57
57
  <link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon">
58
58
 
59
59
 
60
+ <link rel="next" href="install.html" />
61
+
60
62
 
61
63
  <link rel="prev" href="../" />
62
64
 
@@ -100,12 +102,12 @@
100
102
 
101
103
  </li>
102
104
 
103
- <li class="chapter " data-level="1.2" data-path="../">
105
+ <li class="chapter active" data-level="1.2" data-path="tutorial.html">
104
106
 
105
- <a href="../">
107
+ <a href="tutorial.html">
106
108
 
107
109
 
108
- Introduction
110
+ Getting Started
109
111
 
110
112
  </a>
111
113
 
@@ -113,12 +115,12 @@
113
115
 
114
116
  </li>
115
117
 
116
- <li class="chapter active" data-level="1.3" data-path="tutorial.html">
118
+ <li class="chapter " data-level="1.3" data-path="install.html">
117
119
 
118
- <a href="tutorial.html">
120
+ <a href="install.html">
119
121
 
120
122
 
121
- Getting Started
123
+ Install
122
124
 
123
125
  </a>
124
126
 
@@ -192,7 +194,33 @@
192
194
 
193
195
  </li>
194
196
 
195
- <li class="chapter " data-level="1.4.5" data-path="../api/fetch.html">
197
+ <li class="chapter " data-level="1.4.5" data-path="../api/pure_component.html">
198
+
199
+ <a href="../api/pure_component.html">
200
+
201
+
202
+ Ovto::PureComponent
203
+
204
+ </a>
205
+
206
+
207
+
208
+ </li>
209
+
210
+ <li class="chapter " data-level="1.4.6" data-path="../api/middleware.html">
211
+
212
+ <a href="../api/middleware.html">
213
+
214
+
215
+ Ovto::Middleware
216
+
217
+ </a>
218
+
219
+
220
+
221
+ </li>
222
+
223
+ <li class="chapter " data-level="1.4.7" data-path="../api/fetch.html">
196
224
 
197
225
  <a href="../api/fetch.html">
198
226
 
@@ -304,50 +332,51 @@
304
332
  <p>This is a tutorial of making an Ovto app. We create a static app (.html + .js) here,
305
333
  but you can embed Ovto apps into a Rails or Sinatra app (See <code>./examples/*</code>).</p>
306
334
  <p>This is the final Ruby code.</p>
307
- <pre><code>require &apos;ovto&apos;
308
-
309
- class MyApp &lt; Ovto::App
310
- class State &lt; Ovto::State
311
- item :celsius, default: 0
312
-
313
- def fahrenheit
314
- (celsius * 9 / 5.0) + 32
315
- end
316
- end
317
-
318
- class Actions &lt; Ovto::Actions
319
- def set_celsius(value:)
320
- return {celsius: value}
321
- end
322
-
323
- def set_fahrenheit(value:)
324
- new_celsius = (value - 32) * 5 / 9.0
325
- return {celsius: new_celsius}
326
- end
327
- end
328
-
329
- class MainComponent &lt; Ovto::Component
330
- def render
331
- o &apos;div&apos; do
332
- o &apos;span&apos;, &apos;Celcius:&apos;
333
- o &apos;input&apos;, {
334
- type: &apos;text&apos;,
335
- onchange: -&gt;(e){ actions.set_celsius(value: e.target.value.to_i) },
336
- value: state.celsius
335
+ <pre><code class="lang-rb"><span class="hljs-keyword">require</span> <span class="hljs-string">&apos;ovto&apos;</span>
336
+
337
+ <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MyApp</span> &lt; Ovto::App</span>
338
+ <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">State</span> &lt; Ovto::State</span>
339
+ item <span class="hljs-symbol">:celsius</span>, <span class="hljs-symbol">default:</span> <span class="hljs-number">0</span>
340
+
341
+ <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">fahrenheit</span></span>
342
+ (celsius * <span class="hljs-number">9</span> / <span class="hljs-number">5.0</span>) + <span class="hljs-number">32</span>
343
+ <span class="hljs-keyword">end</span>
344
+ <span class="hljs-keyword">end</span>
345
+
346
+ <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Actions</span> &lt; Ovto::Actions</span>
347
+ <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">set_celsius</span><span class="hljs-params">(<span class="hljs-symbol">value:</span>)</span></span>
348
+ <span class="hljs-keyword">return</span> {<span class="hljs-symbol">celsius:</span> value}
349
+ <span class="hljs-keyword">end</span>
350
+
351
+ <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">set_fahrenheit</span><span class="hljs-params">(<span class="hljs-symbol">value:</span>)</span></span>
352
+ new_celsius = (value - <span class="hljs-number">32</span>) * <span class="hljs-number">5</span> / <span class="hljs-number">9.0</span>
353
+ <span class="hljs-keyword">return</span> {<span class="hljs-symbol">celsius:</span> new_celsius}
354
+ <span class="hljs-keyword">end</span>
355
+ <span class="hljs-keyword">end</span>
356
+
357
+ <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MainComponent</span> &lt; Ovto::Component</span>
358
+ <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">render</span></span>
359
+ o <span class="hljs-string">&apos;div&apos;</span> <span class="hljs-keyword">do</span>
360
+ o <span class="hljs-string">&apos;span&apos;</span>, <span class="hljs-string">&apos;Celcius:&apos;</span>
361
+ o <span class="hljs-string">&apos;input&apos;</span>, {
362
+ <span class="hljs-symbol">type:</span> <span class="hljs-string">&apos;text&apos;</span>,
363
+ <span class="hljs-symbol">onchange:</span> -&gt;(e){ actions.set_celsius(<span class="hljs-symbol">value:</span> e.target.value.to_i) },
364
+ <span class="hljs-symbol">value:</span> state.celsius
337
365
  }
338
- o &apos;span&apos;, &apos;Fahrenheit:&apos;
339
- o &apos;input&apos;, {
340
- type: &apos;text&apos;,
341
- onchange: -&gt;(e){ actions.set_fahrenheit(value: e.target.value.to_i) },
342
- value: state.fahrenheit
366
+ o <span class="hljs-string">&apos;span&apos;</span>, <span class="hljs-string">&apos;Fahrenheit:&apos;</span>
367
+ o <span class="hljs-string">&apos;input&apos;</span>, {
368
+ <span class="hljs-symbol">type:</span> <span class="hljs-string">&apos;text&apos;</span>,
369
+ <span class="hljs-symbol">onchange:</span> -&gt;(e){ actions.set_fahrenheit(<span class="hljs-symbol">value:</span> e.target.value.to_i) },
370
+ <span class="hljs-symbol">value:</span> state.fahrenheit
343
371
  }
344
- end
345
- end
346
- end
347
- end
372
+ <span class="hljs-keyword">end</span>
373
+ <span class="hljs-keyword">end</span>
374
+ <span class="hljs-keyword">end</span>
375
+ <span class="hljs-keyword">end</span>
348
376
 
349
- MyApp.run(id: &apos;ovto&apos;)
350
- </code></pre><p>Let&apos;s take a look step-by-step.</p>
377
+ MyApp.run(<span class="hljs-symbol">id:</span> <span class="hljs-string">&apos;ovto&apos;</span>)
378
+ </code></pre>
379
+ <p>Let&apos;s take a look step-by-step.</p>
351
380
  <h2 id="prerequisites">Prerequisites</h2>
352
381
  <ul>
353
382
  <li>Ruby</li>
@@ -355,10 +384,11 @@ MyApp.run(id: &apos;ovto&apos;)
355
384
  </ul>
356
385
  <h2 id="setup">Setup</h2>
357
386
  <p>Make a Gemfile:</p>
358
- <pre><code>source &quot;https://rubygems.org&quot;
359
- gem &quot;ovto&quot;, github: &apos;yhara/ovto&apos; # Use git master because ovto gem is not released yet
360
- gem &apos;rake&apos;
361
- </code></pre><p>Run <code>bundle install</code>.</p>
387
+ <pre><code class="lang-rb">source <span class="hljs-string">&quot;https://rubygems.org&quot;</span>
388
+ gem <span class="hljs-string">&quot;ovto&quot;</span>, <span class="hljs-symbol">github:</span> <span class="hljs-string">&apos;yhara/ovto&apos;</span> <span class="hljs-comment"># Use git master because ovto gem is not released yet</span>
389
+ gem <span class="hljs-string">&apos;rake&apos;</span>
390
+ </code></pre>
391
+ <p>Run <code>bundle install</code>.</p>
362
392
  <h2 id="html">HTML</h2>
363
393
  <p>Make an index.html:</p>
364
394
  <pre><code class="lang-html"><span class="hljs-meta">&lt;!doctype html&gt;</span>
@@ -450,17 +480,18 @@ convert.</p>
450
480
  <span class="hljs-keyword">end</span>
451
481
  </code></pre>
452
482
  <p>Now you can know the value by <code>state.fahrenheit</code>. Update <code>MainComponent</code> to show the value too.</p>
453
- <pre><code> class MainComponent &lt; Ovto::Component
454
- def render
455
- o &apos;div&apos; do
456
- o &apos;span&apos;, &apos;Celcius:&apos;
457
- o &apos;input&apos;, type: &apos;text&apos;, value: state.celsius
458
- o &apos;span&apos;, &apos;Fahrenheit:&apos;
459
- o &apos;input&apos;, type: &apos;text&apos;, value: state.fahrenheit
460
- end
461
- end
462
- end
463
- </code></pre><h2 id="add-an-action">Add an action</h2>
483
+ <pre><code class="lang-rb"> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MainComponent</span> &lt; Ovto::Component</span>
484
+ <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">render</span></span>
485
+ o <span class="hljs-string">&apos;div&apos;</span> <span class="hljs-keyword">do</span>
486
+ o <span class="hljs-string">&apos;span&apos;</span>, <span class="hljs-string">&apos;Celcius:&apos;</span>
487
+ o <span class="hljs-string">&apos;input&apos;</span>, <span class="hljs-symbol">type:</span> <span class="hljs-string">&apos;text&apos;</span>, <span class="hljs-symbol">value:</span> state.celsius
488
+ o <span class="hljs-string">&apos;span&apos;</span>, <span class="hljs-string">&apos;Fahrenheit:&apos;</span>
489
+ o <span class="hljs-string">&apos;input&apos;</span>, <span class="hljs-symbol">type:</span> <span class="hljs-string">&apos;text&apos;</span>, <span class="hljs-symbol">value:</span> state.fahrenheit
490
+ <span class="hljs-keyword">end</span>
491
+ <span class="hljs-keyword">end</span>
492
+ <span class="hljs-keyword">end</span>
493
+ </code></pre>
494
+ <h2 id="add-an-action">Add an action</h2>
464
495
  <p>Now we know 0 degrees Celsius is 32 degrees Fahrenheit. But how about 10 degrees or
465
496
  100 degrees Celsius? Let&apos;s update the app to we can specify a Celsius value.</p>
466
497
  <p>You may think that you can change the value with <code>state.celsius = 100</code>, but this is
@@ -546,11 +577,15 @@ Fahrenheit degree into Celsius and set it to the global state.</p>
546
577
 
547
578
 
548
579
 
549
- <a href="../" class="navigation navigation-prev navigation-unique" aria-label="Previous page: Introduction">
580
+ <a href="../" class="navigation navigation-prev " aria-label="Previous page: Introduction">
550
581
  <i class="fa fa-angle-left"></i>
551
582
  </a>
552
583
 
553
584
 
585
+ <a href="install.html" class="navigation navigation-next " aria-label="Next page: Install">
586
+ <i class="fa fa-angle-right"></i>
587
+ </a>
588
+
554
589
 
555
590
 
556
591
  </div>
@@ -558,7 +593,7 @@ Fahrenheit degree into Celsius and set it to the global state.</p>
558
593
  <script>
559
594
  var gitbook = gitbook || [];
560
595
  gitbook.push(function() {
561
- gitbook.page.hasChanged({"page":{"title":"Getting Started","level":"1.3","depth":1,"next":{"title":"API","level":"1.4","depth":1,"ref":"","articles":[{"title":"Ovto::App","level":"1.4.1","depth":2,"path":"api/app.md","ref":"api/app.md","articles":[]},{"title":"Ovto::State","level":"1.4.2","depth":2,"path":"api/state.md","ref":"api/state.md","articles":[]},{"title":"Ovto::Actions","level":"1.4.3","depth":2,"path":"api/actions.md","ref":"api/actions.md","articles":[]},{"title":"Ovto::Component","level":"1.4.4","depth":2,"path":"api/component.md","ref":"api/component.md","articles":[]},{"title":"Ovto.fetch","level":"1.4.5","depth":2,"path":"api/fetch.md","ref":"api/fetch.md","articles":[]}]},"previous":{"title":"Introduction","level":"1.2","depth":1,"path":"README.md","ref":"README.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"guides/tutorial.md","mtime":"2019-04-18T08:51:31.000Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-04-19T03:51:35.766Z"},"basePath":"..","book":{"language":""}});
596
+ gitbook.page.hasChanged({"page":{"title":"Getting Started","level":"1.2","depth":1,"next":{"title":"Install","level":"1.3","depth":1,"path":"guides/install.md","ref":"guides/install.md","articles":[]},"previous":{"title":"Introduction","level":"1.1","depth":1,"path":"readme.md","ref":"readme.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"guides/tutorial.md","mtime":"2019-04-19T07:38:37.000Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2020-02-29T14:26:27.632Z"},"basePath":"..","book":{"language":""}});
562
597
  });
563
598
  </script>
564
599
  </div>
data/docs/index.html CHANGED
@@ -7,7 +7,7 @@
7
7
  <title>Introduction · GitBook</title>
8
8
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
9
9
  <meta name="description" content="">
10
- <meta name="generator" content="GitBook 3.2.3">
10
+ <meta name="generator" content="GitBook 3.2.2">
11
11
 
12
12
 
13
13
 
@@ -60,8 +60,6 @@
60
60
  <link rel="next" href="guides/tutorial.html" />
61
61
 
62
62
 
63
- <link rel="prev" href="./" />
64
-
65
63
 
66
64
  </head>
67
65
  <body>
@@ -89,7 +87,7 @@
89
87
 
90
88
 
91
89
 
92
- <li class="chapter " data-level="1.1" data-path="./">
90
+ <li class="chapter active" data-level="1.1" data-path="./">
93
91
 
94
92
  <a href="./">
95
93
 
@@ -102,12 +100,12 @@
102
100
 
103
101
  </li>
104
102
 
105
- <li class="chapter active" data-level="1.2" data-path="./">
103
+ <li class="chapter " data-level="1.2" data-path="guides/tutorial.html">
106
104
 
107
- <a href="./">
105
+ <a href="guides/tutorial.html">
108
106
 
109
107
 
110
- Introduction
108
+ Getting Started
111
109
 
112
110
  </a>
113
111
 
@@ -115,12 +113,12 @@
115
113
 
116
114
  </li>
117
115
 
118
- <li class="chapter " data-level="1.3" data-path="guides/tutorial.html">
116
+ <li class="chapter " data-level="1.3" data-path="guides/install.html">
119
117
 
120
- <a href="guides/tutorial.html">
118
+ <a href="guides/install.html">
121
119
 
122
120
 
123
- Getting Started
121
+ Install
124
122
 
125
123
  </a>
126
124
 
@@ -194,7 +192,33 @@
194
192
 
195
193
  </li>
196
194
 
197
- <li class="chapter " data-level="1.4.5" data-path="api/fetch.html">
195
+ <li class="chapter " data-level="1.4.5" data-path="api/pure_component.html">
196
+
197
+ <a href="api/pure_component.html">
198
+
199
+
200
+ Ovto::PureComponent
201
+
202
+ </a>
203
+
204
+
205
+
206
+ </li>
207
+
208
+ <li class="chapter " data-level="1.4.6" data-path="api/middleware.html">
209
+
210
+ <a href="api/middleware.html">
211
+
212
+
213
+ Ovto::Middleware
214
+
215
+ </a>
216
+
217
+
218
+
219
+ </li>
220
+
221
+ <li class="chapter " data-level="1.4.7" data-path="api/fetch.html">
198
222
 
199
223
  <a href="api/fetch.html">
200
224
 
@@ -342,12 +366,8 @@
342
366
 
343
367
 
344
368
 
345
- <a href="./" class="navigation navigation-prev " aria-label="Previous page: Introduction">
346
- <i class="fa fa-angle-left"></i>
347
- </a>
348
-
349
369
 
350
- <a href="guides/tutorial.html" class="navigation navigation-next " aria-label="Next page: Getting Started">
370
+ <a href="guides/tutorial.html" class="navigation navigation-next navigation-unique" aria-label="Next page: Getting Started">
351
371
  <i class="fa fa-angle-right"></i>
352
372
  </a>
353
373
 
@@ -358,7 +378,7 @@
358
378
  <script>
359
379
  var gitbook = gitbook || [];
360
380
  gitbook.push(function() {
361
- gitbook.page.hasChanged({"page":{"title":"Introduction","level":"1.2","depth":1,"next":{"title":"Getting Started","level":"1.3","depth":1,"path":"guides/tutorial.md","ref":"guides/tutorial.md","articles":[]},"previous":{"title":"Introduction","level":"1.1","depth":1,"path":"readme.md","ref":"readme.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"README.md","mtime":"2018-12-23T17:33:22.000Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-04-19T03:51:35.766Z"},"basePath":".","book":{"language":""}});
381
+ gitbook.page.hasChanged({"page":{"title":"Introduction","level":"1.1","depth":1,"next":{"title":"Getting Started","level":"1.2","depth":1,"path":"guides/tutorial.md","ref":"guides/tutorial.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"readme.md","mtime":"2018-12-23T17:33:22.000Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2020-02-29T14:26:27.632Z"},"basePath":".","book":{"language":""}});
362
382
  });
363
383
  </script>
364
384
  </div>
data/docs/ovtologo.png ADDED
Binary file