xml2json-rb 0.2.1 → 0.3.0

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: 894ff6fe88c1e4a0e7bbb426419954f98413f568f8ac361784e60537074033fd
4
- data.tar.gz: face561e86ac59fb767535689377e361f171574b77722ba55a55056c96630767
3
+ metadata.gz: 7300901db2b5b148d589efdc043ba16afe065c4848300ae4fe13606e372c9e8f
4
+ data.tar.gz: bcfa9f9a7017c4d5c62f538b1abe07bd4c996d8a650e412798d43e7c18871e15
5
5
  SHA512:
6
- metadata.gz: 2d3917434cd6824082cb8256ef752e10af0153d29da3b00365f0ed5ceebcef5626e422998b52a7f1a3c63b44ab2b49586f079557e1cb4888a08cf2d4f128c9bc
7
- data.tar.gz: 36cf6993a5ca3f586357b8d46b9a038ad53cab83eae759fa1506ab58989cdd3c97dad69fe15a44f3ecea49eb3ac7287f35a75a01582e3bd13d493e58029a523a
6
+ metadata.gz: 2719f4a3cc080a3b26c1c2e4e06fb351af1f6a71d882f2a192171a55b63caf66c4d2b143744239ea6842ef6cecfa00b4d0b45065660264d012dd281f716efe9b
7
+ data.tar.gz: 973a6c931eba9a847bcb48be1834e6c63a5c6f64538d199380b7405e4ca64d3ad316a4041490db7bf59623e24f299335ee68697f9ea304ab9f245b490eff1029
data/Cargo.lock CHANGED
@@ -344,7 +344,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
344
344
 
345
345
  [[package]]
346
346
  name = "xml2json"
347
- version = "0.2.1"
347
+ version = "0.3.0"
348
348
  dependencies = [
349
349
  "magnus",
350
350
  "xml2json-rs",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "xml2json"
3
- version = "0.2.1"
3
+ version = "0.3.0"
4
4
  edition = "2021"
5
5
  authors = ["uvlad7 <uvlad7@gmail.com>"]
6
6
  license = "MIT"
@@ -21,6 +21,14 @@ fn map_xml2json_err(error: xml2json_rs::X2JError) -> Error {
21
21
  }
22
22
 
23
23
  fn build_xml(args: &[Value]) -> Result<String, Error> {
24
+ build_xml_impl(args, false)
25
+ }
26
+
27
+ fn build_pretty_xml(args: &[Value]) -> Result<String, Error> {
28
+ build_xml_impl(args, true)
29
+ }
30
+
31
+ fn build_xml_impl(args: &[Value], build_pretty: bool) -> Result<String, Error> {
24
32
  let args = scan_args::<_, _, (), (), _, ()>(args)?;
25
33
  let (json_s, ): (String, ) = args.required;
26
34
  let (opts, ): (Option<magnus::RHash>, ) = args.optional;
@@ -75,18 +83,18 @@ fn build_xml(args: &[Value]) -> Result<String, Error> {
75
83
  if indent_char.is_some() {
76
84
  indent_char_val = u8::try_from(indent_char.unwrap()).map_err(|error| Error::new(magnus::exception::type_error(), error.to_string()))?;
77
85
  } else { indent_char_val = b' '; }
78
-
79
- let intent = Indentation::new(
86
+ config.rendering(Indentation::new(
80
87
  indent_char_val,
81
88
  indent_size.unwrap_or(2),
82
- );
83
- config.rendering(intent);
84
- } else if indent.unwrap_or(false) {
89
+ ));
90
+ } else if indent.unwrap_or(build_pretty) {
85
91
  // because Indentation::default is not the same as not calling config.rendering at all;
86
92
  config.rendering(Indentation::default());
87
93
  }
88
94
  }
89
95
  xml_builder = config.finalize();
96
+ } else if build_pretty {
97
+ xml_builder = XmlConfig::new().rendering(Indentation::default()).finalize();
90
98
  } else { xml_builder = XmlBuilder::default(); }
91
99
 
92
100
  xml_builder.build_from_json_string(&json_s).or_else(|error| {
@@ -95,6 +103,14 @@ fn build_xml(args: &[Value]) -> Result<String, Error> {
95
103
  }
96
104
 
97
105
  fn build_json(args: &[Value]) -> Result<String, Error> {
106
+ build_json_impl(args, false)
107
+ }
108
+
109
+ fn build_pretty_json(args: &[Value]) -> Result<String, Error> {
110
+ build_json_impl(args, true)
111
+ }
112
+
113
+ fn build_json_impl(args: &[Value], mut build_pretty: bool) -> Result<String, Error> {
98
114
  // https://docs.rs/magnus/latest/magnus/scan_args/fn.scan_args.html
99
115
  let args = scan_args::<_, _, (), (), _, ()>(args)?;
100
116
  let (xml, ): (String, ) = args.required;
@@ -173,9 +189,18 @@ fn build_json(args: &[Value]) -> Result<String, Error> {
173
189
  set_arg!(config, opts_hash, explicit_array, bool);
174
190
  set_arg!(config, opts_hash, explicit_charkey, bool);
175
191
  json_builder = config.finalize();
192
+
193
+ let indent = opts_hash.lookup::<_, Option<bool>>(magnus::Symbol::new("indent"))?;
194
+ if indent.is_some() {
195
+ build_pretty = indent.unwrap();
196
+ }
176
197
  } else { json_builder = JsonBuilder::default(); }
177
198
 
178
- json_builder.build_string_from_xml(&xml).or_else(|error| {
199
+ if build_pretty {
200
+ json_builder.build_pretty_string_from_xml(&xml)
201
+ } else {
202
+ json_builder.build_string_from_xml(&xml)
203
+ }.or_else(|error| {
179
204
  Err(map_xml2json_err(error))
180
205
  })
181
206
  }
@@ -192,7 +217,9 @@ fn init() -> Result<(), Error> {
192
217
  let xml_encoding = xml.define_module("Encoding")?;
193
218
  xml_encoding.const_set("UTF8", Encoding::UTF8.to_string())?;
194
219
  xml.define_singleton_method("build", function!(build_xml, -1))?;
220
+ xml.define_singleton_method("build_pretty", function!(build_pretty_xml, -1))?;
195
221
  let json = module.define_module("Json")?;
196
222
  json.define_singleton_method("build", function!(build_json, -1))?;
223
+ json.define_singleton_method("build_pretty", function!(build_pretty_json, -1))?;
197
224
  Ok(())
198
225
  }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Xml2Json
4
- VERSION = "0.2.1"
4
+ VERSION = "0.3.0"
5
5
  end
Binary file
data/lib/xml2json.rb CHANGED
@@ -21,6 +21,7 @@ module Xml2Json
21
21
  # # @return [String] XML string
22
22
  # # @raise [RuntimeError] if the input string is invalid
23
23
  # def self.build(json_s, opts: nil); end
24
+ # def self.build_pretty(json_s, opts: nil); end
24
25
  # end
25
26
  #
26
27
  # module Json
@@ -30,5 +31,6 @@ module Xml2Json
30
31
  # # @return [String] JSON string
31
32
  # # @raise [RuntimeError] if the input string is invalid
32
33
  # def self.build(xml, opts: nil); end
34
+ # def self.build_pretty(xml, opts: nil); end
33
35
  # end
34
36
  end
@@ -1,5 +1,6 @@
1
1
  module Xml2Json
2
2
  module Json
3
3
  def self.build: (xml: String, opts: Hash[Symbol, Object]?) -> String
4
+ def self.build_pretty: (xml: String, opts: Hash[Symbol, Object]?) -> String
4
5
  end
5
6
  end
@@ -1,5 +1,6 @@
1
1
  module Xml2Json
2
2
  module Xml
3
3
  def self.build: (json_s: String, opts: Hash[Symbol, Object]?) -> String
4
+ def self.build_pretty: (json_s: String, opts: Hash[Symbol, Object]?) -> String
4
5
  end
5
6
  end
metadata CHANGED
@@ -1,113 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xml2json-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
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-07-12 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: yard-rustdoc
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: pry
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: pry-byebug
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: yard
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rack
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: rackup
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: puma
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
11
+ date: 2023-10-01 00:00:00.000000000 Z
12
+ dependencies: []
111
13
  description: This gem helps to convert xml strings to json and vise versa
112
14
  email:
113
15
  - uvlad7@gmail.com
@@ -136,8 +38,9 @@ metadata:
136
38
  homepage_uri: https://github.com/uvlad7/xml2json-rb
137
39
  source_code_uri: https://github.com/uvlad7/xml2json-rb
138
40
  changelog_uri: https://github.com/uvlad7/xml2json-rb/blob/main/CHANGELOG.md
139
- documentation_uri: https://rubydoc.info/gems/xml2json-rb/0.2.1
140
- post_install_message:
41
+ documentation_uri: https://rubydoc.info/gems/xml2json-rb/0.3.0
42
+ rubygems_mfa_required: 'true'
43
+ post_install_message:
141
44
  rdoc_options: []
142
45
  require_paths:
143
46
  - lib
@@ -153,7 +56,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
56
  version: 3.3.11
154
57
  requirements: []
155
58
  rubygems_version: 3.4.10
156
- signing_key:
59
+ signing_key:
157
60
  specification_version: 4
158
61
  summary: Ruby wrapper for xml2json-rs
159
62
  test_files: []