ox 2.8.4 → 2.9.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 +6 -0
- data/ext/ox/builder.c +50 -4
- data/lib/ox/version.rb +1 -1
- metadata +2 -3
- data/ext/ox/encode.h +0 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 693a38e51ce73f6ba1d09252209e4591cad455a42cf60a1f883fd7bd20bf06bc
|
4
|
+
data.tar.gz: 97f767135d353480b0c56273c6f1b5829dd9960c8d0930739643a2a0b8182dc2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a5cefe49cf18bc5bd7eaf3a921417f916b2cd5b900189a844e2a31788b97c625f5e2f704096225445622042b1bc157856fd3a2b51db6f868d3de49e16537cb4b
|
7
|
+
data.tar.gz: 9ca097653ef960651953d3b6c8926f30a3769ee9615ecc6fcbf1721b0097604524ed2ed3cce6656eb40eda9518a64247fdadb455b0d5388fd349a49cab812718
|
data/CHANGELOG.md
CHANGED
data/ext/ox/builder.c
CHANGED
@@ -590,7 +590,7 @@ builder_instruct(int argc, VALUE *argv, VALUE self) {
|
|
590
590
|
/* call-seq: element(name,attributes)
|
591
591
|
*
|
592
592
|
* Adds an element with the name and attributes provided. If a block is given
|
593
|
-
* then on closing of the block a pop()
|
593
|
+
* then on closing of the block a pop() is called.
|
594
594
|
*
|
595
595
|
* - +name+ - (String) name of the element
|
596
596
|
* - +attributes+ - (Hash) of the element
|
@@ -640,7 +640,7 @@ builder_element(int argc, VALUE *argv, VALUE self) {
|
|
640
640
|
b->col++;
|
641
641
|
b->pos++;
|
642
642
|
append_string(b, e->name, len, xml_element_chars, false);
|
643
|
-
if (1 < argc) {
|
643
|
+
if (1 < argc && T_HASH == rb_type(argv[1])) {
|
644
644
|
rb_hash_foreach(argv[1], append_attr, (VALUE)b);
|
645
645
|
}
|
646
646
|
// Do not close with > or /> yet. That is done with i_am_a_child() or pop().
|
@@ -651,6 +651,51 @@ builder_element(int argc, VALUE *argv, VALUE self) {
|
|
651
651
|
return Qnil;
|
652
652
|
}
|
653
653
|
|
654
|
+
/* call-seq: void_element(name,attributes)
|
655
|
+
*
|
656
|
+
* Adds an void element with the name and attributes provided.
|
657
|
+
*
|
658
|
+
* - +name+ - (String) name of the element
|
659
|
+
* - +attributes+ - (Hash) of the element
|
660
|
+
*/
|
661
|
+
static VALUE
|
662
|
+
builder_void_element(int argc, VALUE *argv, VALUE self) {
|
663
|
+
Builder b = (Builder)DATA_PTR(self);
|
664
|
+
const char *name;
|
665
|
+
int len;
|
666
|
+
|
667
|
+
if (1 > argc) {
|
668
|
+
rb_raise(ox_arg_error_class, "missing element name");
|
669
|
+
}
|
670
|
+
i_am_a_child(b, false);
|
671
|
+
append_indent(b);
|
672
|
+
switch (rb_type(*argv)) {
|
673
|
+
case T_STRING:
|
674
|
+
name = StringValuePtr(*argv);
|
675
|
+
len = RSTRING_LEN(*argv);
|
676
|
+
break;
|
677
|
+
case T_SYMBOL:
|
678
|
+
name = rb_id2name(SYM2ID(*argv));
|
679
|
+
len = strlen(name);
|
680
|
+
break;
|
681
|
+
default:
|
682
|
+
rb_raise(ox_arg_error_class, "expected a Symbol or String for an element name");
|
683
|
+
break;
|
684
|
+
}
|
685
|
+
buf_append(&b->buf, '<');
|
686
|
+
b->col++;
|
687
|
+
b->pos++;
|
688
|
+
append_string(b, name, len, xml_element_chars, false);
|
689
|
+
if (1 < argc && T_HASH == rb_type(argv[1])) {
|
690
|
+
rb_hash_foreach(argv[1], append_attr, (VALUE)b);
|
691
|
+
}
|
692
|
+
buf_append_string(&b->buf, ">", 1);
|
693
|
+
b->col++;;
|
694
|
+
b->pos++;
|
695
|
+
|
696
|
+
return Qnil;
|
697
|
+
}
|
698
|
+
|
654
699
|
/* call-seq: comment(text)
|
655
700
|
*
|
656
701
|
* Adds a comment element to the XML string being formed.
|
@@ -663,11 +708,11 @@ builder_comment(VALUE self, VALUE text) {
|
|
663
708
|
rb_check_type(text, T_STRING);
|
664
709
|
i_am_a_child(b, false);
|
665
710
|
append_indent(b);
|
666
|
-
buf_append_string(&b->buf, "<!--
|
711
|
+
buf_append_string(&b->buf, "<!--", 4);
|
667
712
|
b->col += 5;
|
668
713
|
b->pos += 5;
|
669
714
|
append_string(b, StringValuePtr(text), RSTRING_LEN(text), xml_element_chars, false);
|
670
|
-
buf_append_string(&b->buf, "
|
715
|
+
buf_append_string(&b->buf, "-->", 3);
|
671
716
|
b->col += 5;
|
672
717
|
b->pos += 5;
|
673
718
|
|
@@ -879,6 +924,7 @@ void ox_init_builder(VALUE ox) {
|
|
879
924
|
rb_define_method(builder_class, "comment", builder_comment, 1);
|
880
925
|
rb_define_method(builder_class, "doctype", builder_doctype, 1);
|
881
926
|
rb_define_method(builder_class, "element", builder_element, -1);
|
927
|
+
rb_define_method(builder_class, "void_element", builder_void_element, -1);
|
882
928
|
rb_define_method(builder_class, "text", builder_text, -1);
|
883
929
|
rb_define_method(builder_class, "cdata", builder_cdata, 1);
|
884
930
|
rb_define_method(builder_class, "raw", builder_raw, 1);
|
data/lib/ox/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Ohler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: "A fast XML parser and object serializer that uses only standard C lib.\n
|
14
14
|
\ \nOptimized XML (Ox), as the name implies was written to provide speed
|
@@ -35,7 +35,6 @@ files:
|
|
35
35
|
- ext/ox/cache8.c
|
36
36
|
- ext/ox/cache8.h
|
37
37
|
- ext/ox/dump.c
|
38
|
-
- ext/ox/encode.h
|
39
38
|
- ext/ox/err.c
|
40
39
|
- ext/ox/err.h
|
41
40
|
- ext/ox/extconf.rb
|
data/ext/ox/encode.h
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
/* encode.h
|
2
|
-
* Copyright (c) 2011, Peter Ohler
|
3
|
-
* All rights reserved.
|
4
|
-
*/
|
5
|
-
|
6
|
-
#ifndef __OX_ENCODE_H__
|
7
|
-
#define __OX_ENCODE_H__
|
8
|
-
|
9
|
-
#include "ruby.h"
|
10
|
-
#if HAS_ENCODING_SUPPORT
|
11
|
-
#include "ruby/encoding.h"
|
12
|
-
#endif
|
13
|
-
|
14
|
-
static inline VALUE
|
15
|
-
ox_encode(VALUE rstr) {
|
16
|
-
#if HAS_ENCODING_SUPPORT
|
17
|
-
rb_enc_associate(rstr, ox_utf8_encoding);
|
18
|
-
#else
|
19
|
-
if (Qnil != ox_utf8_encoding) {
|
20
|
-
rstr = rb_funcall(ox_utf8_encoding, ox_iconv_id, 1, rstr);
|
21
|
-
}
|
22
|
-
#endif
|
23
|
-
return rstr;
|
24
|
-
}
|
25
|
-
|
26
|
-
#endif /* __OX_ENCODE_H__ */
|