wwwjdic 13.0.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 (130) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG +419 -0
  3. data/COPYING.md +675 -0
  4. data/Gemfile +21 -0
  5. data/README.md +303 -0
  6. data/Rakefile +52 -0
  7. data/acknowledgements.md +55 -0
  8. data/authors.md +67 -0
  9. data/copyright.md +377 -0
  10. data/examples/basics.rb +117 -0
  11. data/examples/translate.rb +128 -0
  12. data/examples/uri.rb +129 -0
  13. data/html/CHANGELOG.html +597 -0
  14. data/html/COPYING_md.html +389 -0
  15. data/html/Gemfile.html +104 -0
  16. data/html/Object.html +185 -0
  17. data/html/README_md.html +343 -0
  18. data/html/Rakefile.html +137 -0
  19. data/html/WWWJDic/ParsableDuckType.html +159 -0
  20. data/html/WWWJDic/Parser.html +233 -0
  21. data/html/WWWJDic/Parsers/Dict.html +191 -0
  22. data/html/WWWJDic/Parsers/Display.html +184 -0
  23. data/html/WWWJDic/Parsers/Key.html +221 -0
  24. data/html/WWWJDic/Parsers/Search.html +214 -0
  25. data/html/WWWJDic/Parsers/Server.html +182 -0
  26. data/html/WWWJDic/Parsers.html +96 -0
  27. data/html/WWWJDic/Splitter.html +378 -0
  28. data/html/WWWJDic/Utils/Downloader/Downloader.html +227 -0
  29. data/html/WWWJDic/Utils/Downloader.html +108 -0
  30. data/html/WWWJDic/Utils/Raisers.html +235 -0
  31. data/html/WWWJDic/Utils.html +108 -0
  32. data/html/WWWJDic/WWWJDic.html +715 -0
  33. data/html/WWWJDic.html +348 -0
  34. data/html/acknowledgements_md.html +149 -0
  35. data/html/authors_md.html +181 -0
  36. data/html/copyright_md.html +422 -0
  37. data/html/created.rid +59 -0
  38. data/html/css/fonts.css +167 -0
  39. data/html/css/rdoc.css +590 -0
  40. data/html/fonts/Lato-Light.ttf +0 -0
  41. data/html/fonts/Lato-LightItalic.ttf +0 -0
  42. data/html/fonts/Lato-Regular.ttf +0 -0
  43. data/html/fonts/Lato-RegularItalic.ttf +0 -0
  44. data/html/fonts/SourceCodePro-Bold.ttf +0 -0
  45. data/html/fonts/SourceCodePro-Regular.ttf +0 -0
  46. data/html/images/add.png +0 -0
  47. data/html/images/arrow_up.png +0 -0
  48. data/html/images/brick.png +0 -0
  49. data/html/images/brick_link.png +0 -0
  50. data/html/images/bug.png +0 -0
  51. data/html/images/bullet_black.png +0 -0
  52. data/html/images/bullet_toggle_minus.png +0 -0
  53. data/html/images/bullet_toggle_plus.png +0 -0
  54. data/html/images/date.png +0 -0
  55. data/html/images/delete.png +0 -0
  56. data/html/images/find.png +0 -0
  57. data/html/images/loadingAnimation.gif +0 -0
  58. data/html/images/macFFBgHack.png +0 -0
  59. data/html/images/package.png +0 -0
  60. data/html/images/page_green.png +0 -0
  61. data/html/images/page_white_text.png +0 -0
  62. data/html/images/page_white_width.png +0 -0
  63. data/html/images/plugin.png +0 -0
  64. data/html/images/ruby.png +0 -0
  65. data/html/images/tag_blue.png +0 -0
  66. data/html/images/tag_green.png +0 -0
  67. data/html/images/transparent.png +0 -0
  68. data/html/images/wrench.png +0 -0
  69. data/html/images/wrench_orange.png +0 -0
  70. data/html/images/zoom.png +0 -0
  71. data/html/index.html +363 -0
  72. data/html/js/darkfish.js +161 -0
  73. data/html/js/jquery.js +4 -0
  74. data/html/js/navigation.js +141 -0
  75. data/html/js/navigation.js.gz +0 -0
  76. data/html/js/search.js +109 -0
  77. data/html/js/search_index.js +1 -0
  78. data/html/js/search_index.js.gz +0 -0
  79. data/html/js/searcher.js +229 -0
  80. data/html/js/searcher.js.gz +0 -0
  81. data/html/table_of_contents.html +541 -0
  82. data/html/wwwjdic_gemspec.html +161 -0
  83. data/lib/wwwjdic/application.rb +233 -0
  84. data/lib/wwwjdic/constants.rb +113 -0
  85. data/lib/wwwjdic/locales/de.yml +29 -0
  86. data/lib/wwwjdic/locales/en.yml +29 -0
  87. data/lib/wwwjdic/locales/es.yml +29 -0
  88. data/lib/wwwjdic/locales/fr.yml +29 -0
  89. data/lib/wwwjdic/locales/hu.yml +29 -0
  90. data/lib/wwwjdic/locales/it.yml +29 -0
  91. data/lib/wwwjdic/locales/ja.yml +30 -0
  92. data/lib/wwwjdic/locales/nl.yml +29 -0
  93. data/lib/wwwjdic/locales/ru.yml +29 -0
  94. data/lib/wwwjdic/locales/sl.yml +29 -0
  95. data/lib/wwwjdic/locales/sv.yml +29 -0
  96. data/lib/wwwjdic/parser.rb +46 -0
  97. data/lib/wwwjdic/parsers/dict.rb +58 -0
  98. data/lib/wwwjdic/parsers/display.rb +50 -0
  99. data/lib/wwwjdic/parsers/key.rb +75 -0
  100. data/lib/wwwjdic/parsers/search.rb +60 -0
  101. data/lib/wwwjdic/parsers/server.rb +47 -0
  102. data/lib/wwwjdic/utils/downloader.rb +135 -0
  103. data/lib/wwwjdic/utils/raisers.rb +67 -0
  104. data/lib/wwwjdic/utils/splitter.rb +84 -0
  105. data/lib/wwwjdic/version.rb +20 -0
  106. data/lib/wwwjdic.rb +57 -0
  107. data/test/test_helper.rb +40 -0
  108. data/test/test_wwwjdic.rb +32 -0
  109. data/test/wwwjdic/locales/de.yml +22 -0
  110. data/test/wwwjdic/locales/en.yml +22 -0
  111. data/test/wwwjdic/locales/es.yml +22 -0
  112. data/test/wwwjdic/locales/fr.yml +22 -0
  113. data/test/wwwjdic/locales/hu.yml +22 -0
  114. data/test/wwwjdic/locales/it.yml +21 -0
  115. data/test/wwwjdic/locales/ja.yml +23 -0
  116. data/test/wwwjdic/locales/nl.yml +22 -0
  117. data/test/wwwjdic/locales/ru.yml +22 -0
  118. data/test/wwwjdic/locales/sl.yml +22 -0
  119. data/test/wwwjdic/locales/sv.yml +22 -0
  120. data/test/wwwjdic/locales/test_locales.rb +65 -0
  121. data/test/wwwjdic/parsers/test_dict.rb +73 -0
  122. data/test/wwwjdic/parsers/test_display.rb +51 -0
  123. data/test/wwwjdic/parsers/test_key.rb +52 -0
  124. data/test/wwwjdic/parsers/test_server.rb +51 -0
  125. data/test/wwwjdic/test_application.rb +219 -0
  126. data/test/wwwjdic/test_parsable_duck_type.rb +37 -0
  127. data/test/wwwjdic/utils/test_downloader.rb +41 -0
  128. data/test/wwwjdic/utils/test_raisers.rb +59 -0
  129. data/wwwjdic.gemspec +74 -0
  130. metadata +309 -0
@@ -0,0 +1,715 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta charset="UTF-8">
6
+
7
+ <title>class WWWJDic::WWWJDic - wwwjdic 13.0.0</title>
8
+
9
+ <script type="text/javascript">
10
+ var rdoc_rel_prefix = "../";
11
+ var index_rel_prefix = "../";
12
+ </script>
13
+
14
+ <script src="../js/jquery.js"></script>
15
+ <script src="../js/darkfish.js"></script>
16
+
17
+ <link href="../css/fonts.css" rel="stylesheet">
18
+ <link href="../css/rdoc.css" rel="stylesheet">
19
+
20
+
21
+
22
+
23
+ <body id="top" role="document" class="class">
24
+ <nav role="navigation">
25
+ <div id="project-navigation">
26
+ <div id="home-section" role="region" title="Quick navigation" class="nav-section">
27
+ <h2>
28
+ <a href="../index.html" rel="home">Home</a>
29
+ </h2>
30
+
31
+ <div id="table-of-contents-navigation">
32
+ <a href="../table_of_contents.html#pages">Pages</a>
33
+ <a href="../table_of_contents.html#classes">Classes</a>
34
+ <a href="../table_of_contents.html#methods">Methods</a>
35
+ </div>
36
+ </div>
37
+
38
+ <div id="search-section" role="search" class="project-section initially-hidden">
39
+ <form action="#" method="get" accept-charset="utf-8">
40
+ <div id="search-field-wrapper">
41
+ <input id="search-field" role="combobox" aria-label="Search"
42
+ aria-autocomplete="list" aria-controls="search-results"
43
+ type="text" name="search" placeholder="Search" spellcheck="false"
44
+ title="Type to search, Up and Down to navigate, Enter to load">
45
+ </div>
46
+
47
+ <ul id="search-results" aria-label="Search Results"
48
+ aria-busy="false" aria-expanded="false"
49
+ aria-atomic="false" class="initially-hidden"></ul>
50
+ </form>
51
+ </div>
52
+
53
+ </div>
54
+
55
+
56
+
57
+ <div id="class-metadata">
58
+
59
+ <div id="parent-class-section" class="nav-section">
60
+ <h3>Parent</h3>
61
+
62
+
63
+ <p class="link"><a href="../Object.html">Object</a>
64
+
65
+ </div>
66
+
67
+
68
+
69
+ <!-- Method Quickref -->
70
+ <div id="method-list-section" class="nav-section">
71
+ <h3>Methods</h3>
72
+
73
+ <ul class="link-list" role="directory">
74
+
75
+ <li ><a href="#method-c-new">::new</a>
76
+
77
+ <li ><a href="#method-i-dictionary">#dictionary</a>
78
+
79
+ <li ><a href="#method-i-dictionary-3D">#dictionary=</a>
80
+
81
+ <li ><a href="#method-i-json_translate">#json_translate</a>
82
+
83
+ <li ><a href="#method-i-json_uri">#json_uri</a>
84
+
85
+ <li ><a href="#method-i-raw_uri">#raw_uri</a>
86
+
87
+ <li ><a href="#method-i-reset">#reset</a>
88
+
89
+ <li ><a href="#method-i-server">#server</a>
90
+
91
+ <li ><a href="#method-i-server-3D">#server=</a>
92
+
93
+ <li ><a href="#method-i-to_s">#to_s</a>
94
+
95
+ <li ><a href="#method-i-translate">#translate</a>
96
+
97
+ <li ><a href="#method-i-uri">#uri</a>
98
+
99
+ </ul>
100
+ </div>
101
+
102
+ </div>
103
+ </nav>
104
+
105
+ <main role="main" aria-labelledby="class-WWWJDic::WWWJDic">
106
+ <h1 id="class-WWWJDic::WWWJDic" class="class">
107
+ class WWWJDic::WWWJDic
108
+ </h1>
109
+
110
+ <section class="description">
111
+
112
+ <p>This class is a simple API to interact with <a href="WWWJDic.html"><code>WWWJDic</code></a> Backboor Entry/API.</p>
113
+ <dl class="rdoc-list note-list"><dt>Author
114
+ <dd>
115
+ <p><a href="mailto:marcobresciani_1974@libero.it">Marco Bresciani</a></p>
116
+ </dd><dt>Copyright
117
+ <dd>
118
+ <p>Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Marco Bresciani</p>
119
+ </dd><dt>License
120
+ <dd>
121
+ <p>GNU General Public License version 3</p>
122
+ </dd></dl>
123
+
124
+ </section>
125
+
126
+
127
+ <section id="5Buntitled-5D" class="documentation-section">
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+
137
+ <section id="public-class-5Buntitled-5D-method-details" class="method-section">
138
+ <header>
139
+ <h3>Public Class Methods</h3>
140
+ </header>
141
+
142
+
143
+ <div id="method-c-new" class="method-detail ">
144
+
145
+ <div class="method-heading">
146
+ <span class="method-name">new</span><span
147
+ class="method-args">(parser)</span>
148
+
149
+ <span class="method-click-advice">click to toggle source</span>
150
+
151
+ </div>
152
+
153
+
154
+ <div class="method-description">
155
+
156
+ <p>Creates a <code>WWWJDic</code> object. This constructor should be used through the WWWJDic::breener method only.</p>
157
+ <dl class="rdoc-list note-list"><dt>Usage
158
+ <dd>
159
+ <p><code>new_wwwjdic = WWWJDic.new a_parser</code></p>
160
+ </dd><dt>Returns
161
+ <dd>
162
+ <p>a <code>WWWJDic</code> object.</p>
163
+ </dd></dl>
164
+
165
+
166
+
167
+
168
+ <div class="method-source-code" id="new-source">
169
+ <pre> <span class="ruby-comment"># File lib/wwwjdic/application.rb</span>
170
+ <span class="line-num">41</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">parser</span>)
171
+ <span class="line-num">42</span> <span class="ruby-constant">I18n</span>.<span class="ruby-identifier">load_path</span> = <span class="ruby-constant">Dir</span>[<span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-keyword">__FILE__</span>), <span class="ruby-string">&#39;/locales/&#39;</span>, <span class="ruby-string">&#39;*.yml&#39;</span>)]
172
+ <span class="line-num">43</span>
173
+ <span class="line-num">44</span> <span class="ruby-ivar">@parser</span> = <span class="ruby-identifier">parser</span>
174
+ <span class="line-num">45</span>
175
+ <span class="line-num">46</span> <span class="ruby-identifier">reset</span>
176
+ <span class="line-num">47</span> <span class="ruby-keyword">end</span></pre>
177
+ </div>
178
+
179
+ </div>
180
+
181
+
182
+
183
+
184
+ </div>
185
+
186
+
187
+ </section>
188
+
189
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
190
+ <header>
191
+ <h3>Public Instance Methods</h3>
192
+ </header>
193
+
194
+
195
+ <div id="method-i-dictionary" class="method-detail ">
196
+
197
+ <div class="method-heading">
198
+ <span class="method-name">dictionary</span><span
199
+ class="method-args">()</span>
200
+
201
+ <span class="method-click-advice">click to toggle source</span>
202
+
203
+ </div>
204
+
205
+
206
+ <div class="method-description">
207
+
208
+ <p>Return the default used <a href="WWWJDic.html#method-i-dictionary"><code>dictionary</code></a> string, if any.</p>
209
+ <dl class="rdoc-list note-list"><dt>Returns
210
+ <dd>
211
+ <p>a String with the <a href="WWWJDic.html#method-i-dictionary"><code>dictionary</code></a> full name.</p>
212
+ </dd></dl>
213
+
214
+
215
+
216
+
217
+ <div class="method-source-code" id="dictionary-source">
218
+ <pre> <span class="ruby-comment"># File lib/wwwjdic/application.rb</span>
219
+ <span class="line-num">155</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">dictionary</span>
220
+ <span class="line-num">156</span> <span class="ruby-constant">DICTS_BY_CODES</span>[<span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:dict</span>]]
221
+ <span class="line-num">157</span> <span class="ruby-keyword">end</span></pre>
222
+ </div>
223
+
224
+ </div>
225
+
226
+
227
+
228
+
229
+ </div>
230
+
231
+
232
+ <div id="method-i-dictionary-3D" class="method-detail ">
233
+
234
+ <div class="method-heading">
235
+ <span class="method-name">dictionary=</span><span
236
+ class="method-args">(dict)</span>
237
+
238
+ <span class="method-click-advice">click to toggle source</span>
239
+
240
+ </div>
241
+
242
+
243
+ <div class="method-description">
244
+
245
+ <p>Configure the default used <a href="WWWJDic.html#method-i-dictionary"><code>dictionary</code></a> using either code/number or (exact) string.</p>
246
+ <dl class="rdoc-list note-list"><dt>Usage
247
+ <dd>
248
+ <p>&lt;tt&gt;new_wwwjdic.dictionary= dict</p>
249
+ </dd><dt>Params
250
+ <dd><ul><li>
251
+ <p><code>dict</code>: [String] is the <a href="WWWJDic.html#method-i-dictionary"><code>dictionary</code></a> code or (exact) full name.</p>
252
+ </li></ul>
253
+ </dd></dl>
254
+
255
+
256
+
257
+
258
+ <div class="method-source-code" id="dictionary-3D-source">
259
+ <pre> <span class="ruby-comment"># File lib/wwwjdic/application.rb</span>
260
+ <span class="line-num">147</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">dictionary=</span>(<span class="ruby-identifier">dict</span>)
261
+ <span class="line-num">148</span> <span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:dict</span>] = <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value">:dict</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">dict</span>)
262
+ <span class="line-num">149</span> <span class="ruby-ivar">@wwwjdic</span> = <span class="ruby-constant">URIS</span>[<span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:server</span>]] <span class="ruby-operator">+</span> <span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:dict</span>] <span class="ruby-operator">+</span> <span class="ruby-constant">DISPLAY</span>[<span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:display</span>]]
263
+ <span class="line-num">150</span> <span class="ruby-keyword">end</span></pre>
264
+ </div>
265
+
266
+ </div>
267
+
268
+
269
+
270
+
271
+ </div>
272
+
273
+
274
+ <div id="method-i-json_translate" class="method-detail ">
275
+
276
+ <div class="method-heading">
277
+ <span class="method-name">json_translate</span><span
278
+ class="method-args">(word = nil, args = {}, filename = nil)</span>
279
+
280
+ <span class="method-click-advice">click to toggle source</span>
281
+
282
+ </div>
283
+
284
+
285
+ <div class="method-description">
286
+
287
+ <p>Save a file, with specified <code>filename</code>, that contains the current wwwjdic configuration, in JSON format. Uses the internal state to retrieve data from the URI. Defaults to &#39;wwwjdic&#39; with no specific extension.</p>
288
+ <dl class="rdoc-list note-list"><dt>Usage
289
+ <dd><ul><li>
290
+ <p><code>a_string = new_wwwjdic.json_translate filename</code></p>
291
+ </li></ul>
292
+ </dd><dt>Params
293
+ <dd><ul><li>
294
+ <p><code>filename</code>: [String] is the filename to be saved.</p>
295
+ </li></ul>
296
+ </dd></dl>
297
+
298
+
299
+
300
+
301
+ <div class="method-source-code" id="json_translate-source">
302
+ <pre> <span class="ruby-comment"># File lib/wwwjdic/application.rb</span>
303
+ <span class="line-num">117</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">json_translate</span>(<span class="ruby-identifier">word</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-identifier">args</span> = {}, <span class="ruby-identifier">filename</span> = <span class="ruby-keyword">nil</span>)
304
+ <span class="line-num">118</span> <span class="ruby-identifier">translation</span> = <span class="ruby-identifier">translate</span>(<span class="ruby-identifier">word</span>, <span class="ruby-identifier">args</span>)
305
+ <span class="line-num">119</span>
306
+ <span class="line-num">120</span> <span class="ruby-identifier">a_hash</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>
307
+ <span class="line-num">121</span> <span class="ruby-identifier">a_hash</span>[<span class="ruby-identifier">word</span>.<span class="ruby-identifier">to_sym</span>] = <span class="ruby-identifier">raw_uri</span>(<span class="ruby-identifier">word</span>, <span class="ruby-identifier">args</span>)
308
+ <span class="line-num">122</span>
309
+ <span class="line-num">123</span> <span class="ruby-identifier">the_splitter</span> = <span class="ruby-constant">Splitter</span>.<span class="ruby-identifier">new</span> <span class="ruby-identifier">translation</span>
310
+ <span class="line-num">124</span>
311
+ <span class="line-num">125</span> <span class="ruby-identifier">a_hash</span>[<span class="ruby-value">:title</span>] = <span class="ruby-identifier">the_splitter</span>.<span class="ruby-identifier">title</span>
312
+ <span class="line-num">126</span> <span class="ruby-identifier">a_hash</span>[<span class="ruby-value">:translation</span>] = <span class="ruby-identifier">the_splitter</span>.<span class="ruby-identifier">translation</span>
313
+ <span class="line-num">127</span> <span class="ruby-identifier">a_hash</span>[<span class="ruby-value">:message</span>] = <span class="ruby-identifier">the_splitter</span>.<span class="ruby-identifier">message</span>
314
+ <span class="line-num">128</span>
315
+ <span class="line-num">129</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">a_hash</span>[<span class="ruby-value">:translation</span>].<span class="ruby-identifier">nil?</span>
316
+ <span class="line-num">130</span> <span class="ruby-identifier">a_hash</span>[<span class="ruby-value">:lines</span>] = <span class="ruby-identifier">the_splitter</span>.<span class="ruby-identifier">lines</span>
317
+ <span class="line-num">131</span> <span class="ruby-identifier">a_hash</span>[<span class="ruby-value">:content</span>] = <span class="ruby-identifier">the_splitter</span>.<span class="ruby-identifier">content</span>
318
+ <span class="line-num">132</span> <span class="ruby-keyword">end</span>
319
+ <span class="line-num">133</span>
320
+ <span class="line-num">134</span> <span class="ruby-identifier">result</span> = <span class="ruby-identifier">a_hash</span>.<span class="ruby-identifier">to_json</span>
321
+ <span class="line-num">135</span>
322
+ <span class="line-num">136</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">filename</span>, <span class="ruby-string">&#39;w+&#39;</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">JSON</span>.<span class="ruby-identifier">pretty_generate</span>(<span class="ruby-identifier">a_hash</span>)} <span class="ruby-keyword">unless</span> <span class="ruby-identifier">filename</span>.<span class="ruby-identifier">nil?</span>
323
+ <span class="line-num">137</span>
324
+ <span class="line-num">138</span> <span class="ruby-identifier">result</span>
325
+ <span class="line-num">139</span> <span class="ruby-keyword">end</span></pre>
326
+ </div>
327
+
328
+ </div>
329
+
330
+
331
+
332
+
333
+ </div>
334
+
335
+
336
+ <div id="method-i-json_uri" class="method-detail ">
337
+
338
+ <div class="method-heading">
339
+ <span class="method-name">json_uri</span><span
340
+ class="method-args">(word = nil, args = {})</span>
341
+
342
+ <span class="method-click-advice">click to toggle source</span>
343
+
344
+ </div>
345
+
346
+
347
+ <div class="method-description">
348
+
349
+ <p>Create the reference <a href="WWWJDic.html#method-i-uri"><code>uri</code></a> for a <code>word</code> translation, according to specified parameters, with JSON output.</p>
350
+ <dl class="rdoc-list note-list"><dt>Usage
351
+ <dd>
352
+ <p>&lt;tt&gt;new_wwwjdic.json_uri word</p>
353
+ </dd></dl>
354
+
355
+
356
+
357
+
358
+ <div class="method-source-code" id="json_uri-source">
359
+ <pre> <span class="ruby-comment"># File lib/wwwjdic/application.rb</span>
360
+ <span class="line-num">86</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">json_uri</span>(<span class="ruby-identifier">word</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-identifier">args</span> = {})
361
+ <span class="line-num">87</span> <span class="ruby-identifier">an_uri</span> = <span class="ruby-identifier">uri</span>(<span class="ruby-identifier">word</span>, <span class="ruby-identifier">args</span>)
362
+ <span class="line-num">88</span>
363
+ <span class="line-num">89</span> <span class="ruby-identifier">result</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>
364
+ <span class="line-num">90</span> <span class="ruby-identifier">result</span>[<span class="ruby-identifier">word</span>] = <span class="ruby-identifier">an_uri</span>
365
+ <span class="line-num">91</span>
366
+ <span class="line-num">92</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">to_json</span>
367
+ <span class="line-num">93</span> <span class="ruby-keyword">end</span></pre>
368
+ </div>
369
+
370
+ </div>
371
+
372
+
373
+
374
+
375
+ </div>
376
+
377
+
378
+ <div id="method-i-raw_uri" class="method-detail ">
379
+
380
+ <div class="method-heading">
381
+ <span class="method-name">raw_uri</span><span
382
+ class="method-args">(word = nil, args = {})</span>
383
+
384
+ <span class="method-click-advice">click to toggle source</span>
385
+
386
+ </div>
387
+
388
+
389
+ <div class="method-description">
390
+
391
+ <p>Create the reference <a href="WWWJDic.html#method-i-uri"><code>uri</code></a> for a <code>word</code> translation, according to specified parameters, overriding for raw display mode.</p>
392
+ <dl class="rdoc-list note-list"><dt>Usage
393
+ <dd>
394
+ <p>&lt;tt&gt;new_wwwjdic.raw_uri word</p>
395
+ </dd></dl>
396
+
397
+
398
+
399
+
400
+ <div class="method-source-code" id="raw_uri-source">
401
+ <pre> <span class="ruby-comment"># File lib/wwwjdic/application.rb</span>
402
+ <span class="line-num">76</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">raw_uri</span>(<span class="ruby-identifier">word</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-identifier">args</span> = {})
403
+ <span class="line-num">77</span> <span class="ruby-identifier">args</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">nil?</span>
404
+ <span class="line-num">78</span> <span class="ruby-identifier">args</span>[<span class="ruby-value">:display</span>] = <span class="ruby-value">:raw</span>
405
+ <span class="line-num">79</span> <span class="ruby-identifier">uri</span>(<span class="ruby-identifier">word</span>, <span class="ruby-identifier">args</span>)
406
+ <span class="line-num">80</span> <span class="ruby-keyword">end</span></pre>
407
+ </div>
408
+
409
+ </div>
410
+
411
+
412
+
413
+
414
+ </div>
415
+
416
+
417
+ <div id="method-i-reset" class="method-detail ">
418
+
419
+ <div class="method-heading">
420
+ <span class="method-name">reset</span><span
421
+ class="method-args">()</span>
422
+
423
+ <span class="method-click-advice">click to toggle source</span>
424
+
425
+ </div>
426
+
427
+
428
+ <div class="method-description">
429
+
430
+ <p>Restores the original status cleaning up the (possibly) previously saved URIs restoring the default <code>to_s</code>.</p>
431
+
432
+
433
+
434
+
435
+ <div class="method-source-code" id="reset-source">
436
+ <pre> <span class="ruby-comment"># File lib/wwwjdic/application.rb</span>
437
+ <span class="line-num">182</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">reset</span>
438
+ <span class="line-num">183</span> <span class="ruby-ivar">@defaults</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>
439
+ <span class="line-num">184</span> <span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:dict</span>] = <span class="ruby-string">&#39;1&#39;</span>
440
+ <span class="line-num">185</span> <span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:display</span>] = <span class="ruby-value">:regular</span>
441
+ <span class="line-num">186</span>
442
+ <span class="line-num">187</span> <span class="ruby-comment"># Hi Marco,</span>
443
+ <span class="line-num">188</span> <span class="ruby-comment">#</span>
444
+ <span class="line-num">189</span> <span class="ruby-comment"># Will your code have the ability to allow which wwwjdic server</span>
445
+ <span class="line-num">190</span> <span class="ruby-comment"># is used? When a URL is being published I prefer it to be the</span>
446
+ <span class="line-num">191</span> <span class="ruby-comment"># one at http://www.edrdg.org/cgi-bin/wwwjdic/wwwjdic?1C as my</span>
447
+ <span class="line-num">192</span> <span class="ruby-comment"># link with Monash is a bit tenuous, and may be turned off at</span>
448
+ <span class="line-num">193</span> <span class="ruby-comment"># short notice.</span>
449
+ <span class="line-num">194</span> <span class="ruby-comment">#</span>
450
+ <span class="line-num">195</span> <span class="ruby-comment"># Cheers</span>
451
+ <span class="line-num">196</span> <span class="ruby-comment">#</span>
452
+ <span class="line-num">197</span> <span class="ruby-comment"># Jim</span>
453
+ <span class="line-num">198</span> <span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:server</span>] = <span class="ruby-value">:edrdg</span>
454
+ <span class="line-num">199</span>
455
+ <span class="line-num">200</span> <span class="ruby-comment"># That will work fine, but the key role of &quot;k=J&quot; is to force a</span>
456
+ <span class="line-num">201</span> <span class="ruby-comment"># romaji conversion if the key is not in Japanese coding (UTF-8,</span>
457
+ <span class="line-num">202</span> <span class="ruby-comment"># EUC or Shift_JIS.) If you want to look up using &quot;sensei&quot; it has</span>
458
+ <span class="line-num">203</span> <span class="ruby-comment"># to be a J. For anything else the value of J doesn&#39;t matter much.</span>
459
+ <span class="line-num">204</span> <span class="ruby-comment"># 1MUJ齧歯 and 1MUE齧歯 will both find 齧歯. 1MUJgesshi does too,</span>
460
+ <span class="line-num">205</span> <span class="ruby-comment"># but 1MUEgesshi won&#39;t.</span>
461
+ <span class="line-num">206</span> <span class="ruby-comment">#</span>
462
+ <span class="line-num">207</span> <span class="ruby-comment"># I think you have missed a key point I made in my previous email:</span>
463
+ <span class="line-num">208</span> <span class="ruby-comment"># &quot;the key role of &quot;k=J&quot; is to force a romaji conversion if the</span>
464
+ <span class="line-num">209</span> <span class="ruby-comment"># key is not in Japanese coding (UTF-8, EUC or Shift_JIS.)&quot;</span>
465
+ <span class="line-num">210</span> <span class="ruby-comment">#</span>
466
+ <span class="line-num">211</span> <span class="ruby-comment"># So something like ...JMUJord is saying that &quot;ord&quot; is romaji,</span>
467
+ <span class="line-num">212</span> <span class="ruby-comment"># which of course will not convert.</span>
468
+ <span class="line-num">213</span> <span class="ruby-comment">#</span>
469
+ <span class="line-num">214</span> <span class="ruby-comment"># ONLY use k=J if the key is Romaji, (or if it is in Japanese</span>
470
+ <span class="line-num">215</span> <span class="ruby-comment"># coding...).</span>
471
+ <span class="line-num">216</span> <span class="ruby-comment">#</span>
472
+ <span class="line-num">217</span> <span class="ruby-comment"># HTH</span>
473
+ <span class="line-num">218</span> <span class="ruby-comment">#</span>
474
+ <span class="line-num">219</span> <span class="ruby-comment"># Jim</span>
475
+ <span class="line-num">220</span> <span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:key</span>] = <span class="ruby-value">:exact</span>
476
+ <span class="line-num">221</span>
477
+ <span class="line-num">222</span> <span class="ruby-comment"># Exactly. I&#39;d fix on &quot;t=U&quot;. There are occasions where you may</span>
478
+ <span class="line-num">223</span> <span class="ruby-comment"># want to use &quot;k=K&quot; if you want to force the kanji match to start</span>
479
+ <span class="line-num">224</span> <span class="ruby-comment"># at the beginning.</span>
480
+ <span class="line-num">225</span> <span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:search</span>] = <span class="ruby-string">&#39;U&#39;</span>
481
+ <span class="line-num">226</span> <span class="ruby-ivar">@wwwjdic</span> = <span class="ruby-constant">URIS</span>[<span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:server</span>]] <span class="ruby-operator">+</span> <span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:dict</span>] <span class="ruby-operator">+</span> <span class="ruby-constant">DISPLAY</span>[<span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:display</span>]]
482
+ <span class="line-num">227</span> <span class="ruby-keyword">end</span></pre>
483
+ </div>
484
+
485
+ </div>
486
+
487
+
488
+
489
+
490
+ </div>
491
+
492
+
493
+ <div id="method-i-server" class="method-detail ">
494
+
495
+ <div class="method-heading">
496
+ <span class="method-name">server</span><span
497
+ class="method-args">()</span>
498
+
499
+ <span class="method-click-advice">click to toggle source</span>
500
+
501
+ </div>
502
+
503
+
504
+ <div class="method-description">
505
+
506
+ <p>Return the selected <a href="WWWJDic.html#method-i-server"><code>server</code></a> URI</p>
507
+ <dl class="rdoc-list note-list"><dt>Returns
508
+ <dd>
509
+ <p>a String with the <a href="WWWJDic.html#method-i-dictionary"><code>dictionary</code></a> full name.</p>
510
+ </dd></dl>
511
+
512
+
513
+
514
+
515
+ <div class="method-source-code" id="server-source">
516
+ <pre> <span class="ruby-comment"># File lib/wwwjdic/application.rb</span>
517
+ <span class="line-num">176</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">server</span>
518
+ <span class="line-num">177</span> <span class="ruby-constant">URIS</span>[<span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:server</span>]]
519
+ <span class="line-num">178</span> <span class="ruby-keyword">end</span></pre>
520
+ </div>
521
+
522
+ </div>
523
+
524
+
525
+
526
+
527
+ </div>
528
+
529
+
530
+ <div id="method-i-server-3D" class="method-detail ">
531
+
532
+ <div class="method-heading">
533
+ <span class="method-name">server=</span><span
534
+ class="method-args">(server = :edrdg)</span>
535
+
536
+ <span class="method-click-advice">click to toggle source</span>
537
+
538
+ </div>
539
+
540
+
541
+ <div class="method-description">
542
+
543
+ <p>Store the Backdoor Entry/API <a href="WWWJDic.html#method-i-server"><code>server</code></a> name, default to EDRDG.Org (:edrdg) instead of Monash (:monash).</p>
544
+ <dl class="rdoc-list note-list"><dt>Usage
545
+ <dd>
546
+ <p>&lt;tt&gt;new_wwwjdic.server= <a href="WWWJDic.html#method-i-server"><code>server</code></a></p>
547
+ </dd><dt>Params
548
+ <dd><ul><li>
549
+ <p><code>server</code>: [Symbol] is the <a href="WWWJDic.html#method-i-server"><code>server</code></a> reference URI</p>
550
+ </li></ul>
551
+ </dd></dl>
552
+
553
+
554
+
555
+
556
+ <div class="method-source-code" id="server-3D-source">
557
+ <pre> <span class="ruby-comment"># File lib/wwwjdic/application.rb</span>
558
+ <span class="line-num">165</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">server=</span>(<span class="ruby-identifier">server</span> = <span class="ruby-value">:edrdg</span>)
559
+ <span class="line-num">166</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-constant">I18n</span>.<span class="ruby-identifier">t</span>(<span class="ruby-string">&#39;error.nil&#39;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">server</span>.<span class="ruby-identifier">nil?</span>
560
+ <span class="line-num">167</span>
561
+ <span class="line-num">168</span> <span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:server</span>] = <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value">:server</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">server</span>)
562
+ <span class="line-num">169</span>
563
+ <span class="line-num">170</span> <span class="ruby-ivar">@wwwjdic</span> = <span class="ruby-constant">URIS</span>[<span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:server</span>]] <span class="ruby-operator">+</span> <span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:dict</span>] <span class="ruby-operator">+</span> <span class="ruby-constant">DISPLAY</span>[<span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:display</span>]]
564
+ <span class="line-num">171</span> <span class="ruby-keyword">end</span></pre>
565
+ </div>
566
+
567
+ </div>
568
+
569
+
570
+
571
+
572
+ </div>
573
+
574
+
575
+ <div id="method-i-to_s" class="method-detail ">
576
+
577
+ <div class="method-heading">
578
+ <span class="method-name">to_s</span><span
579
+ class="method-args">()</span>
580
+
581
+ <span class="method-click-advice">click to toggle source</span>
582
+
583
+ </div>
584
+
585
+
586
+ <div class="method-description">
587
+
588
+
589
+
590
+
591
+
592
+
593
+ <div class="method-source-code" id="to_s-source">
594
+ <pre> <span class="ruby-comment"># File lib/wwwjdic/application.rb</span>
595
+ <span class="line-num">229</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">to_s</span>
596
+ <span class="line-num">230</span> <span class="ruby-ivar">@wwwjdic</span>.<span class="ruby-identifier">to_s</span>
597
+ <span class="line-num">231</span> <span class="ruby-keyword">end</span></pre>
598
+ </div>
599
+
600
+ </div>
601
+
602
+
603
+
604
+
605
+ </div>
606
+
607
+
608
+ <div id="method-i-translate" class="method-detail ">
609
+
610
+ <div class="method-heading">
611
+ <span class="method-name">translate</span><span
612
+ class="method-args">(word = nil, args = {}, filename = nil)</span>
613
+
614
+ <span class="method-click-advice">click to toggle source</span>
615
+
616
+ </div>
617
+
618
+
619
+ <div class="method-description">
620
+
621
+ <p>Save a file, with specified <code>filename</code>, that contains the current wwwjdic configuration. Uses the internal state to retrieve data from the URI. Defaults to &#39;wwwjdic&#39; with no specific extension.</p>
622
+ <dl class="rdoc-list note-list"><dt>Usage
623
+ <dd><ul><li>
624
+ <p><code>a_string = new_wwwjdic.translate filename</code></p>
625
+ </li></ul>
626
+ </dd><dt>Params
627
+ <dd><ul><li>
628
+ <p><code>filename</code>: [String] is the filename to be saved.</p>
629
+ </li></ul>
630
+ </dd></dl>
631
+
632
+
633
+
634
+
635
+ <div class="method-source-code" id="translate-source">
636
+ <pre> <span class="ruby-comment"># File lib/wwwjdic/application.rb</span>
637
+ <span class="line-num">103</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">translate</span>(<span class="ruby-identifier">word</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-identifier">args</span> = {}, <span class="ruby-identifier">filename</span> = <span class="ruby-keyword">nil</span>)
638
+ <span class="line-num">104</span> <span class="ruby-identifier">a_uri</span> = <span class="ruby-identifier">raw_uri</span>(<span class="ruby-identifier">word</span>, <span class="ruby-identifier">args</span>)
639
+ <span class="line-num">105</span> <span class="ruby-constant">Utils</span><span class="ruby-operator">::</span><span class="ruby-constant">Downloader</span><span class="ruby-operator">::</span><span class="ruby-constant">Downloader</span>.<span class="ruby-identifier">download_file</span> <span class="ruby-identifier">a_uri</span>, <span class="ruby-identifier">filename</span> <span class="ruby-comment"># thanks Jon!</span>
640
+ <span class="line-num">106</span> <span class="ruby-keyword">end</span></pre>
641
+ </div>
642
+
643
+ </div>
644
+
645
+
646
+
647
+
648
+ </div>
649
+
650
+
651
+ <div id="method-i-uri" class="method-detail ">
652
+
653
+ <div class="method-heading">
654
+ <span class="method-name">uri</span><span
655
+ class="method-args">(word = nil, args = {})</span>
656
+
657
+ <span class="method-click-advice">click to toggle source</span>
658
+
659
+ </div>
660
+
661
+
662
+ <div class="method-description">
663
+
664
+ <p>Create the reference <a href="WWWJDic.html#method-i-uri"><code>uri</code></a> for a <code>word</code> translation, according to specified parameters.</p>
665
+ <dl class="rdoc-list note-list"><dt>Usage
666
+ <dd>
667
+ <p>&lt;tt&gt;new_wwwjdic.uri word</p>
668
+ </dd></dl>
669
+
670
+
671
+
672
+
673
+ <div class="method-source-code" id="uri-source">
674
+ <pre> <span class="ruby-comment"># File lib/wwwjdic/application.rb</span>
675
+ <span class="line-num">53</span> <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">uri</span>(<span class="ruby-identifier">word</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-identifier">args</span> = {})
676
+ <span class="line-num">54</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-constant">I18n</span>.<span class="ruby-identifier">t</span>(<span class="ruby-string">&#39;error.nil&#39;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">word</span>.<span class="ruby-identifier">nil?</span>
677
+ <span class="line-num">55</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-constant">I18n</span>.<span class="ruby-identifier">t</span>(<span class="ruby-string">&#39;error.param&#39;</span>, <span class="ruby-value">value:</span> <span class="ruby-identifier">word</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">word</span>.<span class="ruby-identifier">empty?</span>
678
+ <span class="line-num">56</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-constant">I18n</span>.<span class="ruby-identifier">t</span>(<span class="ruby-string">&#39;error.param&#39;</span>, <span class="ruby-value">value:</span> <span class="ruby-identifier">args</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">to_set</span>.<span class="ruby-identifier">proper_subset?</span> <span class="ruby-constant">Set</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">ALLOWED_PARAMS</span>)
679
+ <span class="line-num">57</span>
680
+ <span class="line-num">58</span> <span class="ruby-identifier">params</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>
681
+ <span class="line-num">59</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:search</span>] = <span class="ruby-identifier">word</span>
682
+ <span class="line-num">60</span> <span class="ruby-ivar">@defaults</span>[<span class="ruby-value">:search</span>] = <span class="ruby-identifier">word</span>
683
+ <span class="line-num">61</span>
684
+ <span class="line-num">62</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">nil?</span>
685
+ <span class="line-num">63</span> <span class="ruby-constant">ALL_PARAMS</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">param_name</span><span class="ruby-operator">|</span>
686
+ <span class="line-num">64</span> <span class="ruby-identifier">params</span>[<span class="ruby-identifier">param_name</span>] = <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">param_name</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">args</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">param_name</span>, <span class="ruby-ivar">@defaults</span>[<span class="ruby-identifier">param_name</span>]))
687
+ <span class="line-num">65</span> <span class="ruby-keyword">end</span>
688
+ <span class="line-num">66</span> <span class="ruby-keyword">end</span>
689
+ <span class="line-num">67</span>
690
+ <span class="line-num">68</span> <span class="ruby-identifier">a_wwwjdic</span> = <span class="ruby-constant">URIS</span>[<span class="ruby-identifier">params</span>[<span class="ruby-value">:server</span>]] <span class="ruby-operator">+</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:dict</span>] <span class="ruby-operator">+</span> <span class="ruby-constant">DISPLAY</span>[<span class="ruby-identifier">params</span>[<span class="ruby-value">:display</span>]] <span class="ruby-operator">+</span> <span class="ruby-identifier">params</span>[<span class="ruby-value">:search</span>] <span class="ruby-operator">+</span> <span class="ruby-constant">KEYS</span>[<span class="ruby-identifier">params</span>[<span class="ruby-value">:key</span>]]
691
+ <span class="line-num">69</span> <span class="ruby-identifier">a_wwwjdic</span> <span class="ruby-operator">+</span> <span class="ruby-constant">CGI</span><span class="ruby-operator">::</span><span class="ruby-identifier">escape</span>(<span class="ruby-identifier">word</span>).<span class="ruby-identifier">to_s</span>
692
+ <span class="line-num">70</span> <span class="ruby-keyword">end</span></pre>
693
+ </div>
694
+
695
+ </div>
696
+
697
+
698
+
699
+
700
+ </div>
701
+
702
+
703
+ </section>
704
+
705
+ </section>
706
+
707
+ </main>
708
+
709
+
710
+ <footer id="validator-badges" role="contentinfo">
711
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
712
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.1.
713
+ <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
714
+ </footer>
715
+