shale 0.3.1 → 0.4.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 +15 -0
- data/README.md +105 -14
- data/exe/shaleb +79 -31
- data/lib/shale/attribute.rb +6 -0
- data/lib/shale/error.rb +6 -0
- data/lib/shale/mapper.rb +6 -4
- data/lib/shale/schema/json_compiler/boolean.rb +21 -0
- data/lib/shale/schema/json_compiler/date.rb +21 -0
- data/lib/shale/schema/json_compiler/float.rb +21 -0
- data/lib/shale/schema/json_compiler/integer.rb +21 -0
- data/lib/shale/schema/json_compiler/object.rb +85 -0
- data/lib/shale/schema/json_compiler/property.rb +70 -0
- data/lib/shale/schema/json_compiler/string.rb +21 -0
- data/lib/shale/schema/json_compiler/time.rb +21 -0
- data/lib/shale/schema/json_compiler/utils.rb +52 -0
- data/lib/shale/schema/json_compiler/value.rb +13 -0
- data/lib/shale/schema/json_compiler.rb +333 -0
- data/lib/shale/schema/{json → json_generator}/base.rb +2 -2
- data/lib/shale/schema/{json → json_generator}/boolean.rb +1 -1
- data/lib/shale/schema/{json → json_generator}/collection.rb +2 -2
- data/lib/shale/schema/{json → json_generator}/date.rb +1 -1
- data/lib/shale/schema/{json → json_generator}/float.rb +1 -1
- data/lib/shale/schema/{json → json_generator}/integer.rb +1 -1
- data/lib/shale/schema/{json → json_generator}/object.rb +5 -2
- data/lib/shale/schema/{json → json_generator}/ref.rb +1 -1
- data/lib/shale/schema/{json → json_generator}/schema.rb +6 -4
- data/lib/shale/schema/{json → json_generator}/string.rb +1 -1
- data/lib/shale/schema/{json → json_generator}/time.rb +1 -1
- data/lib/shale/schema/json_generator/value.rb +23 -0
- data/lib/shale/schema/{json.rb → json_generator.rb} +36 -36
- data/lib/shale/schema/{xml → xml_generator}/attribute.rb +1 -1
- data/lib/shale/schema/{xml → xml_generator}/complex_type.rb +5 -2
- data/lib/shale/schema/{xml → xml_generator}/element.rb +1 -1
- data/lib/shale/schema/{xml → xml_generator}/import.rb +1 -1
- data/lib/shale/schema/{xml → xml_generator}/ref_attribute.rb +1 -1
- data/lib/shale/schema/{xml → xml_generator}/ref_element.rb +1 -1
- data/lib/shale/schema/{xml → xml_generator}/schema.rb +5 -5
- data/lib/shale/schema/{xml → xml_generator}/typed_attribute.rb +1 -1
- data/lib/shale/schema/{xml → xml_generator}/typed_element.rb +1 -1
- data/lib/shale/schema/{xml.rb → xml_generator.rb} +22 -23
- data/lib/shale/schema.rb +28 -5
- data/lib/shale/type/composite.rb +14 -20
- data/lib/shale/version.rb +1 -1
- metadata +36 -24
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base'
|
4
|
+
|
5
|
+
module Shale
|
6
|
+
module Schema
|
7
|
+
class JSONGenerator
|
8
|
+
# Class representing JSON Schema any type
|
9
|
+
#
|
10
|
+
# @api private
|
11
|
+
class Value < Base
|
12
|
+
# Return JSON Schema fragment as Ruby Hash
|
13
|
+
#
|
14
|
+
# @return [Hash]
|
15
|
+
#
|
16
|
+
# @api private
|
17
|
+
def as_type
|
18
|
+
{ 'type' => %w[boolean integer number object string] }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -1,32 +1,33 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative '../../shale'
|
4
|
-
require_relative '
|
5
|
-
require_relative '
|
6
|
-
require_relative '
|
7
|
-
require_relative '
|
8
|
-
require_relative '
|
9
|
-
require_relative '
|
10
|
-
require_relative '
|
11
|
-
require_relative '
|
12
|
-
require_relative '
|
13
|
-
require_relative '
|
4
|
+
require_relative 'json_generator/schema'
|
5
|
+
require_relative 'json_generator/boolean'
|
6
|
+
require_relative 'json_generator/collection'
|
7
|
+
require_relative 'json_generator/date'
|
8
|
+
require_relative 'json_generator/float'
|
9
|
+
require_relative 'json_generator/integer'
|
10
|
+
require_relative 'json_generator/object'
|
11
|
+
require_relative 'json_generator/ref'
|
12
|
+
require_relative 'json_generator/string'
|
13
|
+
require_relative 'json_generator/time'
|
14
|
+
require_relative 'json_generator/value'
|
14
15
|
|
15
16
|
module Shale
|
16
17
|
module Schema
|
17
|
-
# Class for
|
18
|
+
# Class for generating JSON schema
|
18
19
|
#
|
19
20
|
# @api public
|
20
|
-
class
|
21
|
-
@json_types = Hash.new(Shale::Schema::
|
21
|
+
class JSONGenerator
|
22
|
+
@json_types = Hash.new(Shale::Schema::JSONGenerator::String)
|
22
23
|
|
23
24
|
# Register Shale to JSON type mapping
|
24
25
|
#
|
25
26
|
# @param [Shale::Type::Value] shale_type
|
26
|
-
# @param [Shale::Schema::
|
27
|
+
# @param [Shale::Schema::JSONGenerator::Base] json_type
|
27
28
|
#
|
28
29
|
# @example
|
29
|
-
# Shale::Schema::
|
30
|
+
# Shale::Schema::JSONGenerator.register_json_type(Shale::Type::String, MyCustomJsonType)
|
30
31
|
#
|
31
32
|
# @api public
|
32
33
|
def self.register_json_type(shale_type, json_type)
|
@@ -37,10 +38,10 @@ module Shale
|
|
37
38
|
#
|
38
39
|
# @param [Shale::Type::Value] shale_type
|
39
40
|
#
|
40
|
-
# @return [Shale::Schema::
|
41
|
+
# @return [Shale::Schema::JSONGenerator::Base]
|
41
42
|
#
|
42
43
|
# @example
|
43
|
-
# Shale::Schema::
|
44
|
+
# Shale::Schema::JSONGenerator.get_json_type(Shale::Type::String)
|
44
45
|
# # => Shale::Schema::JSON::String
|
45
46
|
#
|
46
47
|
# @api private
|
@@ -48,11 +49,12 @@ module Shale
|
|
48
49
|
@json_types[shale_type]
|
49
50
|
end
|
50
51
|
|
51
|
-
register_json_type(Shale::Type::Boolean, Shale::Schema::
|
52
|
-
register_json_type(Shale::Type::Date, Shale::Schema::
|
53
|
-
register_json_type(Shale::Type::Float, Shale::Schema::
|
54
|
-
register_json_type(Shale::Type::Integer, Shale::Schema::
|
55
|
-
register_json_type(Shale::Type::Time, Shale::Schema::
|
52
|
+
register_json_type(Shale::Type::Boolean, Shale::Schema::JSONGenerator::Boolean)
|
53
|
+
register_json_type(Shale::Type::Date, Shale::Schema::JSONGenerator::Date)
|
54
|
+
register_json_type(Shale::Type::Float, Shale::Schema::JSONGenerator::Float)
|
55
|
+
register_json_type(Shale::Type::Integer, Shale::Schema::JSONGenerator::Integer)
|
56
|
+
register_json_type(Shale::Type::Time, Shale::Schema::JSONGenerator::Time)
|
57
|
+
register_json_type(Shale::Type::Value, Shale::Schema::JSONGenerator::Value)
|
56
58
|
|
57
59
|
# Generate JSON Schema from Shale model and return it as a Ruby Hash
|
58
60
|
#
|
@@ -65,15 +67,16 @@ module Shale
|
|
65
67
|
# @return [Hash]
|
66
68
|
#
|
67
69
|
# @example
|
68
|
-
# Shale::Schema::
|
70
|
+
# Shale::Schema::JSONGenerator.new.as_schema(Person)
|
69
71
|
#
|
70
72
|
# @api public
|
71
|
-
def as_schema(klass, id: nil, description: nil)
|
73
|
+
def as_schema(klass, id: nil, title: nil, description: nil)
|
72
74
|
unless mapper_type?(klass)
|
73
75
|
raise NotAShaleMapperError, "JSON Shema can't be generated for '#{klass}' type"
|
74
76
|
end
|
75
77
|
|
76
|
-
types =
|
78
|
+
types = []
|
79
|
+
collect_composite_types(types, klass)
|
77
80
|
objects = []
|
78
81
|
|
79
82
|
types.each do |type|
|
@@ -103,7 +106,7 @@ module Shale
|
|
103
106
|
objects << Object.new(type.name, properties)
|
104
107
|
end
|
105
108
|
|
106
|
-
Schema.new(objects, id: id, description: description).as_json
|
109
|
+
Schema.new(objects, id: id, title: title, description: description).as_json
|
107
110
|
end
|
108
111
|
|
109
112
|
# Generate JSON Schema from Shale model
|
@@ -116,11 +119,11 @@ module Shale
|
|
116
119
|
# @return [String]
|
117
120
|
#
|
118
121
|
# @example
|
119
|
-
# Shale::Schema::
|
122
|
+
# Shale::Schema::JSONGenerator.new.to_schema(Person)
|
120
123
|
#
|
121
124
|
# @api public
|
122
|
-
def to_schema(klass, id: nil, description: nil, pretty: false)
|
123
|
-
schema = as_schema(klass, id: id, description: description)
|
125
|
+
def to_schema(klass, id: nil, title: nil, description: nil, pretty: false)
|
126
|
+
schema = as_schema(klass, id: id, title: title, description: description)
|
124
127
|
options = pretty ? :pretty : nil
|
125
128
|
|
126
129
|
Shale.json_adapter.dump(schema, options)
|
@@ -141,24 +144,21 @@ module Shale
|
|
141
144
|
|
142
145
|
# Collect recursively Shale::Mapper types
|
143
146
|
#
|
147
|
+
# @param [Array<Shale::Mapper>] types
|
144
148
|
# @param [Shale::Mapper] type
|
145
149
|
#
|
146
|
-
# @return [Array<Shale::Mapper>]
|
147
|
-
#
|
148
150
|
# @api private
|
149
|
-
def collect_composite_types(type)
|
150
|
-
types
|
151
|
+
def collect_composite_types(types, type)
|
152
|
+
types << type
|
151
153
|
|
152
154
|
type.json_mapping.keys.values.each do |mapping|
|
153
155
|
attribute = type.attributes[mapping.attribute]
|
154
156
|
next unless attribute
|
155
157
|
|
156
158
|
if mapper_type?(attribute.type) && !types.include?(attribute.type)
|
157
|
-
types
|
159
|
+
collect_composite_types(types, attribute.type)
|
158
160
|
end
|
159
161
|
end
|
160
|
-
|
161
|
-
types.uniq
|
162
162
|
end
|
163
163
|
end
|
164
164
|
end
|
@@ -5,7 +5,7 @@ require_relative 'element'
|
|
5
5
|
|
6
6
|
module Shale
|
7
7
|
module Schema
|
8
|
-
class
|
8
|
+
class XMLGenerator
|
9
9
|
# Class representing XML Schema <complexType> element
|
10
10
|
#
|
11
11
|
# @api private
|
@@ -20,7 +20,10 @@ module Shale
|
|
20
20
|
# Initialize ComplexType object
|
21
21
|
#
|
22
22
|
# @param [String] name
|
23
|
-
# @param [Array<
|
23
|
+
# @param [Array<
|
24
|
+
# Shale::Schema::XMLGenerator::Element,
|
25
|
+
# Shale::Schema::XMLGenerator::Attribute
|
26
|
+
# >] children
|
24
27
|
# @param [true, false] mixed
|
25
28
|
#
|
26
29
|
# @api private
|
@@ -5,7 +5,7 @@ require_relative 'complex_type'
|
|
5
5
|
|
6
6
|
module Shale
|
7
7
|
module Schema
|
8
|
-
class
|
8
|
+
class XMLGenerator
|
9
9
|
class Schema
|
10
10
|
# XML Schema namespace
|
11
11
|
# @api private
|
@@ -43,10 +43,10 @@ module Shale
|
|
43
43
|
|
44
44
|
# Add child element to XML Schema
|
45
45
|
#
|
46
|
-
# @param [Shale::Schema::
|
47
|
-
# Shale::Schema::
|
48
|
-
# Shale::Schema::
|
49
|
-
# Shale::Schema::
|
46
|
+
# @param [Shale::Schema::XMLGenerator::Import,
|
47
|
+
# Shale::Schema::XMLGenerator::Element,
|
48
|
+
# Shale::Schema::XMLGenerator::Attribute,
|
49
|
+
# Shale::Schema::XMLGenerator::ComplesType] child
|
50
50
|
#
|
51
51
|
# @api private
|
52
52
|
def add_child(child)
|
@@ -1,20 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative '../../shale'
|
4
|
-
require_relative '
|
5
|
-
require_relative '
|
6
|
-
require_relative '
|
7
|
-
require_relative '
|
8
|
-
require_relative '
|
9
|
-
require_relative '
|
10
|
-
require_relative '
|
4
|
+
require_relative 'xml_generator/complex_type'
|
5
|
+
require_relative 'xml_generator/import'
|
6
|
+
require_relative 'xml_generator/ref_attribute'
|
7
|
+
require_relative 'xml_generator/ref_element'
|
8
|
+
require_relative 'xml_generator/schema'
|
9
|
+
require_relative 'xml_generator/typed_attribute'
|
10
|
+
require_relative 'xml_generator/typed_element'
|
11
11
|
|
12
12
|
module Shale
|
13
13
|
module Schema
|
14
|
-
# Class for
|
14
|
+
# Class for generating XML schema
|
15
15
|
#
|
16
16
|
# @api public
|
17
|
-
class
|
17
|
+
class XMLGenerator
|
18
18
|
# XML Schema default name
|
19
19
|
# @api private
|
20
20
|
DEFAULT_SCHEMA_NAME = 'schema'
|
@@ -27,7 +27,7 @@ module Shale
|
|
27
27
|
# @param [String] xml_type
|
28
28
|
#
|
29
29
|
# @example
|
30
|
-
# Shale::Schema::
|
30
|
+
# Shale::Schema::XMLGenerator.register_xml_type(Shale::Type::String, 'myType')
|
31
31
|
#
|
32
32
|
# @api public
|
33
33
|
def self.register_xml_type(shale_type, xml_type)
|
@@ -41,7 +41,7 @@ module Shale
|
|
41
41
|
# @return [String]
|
42
42
|
#
|
43
43
|
# @example
|
44
|
-
# Shale::Schema::
|
44
|
+
# Shale::Schema::XMLGenerator.get_xml_type(Shale::Type::String)
|
45
45
|
# # => 'string'
|
46
46
|
#
|
47
47
|
# @api private
|
@@ -54,19 +54,20 @@ module Shale
|
|
54
54
|
register_xml_type(Shale::Type::Float, 'decimal')
|
55
55
|
register_xml_type(Shale::Type::Integer, 'integer')
|
56
56
|
register_xml_type(Shale::Type::Time, 'dateTime')
|
57
|
+
register_xml_type(Shale::Type::Value, 'anyType')
|
57
58
|
|
58
59
|
# Generate XML Schema from Shale model and return
|
59
|
-
# it as a Shale::Schema::
|
60
|
+
# it as a Shale::Schema::XMLGenerator::Schema array
|
60
61
|
#
|
61
62
|
# @param [Shale::Mapper] klass
|
62
63
|
# @param [String, nil] base_name
|
63
64
|
#
|
64
65
|
# @raise [NotAShaleMapperError] when attribute is not a Shale model
|
65
66
|
#
|
66
|
-
# @return [Array<Shale::Schema::
|
67
|
+
# @return [Array<Shale::Schema::XMLGenerator::Schema>]
|
67
68
|
#
|
68
69
|
# @example
|
69
|
-
# Shale::Schema::
|
70
|
+
# Shale::Schema::XMLGenerator.new.as_schemas(Person)
|
70
71
|
#
|
71
72
|
# @api public
|
72
73
|
def as_schemas(klass, base_name = nil)
|
@@ -93,7 +94,8 @@ module Shale
|
|
93
94
|
)
|
94
95
|
schemas[default_namespace.name].add_child(root_element)
|
95
96
|
|
96
|
-
composites =
|
97
|
+
composites = []
|
98
|
+
collect_composite_types(composites, klass, klass.xml_mapping.default_namespace.name)
|
97
99
|
|
98
100
|
composites.each do |composite|
|
99
101
|
type = composite[:type]
|
@@ -214,7 +216,7 @@ module Shale
|
|
214
216
|
# @return [Hash<String, String>]
|
215
217
|
#
|
216
218
|
# @example
|
217
|
-
# Shale::Schema::
|
219
|
+
# Shale::Schema::XMLGenerator.new.to_schemas(Person)
|
218
220
|
#
|
219
221
|
# @api public
|
220
222
|
def to_schemas(klass, base_name = nil, pretty: false, declaration: false)
|
@@ -245,14 +247,13 @@ module Shale
|
|
245
247
|
|
246
248
|
# Collect recursively Shale::Mapper types
|
247
249
|
#
|
250
|
+
# @param [Array<Shale::Mapper>] types
|
248
251
|
# @param [Shale::Mapper] type
|
249
252
|
# @param [String, nil] namespace
|
250
253
|
#
|
251
|
-
# @return [Array<Hash<Symbol, String>>]
|
252
|
-
#
|
253
254
|
# @api private
|
254
|
-
def collect_composite_types(type, namespace)
|
255
|
-
types
|
255
|
+
def collect_composite_types(types, type, namespace)
|
256
|
+
types << { type: type, namespace: namespace }
|
256
257
|
|
257
258
|
type.xml_mapping.elements.values.each do |mapping|
|
258
259
|
attribute = type.attributes[mapping.attribute]
|
@@ -262,11 +263,9 @@ module Shale
|
|
262
263
|
is_included = types.include?({ type: attribute.type, namespace: namespace })
|
263
264
|
|
264
265
|
if is_mapper && !is_included
|
265
|
-
types
|
266
|
+
collect_composite_types(types, attribute.type, mapping.namespace.name)
|
266
267
|
end
|
267
268
|
end
|
268
|
-
|
269
|
-
types.uniq
|
270
269
|
end
|
271
270
|
|
272
271
|
# Convert Ruby class name to XML Schema name
|
data/lib/shale/schema.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative 'schema/
|
4
|
-
require_relative 'schema/
|
3
|
+
require_relative 'schema/json_generator'
|
4
|
+
require_relative 'schema/json_compiler'
|
5
|
+
require_relative 'schema/xml_generator'
|
5
6
|
|
6
7
|
module Shale
|
7
8
|
# Module for handling JSON and XML schema
|
@@ -22,8 +23,30 @@ module Shale
|
|
22
23
|
# # => JSON schema
|
23
24
|
#
|
24
25
|
# @api public
|
25
|
-
def self.to_json(klass, id: nil, description: nil, pretty: false)
|
26
|
-
|
26
|
+
def self.to_json(klass, id: nil, title: nil, description: nil, pretty: false)
|
27
|
+
JSONGenerator.new.to_schema(
|
28
|
+
klass,
|
29
|
+
id: id,
|
30
|
+
title: title,
|
31
|
+
description: description,
|
32
|
+
pretty: pretty
|
33
|
+
)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Generate Shale model from JSON Schema
|
37
|
+
#
|
38
|
+
# @param [Array<String>] schemas
|
39
|
+
# @param [String, nil] root_name
|
40
|
+
#
|
41
|
+
# @return [Array<String>]
|
42
|
+
#
|
43
|
+
# @example
|
44
|
+
# Shale::Schema.from_json([json_schema1, json_schema2], root_name: 'foobar')
|
45
|
+
# # => [model1, model2, model3]
|
46
|
+
#
|
47
|
+
# @api public
|
48
|
+
def self.from_json(schemas, root_name: nil)
|
49
|
+
JSONCompiler.new.to_models(schemas, root_name: root_name)
|
27
50
|
end
|
28
51
|
|
29
52
|
# Generate XML Schema from Shale model
|
@@ -41,7 +64,7 @@ module Shale
|
|
41
64
|
#
|
42
65
|
# @api public
|
43
66
|
def self.to_xml(klass, base_name = nil, pretty: false, declaration: false)
|
44
|
-
|
67
|
+
XMLGenerator.new.to_schemas(klass, base_name, pretty: pretty, declaration: declaration)
|
45
68
|
end
|
46
69
|
end
|
47
70
|
end
|
data/lib/shale/type/composite.rb
CHANGED
@@ -35,18 +35,15 @@ module Shale
|
|
35
35
|
next unless attribute
|
36
36
|
|
37
37
|
if value.nil?
|
38
|
-
instance.
|
39
|
-
|
40
|
-
end
|
41
|
-
|
42
|
-
if attribute.collection?
|
38
|
+
instance.send(attribute.setter, nil)
|
39
|
+
elsif attribute.collection?
|
43
40
|
[*value].each do |val|
|
44
41
|
val = val ? attribute.type.of_#{format}(val) : val
|
45
|
-
instance.
|
42
|
+
instance.send(attribute.name) << attribute.type.cast(val)
|
46
43
|
end
|
47
44
|
else
|
48
45
|
val = attribute.type.of_#{format}(value)
|
49
|
-
instance.
|
46
|
+
instance.send(attribute.setter, val)
|
50
47
|
end
|
51
48
|
end
|
52
49
|
end
|
@@ -71,14 +68,11 @@ module Shale
|
|
71
68
|
attribute = instance.class.attributes[mapping.attribute]
|
72
69
|
next unless attribute
|
73
70
|
|
74
|
-
value = instance.
|
71
|
+
value = instance.send(attribute.name)
|
75
72
|
|
76
73
|
if value.nil?
|
77
74
|
hash[mapping.name] = nil
|
78
|
-
|
79
|
-
end
|
80
|
-
|
81
|
-
if attribute.collection?
|
75
|
+
elsif attribute.collection?
|
82
76
|
hash[mapping.name] = [*value].map do |v|
|
83
77
|
v ? attribute.type.as_#{format}(v) : v
|
84
78
|
end
|
@@ -163,9 +157,9 @@ module Shale
|
|
163
157
|
next unless attribute
|
164
158
|
|
165
159
|
if attribute.collection?
|
166
|
-
instance.
|
160
|
+
instance.send(attribute.name) << attribute.type.cast(value)
|
167
161
|
else
|
168
|
-
instance.
|
162
|
+
instance.send(attribute.setter, value)
|
169
163
|
end
|
170
164
|
end
|
171
165
|
end
|
@@ -174,7 +168,7 @@ module Shale
|
|
174
168
|
attribute = attributes[xml_mapping.content]
|
175
169
|
|
176
170
|
if attribute
|
177
|
-
instance.
|
171
|
+
instance.send(attribute.setter, attribute.type.of_xml(element))
|
178
172
|
end
|
179
173
|
end
|
180
174
|
|
@@ -190,9 +184,9 @@ module Shale
|
|
190
184
|
|
191
185
|
if attribute.collection?
|
192
186
|
value = attribute.type.of_xml(node)
|
193
|
-
instance.
|
187
|
+
instance.send(attribute.name) << attribute.type.cast(value)
|
194
188
|
else
|
195
|
-
instance.
|
189
|
+
instance.send(attribute.setter, attribute.type.of_xml(node))
|
196
190
|
end
|
197
191
|
end
|
198
192
|
end
|
@@ -237,7 +231,7 @@ module Shale
|
|
237
231
|
attribute = instance.class.attributes[mapping.attribute]
|
238
232
|
next unless attribute
|
239
233
|
|
240
|
-
value = instance.
|
234
|
+
value = instance.send(attribute.name)
|
241
235
|
next if value.nil?
|
242
236
|
|
243
237
|
doc.add_namespace(mapping.namespace.prefix, mapping.namespace.name)
|
@@ -249,7 +243,7 @@ module Shale
|
|
249
243
|
attribute = instance.class.attributes[xml_mapping.content]
|
250
244
|
|
251
245
|
if attribute
|
252
|
-
value = instance.
|
246
|
+
value = instance.send(attribute.name)
|
253
247
|
doc.add_text(element, value.to_s) if value
|
254
248
|
end
|
255
249
|
end
|
@@ -261,7 +255,7 @@ module Shale
|
|
261
255
|
attribute = instance.class.attributes[mapping.attribute]
|
262
256
|
next unless attribute
|
263
257
|
|
264
|
-
value = instance.
|
258
|
+
value = instance.send(attribute.name)
|
265
259
|
next if value.nil?
|
266
260
|
|
267
261
|
doc.add_namespace(mapping.namespace.prefix, mapping.namespace.name)
|
data/lib/shale/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shale
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.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-05-
|
11
|
+
date: 2022-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Ruby object mapper and serializer for XML, JSON and YAML.
|
14
14
|
email:
|
@@ -37,28 +37,40 @@ files:
|
|
37
37
|
- lib/shale/mapping/validator.rb
|
38
38
|
- lib/shale/mapping/xml.rb
|
39
39
|
- lib/shale/schema.rb
|
40
|
-
- lib/shale/schema/
|
41
|
-
- lib/shale/schema/
|
42
|
-
- lib/shale/schema/
|
43
|
-
- lib/shale/schema/
|
44
|
-
- lib/shale/schema/
|
45
|
-
- lib/shale/schema/
|
46
|
-
- lib/shale/schema/
|
47
|
-
- lib/shale/schema/
|
48
|
-
- lib/shale/schema/
|
49
|
-
- lib/shale/schema/
|
50
|
-
- lib/shale/schema/
|
51
|
-
- lib/shale/schema/
|
52
|
-
- lib/shale/schema/
|
53
|
-
- lib/shale/schema/
|
54
|
-
- lib/shale/schema/
|
55
|
-
- lib/shale/schema/
|
56
|
-
- lib/shale/schema/
|
57
|
-
- lib/shale/schema/
|
58
|
-
- lib/shale/schema/
|
59
|
-
- lib/shale/schema/
|
60
|
-
- lib/shale/schema/
|
61
|
-
- lib/shale/schema/
|
40
|
+
- lib/shale/schema/json_compiler.rb
|
41
|
+
- lib/shale/schema/json_compiler/boolean.rb
|
42
|
+
- lib/shale/schema/json_compiler/date.rb
|
43
|
+
- lib/shale/schema/json_compiler/float.rb
|
44
|
+
- lib/shale/schema/json_compiler/integer.rb
|
45
|
+
- lib/shale/schema/json_compiler/object.rb
|
46
|
+
- lib/shale/schema/json_compiler/property.rb
|
47
|
+
- lib/shale/schema/json_compiler/string.rb
|
48
|
+
- lib/shale/schema/json_compiler/time.rb
|
49
|
+
- lib/shale/schema/json_compiler/utils.rb
|
50
|
+
- lib/shale/schema/json_compiler/value.rb
|
51
|
+
- lib/shale/schema/json_generator.rb
|
52
|
+
- lib/shale/schema/json_generator/base.rb
|
53
|
+
- lib/shale/schema/json_generator/boolean.rb
|
54
|
+
- lib/shale/schema/json_generator/collection.rb
|
55
|
+
- lib/shale/schema/json_generator/date.rb
|
56
|
+
- lib/shale/schema/json_generator/float.rb
|
57
|
+
- lib/shale/schema/json_generator/integer.rb
|
58
|
+
- lib/shale/schema/json_generator/object.rb
|
59
|
+
- lib/shale/schema/json_generator/ref.rb
|
60
|
+
- lib/shale/schema/json_generator/schema.rb
|
61
|
+
- lib/shale/schema/json_generator/string.rb
|
62
|
+
- lib/shale/schema/json_generator/time.rb
|
63
|
+
- lib/shale/schema/json_generator/value.rb
|
64
|
+
- lib/shale/schema/xml_generator.rb
|
65
|
+
- lib/shale/schema/xml_generator/attribute.rb
|
66
|
+
- lib/shale/schema/xml_generator/complex_type.rb
|
67
|
+
- lib/shale/schema/xml_generator/element.rb
|
68
|
+
- lib/shale/schema/xml_generator/import.rb
|
69
|
+
- lib/shale/schema/xml_generator/ref_attribute.rb
|
70
|
+
- lib/shale/schema/xml_generator/ref_element.rb
|
71
|
+
- lib/shale/schema/xml_generator/schema.rb
|
72
|
+
- lib/shale/schema/xml_generator/typed_attribute.rb
|
73
|
+
- lib/shale/schema/xml_generator/typed_element.rb
|
62
74
|
- lib/shale/type/boolean.rb
|
63
75
|
- lib/shale/type/composite.rb
|
64
76
|
- lib/shale/type/date.rb
|