byk 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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