ray 0.0.1 → 0.1.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (188) hide show
  1. data/.gemtest +0 -0
  2. data/.yardopts +4 -0
  3. data/README.md +17 -21
  4. data/Rakefile +18 -139
  5. data/VERSION +1 -1
  6. data/ext/audio.cpp +723 -0
  7. data/ext/{color.c → color.cpp} +25 -13
  8. data/ext/drawable.cpp +91 -0
  9. data/ext/event.cpp +460 -0
  10. data/ext/extconf.rb +5 -104
  11. data/ext/font.cpp +190 -0
  12. data/ext/image.cpp +733 -0
  13. data/ext/input.cpp +74 -0
  14. data/ext/ray.cpp +168 -0
  15. data/ext/ray.hpp +356 -0
  16. data/ext/{rect.c → rect.cpp} +51 -37
  17. data/ext/shader.cpp +169 -0
  18. data/ext/shape.cpp +409 -0
  19. data/ext/sprite.cpp +306 -0
  20. data/ext/text.cpp +181 -0
  21. data/ext/vector.cpp +215 -0
  22. data/guide.md +619 -0
  23. data/lib/ray/audio.rb +0 -41
  24. data/lib/ray/color.rb +32 -10
  25. data/lib/ray/drawable.rb +16 -0
  26. data/lib/ray/dsl/event_listener.rb +25 -2
  27. data/lib/ray/dsl/event_runner.rb +33 -5
  28. data/lib/ray/dsl/event_translator.rb +66 -30
  29. data/lib/ray/dsl/handler.rb +3 -2
  30. data/lib/ray/dsl/matcher.rb +58 -14
  31. data/lib/ray/font.rb +38 -96
  32. data/lib/ray/font_set.rb +8 -8
  33. data/lib/ray/game.rb +87 -66
  34. data/lib/ray/helper.rb +105 -10
  35. data/lib/ray/image.rb +150 -24
  36. data/lib/ray/image_set.rb +3 -1
  37. data/lib/ray/input.rb +10 -0
  38. data/lib/ray/music_set.rb +5 -3
  39. data/lib/ray/ray.rb +21 -9
  40. data/lib/ray/rect.rb +48 -7
  41. data/lib/ray/rmagick.rb +41 -0
  42. data/lib/ray/scene.rb +99 -43
  43. data/lib/ray/scene_list.rb +67 -0
  44. data/lib/ray/shape.rb +132 -0
  45. data/lib/ray/sound_set.rb +4 -2
  46. data/lib/ray/sprite.rb +49 -111
  47. data/lib/ray/text.rb +101 -0
  48. data/lib/ray/text_helper.rb +37 -0
  49. data/lib/ray/turtle.rb +215 -0
  50. data/lib/ray/vector.rb +226 -0
  51. data/samples/audio/spacial.rb +44 -0
  52. data/samples/hello_world/hello.rb +9 -13
  53. data/samples/hello_world/hello_dsl.rb +8 -12
  54. data/samples/hello_world/text.rb +15 -0
  55. data/samples/opengl/binding.rb +38 -0
  56. data/samples/opengl/image.rb +32 -0
  57. data/samples/opengl/opengl.rb +34 -0
  58. data/samples/opengl/shader.rb +42 -0
  59. data/samples/pong/pong.rb +14 -10
  60. data/samples/run_scene.rb +53 -0
  61. data/samples/shaders/scene.rb +40 -0
  62. data/samples/shaders/shaders.rb +42 -0
  63. data/samples/shaders/shape.rb +34 -0
  64. data/samples/sokoban/sokoban.rb +18 -18
  65. data/samples/test/actual_scene.rb +41 -0
  66. data/samples/test/scene_riot.rb +39 -0
  67. data/samples/test/scene_spec.rb +32 -0
  68. data/samples/test/scene_test_unit.rb +25 -0
  69. data/samples/turtle/byzantium.rb +45 -0
  70. data/samples/turtle/hilbert.rb +48 -0
  71. data/samples/turtle/koch.rb +55 -0
  72. data/samples/turtle/mandala.rb +61 -0
  73. data/samples/turtle/tree.rb +57 -0
  74. data/test/audio_test.rb +69 -0
  75. data/test/color_test.rb +77 -0
  76. data/test/drawable_test.rb +19 -0
  77. data/test/dsl_test.rb +93 -0
  78. data/test/font_test.rb +57 -0
  79. data/test/helpers.rb +94 -0
  80. data/test/image_test.rb +82 -0
  81. data/test/ray_test.rb +25 -0
  82. data/test/rect_test.rb +121 -0
  83. data/{spec → test}/res/VeraMono.ttf +0 -0
  84. data/{spec → test}/res/aqua.bmp +0 -0
  85. data/{spec → test}/res/aqua.png +0 -0
  86. data/{spec → test}/res/aqua2.bmp +0 -0
  87. data/{spec → test}/res/not_a_jpeg.jpeg +0 -0
  88. data/{spec → test}/res/pop.wav +0 -0
  89. data/test/resource_set_test.rb +99 -0
  90. data/test/run_all.rb +7 -0
  91. data/test/shape_test.rb +101 -0
  92. data/test/sprite_test.rb +89 -0
  93. data/test/text_test.rb +78 -0
  94. data/test/turtle_test.rb +176 -0
  95. data/test/vector_test.rb +111 -0
  96. data/yard_ext.rb +0 -28
  97. metadata +95 -139
  98. data/.gitignore +0 -23
  99. data/.gitmodules +0 -3
  100. data/.rspec +0 -3
  101. data/ext/audio.c +0 -473
  102. data/ext/event.c +0 -557
  103. data/ext/font.c +0 -287
  104. data/ext/image.c +0 -933
  105. data/ext/joystick.c +0 -145
  106. data/ext/ray.c +0 -489
  107. data/ext/ray.h +0 -245
  108. data/ext/ray_osx.m +0 -161
  109. data/lib/ray/joystick.rb +0 -30
  110. data/psp/SDL_psp_main.c +0 -84
  111. data/psp/bigdecimal/README +0 -60
  112. data/psp/bigdecimal/bigdecimal.c +0 -4697
  113. data/psp/bigdecimal/bigdecimal.h +0 -216
  114. data/psp/bigdecimal/lib/bigdecimal/jacobian.rb +0 -85
  115. data/psp/bigdecimal/lib/bigdecimal/ludcmp.rb +0 -84
  116. data/psp/bigdecimal/lib/bigdecimal/math.rb +0 -235
  117. data/psp/bigdecimal/lib/bigdecimal/newton.rb +0 -77
  118. data/psp/bigdecimal/lib/bigdecimal/util.rb +0 -65
  119. data/psp/digest/bubblebabble/bubblebabble.c +0 -142
  120. data/psp/digest/defs.h +0 -20
  121. data/psp/digest/digest.c +0 -643
  122. data/psp/digest/digest.h +0 -32
  123. data/psp/digest/lib/digest.rb +0 -50
  124. data/psp/digest/lib/md5.rb +0 -27
  125. data/psp/digest/lib/sha1.rb +0 -27
  126. data/psp/digest/md5/md5.c +0 -420
  127. data/psp/digest/md5/md5.h +0 -80
  128. data/psp/digest/md5/md5init.c +0 -40
  129. data/psp/digest/rmd160/rmd160.c +0 -457
  130. data/psp/digest/rmd160/rmd160.h +0 -56
  131. data/psp/digest/rmd160/rmd160init.c +0 -40
  132. data/psp/digest/sha1/sha1.c +0 -269
  133. data/psp/digest/sha1/sha1.h +0 -39
  134. data/psp/digest/sha1/sha1init.c +0 -40
  135. data/psp/digest/sha2/lib/sha2.rb +0 -73
  136. data/psp/digest/sha2/sha2.c +0 -919
  137. data/psp/digest/sha2/sha2.h +0 -109
  138. data/psp/digest/sha2/sha2init.c +0 -52
  139. data/psp/enumerator/enumerator.c +0 -298
  140. data/psp/etc/etc.c +0 -559
  141. data/psp/ext.c +0 -289
  142. data/psp/fcntl/fcntl.c +0 -187
  143. data/psp/lib/rbconfig.rb +0 -178
  144. data/psp/nkf/lib/kconv.rb +0 -367
  145. data/psp/nkf/nkf-utf8/config.h +0 -88
  146. data/psp/nkf/nkf-utf8/nkf.c +0 -6040
  147. data/psp/nkf/nkf-utf8/utf8tbl.c +0 -8500
  148. data/psp/nkf/nkf-utf8/utf8tbl.h +0 -34
  149. data/psp/nkf/nkf.c +0 -654
  150. data/psp/socket/addrinfo.h +0 -173
  151. data/psp/socket/getaddrinfo.c +0 -676
  152. data/psp/socket/getnameinfo.c +0 -270
  153. data/psp/socket/pspsocket.c +0 -71
  154. data/psp/socket/pspsocket.h +0 -28
  155. data/psp/socket/socket.c +0 -4662
  156. data/psp/socket/sockport.h +0 -76
  157. data/psp/stringio/stringio.c +0 -1306
  158. data/psp/strscan/strscan.c +0 -1320
  159. data/psp/syck/bytecode.c +0 -1166
  160. data/psp/syck/emitter.c +0 -1242
  161. data/psp/syck/gram.c +0 -1894
  162. data/psp/syck/gram.h +0 -79
  163. data/psp/syck/handler.c +0 -174
  164. data/psp/syck/implicit.c +0 -2990
  165. data/psp/syck/node.c +0 -408
  166. data/psp/syck/rubyext.c +0 -2367
  167. data/psp/syck/syck.c +0 -504
  168. data/psp/syck/syck.h +0 -456
  169. data/psp/syck/token.c +0 -2725
  170. data/psp/syck/yaml2byte.c +0 -257
  171. data/psp/syck/yamlbyte.h +0 -170
  172. data/psp/thread/thread.c +0 -1175
  173. data/psp/zlib/zlib.c +0 -3547
  174. data/script.rb +0 -10
  175. data/spec/ray/audio_spec.rb +0 -146
  176. data/spec/ray/color_spec.rb +0 -57
  177. data/spec/ray/event_spec.rb +0 -80
  178. data/spec/ray/font_spec.rb +0 -93
  179. data/spec/ray/image_set_spec.rb +0 -48
  180. data/spec/ray/image_spec.rb +0 -162
  181. data/spec/ray/joystick_spec.rb +0 -21
  182. data/spec/ray/matcher_spec.rb +0 -50
  183. data/spec/ray/ray_spec.rb +0 -88
  184. data/spec/ray/rect_spec.rb +0 -154
  185. data/spec/ray/resource_set_spec.rb +0 -105
  186. data/spec/ray/sprite_spec.rb +0 -163
  187. data/spec/spec.opts +0 -4
  188. data/spec/spec_helper.rb +0 -8
@@ -1,34 +0,0 @@
1
- #ifndef _UTF8TBL_H_
2
- #define _UTF8TBL_H_
3
-
4
- #ifdef UTF8_OUTPUT_ENABLE
5
- extern const unsigned short euc_to_utf8_1byte[];
6
- extern const unsigned short *const euc_to_utf8_2bytes[];
7
- extern const unsigned short *const euc_to_utf8_2bytes_ms[];
8
- extern const unsigned short *const x0212_to_utf8_2bytes[];
9
- #endif /* UTF8_OUTPUT_ENABLE */
10
-
11
- #ifdef UTF8_INPUT_ENABLE
12
- extern const unsigned short *const utf8_to_euc_2bytes[];
13
- extern const unsigned short *const utf8_to_euc_2bytes_ms[];
14
- extern const unsigned short *const utf8_to_euc_2bytes_932[];
15
- extern const unsigned short *const *const utf8_to_euc_3bytes[];
16
- extern const unsigned short *const *const utf8_to_euc_3bytes_ms[];
17
- extern const unsigned short *const *const utf8_to_euc_3bytes_932[];
18
- #endif /* UTF8_INPUT_ENABLE */
19
-
20
- #ifdef UNICODE_NORMALIZATION
21
- extern const struct normalization_pair normalization_table[];
22
- #endif
23
-
24
- #ifdef SHIFTJIS_CP932
25
- extern const unsigned short shiftjis_cp932[3][189];
26
- extern const unsigned short cp932inv[2][189];
27
- #endif /* SHIFTJIS_CP932 */
28
-
29
- #ifdef X0212_ENABLE
30
- extern const unsigned short shiftjis_x0212[3][189];
31
- extern const unsigned short *const x0212_shiftjis[];
32
- #endif /* X0212_ENABLE */
33
-
34
- #endif
@@ -1,654 +0,0 @@
1
- /*
2
- * NKF - Ruby extension for Network Kanji Filter
3
- *
4
- * original nkf2.x is maintained at http://sourceforge.jp/projects/nkf/
5
- *
6
- * $Id: nkf.c 11908 2007-02-27 11:51:55Z knu $
7
- *
8
- */
9
-
10
- #define RUBY_NKF_REVISION "$Revision: 11908 $"
11
- #define RUBY_NKF_VERSION NKF_VERSION " (" NKF_RELEASE_DATE ")"
12
-
13
- #include <ruby/ruby.h>
14
-
15
- /* Encoding Constants */
16
- #define _AUTO 0
17
- #define _JIS 1
18
- #define _EUC 2
19
- #define _SJIS 3
20
- #define _BINARY 4
21
- #define _NOCONV 4
22
- #define _ASCII 5
23
- /* 0b011x is reserved for UTF-8 Family */
24
- #define _UTF8 6
25
- /* 0b10xx is reserved for UTF-16 Family */
26
- #define _UTF16 8
27
- /* 0b11xx is reserved for UTF-32 Family */
28
- #define _UTF32 12
29
- #define _OTHER 16
30
- #define _UNKNOWN _AUTO
31
-
32
- /* Replace nkf's getchar/putchar for variable modification */
33
- /* we never use getc, ungetc */
34
-
35
- #undef getc
36
- #undef ungetc
37
- #define getc(f) (input_ctr>=i_len?-1:input[input_ctr++])
38
- #define ungetc(c,f) input_ctr--
39
-
40
- #define INCSIZE 32
41
- #undef putchar
42
- #undef TRUE
43
- #undef FALSE
44
- #define putchar(c) rb_nkf_putchar(c)
45
-
46
- /* Input/Output pointers */
47
-
48
- static unsigned char *output;
49
- static unsigned char *input;
50
- static int input_ctr;
51
- static int i_len;
52
- static int output_ctr;
53
- static int o_len;
54
- static int incsize;
55
-
56
- static VALUE result;
57
-
58
- static int
59
- rb_nkf_putchar(c)
60
- unsigned int c;
61
- {
62
- if (output_ctr >= o_len) {
63
- o_len += incsize;
64
- rb_str_resize(result, o_len);
65
- incsize *= 2;
66
- output = (unsigned char *)RSTRING(result)->ptr;
67
- }
68
- output[output_ctr++] = c;
69
-
70
- return c;
71
- }
72
-
73
- /* Include kanji filter main part */
74
- /* getchar and putchar will be replaced during inclusion */
75
-
76
- #define PERL_XS 1
77
- #include "nkf-utf8/config.h"
78
- #include "nkf-utf8/utf8tbl.c"
79
- #include "nkf-utf8/nkf.c"
80
-
81
- int nkf_split_options(arg)
82
- const char* arg;
83
- {
84
- int count = 0;
85
- char option[256];
86
- int i = 0, j = 0;
87
- int is_escaped = FALSE;
88
- int is_single_quoted = FALSE;
89
- int is_double_quoted = FALSE;
90
- for(i = 0; arg[i]; i++){
91
- if(j == 255){
92
- return -1;
93
- }else if(is_single_quoted){
94
- if(arg[i] == '\''){
95
- is_single_quoted = FALSE;
96
- }else{
97
- option[j++] = arg[i];
98
- }
99
- }else if(is_escaped){
100
- is_escaped = FALSE;
101
- option[j++] = arg[i];
102
- }else if(arg[i] == '\\'){
103
- is_escaped = TRUE;
104
- }else if(is_double_quoted){
105
- if(arg[i] == '"'){
106
- is_double_quoted = FALSE;
107
- }else{
108
- option[j++] = arg[i];
109
- }
110
- }else if(arg[i] == '\''){
111
- is_single_quoted = TRUE;
112
- }else if(arg[i] == '"'){
113
- is_double_quoted = TRUE;
114
- }else if(arg[i] == ' '){
115
- option[j] = '\0';
116
- options(option);
117
- j = 0;
118
- }else{
119
- option[j++] = arg[i];
120
- }
121
- }
122
- if(j){
123
- option[j] = '\0';
124
- options(option);
125
- }
126
- return count;
127
- }
128
-
129
- /*
130
- * call-seq:
131
- * NKF.nkf(opt, str) -> string
132
- *
133
- * Convert _str_ and return converted result.
134
- * Conversion details are specified by _opt_ as String.
135
- *
136
- * require 'nkf'
137
- * output = NKF.nkf("-s", input)
138
- *
139
- * *Note*
140
- * By default, nkf decodes MIME encoded string.
141
- * If you want not to decode input, use NKF.nkf with <b>-m0</b> flag.
142
- */
143
-
144
- static VALUE
145
- rb_nkf_kconv(obj, opt, src)
146
- VALUE obj, opt, src;
147
- {
148
- char *opt_ptr, *opt_end;
149
- volatile VALUE v;
150
-
151
- reinit();
152
- StringValue(opt);
153
- opt_ptr = RSTRING(opt)->ptr;
154
- opt_end = opt_ptr + RSTRING(opt)->len;
155
- nkf_split_options(opt_ptr);
156
-
157
- incsize = INCSIZE;
158
-
159
- input_ctr = 0;
160
- StringValue(src);
161
- input = (unsigned char *)RSTRING(src)->ptr;
162
- i_len = RSTRING(src)->len;
163
- result = rb_str_new(0, i_len*3 + 10);
164
- v = result;
165
-
166
- output_ctr = 0;
167
- output = (unsigned char *)RSTRING(result)->ptr;
168
- o_len = RSTRING(result)->len;
169
- *output = '\0';
170
-
171
- if(x0201_f == WISH_TRUE)
172
- x0201_f = ((!iso2022jp_f)? TRUE : NO_X0201);
173
-
174
- kanji_convert(NULL);
175
- RSTRING(result)->ptr[output_ctr] = '\0';
176
- RSTRING(result)->len = output_ctr;
177
- OBJ_INFECT(result, src);
178
-
179
- return result;
180
- }
181
-
182
-
183
- /*
184
- * call-seq:
185
- * NKF.guess1(str) -> integer
186
- *
187
- * Returns guessed encoding of _str_ as integer.
188
- *
189
- * Algorithm described in:
190
- * Ken Lunde. `Understanding Japanese Information Processing'
191
- * Sebastopol, CA: O'Reilly & Associates.
192
- *
193
- * case NKF.guess1(input)
194
- * when NKF::JIS
195
- * "ISO-2022-JP"
196
- * when NKF::SJIS
197
- * "Shift_JIS"
198
- * when NKF::EUC
199
- * "EUC-JP"
200
- * when NKF::UNKNOWN
201
- * "UNKNOWN(ASCII)"
202
- * when NKF::BINARY
203
- * "BINARY"
204
- * end
205
- */
206
-
207
- static VALUE
208
- rb_nkf_guess1(obj, src)
209
- VALUE obj, src;
210
- {
211
- unsigned char *p;
212
- unsigned char *pend;
213
- int sequence_counter = 0;
214
-
215
- StringValue(src);
216
- p = (unsigned char *)RSTRING(src)->ptr;
217
- pend = p + RSTRING(src)->len;
218
- if (p == pend) return INT2FIX(_UNKNOWN);
219
-
220
- #define INCR do {\
221
- p++;\
222
- if (p==pend) return INT2FIX(_UNKNOWN);\
223
- sequence_counter++;\
224
- if (sequence_counter % 2 == 1 && *p != 0xa4)\
225
- sequence_counter = 0;\
226
- if (6 <= sequence_counter) {\
227
- sequence_counter = 0;\
228
- return INT2FIX(_EUC);\
229
- }\
230
- } while (0)
231
-
232
- if (*p == 0xa4)
233
- sequence_counter = 1;
234
-
235
- while (p<pend) {
236
- if (*p == '\033') {
237
- return INT2FIX(_JIS);
238
- }
239
- if (*p < '\006' || *p == 0x7f || *p == 0xff) {
240
- return INT2FIX(_BINARY);
241
- }
242
- if (0x81 <= *p && *p <= 0x8d) {
243
- return INT2FIX(_SJIS);
244
- }
245
- if (0x8f <= *p && *p <= 0x9f) {
246
- return INT2FIX(_SJIS);
247
- }
248
- if (*p == 0x8e) { /* SS2 */
249
- INCR;
250
- if ((0x40 <= *p && *p <= 0x7e) ||
251
- (0x80 <= *p && *p <= 0xa0) ||
252
- (0xe0 <= *p && *p <= 0xfc))
253
- return INT2FIX(_SJIS);
254
- }
255
- else if (0xa1 <= *p && *p <= 0xdf) {
256
- INCR;
257
- if (0xf0 <= *p && *p <= 0xfe)
258
- return INT2FIX(_EUC);
259
- if (0xe0 <= *p && *p <= 0xef) {
260
- while (p < pend && *p >= 0x40) {
261
- if (*p >= 0x81) {
262
- if (*p <= 0x8d || (0x8f <= *p && *p <= 0x9f)) {
263
- return INT2FIX(_SJIS);
264
- }
265
- else if (0xfd <= *p && *p <= 0xfe) {
266
- return INT2FIX(_EUC);
267
- }
268
- }
269
- INCR;
270
- }
271
- }
272
- else if (*p <= 0x9f) {
273
- return INT2FIX(_SJIS);
274
- }
275
- }
276
- else if (0xf0 <= *p && *p <= 0xfe) {
277
- return INT2FIX(_EUC);
278
- }
279
- else if (0xe0 <= *p && *p <= 0xef) {
280
- INCR;
281
- if ((0x40 <= *p && *p <= 0x7e) ||
282
- (0x80 <= *p && *p <= 0xa0)) {
283
- return INT2FIX(_SJIS);
284
- }
285
- if (0xfd <= *p && *p <= 0xfe) {
286
- return INT2FIX(_EUC);
287
- }
288
- }
289
- INCR;
290
- }
291
- return INT2FIX(_UNKNOWN);
292
- }
293
-
294
-
295
- /*
296
- * call-seq:
297
- * NKF.guess2(str) -> integer
298
- *
299
- * Returns guessed encoding of _str_ as integer by nkf routine.
300
- *
301
- * case NKF.guess(input)
302
- * when NKF::ASCII
303
- * "ASCII"
304
- * when NKF::JIS
305
- * "ISO-2022-JP"
306
- * when NKF::SJIS
307
- * "Shift_JIS"
308
- * when NKF::EUC
309
- * "EUC-JP"
310
- * when NKF::UTF8
311
- * "UTF-8"
312
- * when NKF::UTF16
313
- * "UTF-16"
314
- * when NKF::UNKNOWN
315
- * "UNKNOWN"
316
- * when NKF::BINARY
317
- * "BINARY"
318
- * end
319
- */
320
-
321
- static VALUE
322
- rb_nkf_guess2(obj, src)
323
- VALUE obj, src;
324
- {
325
- int code = _BINARY;
326
-
327
- reinit();
328
-
329
- input_ctr = 0;
330
- StringValue(src);
331
- input = (unsigned char *)RSTRING(src)->ptr;
332
- i_len = RSTRING(src)->len;
333
-
334
- if(x0201_f == WISH_TRUE)
335
- x0201_f = ((!iso2022jp_f)? TRUE : NO_X0201);
336
-
337
- guess_f = TRUE;
338
- kanji_convert( NULL );
339
- guess_f = FALSE;
340
-
341
- if (!is_inputcode_mixed) {
342
- if (strcmp(input_codename, "") == 0) {
343
- code = _ASCII;
344
- } else if (strcmp(input_codename, "ISO-2022-JP") == 0) {
345
- code = _JIS;
346
- } else if (strcmp(input_codename, "EUC-JP") == 0) {
347
- code = _EUC;
348
- } else if (strcmp(input_codename, "Shift_JIS") == 0) {
349
- code = _SJIS;
350
- } else if (strcmp(input_codename, "UTF-8") == 0) {
351
- code = _UTF8;
352
- } else if (strcmp(input_codename, "UTF-16") == 0) {
353
- code = _UTF16;
354
- } else if (strlen(input_codename) > 0) {
355
- code = _UNKNOWN;
356
- }
357
- }
358
-
359
- return INT2FIX( code );
360
- }
361
-
362
-
363
- /*
364
- * NKF - Ruby extension for Network Kanji Filter
365
- *
366
- * == Description
367
- *
368
- * This is a Ruby Extension version of nkf (Netowrk Kanji Filter).
369
- * It converts the first argument and return converted result. Conversion
370
- * details are specified by flags as the first argument.
371
- *
372
- * *Nkf* is a yet another kanji code converter among networks, hosts and terminals.
373
- * It converts input kanji code to designated kanji code
374
- * such as ISO-2022-JP, Shift_JIS, EUC-JP, UTF-8 or UTF-16.
375
- *
376
- * One of the most unique faculty of *nkf* is the guess of the input kanji encodings.
377
- * It currently recognizes ISO-2022-JP, Shift_JIS, EUC-JP, UTF-8 and UTF-16.
378
- * So users needn't set the input kanji code explicitly.
379
- *
380
- * By default, X0201 kana is converted into X0208 kana.
381
- * For X0201 kana, SO/SI, SSO and ESC-(-I methods are supported.
382
- * For automatic code detection, nkf assumes no X0201 kana in Shift_JIS.
383
- * To accept X0201 in Shift_JIS, use <b>-X</b>, <b>-x</b> or <b>-S</b>.
384
- *
385
- * == Flags
386
- *
387
- * === -b -u
388
- *
389
- * Output is buffered (DEFAULT), Output is unbuffered.
390
- *
391
- * === -j -s -e -w -w16
392
- *
393
- * Output code is ISO-2022-JP (7bit JIS), Shift_JIS, EUC-JP,
394
- * UTF-8N, UTF-16BE.
395
- * Without this option and compile option, ISO-2022-JP is assumed.
396
- *
397
- * === -J -S -E -W -W16
398
- *
399
- * Input assumption is JIS 7 bit, Shift_JIS, EUC-JP,
400
- * UTF-8, UTF-16LE.
401
- *
402
- * ==== -J
403
- *
404
- * Assume JIS input. It also accepts EUC-JP.
405
- * This is the default. This flag does not exclude Shift_JIS.
406
- *
407
- * ==== -S
408
- *
409
- * Assume Shift_JIS and X0201 kana input. It also accepts JIS.
410
- * EUC-JP is recognized as X0201 kana. Without <b>-x</b> flag,
411
- * X0201 kana (halfwidth kana) is converted into X0208.
412
- *
413
- * ==== -E
414
- *
415
- * Assume EUC-JP input. It also accepts JIS.
416
- * Same as -J.
417
- *
418
- * === -t
419
- *
420
- * No conversion.
421
- *
422
- * === -i_
423
- *
424
- * Output sequence to designate JIS-kanji. (DEFAULT B)
425
- *
426
- * === -o_
427
- *
428
- * Output sequence to designate ASCII. (DEFAULT B)
429
- *
430
- * === -r
431
- *
432
- * {de/en}crypt ROT13/47
433
- *
434
- * === -h[123] --hiragana --katakana --katakana-hiragana
435
- *
436
- * [-h1 --hiragana] Katakana to Hiragana conversion.
437
- *
438
- * [-h2 --katakana] Hiragana to Katakana conversion.
439
- *
440
- * [-h3 --katakana-hiragana] Katakana to Hiragana and Hiragana to Katakana conversion.
441
- *
442
- * === -T
443
- *
444
- * Text mode output (MS-DOS)
445
- *
446
- * === -l
447
- *
448
- * ISO8859-1 (Latin-1) support
449
- *
450
- * === -f[<code>m</code> [- <code>n</code>]]
451
- *
452
- * Folding on <code>m</code> length with <code>n</code> margin in a line.
453
- * Without this option, fold length is 60 and fold margin is 10.
454
- *
455
- * === -F
456
- *
457
- * New line preserving line folding.
458
- *
459
- * === -Z[0-3]
460
- *
461
- * Convert X0208 alphabet (Fullwidth Alphabets) to ASCII.
462
- *
463
- * [-Z -Z0] Convert X0208 alphabet to ASCII.
464
- *
465
- * [-Z1] Converts X0208 kankaku to single ASCII space.
466
- *
467
- * [-Z2] Converts X0208 kankaku to double ASCII spaces.
468
- *
469
- * [-Z3] Replacing Fullwidth >, <, ", & into '&gt;', '&lt;', '&quot;', '&amp;' as in HTML.
470
- *
471
- * === -X -x
472
- *
473
- * Assume X0201 kana in MS-Kanji.
474
- * With <b>-X</b> or without this option, X0201 is converted into X0208 Kana.
475
- * With <b>-x</b>, try to preserve X0208 kana and do not convert X0201 kana to X0208.
476
- * In JIS output, ESC-(-I is used. In EUC output, SSO is used.
477
- *
478
- * === -B[0-2]
479
- *
480
- * Assume broken JIS-Kanji input, which lost ESC.
481
- * Useful when your site is using old B-News Nihongo patch.
482
- *
483
- * [-B1] allows any char after ESC-( or ESC-$.
484
- *
485
- * [-B2] forces ASCII after NL.
486
- *
487
- * === -I
488
- *
489
- * Replacing non iso-2022-jp char into a geta character
490
- * (substitute character in Japanese).
491
- *
492
- * === -d -c
493
- *
494
- * Delete \r in line feed, Add \r in line feed.
495
- *
496
- * === -m[BQN0]
497
- *
498
- * MIME ISO-2022-JP/ISO8859-1 decode. (DEFAULT)
499
- * To see ISO8859-1 (Latin-1) -l is necessary.
500
- *
501
- * [-mB] Decode MIME base64 encoded stream. Remove header or other part before
502
- * conversion.
503
- *
504
- * [-mQ] Decode MIME quoted stream. '_' in quoted stream is converted to space.
505
- *
506
- * [-mN] Non-strict decoding.
507
- * It allows line break in the middle of the base64 encoding.
508
- *
509
- * [-m0] No MIME decode.
510
- *
511
- * === -M
512
- *
513
- * MIME encode. Header style. All ASCII code and control characters are intact.
514
- * Kanji conversion is performed before encoding, so this cannot be used as a picture encoder.
515
- *
516
- * [-MB] MIME encode Base64 stream.
517
- *
518
- * [-MQ] Perfome quoted encoding.
519
- *
520
- * === -l
521
- *
522
- * Input and output code is ISO8859-1 (Latin-1) and ISO-2022-JP.
523
- * <b>-s</b>, <b>-e</b> and <b>-x</b> are not compatible with this option.
524
- *
525
- * === -L[uwm]
526
- *
527
- * new line mode
528
- * Without this option, nkf doesn't convert line breaks.
529
- *
530
- * [-Lu] unix (LF)
531
- *
532
- * [-Lw] windows (CRLF)
533
- *
534
- * [-Lm] mac (CR)
535
- *
536
- * === --fj --unix --mac --msdos --windows
537
- *
538
- * convert for these system
539
- *
540
- * === --jis --euc --sjis --mime --base64
541
- *
542
- * convert for named code
543
- *
544
- * === --jis-input --euc-input --sjis-input --mime-input --base64-input
545
- *
546
- * assume input system
547
- *
548
- * === --ic=<code>input codeset</code> --oc=<code>output codeset</code>
549
- *
550
- * Set the input or output codeset.
551
- * NKF supports following codesets and those codeset name are case insensitive.
552
- *
553
- * [ISO-2022-JP] a.k.a. RFC1468, 7bit JIS, JUNET
554
- *
555
- * [EUC-JP (eucJP-nkf)] a.k.a. AT&T JIS, Japanese EUC, UJIS
556
- *
557
- * [eucJP-ascii] a.k.a. x-eucjp-open-19970715-ascii
558
- *
559
- * [eucJP-ms] a.k.a. x-eucjp-open-19970715-ms
560
- *
561
- * [CP51932] Microsoft Version of EUC-JP.
562
- *
563
- * [Shift_JIS] SJIS, MS-Kanji
564
- *
565
- * [CP932] a.k.a. Windows-31J
566
- *
567
- * [UTF-8] same as UTF-8N
568
- *
569
- * [UTF-8N] UTF-8 without BOM
570
- *
571
- * [UTF-8-BOM] UTF-8 with BOM
572
- *
573
- * [UTF-16] same as UTF-16BE
574
- *
575
- * [UTF-16BE] UTF-16 Big Endian without BOM
576
- *
577
- * [UTF-16BE-BOM] UTF-16 Big Endian with BOM
578
- *
579
- * [UTF-16LE] UTF-16 Little Endian without BOM
580
- *
581
- * [UTF-16LE-BOM] UTF-16 Little Endian with BOM
582
- *
583
- * [UTF8-MAC] NKDed UTF-8, a.k.a. UTF8-NFD (input only)
584
- *
585
- * === --fb-{skip, html, xml, perl, java, subchar}
586
- *
587
- * Specify the way that nkf handles unassigned characters.
588
- * Without this option, --fb-skip is assumed.
589
- *
590
- * === --prefix= <code>escape character</code> <code>target character</code> ..
591
- *
592
- * When nkf converts to Shift_JIS,
593
- * nkf adds a specified escape character to specified 2nd byte of Shift_JIS characters.
594
- * 1st byte of argument is the escape character and following bytes are target characters.
595
- *
596
- * === --disable-cp932ext
597
- *
598
- * Handle the characters extended in CP932 as unassigned characters.
599
- *
600
- * === --cap-input
601
- *
602
- * Decode hex encoded characters.
603
- *
604
- * === --url-input
605
- *
606
- * Unescape percent escaped characters.
607
- *
608
- * === --
609
- *
610
- * Ignore rest of -option.
611
- */
612
-
613
- void
614
- Init_nkf()
615
- {
616
- /* hoge */
617
- VALUE mKconv = rb_define_module("NKF");
618
- /* hoge */
619
-
620
- rb_define_module_function(mKconv, "nkf", rb_nkf_kconv, 2);
621
- rb_define_module_function(mKconv, "guess1", rb_nkf_guess1, 1);
622
- rb_define_module_function(mKconv, "guess2", rb_nkf_guess2, 1);
623
- rb_define_alias(mKconv, "guess", "guess2");
624
- rb_define_alias(rb_singleton_class(mKconv), "guess", "guess2");
625
-
626
- /* Auto-Detect */
627
- rb_define_const(mKconv, "AUTO", INT2FIX(_AUTO));
628
- /* ISO-2022-JP */
629
- rb_define_const(mKconv, "JIS", INT2FIX(_JIS));
630
- /* EUC-JP */
631
- rb_define_const(mKconv, "EUC", INT2FIX(_EUC));
632
- /* Shift_JIS */
633
- rb_define_const(mKconv, "SJIS", INT2FIX(_SJIS));
634
- /* BINARY */
635
- rb_define_const(mKconv, "BINARY", INT2FIX(_BINARY));
636
- /* No conversion */
637
- rb_define_const(mKconv, "NOCONV", INT2FIX(_NOCONV));
638
- /* ASCII */
639
- rb_define_const(mKconv, "ASCII", INT2FIX(_ASCII));
640
- /* UTF-8 */
641
- rb_define_const(mKconv, "UTF8", INT2FIX(_UTF8));
642
- /* UTF-16 */
643
- rb_define_const(mKconv, "UTF16", INT2FIX(_UTF16));
644
- /* UTF-32 */
645
- rb_define_const(mKconv, "UTF32", INT2FIX(_UTF32));
646
- /* UNKNOWN */
647
- rb_define_const(mKconv, "UNKNOWN", INT2FIX(_UNKNOWN));
648
- /* Full version string of nkf */
649
- rb_define_const(mKconv, "VERSION", rb_str_new2(RUBY_NKF_VERSION));
650
- /* Version of nkf */
651
- rb_define_const(mKconv, "NKF_VERSION", rb_str_new2(NKF_VERSION));
652
- /* Release date of nkf */
653
- rb_define_const(mKconv, "NKF_RELEASE_DATE", rb_str_new2(NKF_RELEASE_DATE));
654
- }