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 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