xml2json-rb 0.2.1 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Cargo.lock +28 -16
- data/ext/xml2json/Cargo.toml +5 -2
- data/ext/xml2json/src/lib.rs +53 -95
- data/lib/xml2json/version.rb +1 -1
- data/lib/xml2json.rb +58 -6
- data/sig/xml2_json/json.rbs +1 -0
- data/sig/xml2_json/xml.rbs +1 -0
- metadata +79 -9
- data/lib/xml2json/xml2json.so +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 929c9024b54d50ca7dc4d457c75cd69ddb02d0f4394d25eb2d3b6c5e8573fd25
|
4
|
+
data.tar.gz: 6e80dac62fb5f67fa6f19641cd0c0a62c91110d190a4ec38e6a461d166d3074b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dcd614a2cbfd953cc2ae8adcf123a1723a0143f2754ca0ff3e42509cb385b283794d8090bd5808ed117c8e0e6f65bc630791052941848e2f46cb626e26599593
|
7
|
+
data.tar.gz: 28e43cbfaaa8987a1f7fbb1ef348055e742886dc3b629874c0f04d67bd74789751dc1e288d93358ee4c8e0b0fe7a2a6fa0c88393cc426dfe7731c0056e146383
|
data/Cargo.lock
CHANGED
@@ -13,9 +13,9 @@ dependencies = [
|
|
13
13
|
|
14
14
|
[[package]]
|
15
15
|
name = "bindgen"
|
16
|
-
version = "0.
|
16
|
+
version = "0.66.1"
|
17
17
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
18
|
-
checksum = "
|
18
|
+
checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7"
|
19
19
|
dependencies = [
|
20
20
|
"bitflags",
|
21
21
|
"cexpr",
|
@@ -28,14 +28,14 @@ dependencies = [
|
|
28
28
|
"regex",
|
29
29
|
"rustc-hash",
|
30
30
|
"shlex",
|
31
|
-
"syn",
|
31
|
+
"syn 2.0.32",
|
32
32
|
]
|
33
33
|
|
34
34
|
[[package]]
|
35
35
|
name = "bitflags"
|
36
|
-
version = "
|
36
|
+
version = "2.4.1"
|
37
37
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
38
|
-
checksum = "
|
38
|
+
checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
|
39
39
|
|
40
40
|
[[package]]
|
41
41
|
name = "cexpr"
|
@@ -127,9 +127,9 @@ dependencies = [
|
|
127
127
|
|
128
128
|
[[package]]
|
129
129
|
name = "magnus"
|
130
|
-
version = "0.
|
130
|
+
version = "0.5.5"
|
131
131
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
132
|
-
checksum = "
|
132
|
+
checksum = "5b7a37670bc433d081ef5846d5589381fabd8d3410ad3b59faa6b1b4c9c3cbce"
|
133
133
|
dependencies = [
|
134
134
|
"magnus-macros",
|
135
135
|
"rb-sys",
|
@@ -138,13 +138,13 @@ dependencies = [
|
|
138
138
|
|
139
139
|
[[package]]
|
140
140
|
name = "magnus-macros"
|
141
|
-
version = "0.
|
141
|
+
version = "0.4.1"
|
142
142
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
143
|
-
checksum = "
|
143
|
+
checksum = "6cc17af1d45442c011aa579d727ec6cff8a69aea8a6bbad26736e7112d749bfb"
|
144
144
|
dependencies = [
|
145
145
|
"proc-macro2",
|
146
146
|
"quote",
|
147
|
-
"syn",
|
147
|
+
"syn 1.0.109",
|
148
148
|
]
|
149
149
|
|
150
150
|
[[package]]
|
@@ -204,18 +204,18 @@ dependencies = [
|
|
204
204
|
|
205
205
|
[[package]]
|
206
206
|
name = "rb-sys"
|
207
|
-
version = "0.9.
|
207
|
+
version = "0.9.82"
|
208
208
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
209
|
-
checksum = "
|
209
|
+
checksum = "a3e6bf79bf4c711917cacfaf46dfab4314dbfdd89a8ee3ec4b98336cd23f1ebf"
|
210
210
|
dependencies = [
|
211
211
|
"rb-sys-build",
|
212
212
|
]
|
213
213
|
|
214
214
|
[[package]]
|
215
215
|
name = "rb-sys-build"
|
216
|
-
version = "0.9.
|
216
|
+
version = "0.9.82"
|
217
217
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
218
|
-
checksum = "
|
218
|
+
checksum = "5482a1ed4cde58dddaf162b6aebcb5c25645822547832b8be101f2acd40bcdd6"
|
219
219
|
dependencies = [
|
220
220
|
"bindgen",
|
221
221
|
"lazy_static",
|
@@ -223,7 +223,7 @@ dependencies = [
|
|
223
223
|
"quote",
|
224
224
|
"regex",
|
225
225
|
"shell-words",
|
226
|
-
"syn",
|
226
|
+
"syn 2.0.32",
|
227
227
|
]
|
228
228
|
|
229
229
|
[[package]]
|
@@ -314,6 +314,17 @@ dependencies = [
|
|
314
314
|
"unicode-ident",
|
315
315
|
]
|
316
316
|
|
317
|
+
[[package]]
|
318
|
+
name = "syn"
|
319
|
+
version = "2.0.32"
|
320
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
321
|
+
checksum = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2"
|
322
|
+
dependencies = [
|
323
|
+
"proc-macro2",
|
324
|
+
"quote",
|
325
|
+
"unicode-ident",
|
326
|
+
]
|
327
|
+
|
317
328
|
[[package]]
|
318
329
|
name = "unicode-ident"
|
319
330
|
version = "1.0.10"
|
@@ -344,9 +355,10 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
|
344
355
|
|
345
356
|
[[package]]
|
346
357
|
name = "xml2json"
|
347
|
-
version = "0.
|
358
|
+
version = "0.3.1"
|
348
359
|
dependencies = [
|
349
360
|
"magnus",
|
361
|
+
"rb-sys",
|
350
362
|
"xml2json-rs",
|
351
363
|
]
|
352
364
|
|
data/ext/xml2json/Cargo.toml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
[package]
|
2
2
|
name = "xml2json"
|
3
|
-
version = "0.
|
3
|
+
version = "0.3.1"
|
4
4
|
edition = "2021"
|
5
5
|
authors = ["uvlad7 <uvlad7@gmail.com>"]
|
6
6
|
license = "MIT"
|
@@ -10,5 +10,8 @@ publish = false
|
|
10
10
|
crate-type = ["cdylib"]
|
11
11
|
|
12
12
|
[dependencies]
|
13
|
-
magnus = { version = "0.
|
13
|
+
magnus = { version = "0.5.5", features = ["rb-sys-interop"] }
|
14
|
+
rb-sys = { version = "*", default-features = false, features = [
|
15
|
+
"stable-api-compiled-fallback",
|
16
|
+
] }
|
14
17
|
xml2json-rs = "1.0.1"
|
data/ext/xml2json/src/lib.rs
CHANGED
@@ -2,16 +2,12 @@ use magnus::{define_module, function, prelude::*, Error, Value};
|
|
2
2
|
use magnus::scan_args::{scan_args};
|
3
3
|
use xml2json_rs::{XmlBuilder, JsonBuilder, JsonConfig, XmlConfig, Declaration, Version, Encoding, Indentation};
|
4
4
|
|
5
|
-
// fn hello(subject: String) -> String {
|
6
|
-
// format!("Hello from Rust, {}!", subject)
|
7
|
-
// }
|
8
|
-
|
9
5
|
#[macro_export]
|
10
6
|
macro_rules! set_arg {
|
11
7
|
($config:expr, $opts_hash:expr, $arg:ident, $arg_type:ident) => (
|
12
8
|
let arg_value = $opts_hash.lookup::<_, Option<$arg_type>>(magnus::Symbol::new(stringify!($arg)))?;
|
13
|
-
if
|
14
|
-
$config.$arg(
|
9
|
+
if let Some(value) = arg_value {
|
10
|
+
$config.$arg(value);
|
15
11
|
}
|
16
12
|
);
|
17
13
|
}
|
@@ -21,15 +17,21 @@ fn map_xml2json_err(error: xml2json_rs::X2JError) -> Error {
|
|
21
17
|
}
|
22
18
|
|
23
19
|
fn build_xml(args: &[Value]) -> Result<String, Error> {
|
24
|
-
|
20
|
+
build_xml_impl(args, false)
|
21
|
+
}
|
22
|
+
|
23
|
+
fn build_pretty_xml(args: &[Value]) -> Result<String, Error> {
|
24
|
+
build_xml_impl(args, true)
|
25
|
+
}
|
26
|
+
|
27
|
+
fn build_xml_impl(args: &[Value], build_pretty: bool) -> Result<String, Error> {
|
28
|
+
let args = scan_args::<_, _, (), (), (), ()>(args)?;
|
25
29
|
let (json_s, ): (String, ) = args.required;
|
26
30
|
let (opts, ): (Option<magnus::RHash>, ) = args.optional;
|
27
|
-
let _: () = args.keywords;
|
28
31
|
|
29
32
|
let mut xml_builder: XmlBuilder;
|
30
|
-
if
|
33
|
+
if let Some(opts_hash) = opts { // yep, even if it's an empty hash
|
31
34
|
// println!("{}", opts.unwrap().to_string());
|
32
|
-
let opts_hash = opts.unwrap();
|
33
35
|
let mut config = XmlConfig::new();
|
34
36
|
set_arg!(config, opts_hash, root_name, String);
|
35
37
|
set_arg!(config, opts_hash, attrkey, String);
|
@@ -43,18 +45,16 @@ fn build_xml(args: &[Value]) -> Result<String, Error> {
|
|
43
45
|
|| decl_standalone.is_some()
|
44
46
|
{ // something is specified
|
45
47
|
// I didn't find a way to get defaults without copying them
|
46
|
-
let decl_version_val
|
47
|
-
if decl_version.is_some() {
|
48
|
+
let decl_version_val = if decl_version.is_some() {
|
48
49
|
let decl_version_str = unsafe { decl_version.unwrap().to_s() }?.into_owned();
|
49
|
-
|
50
|
-
.map_err(map_xml2json_err)
|
51
|
-
} else {
|
52
|
-
let decl_encoding_val
|
53
|
-
if decl_encoding.is_some() {
|
50
|
+
Version::try_from(decl_version_str.as_str())
|
51
|
+
.map_err(map_xml2json_err)?
|
52
|
+
} else { Version::XML10 };
|
53
|
+
let decl_encoding_val = if decl_encoding.is_some() {
|
54
54
|
let decl_encoding_str = unsafe { decl_encoding.unwrap().to_s() }?.into_owned();
|
55
|
-
|
56
|
-
.map_err(map_xml2json_err)?)
|
57
|
-
} else {
|
55
|
+
Some(Encoding::try_from(decl_encoding_str.as_str())
|
56
|
+
.map_err(map_xml2json_err)?)
|
57
|
+
} else { None };
|
58
58
|
|
59
59
|
let decl = Declaration::new(
|
60
60
|
decl_version_val,
|
@@ -71,95 +71,44 @@ fn build_xml(args: &[Value]) -> Result<String, Error> {
|
|
71
71
|
if indent_char.is_some()
|
72
72
|
|| indent_size.is_some()
|
73
73
|
{
|
74
|
-
let indent_char_val: u8
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
let intent = Indentation::new(
|
74
|
+
let indent_char_val: u8 = if indent_char.is_some() {
|
75
|
+
u8::try_from(indent_char.unwrap()).map_err(|error| Error::new(magnus::exception::type_error(), error.to_string()))?
|
76
|
+
} else { b' ' };
|
77
|
+
config.rendering(Indentation::new(
|
80
78
|
indent_char_val,
|
81
79
|
indent_size.unwrap_or(2),
|
82
|
-
);
|
83
|
-
|
84
|
-
} else if indent.unwrap_or(false) {
|
80
|
+
));
|
81
|
+
} else if indent.unwrap_or(build_pretty) {
|
85
82
|
// because Indentation::default is not the same as not calling config.rendering at all;
|
86
83
|
config.rendering(Indentation::default());
|
87
84
|
}
|
88
85
|
}
|
89
86
|
xml_builder = config.finalize();
|
87
|
+
} else if build_pretty {
|
88
|
+
xml_builder = XmlConfig::new().rendering(Indentation::default()).finalize();
|
90
89
|
} else { xml_builder = XmlBuilder::default(); }
|
91
90
|
|
92
|
-
xml_builder.build_from_json_string(&json_s).
|
93
|
-
|
91
|
+
xml_builder.build_from_json_string(&json_s).map_err(|error| {
|
92
|
+
map_xml2json_err(error)
|
94
93
|
})
|
95
94
|
}
|
96
95
|
|
97
96
|
fn build_json(args: &[Value]) -> Result<String, Error> {
|
97
|
+
build_json_impl(args, false)
|
98
|
+
}
|
99
|
+
|
100
|
+
fn build_pretty_json(args: &[Value]) -> Result<String, Error> {
|
101
|
+
build_json_impl(args, true)
|
102
|
+
}
|
103
|
+
|
104
|
+
fn build_json_impl(args: &[Value], mut build_pretty: bool) -> Result<String, Error> {
|
98
105
|
// https://docs.rs/magnus/latest/magnus/scan_args/fn.scan_args.html
|
99
|
-
let args = scan_args::<_, _, (), (),
|
106
|
+
let args = scan_args::<_, _, (), (), (), ()>(args)?;
|
100
107
|
let (xml, ): (String, ) = args.required;
|
101
108
|
let (opts, ): (Option<magnus::RHash>, ) = args.optional;
|
102
|
-
// let _: () = args.optional;
|
103
|
-
let _: () = args.keywords;
|
104
|
-
|
105
|
-
// Impossible, too long
|
106
|
-
// let kw = get_kwargs::<_, (), (
|
107
|
-
// Option<String>, // charkey
|
108
|
-
// Option<String>, // attrkey
|
109
|
-
// Option<String>, // empty_tag
|
110
|
-
// Option<bool>, // explicit_root
|
111
|
-
// Option<bool>, // trim
|
112
|
-
// Option<bool>, // ignore_attrs
|
113
|
-
// Option<bool>, // merge_attrs
|
114
|
-
// Option<bool>, // normalize_text
|
115
|
-
// Option<bool>, // lowercase_tags
|
116
|
-
// Option<bool>, // explicit_array
|
117
|
-
// Option<bool>, // explicit_charkey
|
118
|
-
// ), ()>(args.keywords, &[], &[
|
119
|
-
// "charkey",
|
120
|
-
// "attrkey",
|
121
|
-
// "empty_tag",
|
122
|
-
// "explicit_root",
|
123
|
-
// "trim",
|
124
|
-
// "ignore_attrs",
|
125
|
-
// "merge_attrs",
|
126
|
-
// "normalize_text",
|
127
|
-
// "lowercase_tags",
|
128
|
-
// "explicit_array",
|
129
|
-
// "explicit_charkey",
|
130
|
-
// ])?;
|
131
|
-
// let (
|
132
|
-
// charkey,
|
133
|
-
// attrkey,
|
134
|
-
// empty_tag,
|
135
|
-
// explicit_root,
|
136
|
-
// trim,
|
137
|
-
// ignore_attrs,
|
138
|
-
// merge_attrs,
|
139
|
-
// normalize_text,
|
140
|
-
// lowercase_tags,
|
141
|
-
// explicit_array,
|
142
|
-
// explicit_charkey,
|
143
|
-
// ) = kw.optional;
|
144
|
-
// if charkey.is_some()
|
145
|
-
// || attrkey.is_some()
|
146
|
-
// || empty_tag.is_some()
|
147
|
-
// || explicit_root.is_some()
|
148
|
-
// || trim.is_some()
|
149
|
-
// || ignore_attrs.is_some()
|
150
|
-
// || merge_attrs.is_some()
|
151
|
-
// || normalize_text.is_some()
|
152
|
-
// || lowercase_tags.is_some()
|
153
|
-
// || explicit_array.is_some()
|
154
|
-
// || explicit_charkey.is_some()
|
155
|
-
// {
|
156
|
-
// println!("any")
|
157
|
-
// } else { println!("none") }
|
158
109
|
|
159
110
|
let json_builder: JsonBuilder;
|
160
|
-
if
|
161
|
-
// println!("{}", opts.unwrap().to_string());
|
162
|
-
let opts_hash = opts.unwrap();
|
111
|
+
if let Some(opts_hash) = opts { // yep, even if it's an empty hash
|
163
112
|
let mut config = JsonConfig::new();
|
164
113
|
set_arg!(config, opts_hash, charkey, String);
|
165
114
|
set_arg!(config, opts_hash, attrkey, String);
|
@@ -173,18 +122,25 @@ fn build_json(args: &[Value]) -> Result<String, Error> {
|
|
173
122
|
set_arg!(config, opts_hash, explicit_array, bool);
|
174
123
|
set_arg!(config, opts_hash, explicit_charkey, bool);
|
175
124
|
json_builder = config.finalize();
|
125
|
+
|
126
|
+
let indent = opts_hash.lookup::<_, Option<bool>>(magnus::Symbol::new("indent"))?;
|
127
|
+
if let Some(indent_value) = indent {
|
128
|
+
build_pretty = indent_value;
|
129
|
+
}
|
176
130
|
} else { json_builder = JsonBuilder::default(); }
|
177
131
|
|
178
|
-
|
179
|
-
|
132
|
+
if build_pretty {
|
133
|
+
json_builder.build_pretty_string_from_xml(&xml)
|
134
|
+
} else {
|
135
|
+
json_builder.build_string_from_xml(&xml)
|
136
|
+
}.map_err(|error| {
|
137
|
+
map_xml2json_err(error)
|
180
138
|
})
|
181
139
|
}
|
182
140
|
|
183
141
|
#[magnus::init]
|
184
142
|
fn init() -> Result<(), Error> {
|
185
143
|
let module = define_module("Xml2Json")?;
|
186
|
-
// module.define_singleton_method("hello", function!(hello, 1))?;
|
187
|
-
// It's not possible to wrap XmlBuilder
|
188
144
|
let xml = module.define_module("Xml")?;
|
189
145
|
let xml_version = xml.define_module("Version")?;
|
190
146
|
xml_version.const_set("XML10", Version::XML10.to_string())?;
|
@@ -192,7 +148,9 @@ fn init() -> Result<(), Error> {
|
|
192
148
|
let xml_encoding = xml.define_module("Encoding")?;
|
193
149
|
xml_encoding.const_set("UTF8", Encoding::UTF8.to_string())?;
|
194
150
|
xml.define_singleton_method("build", function!(build_xml, -1))?;
|
151
|
+
xml.define_singleton_method("build_pretty", function!(build_pretty_xml, -1))?;
|
195
152
|
let json = module.define_module("Json")?;
|
196
153
|
json.define_singleton_method("build", function!(build_json, -1))?;
|
154
|
+
json.define_singleton_method("build_pretty", function!(build_pretty_json, -1))?;
|
197
155
|
Ok(())
|
198
156
|
}
|
data/lib/xml2json/version.rb
CHANGED
data/lib/xml2json.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative "xml2json/version"
|
4
|
-
|
4
|
+
begin
|
5
|
+
require_relative "xml2json/#{RUBY_VERSION[/(\d+\.\d+)/, 1]}/xml2json"
|
6
|
+
rescue LoadError
|
7
|
+
require_relative "xml2json/xml2json"
|
8
|
+
end
|
5
9
|
|
6
|
-
# @see https://
|
10
|
+
# @see https://docs.rs/xml2json-rs/1.0.1/xml2json_rs/index.html docs for the wrapped library
|
7
11
|
module Xml2Json
|
8
12
|
# @!parse [ruby]
|
9
13
|
# module Xml
|
@@ -17,18 +21,66 @@ module Xml2Json
|
|
17
21
|
#
|
18
22
|
# # @param json_s [String, #to_str] JSON string
|
19
23
|
# # @param opts [Hash<Symbol, Object>] config params
|
20
|
-
# # @
|
24
|
+
# # @note Default values are provided by xml2json-rs
|
25
|
+
# # @see https://docs.rs/xml2json-rs/1.0.1/xml2json_rs/struct.XmlConfig.html Docs for xml2json-rs XmlConfig
|
26
|
+
# # @option opts [String, #to_str] root_name ("root") Root key name to contain produced JSON object
|
27
|
+
# # @option opts [String, #to_str] attrkey ("$") The value of the JSON key used to store XML attributes under
|
28
|
+
# # @option opts [String, #to_str] charkey ("_") The value of the JSON key used to store XML character data under
|
29
|
+
# # @option opts [nil, "1.0", "1.1", #to_s] version (Xml2Json::Version::XML10) XML Declaration 'version' field,
|
30
|
+
# # default if nil
|
31
|
+
# # @raise [RuntimeError] if +version.to_s+ returns unsupported string,
|
32
|
+
# # for now only +"1.0"+ and +"1.1"+ are supported
|
33
|
+
# # @option opts [nil, "UTF-8", #to_s] encoding (nil) XML Declaration 'encoding' field, empty if nil
|
34
|
+
# # @raise [RuntimeError] if +encoding.to_s+ returns unsupported string, for now only +"UTF-8"+ is supported
|
35
|
+
# # @option opts [bool, nil] standalone (nil) XML Declaration 'standalone' field, empty if nil
|
36
|
+
# # @option opts [bool] indent (false) Output XML with line-breaks and indentations
|
37
|
+
# # @option opts [String, #to_str] indent_char (" ") Character used for indentation. This option will be ignored
|
38
|
+
# # if +indent+ is false
|
39
|
+
# # @raise [TypeError] If +indent_char+ is more than one character or can not be encoded as UTF-8
|
40
|
+
# # @note It's not enough for the Ruby +indent_char+ string to be UTF-8 encoded, not sure
|
41
|
+
# # if that's a bug or a feature of Magnus
|
42
|
+
# # @option opts [Integer, #to_int] indent_size (2) Number of characters used for indentation.
|
43
|
+
# # This option will be ignored if +indent+ is false
|
44
|
+
# # @raise [RangeError] if +indent_size+ cannot be converted into +unsigned long long+
|
21
45
|
# # @return [String] XML string
|
22
|
-
# # @raise [RuntimeError] if
|
46
|
+
# # @raise [RuntimeError] if +json_s+ is not valid JSON
|
47
|
+
# # @raise [TypeError] if +opts+ contain invalid value
|
23
48
|
# def self.build(json_s, opts: nil); end
|
49
|
+
# # @option opts [bool] indent (true)
|
50
|
+
# # @note Check +Xml2Json::Xml.build+ for other details, the only difference is that +indent+ is true by default
|
51
|
+
# # @see .build
|
52
|
+
# def self.build_pretty(json_s, opts: nil); end
|
24
53
|
# end
|
25
54
|
#
|
26
55
|
# module Json
|
27
56
|
# # @param xml [String, #to_str] XML string
|
28
57
|
# # @param opts [Hash<Symbol, Object>] config params
|
29
|
-
# # @
|
58
|
+
# # @note Default values are provided by xml2json-rs
|
59
|
+
# # @see https://docs.rs/xml2json-rs/1.0.1/xml2json_rs/struct.JsonConfig.html Docs for xml2json-rs JsonConfig
|
60
|
+
# # @option opts [String, #to_str] attrkey ("$") Key to outer object containing tag attributes
|
61
|
+
# # @option opts [String, #to_str] charkey ("_") Key to store character content under
|
62
|
+
# # @option opts [String, #to_str] empty_tag ("") The value of empty nodes
|
63
|
+
# # @option opts [bool] indent (false) Output JSON with line-breaks and indentations
|
64
|
+
# # @option opts [bool] explicit_root (true) Sets the root node inside the resulting object
|
65
|
+
# # @option opts [bool] trim (false) Trim whitespace at the beginning and end of text nodes
|
66
|
+
# # @option opts [bool] ignore_attrs (false) Setting this to true will skip adding element attributes
|
67
|
+
# # and create text nodes
|
68
|
+
# # @option opts [bool] merge_attrs (false) Merge all XML attributes and child elements as properties of
|
69
|
+
# # the parent, instead of keying attributes off of the child attribute object. This option will be
|
70
|
+
# # ignored if +ignore_attrs+ is true
|
71
|
+
# # @option opts [bool] normalize_text (false) Removes whitespace character data in text nodes
|
72
|
+
# # @option opts [bool] lowercase_tags (false) Normalize all tags by converting them to lowercase
|
73
|
+
# # @option opts [bool] explicit_array (true) Always put the child nodes in an array, otherwise an array is only
|
74
|
+
# # created if there is more than one child
|
75
|
+
# # @option opts [bool] explicit_charkey (false) Always store character data under +charkey+ even if there are
|
76
|
+
# # no other text elements stored inside the tag
|
30
77
|
# # @return [String] JSON string
|
31
|
-
# # @raise [RuntimeError] if
|
78
|
+
# # @raise [RuntimeError] if +xml+ is not valid XML
|
79
|
+
# # @raise [TypeError] if +opts+ contain invalid value
|
32
80
|
# def self.build(xml, opts: nil); end
|
81
|
+
# # @option opts [bool] indent (true)
|
82
|
+
# # @note Check +Xml2Json::Json.build+ for other details, the only difference is that +indent+ is true by default
|
83
|
+
# # @see .build
|
84
|
+
# def self.build_pretty(xml, opts: nil); end
|
33
85
|
# end
|
34
86
|
end
|
data/sig/xml2_json/json.rbs
CHANGED
data/sig/xml2_json/xml.rbs
CHANGED
metadata
CHANGED
@@ -1,17 +1,31 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xml2json-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- uvlad7
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '13.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '13.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake-compiler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
31
|
- - ">="
|
@@ -24,6 +38,48 @@ dependencies:
|
|
24
38
|
- - ">="
|
25
39
|
- !ruby/object:Gem::Version
|
26
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rb_sys
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.9.63
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.9.63
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubocop
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.21'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.21'
|
27
83
|
- !ruby/object:Gem::Dependency
|
28
84
|
name: pry
|
29
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +164,20 @@ dependencies:
|
|
108
164
|
- - ">="
|
109
165
|
- !ruby/object:Gem::Version
|
110
166
|
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: toml-rb
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
111
181
|
description: This gem helps to convert xml strings to json and vise versa
|
112
182
|
email:
|
113
183
|
- uvlad7@gmail.com
|
@@ -123,7 +193,6 @@ files:
|
|
123
193
|
- ext/xml2json/src/lib.rs
|
124
194
|
- lib/xml2json.rb
|
125
195
|
- lib/xml2json/version.rb
|
126
|
-
- lib/xml2json/xml2json.so
|
127
196
|
- sig/xml2_json/json.rbs
|
128
197
|
- sig/xml2_json/xml.rbs
|
129
198
|
- sig/xml2_json/xml/encoding.rbs
|
@@ -136,8 +205,9 @@ metadata:
|
|
136
205
|
homepage_uri: https://github.com/uvlad7/xml2json-rb
|
137
206
|
source_code_uri: https://github.com/uvlad7/xml2json-rb
|
138
207
|
changelog_uri: https://github.com/uvlad7/xml2json-rb/blob/main/CHANGELOG.md
|
139
|
-
documentation_uri: https://rubydoc.info/gems/xml2json-rb/0.
|
140
|
-
|
208
|
+
documentation_uri: https://rubydoc.info/gems/xml2json-rb/0.3.1
|
209
|
+
rubygems_mfa_required: 'true'
|
210
|
+
post_install_message:
|
141
211
|
rdoc_options: []
|
142
212
|
require_paths:
|
143
213
|
- lib
|
@@ -152,8 +222,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
152
222
|
- !ruby/object:Gem::Version
|
153
223
|
version: 3.3.11
|
154
224
|
requirements: []
|
155
|
-
rubygems_version: 3.4.
|
156
|
-
signing_key:
|
225
|
+
rubygems_version: 3.4.20
|
226
|
+
signing_key:
|
157
227
|
specification_version: 4
|
158
228
|
summary: Ruby wrapper for xml2json-rs
|
159
229
|
test_files: []
|
data/lib/xml2json/xml2json.so
DELETED
Binary file
|