chess 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/README.md +44 -0
  4. data/Rakefile +6 -7
  5. data/chess.gemspec +1 -1
  6. data/ext/bitboard.c +24 -0
  7. data/ext/board.c +78 -24
  8. data/ext/board.h +4 -2
  9. data/ext/chess.c +216 -196
  10. data/ext/chess.h +1 -0
  11. data/ext/common.c +10 -0
  12. data/ext/game.c +33 -16
  13. data/ext/special.c +14 -11
  14. data/ext/special.h +1 -2
  15. data/lib/chess/exceptions.rb +7 -10
  16. data/lib/chess/game.rb +66 -50
  17. data/lib/chess/gnuchess.rb +19 -25
  18. data/lib/chess/pgn.rb +49 -9
  19. data/lib/chess/utf8_notation.rb +11 -9
  20. data/lib/chess/version.rb +1 -1
  21. data/test/pgn_collection/illegal/0001.pgn +18 -0
  22. data/test/pgn_collection/illegal/0002.pgn +17 -0
  23. data/test/pgn_collection/illegal/0003.pgn +13 -0
  24. data/test/pgn_collection/illegal/0004.pgn +15 -0
  25. data/test/pgn_collection/illegal/0005.pgn +16 -0
  26. data/test/pgn_collection/invalid/0001.pgn +20 -0
  27. data/test/pgn_collection/invalid/0002.pgn +16 -0
  28. data/test/pgn_collection/invalid/0003.pgn +13 -0
  29. data/test/pgn_collection/invalid/0004.pgn +15 -0
  30. data/test/pgn_collection/valid/0001.pgn +6 -7
  31. data/test/pgn_collection/valid/0002.pgn +8 -9
  32. data/test/pgn_collection/valid/0005.pgn +7 -8
  33. data/test/pgn_collection/valid/0009.pgn +14 -15
  34. data/test/pgn_collection/valid/0010.pgn +6 -7
  35. data/test/pgn_collection/valid/0011.pgn +5 -6
  36. data/test/pgn_collection/valid/0012.pgn +0 -1
  37. data/test/pgn_collection/valid/0013.pgn +5 -6
  38. data/test/pgn_collection/valid/0014.pgn +6 -7
  39. data/test/pgn_collection/valid/0020.pgn +6 -7
  40. data/test/pgn_collection/valid/0021.pgn +15 -16
  41. data/test/pgn_collection/valid/0971.pgn +22 -14
  42. data/test/test_big_pgn_collection.rb +12 -5
  43. data/test/test_helper.rb +1 -1
  44. data/test/test_illegal_moves.rb +14 -0
  45. data/test/test_insufficient_material.rb +13 -1
  46. data/test/test_particular_situations.rb +14 -0
  47. data/test/test_pgn.rb +24 -0
  48. data/test/test_pgn_collection.rb +1 -4
  49. metadata +30 -63
  50. data/README.rdoc +0 -44
  51. data/doc/Chess.html +0 -112
  52. data/doc/Chess/BadNotationError.html +0 -107
  53. data/doc/Chess/Board.html +0 -700
  54. data/doc/Chess/CGame.html +0 -1004
  55. data/doc/Chess/Game.html +0 -684
  56. data/doc/Chess/Gnuchess.html +0 -215
  57. data/doc/Chess/IllegalMoveError.html +0 -105
  58. data/doc/Chess/InvalidFenFormatError.html +0 -105
  59. data/doc/Chess/InvalidPgnFormatError.html +0 -105
  60. data/doc/Chess/Pgn.html +0 -309
  61. data/doc/Chess/UTF8Notation.html +0 -174
  62. data/doc/README_rdoc.html +0 -143
  63. data/doc/created.rid +0 -15
  64. data/doc/css/fonts.css +0 -167
  65. data/doc/css/rdoc.css +0 -590
  66. data/doc/fonts/Lato-Light.ttf +0 -0
  67. data/doc/fonts/Lato-LightItalic.ttf +0 -0
  68. data/doc/fonts/Lato-Regular.ttf +0 -0
  69. data/doc/fonts/Lato-RegularItalic.ttf +0 -0
  70. data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
  71. data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
  72. data/doc/images/add.png +0 -0
  73. data/doc/images/arrow_up.png +0 -0
  74. data/doc/images/brick.png +0 -0
  75. data/doc/images/brick_link.png +0 -0
  76. data/doc/images/bug.png +0 -0
  77. data/doc/images/bullet_black.png +0 -0
  78. data/doc/images/bullet_toggle_minus.png +0 -0
  79. data/doc/images/bullet_toggle_plus.png +0 -0
  80. data/doc/images/date.png +0 -0
  81. data/doc/images/delete.png +0 -0
  82. data/doc/images/find.png +0 -0
  83. data/doc/images/loadingAnimation.gif +0 -0
  84. data/doc/images/macFFBgHack.png +0 -0
  85. data/doc/images/package.png +0 -0
  86. data/doc/images/page_green.png +0 -0
  87. data/doc/images/page_white_text.png +0 -0
  88. data/doc/images/page_white_width.png +0 -0
  89. data/doc/images/plugin.png +0 -0
  90. data/doc/images/ruby.png +0 -0
  91. data/doc/images/tag_blue.png +0 -0
  92. data/doc/images/tag_green.png +0 -0
  93. data/doc/images/transparent.png +0 -0
  94. data/doc/images/wrench.png +0 -0
  95. data/doc/images/wrench_orange.png +0 -0
  96. data/doc/images/zoom.png +0 -0
  97. data/doc/index.html +0 -160
  98. data/doc/js/darkfish.js +0 -161
  99. data/doc/js/jquery.js +0 -4
  100. data/doc/js/navigation.js +0 -142
  101. data/doc/js/navigation.js.gz +0 -0
  102. data/doc/js/search.js +0 -109
  103. data/doc/js/search_index.js +0 -1
  104. data/doc/js/search_index.js.gz +0 -0
  105. data/doc/js/searcher.js +0 -229
  106. data/doc/js/searcher.js.gz +0 -0
  107. data/doc/table_of_contents.html +0 -331
data/doc/Chess/Pgn.html DELETED
@@ -1,309 +0,0 @@
1
- <!DOCTYPE html>
2
-
3
- <html>
4
- <head>
5
- <meta charset="UTF-8">
6
-
7
- <title>class Chess::Pgn - Chess</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
- <body id="top" role="document" class="class">
23
- <nav role="navigation">
24
- <div id="project-navigation">
25
- <div id="home-section" role="region" title="Quick navigation" class="nav-section">
26
- <h2>
27
- <a href="../index.html" rel="home">Home</a>
28
- </h2>
29
-
30
- <div id="table-of-contents-navigation">
31
- <a href="../table_of_contents.html#pages">Pages</a>
32
- <a href="../table_of_contents.html#classes">Classes</a>
33
- <a href="../table_of_contents.html#methods">Methods</a>
34
- </div>
35
- </div>
36
-
37
- <div id="search-section" role="search" class="project-section initially-hidden">
38
- <form action="#" method="get" accept-charset="utf-8">
39
- <div id="search-field-wrapper">
40
- <input id="search-field" role="combobox" aria-label="Search"
41
- aria-autocomplete="list" aria-controls="search-results"
42
- type="text" name="search" placeholder="Search" spellcheck="false"
43
- title="Type to search, Up and Down to navigate, Enter to load">
44
- </div>
45
-
46
- <ul id="search-results" aria-label="Search Results"
47
- aria-busy="false" aria-expanded="false"
48
- aria-atomic="false" class="initially-hidden"></ul>
49
- </form>
50
- </div>
51
-
52
- </div>
53
-
54
-
55
-
56
- <div id="class-metadata">
57
-
58
- <div id="parent-class-section" class="nav-section">
59
- <h3>Parent</h3>
60
-
61
-
62
- <p class="link">Object
63
-
64
- </div>
65
-
66
-
67
-
68
- <!-- Method Quickref -->
69
- <div id="method-list-section" class="nav-section">
70
- <h3>Methods</h3>
71
-
72
- <ul class="link-list" role="directory">
73
-
74
- <li ><a href="#method-c-new">::new</a>
75
-
76
- <li ><a href="#method-i-load">#load</a>
77
-
78
- <li ><a href="#method-i-to_s">#to_s</a>
79
-
80
- <li ><a href="#method-i-write">#write</a>
81
-
82
- </ul>
83
- </div>
84
-
85
- </div>
86
- </nav>
87
-
88
- <main role="main" aria-labelledby="class-Chess::Pgn">
89
- <h1 id="class-Chess::Pgn" class="class">
90
- class Chess::Pgn
91
- </h1>
92
-
93
- <section class="description">
94
-
95
- <p>Rappresents a game in PGN (Portable <a href="Game.html">Game</a> Notation)
96
- format.</p>
97
-
98
- </section>
99
-
100
-
101
-
102
-
103
- <section id="5Buntitled-5D" class="documentation-section">
104
-
105
-
106
-
107
-
108
-
109
- <section class="constants-list">
110
- <header>
111
- <h3>Constants</h3>
112
- </header>
113
- <dl>
114
-
115
- <dt id="TAGS">TAGS
116
-
117
- <dd><p>Array that include PGN standard tags.</p>
118
-
119
-
120
- </dl>
121
- </section>
122
-
123
-
124
-
125
-
126
-
127
- <section id="public-class-5Buntitled-5D-method-details" class="method-section">
128
- <header>
129
- <h3>Public Class Methods</h3>
130
- </header>
131
-
132
-
133
- <div id="method-c-new" class="method-detail ">
134
-
135
- <div class="method-heading">
136
- <span class="method-name">new</span><span
137
- class="method-args">(filename = nil)</span>
138
-
139
- <span class="method-click-advice">click to toggle source</span>
140
-
141
- </div>
142
-
143
-
144
- <div class="method-description">
145
-
146
- <p>Creates a new PGN. If param <code>filename</code>, load it from file.</p>
147
-
148
-
149
-
150
-
151
- <div class="method-source-code" id="new-source">
152
- <pre><span class="ruby-comment"># File lib/chess/pgn.rb, line 12</span>
153
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">filename</span> = <span class="ruby-keyword">nil</span>)
154
- <span class="ruby-keyword">self</span>.<span class="ruby-identifier">load</span>(<span class="ruby-identifier">filename</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">filename</span>
155
- <span class="ruby-ivar">@date</span> = <span class="ruby-string">&#39;??&#39;</span>
156
- <span class="ruby-ivar">@round</span> = <span class="ruby-string">&#39;1&#39;</span>
157
- <span class="ruby-keyword">end</span></pre>
158
- </div>
159
-
160
- </div>
161
-
162
-
163
-
164
-
165
- </div>
166
-
167
-
168
- </section>
169
-
170
- <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
171
- <header>
172
- <h3>Public Instance Methods</h3>
173
- </header>
174
-
175
-
176
- <div id="method-i-load" class="method-detail ">
177
-
178
- <div class="method-heading">
179
- <span class="method-name">load</span><span
180
- class="method-args">(filename)</span>
181
-
182
- <span class="method-click-advice">click to toggle source</span>
183
-
184
- </div>
185
-
186
-
187
- <div class="method-description">
188
-
189
- <p>Load a PGN from file.</p>
190
-
191
-
192
-
193
-
194
- <div class="method-source-code" id="load-source">
195
- <pre><span class="ruby-comment"># File lib/chess/pgn.rb, line 19</span>
196
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">load</span>(<span class="ruby-identifier">filename</span>)
197
- <span class="ruby-identifier">data</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">filename</span>, <span class="ruby-string">&#39;r&#39;</span>).<span class="ruby-identifier">read</span>
198
- <span class="ruby-identifier">data</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp">/\{.*?\}/</span>, <span class="ruby-string">&#39;&#39;</span>)
199
- <span class="ruby-constant">TAGS</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span>
200
- <span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-node">&quot;@#{t}&quot;</span>, <span class="ruby-identifier">data</span>.<span class="ruby-identifier">match</span>(<span class="ruby-node">/^\[#{t.capitalize} &quot;.*&quot;\]\s?$/</span>).<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">strip</span>[<span class="ruby-identifier">t</span>.<span class="ruby-identifier">size</span><span class="ruby-operator">+</span><span class="ruby-value">3</span><span class="ruby-operator">..</span><span class="ruby-value">-3</span>])
201
- <span class="ruby-keyword">end</span>
202
- <span class="ruby-ivar">@result</span> = <span class="ruby-string">&#39;1/2-1/2&#39;</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@result</span> <span class="ruby-operator">==</span> <span class="ruby-string">&#39;1/2&#39;</span>
203
- <span class="ruby-identifier">game_index</span> = <span class="ruby-identifier">data</span>.<span class="ruby-identifier">index</span>(<span class="ruby-regexp">/^1\./</span>)
204
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">Chess</span><span class="ruby-operator">::</span><span class="ruby-constant">InvalidPgnFormatError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">filename</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">game_index</span>.<span class="ruby-identifier">nil?</span>
205
- <span class="ruby-identifier">game</span> = <span class="ruby-identifier">data</span>[<span class="ruby-identifier">game_index</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>].<span class="ruby-identifier">strip</span>
206
- <span class="ruby-ivar">@moves</span> = <span class="ruby-identifier">game</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-string">&quot;\n&quot;</span>, <span class="ruby-string">&#39; &#39;</span>).<span class="ruby-identifier">split</span>(<span class="ruby-regexp">/\d+\./</span>).<span class="ruby-identifier">collect</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">strip</span>}[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>].<span class="ruby-identifier">collect</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39; &#39;</span>)}.<span class="ruby-identifier">flatten</span>
207
- <span class="ruby-ivar">@moves</span>.<span class="ruby-identifier">delete_at</span>(<span class="ruby-ivar">@moves</span>.<span class="ruby-identifier">size</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>) <span class="ruby-keyword">if</span> <span class="ruby-ivar">@moves</span>.<span class="ruby-identifier">last</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp">/(0-1)|(1-0)|(1\/2)|(1\/2-1\/2)|(\*)/</span>
208
- <span class="ruby-keyword">return</span> <span class="ruby-keyword">self</span>
209
- <span class="ruby-keyword">end</span></pre>
210
- </div>
211
-
212
- </div>
213
-
214
-
215
-
216
-
217
- </div>
218
-
219
-
220
- <div id="method-i-to_s" class="method-detail ">
221
-
222
- <div class="method-heading">
223
- <span class="method-name">to_s</span><span
224
- class="method-args">()</span>
225
-
226
- <span class="method-click-advice">click to toggle source</span>
227
-
228
- </div>
229
-
230
-
231
- <div class="method-description">
232
-
233
- <p>PGN to string.</p>
234
-
235
-
236
-
237
-
238
- <div class="method-source-code" id="to_s-source">
239
- <pre><span class="ruby-comment"># File lib/chess/pgn.rb, line 35</span>
240
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">to_s</span>
241
- <span class="ruby-identifier">s</span> = <span class="ruby-string">&#39;&#39;</span>
242
- <span class="ruby-constant">TAGS</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span>
243
- <span class="ruby-identifier">tag</span> = <span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-node">&quot;@#{t}&quot;</span>)
244
- <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;[#{t.capitalize} \&quot;#{tag}\&quot;]\n&quot;</span>
245
- <span class="ruby-keyword">end</span>
246
- <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&quot;\n&quot;</span>
247
- <span class="ruby-identifier">m</span> = <span class="ruby-string">&#39;&#39;</span>
248
- <span class="ruby-ivar">@moves</span>.<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">move</span>, <span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
249
- <span class="ruby-identifier">m</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{i/2+1}. &quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">%</span> <span class="ruby-value">2</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
250
- <span class="ruby-identifier">m</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{move} &quot;</span>
251
- <span class="ruby-keyword">end</span>
252
- <span class="ruby-identifier">m</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@result</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@result</span>.<span class="ruby-identifier">nil?</span>
253
- <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/(.{1,78})(?: +|$)\n?|(.{78})/</span>, <span class="ruby-string">&quot;\\1\\2\n&quot;</span>)
254
- <span class="ruby-keyword">end</span></pre>
255
- </div>
256
-
257
- </div>
258
-
259
-
260
-
261
-
262
- </div>
263
-
264
-
265
- <div id="method-i-write" class="method-detail ">
266
-
267
- <div class="method-heading">
268
- <span class="method-name">write</span><span
269
- class="method-args">(filename)</span>
270
-
271
- <span class="method-click-advice">click to toggle source</span>
272
-
273
- </div>
274
-
275
-
276
- <div class="method-description">
277
-
278
- <p>Write PGN to file.</p>
279
-
280
-
281
-
282
-
283
- <div class="method-source-code" id="write-source">
284
- <pre><span class="ruby-comment"># File lib/chess/pgn.rb, line 52</span>
285
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">write</span>(<span class="ruby-identifier">filename</span>)
286
- <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-identifier">write</span>(<span class="ruby-keyword">self</span>.<span class="ruby-identifier">to_s</span>) }
287
- <span class="ruby-keyword">end</span></pre>
288
- </div>
289
-
290
- </div>
291
-
292
-
293
-
294
-
295
- </div>
296
-
297
-
298
- </section>
299
-
300
- </section>
301
- </main>
302
-
303
-
304
- <footer id="validator-badges" role="contentinfo">
305
- <p><a href="http://validator.w3.org/check/referer">Validate</a>
306
- <p>Generated by <a href="https://rdoc.github.io/rdoc">RDoc</a> 5.1.0.
307
- <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
308
- </footer>
309
-
@@ -1,174 +0,0 @@
1
- <!DOCTYPE html>
2
-
3
- <html>
4
- <head>
5
- <meta charset="UTF-8">
6
-
7
- <title>module Chess::UTF8Notation - Chess</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
- <body id="top" role="document" class="module">
23
- <nav role="navigation">
24
- <div id="project-navigation">
25
- <div id="home-section" role="region" title="Quick navigation" class="nav-section">
26
- <h2>
27
- <a href="../index.html" rel="home">Home</a>
28
- </h2>
29
-
30
- <div id="table-of-contents-navigation">
31
- <a href="../table_of_contents.html#pages">Pages</a>
32
- <a href="../table_of_contents.html#classes">Classes</a>
33
- <a href="../table_of_contents.html#methods">Methods</a>
34
- </div>
35
- </div>
36
-
37
- <div id="search-section" role="search" class="project-section initially-hidden">
38
- <form action="#" method="get" accept-charset="utf-8">
39
- <div id="search-field-wrapper">
40
- <input id="search-field" role="combobox" aria-label="Search"
41
- aria-autocomplete="list" aria-controls="search-results"
42
- type="text" name="search" placeholder="Search" spellcheck="false"
43
- title="Type to search, Up and Down to navigate, Enter to load">
44
- </div>
45
-
46
- <ul id="search-results" aria-label="Search Results"
47
- aria-busy="false" aria-expanded="false"
48
- aria-atomic="false" class="initially-hidden"></ul>
49
- </form>
50
- </div>
51
-
52
- </div>
53
-
54
-
55
-
56
- <div id="class-metadata">
57
-
58
-
59
-
60
-
61
- <!-- Method Quickref -->
62
- <div id="method-list-section" class="nav-section">
63
- <h3>Methods</h3>
64
-
65
- <ul class="link-list" role="directory">
66
-
67
- <li ><a href="#method-i-to_utf8">#to_utf8</a>
68
-
69
- </ul>
70
- </div>
71
-
72
- </div>
73
- </nav>
74
-
75
- <main role="main" aria-labelledby="module-Chess::UTF8Notation">
76
- <h1 id="module-Chess::UTF8Notation" class="module">
77
- module Chess::UTF8Notation
78
- </h1>
79
-
80
- <section class="description">
81
-
82
- <p>With this module is possible call the method <code>to_utf8</code> on a
83
- string. This method convert the chess piece identifier character into UTF8
84
- chess character, for example:</p>
85
-
86
- <pre>:001 &gt; require &#39;chess/utf8_notation&#39;
87
- =&gt; true
88
- :002 &gt; &#39;Qf7#&#39;.to_utf8
89
- =&gt; &#39;♕f7#&#39;</pre>
90
-
91
- <p>To use this utility explicit require is needed: <code>require
92
- &#39;chess/utf8_notation&#39;</code></p>
93
-
94
- </section>
95
-
96
-
97
-
98
-
99
- <section id="5Buntitled-5D" class="documentation-section">
100
-
101
-
102
-
103
-
104
-
105
- <section class="constants-list">
106
- <header>
107
- <h3>Constants</h3>
108
- </header>
109
- <dl>
110
-
111
- <dt id="UTF8_MAP">UTF8_MAP
112
-
113
- <dd><p>Map a piece identifier character with the corresponding UTF8 chess
114
- character</p>
115
-
116
-
117
- </dl>
118
- </section>
119
-
120
-
121
-
122
-
123
-
124
- <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
125
- <header>
126
- <h3>Public Instance Methods</h3>
127
- </header>
128
-
129
-
130
- <div id="method-i-to_utf8" class="method-detail ">
131
-
132
- <div class="method-heading">
133
- <span class="method-name">to_utf8</span><span
134
- class="method-args">()</span>
135
-
136
- <span class="method-click-advice">click to toggle source</span>
137
-
138
- </div>
139
-
140
-
141
- <div class="method-description">
142
-
143
- <p>Replace the piece identifier characters with UTF8 chess characters</p>
144
-
145
-
146
-
147
-
148
- <div class="method-source-code" id="to_utf8-source">
149
- <pre><span class="ruby-comment"># File lib/chess/utf8_notation.rb, line 33</span>
150
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">to_utf8</span>
151
- <span class="ruby-keyword">self</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/[PRNBQKprnbqk]/</span>, <span class="ruby-constant">UTF8_MAP</span>)
152
- <span class="ruby-keyword">end</span></pre>
153
- </div>
154
-
155
- </div>
156
-
157
-
158
-
159
-
160
- </div>
161
-
162
-
163
- </section>
164
-
165
- </section>
166
- </main>
167
-
168
-
169
- <footer id="validator-badges" role="contentinfo">
170
- <p><a href="http://validator.w3.org/check/referer">Validate</a>
171
- <p>Generated by <a href="https://rdoc.github.io/rdoc">RDoc</a> 5.1.0.
172
- <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
173
- </footer>
174
-