berns 3.1.0 → 3.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 493be2cb9fdf15a22158a4a236322702fa55d11f2b8e5a4d1e739aec05f38701
4
- data.tar.gz: 41c7ba620dccaf7b3dddc4f7c20bab79a8dba0f5369c5cfb7a68ac9b067537a3
3
+ metadata.gz: 15dd768826a0b862ad1146c4ba331bd5735f791199aed34d0a217c0ad7fc94ca
4
+ data.tar.gz: 8a7fb6f17dfd7805163003ac751209138b7b5a7bd286afa3d72fb157d31328e3
5
5
  SHA512:
6
- metadata.gz: d873d341ec3d4561940d497e0a3d8ea5f0c435261ef71c31c845a5ad89a42e92ed92b6720f76ea58c4f61228bedb1f7243c2bbd1c2e906069abe531c43f0eda6
7
- data.tar.gz: 89ead672a54fd3d294d9a85ab428a98279fc063f4ba8811f14f353a660939eddb2468c86449f7e332fcec9f3c102d83367049c51da7ca9230ba1a774fc9e4ffc
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* argv, RB_UNUSED_VAR(VALUE self)) { \
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
- char *tag = #element_name; \
54
- char *string = void_element(tag, strlen(tag), &argv[0]); \
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* argv, RB_UNUSED_VAR(VALUE self)) { \
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
- char *tag = #element_name; \
70
- char *string = element(tag, strlen(tag), RSTRING_PTR(content), RSTRING_LEN(content), &argv[0]); \
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 < end) {
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 *value) {
172
- if (TYPE(*value) == T_IMEMO) {
173
- return calloc(0, 1);
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(*value, T_HASH);
180
+ Check_Type(value, T_HASH);
177
181
 
178
- if (rb_hash_size(*value) == 1 ) {
179
- return calloc(0, 1);
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(*value, rb_intern("keys"), 0);
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(*value, subkey);
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 + 1;
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 *end = subattr + sizeof(subattr);
231
+ char *subend = subattr + subattr_len + 1;
228
232
 
229
233
  if (attrlen > 0) {
230
- ptr = stecpy(ptr, attr, end);
234
+ ptr = stecpy(ptr, attr, subend);
231
235
  }
232
236
 
233
237
  if (attrlen > 0 && subkey_len > 0) {
234
- ptr = stecpy(ptr, dash, end);
238
+ ptr = stecpy(ptr, dash, subend);
235
239
  }
236
240
 
237
- stecpy(ptr, RSTRING_PTR(subkey), end);
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 = string_value_to_attribute(subattr, subattr_len, "", 0);
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, &subvalue);
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 *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(*value)) {
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 = calloc(0, 1);
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(*value), RSTRING_LEN(*value));
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(*value);
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(*value, rb_intern("to_s"), 0);
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, &value);
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, &attributes);
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 *attributes) {
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(*attributes) == T_IMEMO) {
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), &attributes);
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 *attributes) {
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), &attributes);
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
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  require 'mkmf'
3
3
 
4
- $CFLAGS = '-O3 -msse4' # rubocop:disable Style/GlobalVars
4
+ $CFLAGS << ' -O2 -msse4 -std=c99' # rubocop:disable Style/GlobalVars
5
5
 
6
6
  dir_config('berns')
7
7
  create_header
data/lib/berns/berns.so CHANGED
Binary file
data/lib/berns/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Berns
3
- VERSION = '3.1.0'
3
+ VERSION = '3.1.5'
4
4
  end
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.0
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-10 00:00:00.000000000 Z
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