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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -2
- data/README.md +10 -6
- data/ext/byk/byk.c +135 -137
- data/lib/byk/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70b44d7687698d589bad7ddd888824bb58d4146d
|
4
|
+
data.tar.gz: a9c6c155c85533e0d16e8515176929faaf456613
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4543d2bc442e1bfcbb5bc5030a4cbb3cfdc456e68a7a4da2b623039109f0faa52aad4f335c1856f574d4b51a82f9ba5fb4f97beee8dc364126064df6b3cf70b5
|
7
|
+
data.tar.gz: a852ce68e4635d1af3f48e0e29c7b987c53f216d63fcbe9102c05ba825eb3c74cc7317bf807d9f9ec687312a5962f73533eaa12e822407a326d3bfcb3d0901b7
|
data/CHANGELOG.md
CHANGED
@@ -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
|
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 [
|
75
|
-
my hardware
|
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.
|
92
|
-
|
93
|
-
|
94
|
-
|
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
|
data/ext/byk/byk.c
CHANGED
@@ -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 ?
|
22
|
-
|
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
|
-
|
101
|
+
rb_str_buf_cat(str, s, n);
|
116
102
|
}
|
117
103
|
|
118
104
|
static VALUE
|
119
|
-
str_to_latin(
|
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:
|
157
|
-
case LAT_DJ:
|
158
|
-
case LAT_SH:
|
159
|
-
case LAT_ZH:
|
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:
|
162
|
-
case LAT_CAP_SH:
|
163
|
-
case LAT_CAP_ZH:
|
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
|
-
|
167
|
-
|
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
|
-
|
156
|
+
rb_str_buf_cat(dest, pos, len);
|
171
157
|
}
|
172
158
|
}
|
173
159
|
|
174
|
-
/*
|
160
|
+
/* Mark a start of inconsequential sequence */
|
175
161
|
else if (codepoint < CYR_CAP_DJ || codepoint > CYR_DZ) {
|
176
|
-
|
162
|
+
if (!seq_start)
|
163
|
+
seq_start = pos;
|
177
164
|
}
|
178
165
|
|
179
166
|
/* Cyrillic -> Latin conversion */
|
180
|
-
else
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
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
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
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(
|
290
|
-
return str_to_latin(
|
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(
|
295
|
-
return str_to_latin(
|
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(
|
300
|
-
return str_to_latin(
|
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(
|
305
|
-
return str_to_latin(
|
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",
|
311
|
-
rb_define_method(rb_cString, "to_latin!", rb_str_to_latin_bang,
|
312
|
-
rb_define_method(rb_cString, "to_ascii_latin", rb_str_to_ascii_latin,
|
313
|
-
rb_define_method(rb_cString, "to_ascii_latin!", rb_str_to_ascii_latin_bang,
|
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
|
}
|
data/lib/byk/version.rb
CHANGED
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
|
+
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-
|
11
|
+
date: 2015-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|