shale 0.7.1 → 0.9.0
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 +4 -4
- data/CHANGELOG.md +19 -2
- data/README.md +184 -15
- data/lib/shale/adapter/csv.rb +48 -0
- data/lib/shale/adapter/nokogiri/document.rb +7 -2
- data/lib/shale/adapter/nokogiri.rb +11 -4
- data/lib/shale/adapter/ox.rb +10 -4
- data/lib/shale/adapter/rexml.rb +18 -4
- data/lib/shale/mapper.rb +40 -1
- data/lib/shale/mapping/descriptor/dict.rb +10 -1
- data/lib/shale/mapping/descriptor/xml.rb +19 -2
- data/lib/shale/mapping/dict.rb +14 -46
- data/lib/shale/mapping/dict_base.rb +76 -0
- data/lib/shale/mapping/dict_group.rb +41 -0
- data/lib/shale/mapping/group/dict.rb +55 -0
- data/lib/shale/mapping/group/dict_grouping.rb +41 -0
- data/lib/shale/mapping/group/xml.rb +43 -0
- data/lib/shale/mapping/group/xml_grouping.rb +27 -0
- data/lib/shale/mapping/xml.rb +40 -152
- data/lib/shale/mapping/xml_base.rb +227 -0
- data/lib/shale/mapping/xml_group.rb +70 -0
- data/lib/shale/type/complex.rb +198 -18
- data/lib/shale/type/date.rb +11 -0
- data/lib/shale/type/time.rb +11 -0
- data/lib/shale/type/value.rb +22 -0
- data/lib/shale/version.rb +1 -1
- data/lib/shale.rb +30 -4
- data/shale.gemspec +3 -3
- metadata +14 -5
data/lib/shale/type/date.rb
CHANGED
@@ -47,6 +47,17 @@ module Shale
|
|
47
47
|
value&.iso8601
|
48
48
|
end
|
49
49
|
|
50
|
+
# Use ISO 8601 format in CSV document
|
51
|
+
#
|
52
|
+
# @param [Date] value
|
53
|
+
#
|
54
|
+
# @return [String]
|
55
|
+
#
|
56
|
+
# @api private
|
57
|
+
def self.as_csv(value, **)
|
58
|
+
value&.iso8601
|
59
|
+
end
|
60
|
+
|
50
61
|
# Use ISO 8601 format in XML document
|
51
62
|
#
|
52
63
|
# @param [Date] value Value to convert to XML
|
data/lib/shale/type/time.rb
CHANGED
@@ -47,6 +47,17 @@ module Shale
|
|
47
47
|
value&.iso8601
|
48
48
|
end
|
49
49
|
|
50
|
+
# Use ISO 8601 format in CSV document
|
51
|
+
#
|
52
|
+
# @param [Time] value
|
53
|
+
#
|
54
|
+
# @return [String]
|
55
|
+
#
|
56
|
+
# @api private
|
57
|
+
def self.as_csv(value, **)
|
58
|
+
value&.iso8601
|
59
|
+
end
|
60
|
+
|
50
61
|
# Use ISO 8601 format in XML document
|
51
62
|
#
|
52
63
|
# @param [Time] value Value to convert to XML
|
data/lib/shale/type/value.rb
CHANGED
@@ -111,6 +111,28 @@ module Shale
|
|
111
111
|
value
|
112
112
|
end
|
113
113
|
|
114
|
+
# Extract value from CSV document
|
115
|
+
#
|
116
|
+
# @param [any] value
|
117
|
+
#
|
118
|
+
# @return [any]
|
119
|
+
#
|
120
|
+
# @api private
|
121
|
+
def of_csv(value, **)
|
122
|
+
value
|
123
|
+
end
|
124
|
+
|
125
|
+
# Convert value to form accepted by CSV document
|
126
|
+
#
|
127
|
+
# @param [any] value
|
128
|
+
#
|
129
|
+
# @return [any]
|
130
|
+
#
|
131
|
+
# @api private
|
132
|
+
def as_csv(value, **)
|
133
|
+
value
|
134
|
+
end
|
135
|
+
|
114
136
|
# Extract value from XML document
|
115
137
|
#
|
116
138
|
# @param [Shale::Adapter::<XML adapter>::Node] value
|
data/lib/shale/version.rb
CHANGED
data/lib/shale.rb
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
require 'yaml'
|
4
4
|
|
5
5
|
require_relative 'shale/mapper'
|
6
|
+
require_relative 'shale/adapter/csv'
|
6
7
|
require_relative 'shale/adapter/json'
|
7
8
|
require_relative 'shale/type/boolean'
|
8
9
|
require_relative 'shale/type/date'
|
@@ -15,7 +16,7 @@ require_relative 'shale/version'
|
|
15
16
|
# Main library namespace
|
16
17
|
#
|
17
18
|
# Shale uses adapters for parsing and serializing documents.
|
18
|
-
# For handling JSON and
|
19
|
+
# For handling JSON, YAML, TOML and CSV, adapter must implement .load and .dump methods, so
|
19
20
|
# e.g for handling JSON, MultiJson works out of the box.
|
20
21
|
#
|
21
22
|
# Adapters for XML handling are more complicated and must conform to [@see shale/adapter/rexml]
|
@@ -29,9 +30,11 @@ require_relative 'shale/version'
|
|
29
30
|
# Shale.json_adapter = MultiJson
|
30
31
|
# Shale.json_adapter # => MultiJson
|
31
32
|
#
|
32
|
-
# @example setting
|
33
|
-
#
|
34
|
-
#
|
33
|
+
# @example setting TOML adapter for handling TOML documents
|
34
|
+
# require 'shale/adapter/toml_rb'
|
35
|
+
#
|
36
|
+
# Shale.toml_adapter = Shale::Adapter::TomlRB
|
37
|
+
# Shale.toml_adapter # => Shale::Adapter::TomlRB
|
35
38
|
#
|
36
39
|
# @example setting REXML adapter for handling XML documents
|
37
40
|
# Shale.xml_adapter = Shale::Adapter::REXML
|
@@ -86,6 +89,16 @@ module Shale
|
|
86
89
|
# @api public
|
87
90
|
attr_accessor :toml_adapter
|
88
91
|
|
92
|
+
# Set CSV adapter
|
93
|
+
#
|
94
|
+
# @param [.load, .dump] adapter
|
95
|
+
#
|
96
|
+
# @example
|
97
|
+
# Shale.csv_adapter = Shale::Adapter::CSV
|
98
|
+
#
|
99
|
+
# @api public
|
100
|
+
attr_writer :csv_adapter
|
101
|
+
|
89
102
|
# XML adapter accessor. Available adapters are Shale::Adapter::REXML,
|
90
103
|
# Shale::Adapter::Nokogiri and Shale::Adapter::Ox
|
91
104
|
#
|
@@ -126,5 +139,18 @@ module Shale
|
|
126
139
|
def yaml_adapter
|
127
140
|
@yaml_adapter || YAML
|
128
141
|
end
|
142
|
+
|
143
|
+
# Return CSV adapter. By default CSV is used
|
144
|
+
#
|
145
|
+
# @return [.load, .dump]
|
146
|
+
#
|
147
|
+
# @example
|
148
|
+
# Shale.csv_adapter
|
149
|
+
# # => Shale::Adapter::CSV
|
150
|
+
#
|
151
|
+
# @api public
|
152
|
+
def csv_adapter
|
153
|
+
@csv_adapter || Adapter::CSV
|
154
|
+
end
|
129
155
|
end
|
130
156
|
end
|
data/shale.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.authors = ['Kamil Giszczak']
|
9
9
|
spec.email = ['beerkg@gmail.com']
|
10
10
|
|
11
|
-
spec.summary = 'Ruby object mapper and serializer for XML, JSON, TOML and YAML.'
|
12
|
-
spec.description = 'Ruby object mapper and serializer for XML, JSON, TOML and YAML.'
|
11
|
+
spec.summary = 'Ruby object mapper and serializer for XML, JSON, TOML, CSV and YAML.'
|
12
|
+
spec.description = 'Ruby object mapper and serializer for XML, JSON, TOML, CSV and YAML.'
|
13
13
|
spec.homepage = 'https://shalerb.org'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
@@ -26,5 +26,5 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.bindir = 'exe'
|
27
27
|
spec.executables = 'shaleb'
|
28
28
|
|
29
|
-
spec.required_ruby_version = '>= 2.
|
29
|
+
spec.required_ruby_version = '>= 2.6.0'
|
30
30
|
end
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shale
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kamil Giszczak
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-31 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: Ruby object mapper and serializer for XML, JSON, TOML and YAML.
|
13
|
+
description: Ruby object mapper and serializer for XML, JSON, TOML, CSV and YAML.
|
14
14
|
email:
|
15
15
|
- beerkg@gmail.com
|
16
16
|
executables:
|
@@ -23,6 +23,7 @@ files:
|
|
23
23
|
- README.md
|
24
24
|
- exe/shaleb
|
25
25
|
- lib/shale.rb
|
26
|
+
- lib/shale/adapter/csv.rb
|
26
27
|
- lib/shale/adapter/json.rb
|
27
28
|
- lib/shale/adapter/nokogiri.rb
|
28
29
|
- lib/shale/adapter/nokogiri/document.rb
|
@@ -41,8 +42,16 @@ files:
|
|
41
42
|
- lib/shale/mapping/descriptor/xml.rb
|
42
43
|
- lib/shale/mapping/descriptor/xml_namespace.rb
|
43
44
|
- lib/shale/mapping/dict.rb
|
45
|
+
- lib/shale/mapping/dict_base.rb
|
46
|
+
- lib/shale/mapping/dict_group.rb
|
47
|
+
- lib/shale/mapping/group/dict.rb
|
48
|
+
- lib/shale/mapping/group/dict_grouping.rb
|
49
|
+
- lib/shale/mapping/group/xml.rb
|
50
|
+
- lib/shale/mapping/group/xml_grouping.rb
|
44
51
|
- lib/shale/mapping/validator.rb
|
45
52
|
- lib/shale/mapping/xml.rb
|
53
|
+
- lib/shale/mapping/xml_base.rb
|
54
|
+
- lib/shale/mapping/xml_group.rb
|
46
55
|
- lib/shale/schema.rb
|
47
56
|
- lib/shale/schema/compiler/boolean.rb
|
48
57
|
- lib/shale/schema/compiler/complex.rb
|
@@ -108,7 +117,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
108
117
|
requirements:
|
109
118
|
- - ">="
|
110
119
|
- !ruby/object:Gem::Version
|
111
|
-
version: 2.
|
120
|
+
version: 2.6.0
|
112
121
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
122
|
requirements:
|
114
123
|
- - ">="
|
@@ -118,5 +127,5 @@ requirements: []
|
|
118
127
|
rubygems_version: 3.3.7
|
119
128
|
signing_key:
|
120
129
|
specification_version: 4
|
121
|
-
summary: Ruby object mapper and serializer for XML, JSON, TOML and YAML.
|
130
|
+
summary: Ruby object mapper and serializer for XML, JSON, TOML, CSV and YAML.
|
122
131
|
test_files: []
|