byk 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +19 -0
- data/README.md +19 -19
- data/ext/byk/byk.c +108 -111
- data/lib/byk/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2fb4e839b91bf3348e5c59e0e52b97bbbaec43de
|
4
|
+
data.tar.gz: 1a5d496e1fe684cba330eed517c3b8de5ad573a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9fc2e29e20dad1e0c517afd3c35d60340f256ce44bcda71a9e2fb344be4b685c2fa3b85350dd347e890143c6f9a84a94896eec9df0bfb8ec9b7be8811907053f
|
7
|
+
data.tar.gz: c81f02b4075cdc5b82b3f17f47fb4ea74dbcfa29bbe466731c685ec5a7b3d1c54b329075eb8c2d1731b76f03b9bf9b24646ea3aeff88f8ab17577297d0bae960
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
### Byk 0.4.0 (2015-04-17)
|
4
|
+
|
5
|
+
* Performance tuning and refactoring, ~10% speedup
|
6
|
+
* Updated benchmark
|
7
|
+
* Introduced changelog
|
8
|
+
|
9
|
+
### Byk 0.3.0 (2015-04-16)
|
10
|
+
|
11
|
+
* MRI 1.9.2 support
|
12
|
+
|
13
|
+
### Byk 0.2.0 (2015-04-15)
|
14
|
+
|
15
|
+
* MRI 1.9.3 support
|
16
|
+
|
17
|
+
### Byk 0.1.0 (2015-04-15)
|
18
|
+
|
19
|
+
* First release
|
data/README.md
CHANGED
@@ -1,13 +1,16 @@
|
|
1
1
|
Byk
|
2
2
|
===
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
![byk](https://cloud.githubusercontent.com/assets/626128/7155207/07545960-e35d-11e4-804e-5fdee70a3e30.png)
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/byk.svg)](https://rubygems.org/gems/byk)
|
5
|
+
[![Build Status](https://travis-ci.org/topalovic/byk.svg?branch=master)](https://travis-ci.org/topalovic/byk)
|
7
6
|
|
8
|
-
|
7
|
+
Ruby gem for fast transliteration of Serbian Cyrillic into Latin
|
8
|
+
<br />
|
9
|
+
<sub>Inspired by @dejan's
|
9
10
|
[nice little gem](https://github.com/dejan/srbovanje),
|
10
|
-
this one comes with a C-optimized twist
|
11
|
+
this one comes with a C-optimized twist</sub>
|
12
|
+
|
13
|
+
![byk](https://cloud.githubusercontent.com/assets/626128/7155207/07545960-e35d-11e4-804e-5fdee70a3e30.png)
|
11
14
|
|
12
15
|
|
13
16
|
## Installation
|
@@ -61,8 +64,8 @@ Note that these methods take into account the
|
|
61
64
|
[two-letter capitalization rules](http://sr.wikipedia.org/wiki/Gajica#Abeceda):
|
62
65
|
|
63
66
|
```ruby
|
64
|
-
"ЉИЉА Љиљановић".to_latin
|
65
|
-
"ĐORĐE Đorđević".to_ascii_latin
|
67
|
+
"ЉИЉА Љиљановић".to_latin # => "LJILJA Ljiljanović"
|
68
|
+
"ĐORĐE Đorđević".to_ascii_latin # => "DJORDJE Djordjevic"
|
66
69
|
```
|
67
70
|
|
68
71
|
|
@@ -74,24 +77,21 @@ my hardware. YMMV of course.
|
|
74
77
|
|
75
78
|
## Raison d'être
|
76
79
|
|
77
|
-
This kind of speed-up might
|
78
|
-
|
79
|
-
|
80
|
+
This kind of speed-up might be worthwhile for massive localization
|
81
|
+
projects, e.g. sites supporting dual script content. Remember,
|
82
|
+
`Benchmark` is your friend.
|
80
83
|
|
81
|
-
I found
|
82
|
-
|
84
|
+
I found transliteration to be a straightforward little problem that
|
85
|
+
lends itself well to optimization. It also gave me an excuse to play
|
83
86
|
with Ruby extensions, so there :smile_cat:
|
84
87
|
|
85
88
|
|
86
89
|
## Compatibility
|
87
90
|
|
88
|
-
Byk is supported under MRI Ruby
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
## Status
|
93
|
-
|
94
|
-
[![Build Status](https://travis-ci.org/topalovic/byk.svg?branch=master)](https://travis-ci.org/topalovic/byk)
|
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.
|
95
95
|
|
96
96
|
|
97
97
|
## License
|
data/ext/byk/byk.c
CHANGED
@@ -17,9 +17,9 @@ rb_check_arity(int argc, int min, int max)
|
|
17
17
|
|
18
18
|
#define STR_ENC_GET(str) rb_enc_from_index(ENCODING_GET(str))
|
19
19
|
|
20
|
-
#define STR_CAT_COND_ASCII(
|
21
|
-
|
22
|
-
|
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)
|
23
23
|
|
24
24
|
enum {
|
25
25
|
LAT_CAP_TJ=262,
|
@@ -106,7 +106,6 @@ is_upper_case(unsigned int c)
|
|
106
106
|
|| c == LAT_CAP_ZH);
|
107
107
|
}
|
108
108
|
|
109
|
-
|
110
109
|
static void
|
111
110
|
str_cat_char(VALUE str, unsigned int c, rb_encoding *enc)
|
112
111
|
{
|
@@ -123,8 +122,10 @@ str_to_latin(int argc, VALUE *argv, VALUE str, int ascii, int bang)
|
|
123
122
|
long dest_len;
|
124
123
|
char *pos, *end;
|
125
124
|
rb_encoding *enc;
|
125
|
+
int len, next_len;
|
126
|
+
int seen_upper = 0;
|
127
|
+
int force_upper = 0;
|
126
128
|
unsigned int codepoint = 0;
|
127
|
-
unsigned int prev_codepoint = 0;
|
128
129
|
unsigned int next_codepoint = 0;
|
129
130
|
|
130
131
|
rb_check_arity(argc, 0, 1);
|
@@ -134,27 +135,21 @@ str_to_latin(int argc, VALUE *argv, VALUE str, int ascii, int bang)
|
|
134
135
|
|
135
136
|
end = RSTRING_END(str);
|
136
137
|
enc = STR_ENC_GET(str);
|
137
|
-
dest_len = RSTRING_LEN(str) + 30;
|
138
|
+
dest_len = RSTRING_LEN(str) + 30;
|
138
139
|
dest = rb_str_buf_new(dest_len);
|
139
140
|
rb_enc_associate(dest, enc);
|
140
141
|
|
141
|
-
|
142
|
-
int len;
|
143
|
-
int force_upper = 0;
|
144
|
-
|
145
|
-
prev_codepoint = codepoint;
|
146
|
-
codepoint = rb_enc_codepoint_len(pos, end, &len, enc);
|
147
|
-
next_codepoint = 0;
|
142
|
+
codepoint = rb_enc_codepoint_len(pos, end, &len, enc);
|
148
143
|
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
/* TODO Trim down to one rb_enc_codepoint call per iter. */
|
153
|
-
next_codepoint = rb_enc_codepoint(pos + len, end, enc);
|
154
|
-
force_upper = is_upper_case(next_codepoint);
|
144
|
+
while (pos < end) {
|
145
|
+
if (pos + len < end) {
|
146
|
+
next_codepoint = rb_enc_codepoint_len(pos + len, end, &next_len, enc);
|
155
147
|
}
|
156
148
|
|
157
|
-
|
149
|
+
force_upper = seen_upper || is_upper_case(next_codepoint);
|
150
|
+
seen_upper = is_upper_case(codepoint);
|
151
|
+
|
152
|
+
/* Latin -> "ASCII Latin" conversion */
|
158
153
|
if (ascii && codepoint >= LAT_CAP_TJ && codepoint <= LAT_ZH) {
|
159
154
|
switch (codepoint) {
|
160
155
|
case LAT_TJ:
|
@@ -174,107 +169,109 @@ str_to_latin(int argc, VALUE *argv, VALUE str, int ascii, int bang)
|
|
174
169
|
default:
|
175
170
|
rb_enc_str_buf_cat(dest, pos, len, enc);
|
176
171
|
}
|
177
|
-
pos += len;
|
178
|
-
continue;
|
179
172
|
}
|
180
173
|
|
181
|
-
/*
|
182
|
-
if (codepoint < CYR_CAP_DJ || codepoint > CYR_DZ) {
|
174
|
+
/* Non-Cyrillic codepoints */
|
175
|
+
else if (codepoint < CYR_CAP_DJ || codepoint > CYR_DZ) {
|
183
176
|
rb_enc_str_buf_cat(dest, pos, len, enc);
|
184
|
-
pos += len;
|
185
|
-
continue;
|
186
177
|
}
|
187
178
|
|
188
|
-
/* Cyrillic ->
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
case CYR_M: rb_enc_str_buf_cat(dest, "m", 1, enc); break;
|
223
|
-
case CYR_N: rb_enc_str_buf_cat(dest, "n", 1, enc); break;
|
224
|
-
case CYR_O: rb_enc_str_buf_cat(dest, "o", 1, enc); break;
|
225
|
-
case CYR_P: rb_enc_str_buf_cat(dest, "p", 1, enc); break;
|
226
|
-
case CYR_R: rb_enc_str_buf_cat(dest, "r", 1, enc); break;
|
227
|
-
case CYR_S: rb_enc_str_buf_cat(dest, "s", 1, enc); break;
|
228
|
-
case CYR_T: rb_enc_str_buf_cat(dest, "t", 1, enc); break;
|
229
|
-
case CYR_U: rb_enc_str_buf_cat(dest, "u", 1, enc); break;
|
230
|
-
case CYR_F: rb_enc_str_buf_cat(dest, "f", 1, enc); break;
|
231
|
-
case CYR_H: rb_enc_str_buf_cat(dest, "h", 1, enc); break;
|
232
|
-
case CYR_C: rb_enc_str_buf_cat(dest, "c", 1, enc); break;
|
233
|
-
case CYR_J: rb_enc_str_buf_cat(dest, "j", 1, enc); break;
|
234
|
-
case CYR_LJ: rb_enc_str_buf_cat(dest, "lj", 2, enc); break;
|
235
|
-
case CYR_NJ: rb_enc_str_buf_cat(dest, "nj", 2, enc); break;
|
236
|
-
case CYR_DJ: STR_CAT_COND_ASCII(ascii, dest, "dj", LAT_DJ, 2, enc); break;
|
237
|
-
case CYR_TJ: STR_CAT_COND_ASCII(ascii, dest, "c", LAT_TJ, 1, enc); break;
|
238
|
-
case CYR_CH: STR_CAT_COND_ASCII(ascii, dest, "c", LAT_CH, 1, enc); break;
|
239
|
-
case CYR_ZH: STR_CAT_COND_ASCII(ascii, dest, "z", LAT_ZH, 1, enc); break;
|
240
|
-
case CYR_SH: STR_CAT_COND_ASCII(ascii, dest, "s", LAT_SH, 1, enc); 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
|
-
|
246
|
-
/* Several special cases */
|
247
|
-
case CYR_CAP_LJ:
|
248
|
-
rb_enc_str_buf_cat(dest, (force_upper ? "LJ" : "Lj"), 2, enc);
|
249
|
-
break;
|
250
|
-
|
251
|
-
case CYR_CAP_NJ:
|
252
|
-
rb_enc_str_buf_cat(dest, (force_upper ? "NJ" : "Nj"), 2, enc);
|
253
|
-
break;
|
254
|
-
|
255
|
-
case CYR_CAP_DJ:
|
256
|
-
STR_CAT_COND_ASCII(ascii, dest, (force_upper ? "DJ" : "Dj"), LAT_CAP_DJ, 2, enc);
|
257
|
-
break;
|
258
|
-
|
259
|
-
case CYR_CAP_DZ:
|
260
|
-
rb_enc_str_buf_cat(dest, "D", 1, enc);
|
261
|
-
if (force_upper) {
|
262
|
-
STR_CAT_COND_ASCII(ascii, dest, "Z", LAT_CAP_ZH, 1, enc);
|
263
|
-
}
|
264
|
-
else {
|
179
|
+
/* 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);
|
265
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);
|
266
217
|
}
|
267
|
-
|
268
|
-
|
269
|
-
case CYR_DZ:
|
270
|
-
rb_enc_str_buf_cat(dest, "d", 1, enc);
|
271
|
-
STR_CAT_COND_ASCII(ascii, dest, "z", LAT_ZH, 1, enc);
|
272
|
-
break;
|
218
|
+
}
|
273
219
|
|
274
|
-
|
275
|
-
|
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 {
|
264
|
+
STR_CAT_COND_ASCII(ascii, dest, "z", LAT_ZH, 1, enc);
|
265
|
+
}
|
266
|
+
break;
|
267
|
+
default:
|
268
|
+
rb_enc_str_buf_cat(dest, pos, len, enc);
|
269
|
+
}
|
276
270
|
}
|
277
271
|
pos += len;
|
272
|
+
len = next_len;
|
273
|
+
codepoint = next_codepoint;
|
274
|
+
next_codepoint = 0;
|
278
275
|
}
|
279
276
|
|
280
277
|
if (bang) {
|
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.4.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-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|
@@ -46,6 +46,7 @@ extensions:
|
|
46
46
|
- ext/byk/extconf.rb
|
47
47
|
extra_rdoc_files: []
|
48
48
|
files:
|
49
|
+
- CHANGELOG.md
|
49
50
|
- LICENSE
|
50
51
|
- README.md
|
51
52
|
- ext/byk/byk.c
|