byk 0.4.0 → 0.5.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 (6) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -2
  3. data/README.md +10 -6
  4. data/ext/byk/byk.c +135 -137
  5. data/lib/byk/version.rb +1 -1
  6. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2fb4e839b91bf3348e5c59e0e52b97bbbaec43de
4
- data.tar.gz: 1a5d496e1fe684cba330eed517c3b8de5ad573a0
3
+ metadata.gz: 70b44d7687698d589bad7ddd888824bb58d4146d
4
+ data.tar.gz: a9c6c155c85533e0d16e8515176929faaf456613
5
5
  SHA512:
6
- metadata.gz: 9fc2e29e20dad1e0c517afd3c35d60340f256ce44bcda71a9e2fb344be4b685c2fa3b85350dd347e890143c6f9a84a94896eec9df0bfb8ec9b7be8811907053f
7
- data.tar.gz: c81f02b4075cdc5b82b3f17f47fb4ea74dbcfa29bbe466731c685ec5a7b3d1c54b329075eb8c2d1731b76f03b9bf9b24646ea3aeff88f8ab17577297d0bae960
6
+ metadata.gz: 4543d2bc442e1bfcbb5bc5030a4cbb3cfdc456e68a7a4da2b623039109f0faa52aad4f335c1856f574d4b51a82f9ba5fb4f97beee8dc364126064df6b3cf70b5
7
+ data.tar.gz: a852ce68e4635d1af3f48e0e29c7b987c53f216d63fcbe9102c05ba825eb3c74cc7317bf807d9f9ec687312a5962f73533eaa12e822407a326d3bfcb3d0901b7
@@ -1,9 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ### Byk 0.5.0 (2015-04-18)
4
+
5
+ * Performance tuning and refactoring, up to 5x speedup
6
+ * Dropped the unused optional arg
7
+
3
8
  ### Byk 0.4.0 (2015-04-17)
4
9
 
5
- * Performance tuning and refactoring, ~10% speedup
6
- * Updated benchmark
10
+ * Performance tuning and refactoring
7
11
  * Introduced changelog
8
12
 
9
13
  ### Byk 0.3.0 (2015-04-16)
data/README.md CHANGED
@@ -71,8 +71,9 @@ Note that these methods take into account the
71
71
 
72
72
  ## How fast is fast?
73
73
 
74
- About [7-8x faster](benchmark) than the baseline Ruby implementation on
75
- my hardware. YMMV of course.
74
+ About [10-40x faster](benchmark) than the baseline Ruby implementation
75
+ on my hardware, depending on the string's Cyrillic content ratio. YMMV
76
+ of course.
76
77
 
77
78
 
78
79
  ## Raison d'être
@@ -88,10 +89,13 @@ with Ruby extensions, so there :smile_cat:
88
89
 
89
90
  ## Compatibility
90
91
 
91
- Byk is supported under MRI Ruby >= 1.9.2. I don't plan to support
92
- 1.8.7 or older due to substantial C API changes between 1.8 and
93
- 1.9. It doesn't build under Rubinius currently, but I intend to
94
- support it in future releases.
92
+ Byk is supported under MRI Ruby >= 1.9.2.
93
+
94
+ I don't plan to support 1.8.7 or older due to substantial C API
95
+ changes between 1.8 and 1.9.
96
+
97
+ It doesn't build under Rubinius currently, but I intend to support it
98
+ in future releases.
95
99
 
96
100
 
97
101
  ## License
@@ -1,25 +1,11 @@
1
- #include <stdio.h>
2
1
  #include <ruby.h>
3
2
  #include <ruby/encoding.h>
4
3
 
5
- #ifndef rb_check_arity
6
- #define rb_check_arity rb_check_arity
7
-
8
- NORETURN(void rb_error_arity(int, int, int));
9
-
10
- static inline void
11
- rb_check_arity(int argc, int min, int max)
12
- {
13
- if ((argc < min) || (max != -1 && argc > max))
14
- rb_error_arity(argc, min, max);
15
- }
16
- #endif
17
-
18
4
  #define STR_ENC_GET(str) rb_enc_from_index(ENCODING_GET(str))
19
5
 
20
- #define STR_CAT_COND_ASCII(ascii, dest, chr, ascii_chr, len, enc) \
21
- ascii ? rb_enc_str_buf_cat(dest, chr, len, enc) \
22
- : str_cat_char(dest, ascii_chr, enc)
6
+ #define STR_CAT_COND_ASCII(ascii, dest, chr, ascii_chr, len, enc) \
7
+ ascii ? rb_str_buf_cat(dest, chr, len) \
8
+ : str_cat_char(dest, ascii_chr, enc)
23
9
 
24
10
  enum {
25
11
  LAT_CAP_TJ=262,
@@ -112,25 +98,23 @@ str_cat_char(VALUE str, unsigned int c, rb_encoding *enc)
112
98
  char s[16];
113
99
  int n = rb_enc_codelen(c, enc);
114
100
  rb_enc_mbcput(c, s, enc);
115
- rb_enc_str_buf_cat(str, s, n, enc);
101
+ rb_str_buf_cat(str, s, n);
116
102
  }
117
103
 
118
104
  static VALUE
119
- str_to_latin(int argc, VALUE *argv, VALUE str, int ascii, int bang)
105
+ str_to_latin(VALUE str, int ascii, int bang)
120
106
  {
121
107
  VALUE dest;
122
108
  long dest_len;
123
- char *pos, *end;
124
- rb_encoding *enc;
125
109
  int len, next_len;
126
110
  int seen_upper = 0;
127
111
  int force_upper = 0;
112
+ char *pos = RSTRING_PTR(str);
113
+ char *end, *seq_start = 0;
128
114
  unsigned int codepoint = 0;
129
115
  unsigned int next_codepoint = 0;
116
+ rb_encoding *enc;
130
117
 
131
- rb_check_arity(argc, 0, 1);
132
-
133
- pos = RSTRING_PTR(str);
134
118
  if (!pos || RSTRING_LEN(str) == 0) return str;
135
119
 
136
120
  end = RSTRING_END(str);
@@ -146,134 +130,148 @@ str_to_latin(int argc, VALUE *argv, VALUE str, int ascii, int bang)
146
130
  next_codepoint = rb_enc_codepoint_len(pos + len, end, &next_len, enc);
147
131
  }
148
132
 
149
- force_upper = seen_upper || is_upper_case(next_codepoint);
150
- seen_upper = is_upper_case(codepoint);
151
-
152
133
  /* Latin -> "ASCII Latin" conversion */
153
134
  if (ascii && codepoint >= LAT_CAP_TJ && codepoint <= LAT_ZH) {
135
+ if (seq_start) {
136
+ /* flush the sequence */
137
+ rb_str_buf_cat(dest, seq_start, pos - seq_start);
138
+ seq_start = 0;
139
+ }
154
140
  switch (codepoint) {
155
141
  case LAT_TJ:
156
- case LAT_CH: rb_enc_str_buf_cat(dest, "c", 1, enc); break;
157
- case LAT_DJ: rb_enc_str_buf_cat(dest, "dj", 2, enc); break;
158
- case LAT_SH: rb_enc_str_buf_cat(dest, "s", 1, enc); break;
159
- case LAT_ZH: rb_enc_str_buf_cat(dest, "z", 1, enc); break;
142
+ case LAT_CH: rb_str_buf_cat(dest, "c", 1); break;
143
+ case LAT_DJ: rb_str_buf_cat(dest, "dj", 2); break;
144
+ case LAT_SH: rb_str_buf_cat(dest, "s", 1); break;
145
+ case LAT_ZH: rb_str_buf_cat(dest, "z", 1); break;
160
146
  case LAT_CAP_TJ:
161
- case LAT_CAP_CH: rb_enc_str_buf_cat(dest, "C", 1, enc); break;
162
- case LAT_CAP_SH: rb_enc_str_buf_cat(dest, "S", 1, enc); break;
163
- case LAT_CAP_ZH: rb_enc_str_buf_cat(dest, "Z", 1, enc); break;
164
-
147
+ case LAT_CAP_CH: rb_str_buf_cat(dest, "C", 1); break;
148
+ case LAT_CAP_SH: rb_str_buf_cat(dest, "S", 1); break;
149
+ case LAT_CAP_ZH: rb_str_buf_cat(dest, "Z", 1); break;
165
150
  case LAT_CAP_DJ:
166
- force_upper ? rb_enc_str_buf_cat(dest, "DJ", 2, enc)
167
- : rb_enc_str_buf_cat(dest, "Dj", 2, enc);
151
+ (seen_upper || is_upper_case(next_codepoint))
152
+ ? rb_str_buf_cat(dest, "DJ", 2)
153
+ : rb_str_buf_cat(dest, "Dj", 2);
168
154
  break;
169
155
  default:
170
- rb_enc_str_buf_cat(dest, pos, len, enc);
156
+ rb_str_buf_cat(dest, pos, len);
171
157
  }
172
158
  }
173
159
 
174
- /* Non-Cyrillic codepoints */
160
+ /* Mark a start of inconsequential sequence */
175
161
  else if (codepoint < CYR_CAP_DJ || codepoint > CYR_DZ) {
176
- rb_enc_str_buf_cat(dest, pos, len, enc);
162
+ if (!seq_start)
163
+ seq_start = pos;
177
164
  }
178
165
 
179
166
  /* Cyrillic -> Latin conversion */
180
- else if (codepoint >= CYR_A) {
181
- switch (codepoint) {
182
- case CYR_A: rb_enc_str_buf_cat(dest, "a", 1, enc); break;
183
- case CYR_B: rb_enc_str_buf_cat(dest, "b", 1, enc); break;
184
- case CYR_V: rb_enc_str_buf_cat(dest, "v", 1, enc); break;
185
- case CYR_G: rb_enc_str_buf_cat(dest, "g", 1, enc); break;
186
- case CYR_D: rb_enc_str_buf_cat(dest, "d", 1, enc); break;
187
- case CYR_E: rb_enc_str_buf_cat(dest, "e", 1, enc); break;
188
- case CYR_Z: rb_enc_str_buf_cat(dest, "z", 1, enc); break;
189
- case CYR_I: rb_enc_str_buf_cat(dest, "i", 1, enc); break;
190
- case CYR_K: rb_enc_str_buf_cat(dest, "k", 1, enc); break;
191
- case CYR_L: rb_enc_str_buf_cat(dest, "l", 1, enc); break;
192
- case CYR_M: rb_enc_str_buf_cat(dest, "m", 1, enc); break;
193
- case CYR_N: rb_enc_str_buf_cat(dest, "n", 1, enc); break;
194
- case CYR_O: rb_enc_str_buf_cat(dest, "o", 1, enc); break;
195
- case CYR_P: rb_enc_str_buf_cat(dest, "p", 1, enc); break;
196
- case CYR_R: rb_enc_str_buf_cat(dest, "r", 1, enc); break;
197
- case CYR_S: rb_enc_str_buf_cat(dest, "s", 1, enc); break;
198
- case CYR_T: rb_enc_str_buf_cat(dest, "t", 1, enc); break;
199
- case CYR_U: rb_enc_str_buf_cat(dest, "u", 1, enc); break;
200
- case CYR_F: rb_enc_str_buf_cat(dest, "f", 1, enc); break;
201
- case CYR_H: rb_enc_str_buf_cat(dest, "h", 1, enc); break;
202
- case CYR_C: rb_enc_str_buf_cat(dest, "c", 1, enc); break;
203
- case CYR_J: rb_enc_str_buf_cat(dest, "j", 1, enc); break;
204
- case CYR_LJ: rb_enc_str_buf_cat(dest, "lj", 2, enc); break;
205
- case CYR_NJ: rb_enc_str_buf_cat(dest, "nj", 2, enc); break;
206
- case CYR_DJ: STR_CAT_COND_ASCII(ascii, dest, "dj", LAT_DJ, 2, enc); break;
207
- case CYR_TJ: STR_CAT_COND_ASCII(ascii, dest, "c", LAT_TJ, 1, enc); break;
208
- case CYR_CH: STR_CAT_COND_ASCII(ascii, dest, "c", LAT_CH, 1, enc); break;
209
- case CYR_ZH: STR_CAT_COND_ASCII(ascii, dest, "z", LAT_ZH, 1, enc); break;
210
- case CYR_SH: STR_CAT_COND_ASCII(ascii, dest, "s", LAT_SH, 1, enc); break;
211
- case CYR_DZ:
212
- rb_enc_str_buf_cat(dest, "d", 1, enc);
213
- STR_CAT_COND_ASCII(ascii, dest, "z", LAT_ZH, 1, enc);
214
- break;
215
- default:
216
- rb_enc_str_buf_cat(dest, pos, len, enc);
167
+ else {
168
+ if (seq_start) {
169
+ /* flush the sequence */
170
+ rb_str_buf_cat(dest, seq_start, pos - seq_start);
171
+ seq_start = 0;
217
172
  }
218
- }
219
173
 
220
- /* Cyrillic -> Latin conversion, caps */
221
- else {
222
- switch (codepoint) {
223
- case CYR_CAP_J: rb_enc_str_buf_cat(dest, "J", 1, enc); break;
224
- case CYR_CAP_A: rb_enc_str_buf_cat(dest, "A", 1, enc); break;
225
- case CYR_CAP_B: rb_enc_str_buf_cat(dest, "B", 1, enc); break;
226
- case CYR_CAP_V: rb_enc_str_buf_cat(dest, "V", 1, enc); break;
227
- case CYR_CAP_G: rb_enc_str_buf_cat(dest, "G", 1, enc); break;
228
- case CYR_CAP_D: rb_enc_str_buf_cat(dest, "D", 1, enc); break;
229
- case CYR_CAP_E: rb_enc_str_buf_cat(dest, "E", 1, enc); break;
230
- case CYR_CAP_Z: rb_enc_str_buf_cat(dest, "Z", 1, enc); break;
231
- case CYR_CAP_I: rb_enc_str_buf_cat(dest, "I", 1, enc); break;
232
- case CYR_CAP_K: rb_enc_str_buf_cat(dest, "K", 1, enc); break;
233
- case CYR_CAP_L: rb_enc_str_buf_cat(dest, "L", 1, enc); break;
234
- case CYR_CAP_M: rb_enc_str_buf_cat(dest, "M", 1, enc); break;
235
- case CYR_CAP_N: rb_enc_str_buf_cat(dest, "N", 1, enc); break;
236
- case CYR_CAP_O: rb_enc_str_buf_cat(dest, "O", 1, enc); break;
237
- case CYR_CAP_P: rb_enc_str_buf_cat(dest, "P", 1, enc); break;
238
- case CYR_CAP_R: rb_enc_str_buf_cat(dest, "R", 1, enc); break;
239
- case CYR_CAP_S: rb_enc_str_buf_cat(dest, "S", 1, enc); break;
240
- case CYR_CAP_T: rb_enc_str_buf_cat(dest, "T", 1, enc); break;
241
- case CYR_CAP_U: rb_enc_str_buf_cat(dest, "U", 1, enc); break;
242
- case CYR_CAP_F: rb_enc_str_buf_cat(dest, "F", 1, enc); break;
243
- case CYR_CAP_H: rb_enc_str_buf_cat(dest, "H", 1, enc); break;
244
- case CYR_CAP_C: rb_enc_str_buf_cat(dest, "C", 1, enc); break;
245
- case CYR_CAP_TJ: STR_CAT_COND_ASCII(ascii, dest, "C", LAT_CAP_TJ, 1, enc); break;
246
- case CYR_CAP_CH: STR_CAT_COND_ASCII(ascii, dest, "C", LAT_CAP_CH, 1, enc); break;
247
- case CYR_CAP_ZH: STR_CAT_COND_ASCII(ascii, dest, "Z", LAT_CAP_ZH, 1, enc); break;
248
- case CYR_CAP_SH: STR_CAT_COND_ASCII(ascii, dest, "S", LAT_CAP_SH, 1, enc); break;
249
- case CYR_CAP_LJ:
250
- rb_enc_str_buf_cat(dest, (force_upper ? "LJ" : "Lj"), 2, enc);
251
- break;
252
- case CYR_CAP_NJ:
253
- rb_enc_str_buf_cat(dest, (force_upper ? "NJ" : "Nj"), 2, enc);
254
- break;
255
- case CYR_CAP_DJ:
256
- STR_CAT_COND_ASCII(ascii, dest, (force_upper ? "DJ" : "Dj"), LAT_CAP_DJ, 2, enc);
257
- break;
258
- case CYR_CAP_DZ:
259
- rb_enc_str_buf_cat(dest, "D", 1, enc);
260
- if (force_upper) {
261
- STR_CAT_COND_ASCII(ascii, dest, "Z", LAT_CAP_ZH, 1, enc);
262
- }
263
- else {
174
+ if (codepoint >= CYR_A) {
175
+ switch (codepoint) {
176
+ case CYR_A: rb_str_buf_cat(dest, "a", 1); break;
177
+ case CYR_B: rb_str_buf_cat(dest, "b", 1); break;
178
+ case CYR_V: rb_str_buf_cat(dest, "v", 1); break;
179
+ case CYR_G: rb_str_buf_cat(dest, "g", 1); break;
180
+ case CYR_D: rb_str_buf_cat(dest, "d", 1); break;
181
+ case CYR_E: rb_str_buf_cat(dest, "e", 1); break;
182
+ case CYR_Z: rb_str_buf_cat(dest, "z", 1); break;
183
+ case CYR_I: rb_str_buf_cat(dest, "i", 1); break;
184
+ case CYR_J: rb_str_buf_cat(dest, "j", 1); break;
185
+ case CYR_K: rb_str_buf_cat(dest, "k", 1); break;
186
+ case CYR_L: rb_str_buf_cat(dest, "l", 1); break;
187
+ case CYR_M: rb_str_buf_cat(dest, "m", 1); break;
188
+ case CYR_N: rb_str_buf_cat(dest, "n", 1); break;
189
+ case CYR_O: rb_str_buf_cat(dest, "o", 1); break;
190
+ case CYR_P: rb_str_buf_cat(dest, "p", 1); break;
191
+ case CYR_R: rb_str_buf_cat(dest, "r", 1); break;
192
+ case CYR_S: rb_str_buf_cat(dest, "s", 1); break;
193
+ case CYR_T: rb_str_buf_cat(dest, "t", 1); break;
194
+ case CYR_U: rb_str_buf_cat(dest, "u", 1); break;
195
+ case CYR_F: rb_str_buf_cat(dest, "f", 1); break;
196
+ case CYR_H: rb_str_buf_cat(dest, "h", 1); break;
197
+ case CYR_C: rb_str_buf_cat(dest, "c", 1); break;
198
+ case CYR_LJ: rb_str_buf_cat(dest, "lj", 2); break;
199
+ case CYR_NJ: rb_str_buf_cat(dest, "nj", 2); break;
200
+ case CYR_DJ: STR_CAT_COND_ASCII(ascii, dest, "dj", LAT_DJ, 2, enc); break;
201
+ case CYR_TJ: STR_CAT_COND_ASCII(ascii, dest, "c", LAT_TJ, 1, enc); break;
202
+ case CYR_CH: STR_CAT_COND_ASCII(ascii, dest, "c", LAT_CH, 1, enc); break;
203
+ case CYR_ZH: STR_CAT_COND_ASCII(ascii, dest, "z", LAT_ZH, 1, enc); break;
204
+ case CYR_SH: STR_CAT_COND_ASCII(ascii, dest, "s", LAT_SH, 1, enc); break;
205
+ case CYR_DZ:
206
+ rb_str_buf_cat(dest, "d", 1);
264
207
  STR_CAT_COND_ASCII(ascii, dest, "z", LAT_ZH, 1, enc);
208
+ break;
209
+ default:
210
+ rb_str_buf_cat(dest, pos, len);
211
+ }
212
+ }
213
+ else {
214
+ force_upper = seen_upper || is_upper_case(next_codepoint);
215
+
216
+ switch (codepoint) {
217
+ case CYR_CAP_A: rb_str_buf_cat(dest, "A", 1); break;
218
+ case CYR_CAP_B: rb_str_buf_cat(dest, "B", 1); break;
219
+ case CYR_CAP_V: rb_str_buf_cat(dest, "V", 1); break;
220
+ case CYR_CAP_G: rb_str_buf_cat(dest, "G", 1); break;
221
+ case CYR_CAP_D: rb_str_buf_cat(dest, "D", 1); break;
222
+ case CYR_CAP_E: rb_str_buf_cat(dest, "E", 1); break;
223
+ case CYR_CAP_Z: rb_str_buf_cat(dest, "Z", 1); break;
224
+ case CYR_CAP_I: rb_str_buf_cat(dest, "I", 1); break;
225
+ case CYR_CAP_J: rb_str_buf_cat(dest, "J", 1); break;
226
+ case CYR_CAP_K: rb_str_buf_cat(dest, "K", 1); break;
227
+ case CYR_CAP_L: rb_str_buf_cat(dest, "L", 1); break;
228
+ case CYR_CAP_M: rb_str_buf_cat(dest, "M", 1); break;
229
+ case CYR_CAP_N: rb_str_buf_cat(dest, "N", 1); break;
230
+ case CYR_CAP_O: rb_str_buf_cat(dest, "O", 1); break;
231
+ case CYR_CAP_P: rb_str_buf_cat(dest, "P", 1); break;
232
+ case CYR_CAP_R: rb_str_buf_cat(dest, "R", 1); break;
233
+ case CYR_CAP_S: rb_str_buf_cat(dest, "S", 1); break;
234
+ case CYR_CAP_T: rb_str_buf_cat(dest, "T", 1); break;
235
+ case CYR_CAP_U: rb_str_buf_cat(dest, "U", 1); break;
236
+ case CYR_CAP_F: rb_str_buf_cat(dest, "F", 1); break;
237
+ case CYR_CAP_H: rb_str_buf_cat(dest, "H", 1); break;
238
+ case CYR_CAP_C: rb_str_buf_cat(dest, "C", 1); break;
239
+ case CYR_CAP_LJ: rb_str_buf_cat(dest, (force_upper ? "LJ" : "Lj"), 2); break;
240
+ case CYR_CAP_NJ: rb_str_buf_cat(dest, (force_upper ? "NJ" : "Nj"), 2); break;
241
+ case CYR_CAP_TJ: STR_CAT_COND_ASCII(ascii, dest, "C", LAT_CAP_TJ, 1, enc); break;
242
+ case CYR_CAP_CH: STR_CAT_COND_ASCII(ascii, dest, "C", LAT_CAP_CH, 1, enc); break;
243
+ case CYR_CAP_ZH: STR_CAT_COND_ASCII(ascii, dest, "Z", LAT_CAP_ZH, 1, enc); break;
244
+ case CYR_CAP_SH: STR_CAT_COND_ASCII(ascii, dest, "S", LAT_CAP_SH, 1, enc); break;
245
+ case CYR_CAP_DJ: STR_CAT_COND_ASCII(ascii, dest, (force_upper ? "DJ" : "Dj"), LAT_CAP_DJ, 2, enc); break;
246
+ case CYR_CAP_DZ:
247
+ rb_str_buf_cat(dest, "D", 1);
248
+ if (force_upper) {
249
+ STR_CAT_COND_ASCII(ascii, dest, "Z", LAT_CAP_ZH, 1, enc);
250
+ }
251
+ else {
252
+ STR_CAT_COND_ASCII(ascii, dest, "z", LAT_ZH, 1, enc);
253
+ }
254
+ break;
255
+ default:
256
+ rb_str_buf_cat(dest, pos, len);
265
257
  }
266
- break;
267
- default:
268
- rb_enc_str_buf_cat(dest, pos, len, enc);
269
258
  }
270
259
  }
260
+
261
+ seen_upper = is_upper_case(codepoint);
262
+
271
263
  pos += len;
272
264
  len = next_len;
265
+
273
266
  codepoint = next_codepoint;
274
267
  next_codepoint = 0;
275
268
  }
276
269
 
270
+ if (seq_start) {
271
+ /* flush the last sequence */
272
+ rb_str_buf_cat(dest, seq_start, pos - seq_start);
273
+ }
274
+
277
275
  if (bang) {
278
276
  rb_str_shared_replace(str, dest);
279
277
  }
@@ -286,29 +284,29 @@ str_to_latin(int argc, VALUE *argv, VALUE str, int ascii, int bang)
286
284
  }
287
285
 
288
286
  static VALUE
289
- rb_str_to_latin(int argc, VALUE *argv, VALUE str) {
290
- return str_to_latin(argc, argv, str, 0, 0);
287
+ rb_str_to_latin(VALUE str) {
288
+ return str_to_latin(str, 0, 0);
291
289
  }
292
290
 
293
291
  static VALUE
294
- rb_str_to_latin_bang(int argc, VALUE *argv, VALUE str) {
295
- return str_to_latin(argc, argv, str, 0, 1);
292
+ rb_str_to_latin_bang(VALUE str) {
293
+ return str_to_latin(str, 0, 1);
296
294
  }
297
295
 
298
296
  static VALUE
299
- rb_str_to_ascii_latin(int argc, VALUE *argv, VALUE str) {
300
- return str_to_latin(argc, argv, str, 1, 0);
297
+ rb_str_to_ascii_latin(VALUE str) {
298
+ return str_to_latin(str, 1, 0);
301
299
  }
302
300
 
303
301
  static VALUE
304
- rb_str_to_ascii_latin_bang(int argc, VALUE *argv, VALUE str) {
305
- return str_to_latin(argc, argv, str, 1, 1);
302
+ rb_str_to_ascii_latin_bang(VALUE str) {
303
+ return str_to_latin(str, 1, 1);
306
304
  }
307
305
 
308
306
  void Init_byk_native(void)
309
307
  {
310
- rb_define_method(rb_cString, "to_latin", rb_str_to_latin, -1);
311
- rb_define_method(rb_cString, "to_latin!", rb_str_to_latin_bang, -1);
312
- rb_define_method(rb_cString, "to_ascii_latin", rb_str_to_ascii_latin, -1);
313
- rb_define_method(rb_cString, "to_ascii_latin!", rb_str_to_ascii_latin_bang, -1);
308
+ rb_define_method(rb_cString, "to_latin", rb_str_to_latin, 0);
309
+ rb_define_method(rb_cString, "to_latin!", rb_str_to_latin_bang, 0);
310
+ rb_define_method(rb_cString, "to_ascii_latin", rb_str_to_ascii_latin, 0);
311
+ rb_define_method(rb_cString, "to_ascii_latin!", rb_str_to_ascii_latin_bang, 0);
314
312
  }
@@ -1,3 +1,3 @@
1
1
  module Byk
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: byk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikola Topalović
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-17 00:00:00.000000000 Z
11
+ date: 2015-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler