berns 3.1.0 → 3.1.5
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/ext/berns/berns.c +164 -158
- data/ext/berns/extconf.rb +1 -1
- data/lib/berns/berns.so +0 -0
- data/lib/berns/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 15dd768826a0b862ad1146c4ba331bd5735f791199aed34d0a217c0ad7fc94ca
|
4
|
+
data.tar.gz: 8a7fb6f17dfd7805163003ac751209138b7b5a7bd286afa3d72fb157d31328e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d953ee5567cd4e448f3fd11b3075bcee6c5e1c6253f56714d9c3355ca5a1a7dcb6170bca926f8b537a9dd1e3bb6b218caa408b60e9d8d1146b55cd4b38fd9a58
|
7
|
+
data.tar.gz: 735a2e506fe777f9ab0932bb8d00aecd5cf01fafc03c9780ae1776014b016f61c01e7b8938d3fce80d15bfdb140a104367fe3361b7b0bd5d734fef1a6dc41a05
|
data/ext/berns/berns.c
CHANGED
@@ -47,11 +47,12 @@ static const size_t sllen = 1;
|
|
47
47
|
* Macro to define a "dynamic" function that generates a void element.
|
48
48
|
*/
|
49
49
|
#define VOID_ELEMENT(element_name) \
|
50
|
-
static VALUE external_##element_name##_element(int argc, VALUE*
|
50
|
+
static VALUE external_##element_name##_element(int argc, VALUE *argv, RB_UNUSED_VAR(VALUE self)) { \
|
51
51
|
rb_check_arity(argc, 0, 1); \
|
52
52
|
\
|
53
|
-
|
54
|
-
char *
|
53
|
+
VALUE attrs = argv[0]; \
|
54
|
+
const char *tag = #element_name; \
|
55
|
+
char *string = void_element(tag, strlen(tag), attrs); \
|
55
56
|
VALUE rstring = rb_utf8_str_new_cstr(string); \
|
56
57
|
free(string); \
|
57
58
|
\
|
@@ -62,12 +63,13 @@ static const size_t sllen = 1;
|
|
62
63
|
* Macro to define a "dynamic" function that generates a standard element.
|
63
64
|
*/
|
64
65
|
#define STANDARD_ELEMENT(element_name) \
|
65
|
-
static VALUE external_##element_name##_element(int argc, VALUE*
|
66
|
+
static VALUE external_##element_name##_element(int argc, VALUE *argv, RB_UNUSED_VAR(VALUE self)) { \
|
66
67
|
rb_check_arity(argc, 0, 1); \
|
67
68
|
\
|
68
69
|
CONTENT_FROM_BLOCK; \
|
69
|
-
|
70
|
-
char *
|
70
|
+
VALUE attrs = argv[0]; \
|
71
|
+
const char *tag = #element_name; \
|
72
|
+
char *string = element(tag, strlen(tag), RSTRING_PTR(content), RSTRING_LEN(content), attrs); \
|
71
73
|
VALUE rstring = rb_utf8_str_new_cstr(string); \
|
72
74
|
free(string); \
|
73
75
|
\
|
@@ -78,12 +80,16 @@ static const size_t sllen = 1;
|
|
78
80
|
/*
|
79
81
|
* "Safe strcpy" - https://twitter.com/hyc_symas/status/1102573036534972416?s=12
|
80
82
|
*/
|
81
|
-
static char *stecpy(char *destination, const char *source, const char *end) {
|
83
|
+
static char * stecpy(char *destination, const char *source, const char *end) {
|
84
|
+
if (end) {
|
85
|
+
end--;
|
86
|
+
}
|
87
|
+
|
82
88
|
while (*source && destination < end) {
|
83
89
|
*destination++ = *source++;
|
84
90
|
}
|
85
91
|
|
86
|
-
if (destination
|
92
|
+
if (destination) {
|
87
93
|
*destination = '\0';
|
88
94
|
}
|
89
95
|
|
@@ -123,7 +129,6 @@ static VALUE external_escape_html(const VALUE self, VALUE string) {
|
|
123
129
|
static char * empty_value_to_attribute(const char *attr, const size_t attrlen) {
|
124
130
|
size_t total_size = attrlen + 1;
|
125
131
|
char *dest = malloc(total_size);
|
126
|
-
char *ptr = NULL;
|
127
132
|
char *end = dest + total_size;
|
128
133
|
|
129
134
|
stecpy(dest, attr, end);
|
@@ -140,7 +145,6 @@ static char * string_value_to_attribute(const char *attr, const size_t attrlen,
|
|
140
145
|
if (vallen == 0) {
|
141
146
|
size_t total_size = attrlen + 1;
|
142
147
|
char *dest = malloc(total_size);
|
143
|
-
char *ptr = NULL;
|
144
148
|
char *end = dest + total_size;
|
145
149
|
|
146
150
|
stecpy(dest, attr, end);
|
@@ -168,21 +172,21 @@ static char * string_value_to_attribute(const char *attr, const size_t attrlen,
|
|
168
172
|
}
|
169
173
|
}
|
170
174
|
|
171
|
-
static char * hash_value_to_attribute(char *attr, const size_t attrlen, VALUE
|
172
|
-
if (TYPE(
|
173
|
-
return
|
175
|
+
static char * hash_value_to_attribute(const char *attr, const size_t attrlen, VALUE value) {
|
176
|
+
if (TYPE(value) == T_IMEMO) {
|
177
|
+
return strdup("");
|
174
178
|
}
|
175
179
|
|
176
|
-
Check_Type(
|
180
|
+
Check_Type(value, T_HASH);
|
177
181
|
|
178
|
-
if (rb_hash_size(
|
179
|
-
return
|
182
|
+
if (rb_hash_size(value) == 1) {
|
183
|
+
return strdup("");
|
180
184
|
}
|
181
185
|
|
182
186
|
VALUE subkey;
|
183
187
|
VALUE subvalue;
|
184
188
|
|
185
|
-
const VALUE keys = rb_funcall(
|
189
|
+
const VALUE keys = rb_funcall(value, rb_intern("keys"), 0);
|
186
190
|
const VALUE length = RARRAY_LEN(keys);
|
187
191
|
|
188
192
|
size_t allocated = 256;
|
@@ -194,7 +198,7 @@ static char * hash_value_to_attribute(char *attr, const size_t attrlen, VALUE *v
|
|
194
198
|
|
195
199
|
for (unsigned int i = 0; i < length; i++) {
|
196
200
|
subkey = rb_ary_entry(keys, i);
|
197
|
-
subvalue = rb_hash_aref(
|
201
|
+
subvalue = rb_hash_aref(value, subkey);
|
198
202
|
|
199
203
|
switch(TYPE(subkey)) {
|
200
204
|
case T_STRING:
|
@@ -211,7 +215,7 @@ static char * hash_value_to_attribute(char *attr, const size_t attrlen, VALUE *v
|
|
211
215
|
break;
|
212
216
|
}
|
213
217
|
|
214
|
-
size_t subattr_len = attrlen
|
218
|
+
size_t subattr_len = attrlen;
|
215
219
|
size_t subkey_len = RSTRING_LEN(subkey);
|
216
220
|
|
217
221
|
if (attrlen > 0 && subkey_len > 0) {
|
@@ -222,25 +226,31 @@ static char * hash_value_to_attribute(char *attr, const size_t attrlen, VALUE *v
|
|
222
226
|
subattr_len += subkey_len;
|
223
227
|
}
|
224
228
|
|
225
|
-
char subattr[subattr_len];
|
229
|
+
char subattr[subattr_len + 1];
|
226
230
|
char *ptr = subattr;
|
227
|
-
char *
|
231
|
+
char *subend = subattr + subattr_len + 1;
|
228
232
|
|
229
233
|
if (attrlen > 0) {
|
230
|
-
ptr = stecpy(ptr, attr,
|
234
|
+
ptr = stecpy(ptr, attr, subend);
|
231
235
|
}
|
232
236
|
|
233
237
|
if (attrlen > 0 && subkey_len > 0) {
|
234
|
-
ptr = stecpy(ptr, dash,
|
238
|
+
ptr = stecpy(ptr, dash, subend);
|
235
239
|
}
|
236
240
|
|
237
|
-
stecpy(ptr, RSTRING_PTR(subkey),
|
241
|
+
stecpy(ptr, RSTRING_PTR(subkey), subend);
|
238
242
|
|
239
243
|
char *combined;
|
240
244
|
|
241
245
|
switch(TYPE(subvalue)) {
|
246
|
+
case T_FALSE:
|
247
|
+
combined = strdup("");
|
248
|
+
break;
|
249
|
+
|
250
|
+
case T_NIL:
|
251
|
+
/* Fall through. */
|
242
252
|
case T_TRUE:
|
243
|
-
combined =
|
253
|
+
combined = empty_value_to_attribute(subattr, subattr_len);
|
244
254
|
break;
|
245
255
|
|
246
256
|
case T_STRING:
|
@@ -252,13 +262,8 @@ static char * hash_value_to_attribute(char *attr, const size_t attrlen, VALUE *v
|
|
252
262
|
combined = string_value_to_attribute(subattr, subattr_len, RSTRING_PTR(subvalue), RSTRING_LEN(subvalue));
|
253
263
|
break;
|
254
264
|
|
255
|
-
case T_NIL:
|
256
|
-
subvalue = rb_utf8_str_new_cstr("");
|
257
|
-
combined = string_value_to_attribute(subattr, subattr_len, RSTRING_PTR(subvalue), RSTRING_LEN(subvalue));
|
258
|
-
break;
|
259
|
-
|
260
265
|
case T_HASH:
|
261
|
-
combined = hash_value_to_attribute(subattr, subattr_len,
|
266
|
+
combined = hash_value_to_attribute(subattr, subattr_len, subvalue);
|
262
267
|
break;
|
263
268
|
|
264
269
|
default:
|
@@ -268,7 +273,7 @@ static char * hash_value_to_attribute(char *attr, const size_t attrlen, VALUE *v
|
|
268
273
|
}
|
269
274
|
|
270
275
|
size_t combined_len = strlen(combined);
|
271
|
-
size_t size_to_append = combined_len;
|
276
|
+
size_t size_to_append = combined_len + 1;
|
272
277
|
|
273
278
|
if (i > 0) {
|
274
279
|
size_to_append += splen;
|
@@ -309,7 +314,7 @@ static char * hash_value_to_attribute(char *attr, const size_t attrlen, VALUE *v
|
|
309
314
|
/*
|
310
315
|
* Convert an attribute name and value into a string.
|
311
316
|
*/
|
312
|
-
static char * to_attribute(VALUE attr, VALUE
|
317
|
+
static char * to_attribute(VALUE attr, VALUE value) {
|
313
318
|
switch(TYPE(attr)) {
|
314
319
|
case T_SYMBOL:
|
315
320
|
attr = rb_sym2str(attr);
|
@@ -323,26 +328,27 @@ static char * to_attribute(VALUE attr, VALUE *value) {
|
|
323
328
|
char *val = NULL;
|
324
329
|
VALUE str;
|
325
330
|
|
326
|
-
switch(TYPE(
|
331
|
+
switch(TYPE(value)) {
|
327
332
|
case T_NIL:
|
333
|
+
/* Fall through. */
|
328
334
|
case T_TRUE:
|
329
335
|
val = empty_value_to_attribute(RSTRING_PTR(attr), RSTRING_LEN(attr));
|
330
336
|
break;
|
331
337
|
case T_FALSE:
|
332
|
-
val =
|
338
|
+
val = strdup("");
|
333
339
|
break;
|
334
340
|
case T_HASH:
|
335
341
|
val = hash_value_to_attribute(RSTRING_PTR(attr), RSTRING_LEN(attr), value);
|
336
342
|
break;
|
337
343
|
case T_STRING:
|
338
|
-
val = string_value_to_attribute(RSTRING_PTR(attr), RSTRING_LEN(attr), RSTRING_PTR(
|
344
|
+
val = string_value_to_attribute(RSTRING_PTR(attr), RSTRING_LEN(attr), RSTRING_PTR(value), RSTRING_LEN(value));
|
339
345
|
break;
|
340
346
|
case T_SYMBOL:
|
341
|
-
str = rb_sym2str(
|
347
|
+
str = rb_sym2str(value);
|
342
348
|
val = string_value_to_attribute(RSTRING_PTR(attr), RSTRING_LEN(attr), RSTRING_PTR(str), RSTRING_LEN(str));
|
343
349
|
break;
|
344
350
|
default:
|
345
|
-
str = rb_funcall(
|
351
|
+
str = rb_funcall(value, rb_intern("to_s"), 0);
|
346
352
|
val = string_value_to_attribute(RSTRING_PTR(attr), RSTRING_LEN(attr), RSTRING_PTR(str), RSTRING_LEN(str));
|
347
353
|
break;
|
348
354
|
}
|
@@ -368,7 +374,7 @@ static VALUE external_to_attribute(RB_UNUSED_VAR(VALUE self), VALUE attr, VALUE
|
|
368
374
|
|
369
375
|
StringValue(attr);
|
370
376
|
|
371
|
-
char *val = to_attribute(attr,
|
377
|
+
char *val = to_attribute(attr, value);
|
372
378
|
VALUE rstring = rb_utf8_str_new_cstr(val);
|
373
379
|
free(val);
|
374
380
|
|
@@ -388,8 +394,8 @@ static VALUE external_to_attributes(RB_UNUSED_VAR(VALUE self), VALUE attributes)
|
|
388
394
|
return rb_utf8_str_new_cstr("");
|
389
395
|
}
|
390
396
|
|
391
|
-
char *empty = "";
|
392
|
-
char *attrs = hash_value_to_attribute(empty, 0,
|
397
|
+
const char *empty = "";
|
398
|
+
char *attrs = hash_value_to_attribute(empty, 0, attributes);
|
393
399
|
|
394
400
|
VALUE rstring = rb_utf8_str_new_cstr(attrs);
|
395
401
|
free(attrs);
|
@@ -397,9 +403,9 @@ static VALUE external_to_attributes(RB_UNUSED_VAR(VALUE self), VALUE attributes)
|
|
397
403
|
return rstring;
|
398
404
|
}
|
399
405
|
|
400
|
-
static char * void_element(char *tag, size_t tlen, VALUE
|
406
|
+
static char * void_element(const char *tag, size_t tlen, VALUE attributes) {
|
401
407
|
/* T_IMEMO is what we get if an optional argument was not passed. */
|
402
|
-
if (TYPE(
|
408
|
+
if (TYPE(attributes) == T_IMEMO) {
|
403
409
|
size_t total = tag_olen + tlen + tag_clen + 1;
|
404
410
|
char *string = malloc(total);
|
405
411
|
char *ptr;
|
@@ -411,7 +417,7 @@ static char * void_element(char *tag, size_t tlen, VALUE *attributes) {
|
|
411
417
|
|
412
418
|
return string;
|
413
419
|
} else {
|
414
|
-
char *empty = "";
|
420
|
+
const char *empty = "";
|
415
421
|
char *attrs = hash_value_to_attribute(empty, 0, attributes);
|
416
422
|
|
417
423
|
size_t total = tag_olen + tlen + splen + strlen(attrs) + tag_clen + 1;
|
@@ -450,7 +456,7 @@ static VALUE external_void_element(int argc, VALUE *arguments, RB_UNUSED_VAR(VAL
|
|
450
456
|
|
451
457
|
StringValue(tag);
|
452
458
|
|
453
|
-
char *string = void_element(RSTRING_PTR(tag), RSTRING_LEN(tag),
|
459
|
+
char *string = void_element(RSTRING_PTR(tag), RSTRING_LEN(tag), attributes);
|
454
460
|
VALUE rstring = rb_utf8_str_new_cstr(string);
|
455
461
|
|
456
462
|
free(string);
|
@@ -458,8 +464,8 @@ static VALUE external_void_element(int argc, VALUE *arguments, RB_UNUSED_VAR(VAL
|
|
458
464
|
return rstring;
|
459
465
|
}
|
460
466
|
|
461
|
-
static char * element(char *tag, size_t tlen, char *content, size_t conlen, VALUE
|
462
|
-
char *empty = "";
|
467
|
+
static char * element(const char *tag, size_t tlen, char *content, size_t conlen, VALUE attributes) {
|
468
|
+
const char *empty = "";
|
463
469
|
char *attrs = hash_value_to_attribute(empty, 0, attributes);
|
464
470
|
size_t alen = strlen(attrs);
|
465
471
|
|
@@ -525,123 +531,123 @@ static VALUE external_element(int argc, VALUE *arguments, RB_UNUSED_VAR(VALUE se
|
|
525
531
|
|
526
532
|
CONTENT_FROM_BLOCK;
|
527
533
|
|
528
|
-
char *string = element(RSTRING_PTR(tag), RSTRING_LEN(tag), RSTRING_PTR(content), RSTRING_LEN(content),
|
534
|
+
char *string = element(RSTRING_PTR(tag), RSTRING_LEN(tag), RSTRING_PTR(content), RSTRING_LEN(content), attributes);
|
529
535
|
VALUE rstring = rb_utf8_str_new_cstr(string);
|
530
536
|
free(string);
|
531
537
|
|
532
538
|
return rstring;
|
533
539
|
}
|
534
540
|
|
535
|
-
VOID_ELEMENT(area)
|
536
|
-
VOID_ELEMENT(base)
|
537
|
-
VOID_ELEMENT(br)
|
538
|
-
VOID_ELEMENT(col)
|
539
|
-
VOID_ELEMENT(embed)
|
540
|
-
VOID_ELEMENT(hr)
|
541
|
-
VOID_ELEMENT(img)
|
542
|
-
VOID_ELEMENT(input)
|
543
|
-
VOID_ELEMENT(link)
|
544
|
-
VOID_ELEMENT(menuitem)
|
545
|
-
VOID_ELEMENT(meta)
|
546
|
-
VOID_ELEMENT(param)
|
547
|
-
VOID_ELEMENT(source)
|
548
|
-
VOID_ELEMENT(track)
|
549
|
-
VOID_ELEMENT(wbr)
|
550
|
-
|
551
|
-
STANDARD_ELEMENT(a)
|
552
|
-
STANDARD_ELEMENT(abbr)
|
553
|
-
STANDARD_ELEMENT(address)
|
554
|
-
STANDARD_ELEMENT(article)
|
555
|
-
STANDARD_ELEMENT(aside)
|
556
|
-
STANDARD_ELEMENT(audio)
|
557
|
-
STANDARD_ELEMENT(b)
|
558
|
-
STANDARD_ELEMENT(bdi)
|
559
|
-
STANDARD_ELEMENT(bdo)
|
560
|
-
STANDARD_ELEMENT(blockquote)
|
561
|
-
STANDARD_ELEMENT(body)
|
562
|
-
STANDARD_ELEMENT(button)
|
563
|
-
STANDARD_ELEMENT(canvas)
|
564
|
-
STANDARD_ELEMENT(caption)
|
565
|
-
STANDARD_ELEMENT(cite)
|
566
|
-
STANDARD_ELEMENT(code)
|
567
|
-
STANDARD_ELEMENT(colgroup)
|
568
|
-
STANDARD_ELEMENT(datalist)
|
569
|
-
STANDARD_ELEMENT(dd)
|
570
|
-
STANDARD_ELEMENT(del)
|
571
|
-
STANDARD_ELEMENT(details)
|
572
|
-
STANDARD_ELEMENT(dfn)
|
573
|
-
STANDARD_ELEMENT(dialog)
|
574
|
-
STANDARD_ELEMENT(div)
|
575
|
-
STANDARD_ELEMENT(dl)
|
576
|
-
STANDARD_ELEMENT(dt)
|
577
|
-
STANDARD_ELEMENT(em)
|
578
|
-
STANDARD_ELEMENT(fieldset)
|
579
|
-
STANDARD_ELEMENT(figcaption)
|
580
|
-
STANDARD_ELEMENT(figure)
|
581
|
-
STANDARD_ELEMENT(footer)
|
582
|
-
STANDARD_ELEMENT(form)
|
583
|
-
STANDARD_ELEMENT(h1)
|
584
|
-
STANDARD_ELEMENT(h2)
|
585
|
-
STANDARD_ELEMENT(h3)
|
586
|
-
STANDARD_ELEMENT(h4)
|
587
|
-
STANDARD_ELEMENT(h5)
|
588
|
-
STANDARD_ELEMENT(h6)
|
589
|
-
STANDARD_ELEMENT(head)
|
590
|
-
STANDARD_ELEMENT(header)
|
591
|
-
STANDARD_ELEMENT(html)
|
592
|
-
STANDARD_ELEMENT(i)
|
593
|
-
STANDARD_ELEMENT(iframe)
|
594
|
-
STANDARD_ELEMENT(ins)
|
595
|
-
STANDARD_ELEMENT(kbd)
|
596
|
-
STANDARD_ELEMENT(label)
|
597
|
-
STANDARD_ELEMENT(legend)
|
598
|
-
STANDARD_ELEMENT(li)
|
599
|
-
STANDARD_ELEMENT(main)
|
600
|
-
STANDARD_ELEMENT(map)
|
601
|
-
STANDARD_ELEMENT(mark)
|
602
|
-
STANDARD_ELEMENT(menu)
|
603
|
-
STANDARD_ELEMENT(meter)
|
604
|
-
STANDARD_ELEMENT(nav)
|
605
|
-
STANDARD_ELEMENT(noscript)
|
606
|
-
STANDARD_ELEMENT(object)
|
607
|
-
STANDARD_ELEMENT(ol)
|
608
|
-
STANDARD_ELEMENT(optgroup)
|
609
|
-
STANDARD_ELEMENT(option)
|
610
|
-
STANDARD_ELEMENT(output)
|
611
|
-
STANDARD_ELEMENT(p)
|
612
|
-
STANDARD_ELEMENT(picture)
|
613
|
-
STANDARD_ELEMENT(pre)
|
614
|
-
STANDARD_ELEMENT(progress)
|
615
|
-
STANDARD_ELEMENT(q)
|
616
|
-
STANDARD_ELEMENT(rp)
|
617
|
-
STANDARD_ELEMENT(rt)
|
618
|
-
STANDARD_ELEMENT(ruby)
|
619
|
-
STANDARD_ELEMENT(s)
|
620
|
-
STANDARD_ELEMENT(samp)
|
621
|
-
STANDARD_ELEMENT(script)
|
622
|
-
STANDARD_ELEMENT(section)
|
623
|
-
STANDARD_ELEMENT(select)
|
624
|
-
STANDARD_ELEMENT(small)
|
625
|
-
STANDARD_ELEMENT(span)
|
626
|
-
STANDARD_ELEMENT(strong)
|
627
|
-
STANDARD_ELEMENT(style)
|
628
|
-
STANDARD_ELEMENT(sub)
|
629
|
-
STANDARD_ELEMENT(summary)
|
630
|
-
STANDARD_ELEMENT(table)
|
631
|
-
STANDARD_ELEMENT(tbody)
|
632
|
-
STANDARD_ELEMENT(td)
|
633
|
-
STANDARD_ELEMENT(template)
|
634
|
-
STANDARD_ELEMENT(textarea)
|
635
|
-
STANDARD_ELEMENT(tfoot)
|
636
|
-
STANDARD_ELEMENT(th)
|
637
|
-
STANDARD_ELEMENT(thead)
|
638
|
-
STANDARD_ELEMENT(time)
|
639
|
-
STANDARD_ELEMENT(title)
|
640
|
-
STANDARD_ELEMENT(tr)
|
641
|
-
STANDARD_ELEMENT(u)
|
642
|
-
STANDARD_ELEMENT(ul)
|
643
|
-
STANDARD_ELEMENT(var)
|
644
|
-
STANDARD_ELEMENT(video)
|
541
|
+
VOID_ELEMENT(area)
|
542
|
+
VOID_ELEMENT(base)
|
543
|
+
VOID_ELEMENT(br)
|
544
|
+
VOID_ELEMENT(col)
|
545
|
+
VOID_ELEMENT(embed)
|
546
|
+
VOID_ELEMENT(hr)
|
547
|
+
VOID_ELEMENT(img)
|
548
|
+
VOID_ELEMENT(input)
|
549
|
+
VOID_ELEMENT(link)
|
550
|
+
VOID_ELEMENT(menuitem)
|
551
|
+
VOID_ELEMENT(meta)
|
552
|
+
VOID_ELEMENT(param)
|
553
|
+
VOID_ELEMENT(source)
|
554
|
+
VOID_ELEMENT(track)
|
555
|
+
VOID_ELEMENT(wbr)
|
556
|
+
|
557
|
+
STANDARD_ELEMENT(a)
|
558
|
+
STANDARD_ELEMENT(abbr)
|
559
|
+
STANDARD_ELEMENT(address)
|
560
|
+
STANDARD_ELEMENT(article)
|
561
|
+
STANDARD_ELEMENT(aside)
|
562
|
+
STANDARD_ELEMENT(audio)
|
563
|
+
STANDARD_ELEMENT(b)
|
564
|
+
STANDARD_ELEMENT(bdi)
|
565
|
+
STANDARD_ELEMENT(bdo)
|
566
|
+
STANDARD_ELEMENT(blockquote)
|
567
|
+
STANDARD_ELEMENT(body)
|
568
|
+
STANDARD_ELEMENT(button)
|
569
|
+
STANDARD_ELEMENT(canvas)
|
570
|
+
STANDARD_ELEMENT(caption)
|
571
|
+
STANDARD_ELEMENT(cite)
|
572
|
+
STANDARD_ELEMENT(code)
|
573
|
+
STANDARD_ELEMENT(colgroup)
|
574
|
+
STANDARD_ELEMENT(datalist)
|
575
|
+
STANDARD_ELEMENT(dd)
|
576
|
+
STANDARD_ELEMENT(del)
|
577
|
+
STANDARD_ELEMENT(details)
|
578
|
+
STANDARD_ELEMENT(dfn)
|
579
|
+
STANDARD_ELEMENT(dialog)
|
580
|
+
STANDARD_ELEMENT(div)
|
581
|
+
STANDARD_ELEMENT(dl)
|
582
|
+
STANDARD_ELEMENT(dt)
|
583
|
+
STANDARD_ELEMENT(em)
|
584
|
+
STANDARD_ELEMENT(fieldset)
|
585
|
+
STANDARD_ELEMENT(figcaption)
|
586
|
+
STANDARD_ELEMENT(figure)
|
587
|
+
STANDARD_ELEMENT(footer)
|
588
|
+
STANDARD_ELEMENT(form)
|
589
|
+
STANDARD_ELEMENT(h1)
|
590
|
+
STANDARD_ELEMENT(h2)
|
591
|
+
STANDARD_ELEMENT(h3)
|
592
|
+
STANDARD_ELEMENT(h4)
|
593
|
+
STANDARD_ELEMENT(h5)
|
594
|
+
STANDARD_ELEMENT(h6)
|
595
|
+
STANDARD_ELEMENT(head)
|
596
|
+
STANDARD_ELEMENT(header)
|
597
|
+
STANDARD_ELEMENT(html)
|
598
|
+
STANDARD_ELEMENT(i)
|
599
|
+
STANDARD_ELEMENT(iframe)
|
600
|
+
STANDARD_ELEMENT(ins)
|
601
|
+
STANDARD_ELEMENT(kbd)
|
602
|
+
STANDARD_ELEMENT(label)
|
603
|
+
STANDARD_ELEMENT(legend)
|
604
|
+
STANDARD_ELEMENT(li)
|
605
|
+
STANDARD_ELEMENT(main)
|
606
|
+
STANDARD_ELEMENT(map)
|
607
|
+
STANDARD_ELEMENT(mark)
|
608
|
+
STANDARD_ELEMENT(menu)
|
609
|
+
STANDARD_ELEMENT(meter)
|
610
|
+
STANDARD_ELEMENT(nav)
|
611
|
+
STANDARD_ELEMENT(noscript)
|
612
|
+
STANDARD_ELEMENT(object)
|
613
|
+
STANDARD_ELEMENT(ol)
|
614
|
+
STANDARD_ELEMENT(optgroup)
|
615
|
+
STANDARD_ELEMENT(option)
|
616
|
+
STANDARD_ELEMENT(output)
|
617
|
+
STANDARD_ELEMENT(p)
|
618
|
+
STANDARD_ELEMENT(picture)
|
619
|
+
STANDARD_ELEMENT(pre)
|
620
|
+
STANDARD_ELEMENT(progress)
|
621
|
+
STANDARD_ELEMENT(q)
|
622
|
+
STANDARD_ELEMENT(rp)
|
623
|
+
STANDARD_ELEMENT(rt)
|
624
|
+
STANDARD_ELEMENT(ruby)
|
625
|
+
STANDARD_ELEMENT(s)
|
626
|
+
STANDARD_ELEMENT(samp)
|
627
|
+
STANDARD_ELEMENT(script)
|
628
|
+
STANDARD_ELEMENT(section)
|
629
|
+
STANDARD_ELEMENT(select)
|
630
|
+
STANDARD_ELEMENT(small)
|
631
|
+
STANDARD_ELEMENT(span)
|
632
|
+
STANDARD_ELEMENT(strong)
|
633
|
+
STANDARD_ELEMENT(style)
|
634
|
+
STANDARD_ELEMENT(sub)
|
635
|
+
STANDARD_ELEMENT(summary)
|
636
|
+
STANDARD_ELEMENT(table)
|
637
|
+
STANDARD_ELEMENT(tbody)
|
638
|
+
STANDARD_ELEMENT(td)
|
639
|
+
STANDARD_ELEMENT(template)
|
640
|
+
STANDARD_ELEMENT(textarea)
|
641
|
+
STANDARD_ELEMENT(tfoot)
|
642
|
+
STANDARD_ELEMENT(th)
|
643
|
+
STANDARD_ELEMENT(thead)
|
644
|
+
STANDARD_ELEMENT(time)
|
645
|
+
STANDARD_ELEMENT(title)
|
646
|
+
STANDARD_ELEMENT(tr)
|
647
|
+
STANDARD_ELEMENT(u)
|
648
|
+
STANDARD_ELEMENT(ul)
|
649
|
+
STANDARD_ELEMENT(var)
|
650
|
+
STANDARD_ELEMENT(video)
|
645
651
|
|
646
652
|
void Init_berns() {
|
647
653
|
VALUE Berns = rb_define_module("Berns");
|
data/ext/berns/extconf.rb
CHANGED
data/lib/berns/berns.so
CHANGED
Binary file
|
data/lib/berns/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: berns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.
|
4
|
+
version: 3.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Taylor Beck
|
@@ -9,8 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-05-
|
12
|
+
date: 2021-05-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: benchmark-ips
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
14
28
|
- !ruby/object:Gem::Dependency
|
15
29
|
name: bundler
|
16
30
|
requirement: !ruby/object:Gem::Requirement
|