shale 1.2.1 → 1.2.2
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 +8 -0
- data/lib/shale/schema/compiler/decimal.rb +21 -0
- data/lib/shale/schema/json_generator/ref.rb +2 -2
- data/lib/shale/schema/json_generator.rb +1 -1
- data/lib/shale/schema/xml_compiler.rb +9 -1
- data/lib/shale/schema/xml_generator.rb +1 -0
- data/lib/shale/type/decimal.rb +51 -0
- data/lib/shale/version.rb +1 -1
- data/lib/shale.rb +2 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f737403457864d1e61e3a75015369cc826b7e3f758aae950d2a8aec16d316942
|
4
|
+
data.tar.gz: 2921f2984702ab7272b7aeca49521fb1c5103747ab32fdf2c25c54e6cf0a8e70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52189f5729daad8d9b6d237c08f3d924017161028c08fafbae943ac9e736d1a1239729fe8cb4142899accd3d71f0142858b7fcb835bcecb8b36c2e7083a0c30f
|
7
|
+
data.tar.gz: 7c00edbbff3daff21b2f87c2a24b8d3cfe1e8f449dfe7523206c7f51c81597ab240390254b06f24264dab0cf9628843c6e7b855d6458362496f98c87ae97a538
|
data/CHANGELOG.md
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Shale
|
4
|
+
module Schema
|
5
|
+
module Compiler
|
6
|
+
# Class that maps Schema type to Shale Decimal type
|
7
|
+
#
|
8
|
+
# @api private
|
9
|
+
class Decimal
|
10
|
+
# Return name of the Shale type
|
11
|
+
#
|
12
|
+
# @return [String]
|
13
|
+
#
|
14
|
+
# @api private
|
15
|
+
def name
|
16
|
+
'Shale::Type::Decimal'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -87,7 +87,7 @@ module Shale
|
|
87
87
|
next unless attribute
|
88
88
|
|
89
89
|
if mapper_type?(attribute.type)
|
90
|
-
json_type = Ref.new(mapping.name, attribute.type.model.name)
|
90
|
+
json_type = Ref.new(mapping.name, attribute.type.model.name, schema: mapping.schema)
|
91
91
|
else
|
92
92
|
json_klass = self.class.get_json_type(attribute.type)
|
93
93
|
|
@@ -6,6 +6,7 @@ require_relative '../../shale'
|
|
6
6
|
require_relative '../error'
|
7
7
|
require_relative 'compiler/boolean'
|
8
8
|
require_relative 'compiler/date'
|
9
|
+
require_relative 'compiler/decimal'
|
9
10
|
require_relative 'compiler/float'
|
10
11
|
require_relative 'compiler/integer'
|
11
12
|
require_relative 'compiler/string'
|
@@ -103,11 +104,16 @@ module Shale
|
|
103
104
|
# XML Schema "float" types
|
104
105
|
# @api private
|
105
106
|
XS_TYPE_FLOAT = [
|
106
|
-
"#{XS_NAMESPACE_URI}:decimal",
|
107
107
|
"#{XS_NAMESPACE_URI}:float",
|
108
108
|
"#{XS_NAMESPACE_URI}:double",
|
109
109
|
].freeze
|
110
110
|
|
111
|
+
# XML Schema "decimal" types
|
112
|
+
# @api private
|
113
|
+
XS_TYPE_DECIMAL = [
|
114
|
+
"#{XS_NAMESPACE_URI}:decimal",
|
115
|
+
].freeze
|
116
|
+
|
111
117
|
# XML Schema "integer" types
|
112
118
|
# @api private
|
113
119
|
XS_TYPE_INTEGER = [
|
@@ -612,6 +618,8 @@ module Shale
|
|
612
618
|
Compiler::Time.new
|
613
619
|
elsif XS_TYPE_STRING.include?(type)
|
614
620
|
Compiler::String.new
|
621
|
+
elsif XS_TYPE_DECIMAL.include?(type)
|
622
|
+
Compiler::Decimal.new
|
615
623
|
elsif XS_TYPE_FLOAT.include?(type)
|
616
624
|
Compiler::Float.new
|
617
625
|
elsif XS_TYPE_INTEGER.include?(type)
|
@@ -52,6 +52,7 @@ module Shale
|
|
52
52
|
register_xml_type(Shale::Type::Boolean, 'boolean')
|
53
53
|
register_xml_type(Shale::Type::Date, 'date')
|
54
54
|
register_xml_type(Shale::Type::Float, 'decimal')
|
55
|
+
register_xml_type(Shale::Type::Decimal, 'decimal')
|
55
56
|
register_xml_type(Shale::Type::Integer, 'integer')
|
56
57
|
register_xml_type(Shale::Type::Time, 'dateTime')
|
57
58
|
register_xml_type(Shale::Type::Value, 'anyType')
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'value'
|
4
|
+
|
5
|
+
module Shale
|
6
|
+
module Type
|
7
|
+
# Cast value to BigDecimal
|
8
|
+
#
|
9
|
+
# @api public
|
10
|
+
class Decimal < Value
|
11
|
+
class << self
|
12
|
+
# @param [String, Float, Integer, nil] value Value to cast
|
13
|
+
#
|
14
|
+
# @return [BigDecimal, nil]
|
15
|
+
#
|
16
|
+
# @api private
|
17
|
+
def cast(value)
|
18
|
+
return if value.nil?
|
19
|
+
|
20
|
+
case value
|
21
|
+
when ::BigDecimal then value
|
22
|
+
when ::Float then BigDecimal(value, value.to_s.length)
|
23
|
+
else BigDecimal(value)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def as_json(value, **)
|
28
|
+
value.to_f
|
29
|
+
end
|
30
|
+
|
31
|
+
def as_yaml(value, **)
|
32
|
+
value.to_f
|
33
|
+
end
|
34
|
+
|
35
|
+
def as_csv(value, **)
|
36
|
+
value.to_f
|
37
|
+
end
|
38
|
+
|
39
|
+
def as_toml(value, **)
|
40
|
+
value.to_f
|
41
|
+
end
|
42
|
+
|
43
|
+
def as_xml_value(value, **)
|
44
|
+
value.to_s('F')
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
register(:decimal, Decimal)
|
50
|
+
end
|
51
|
+
end
|
data/lib/shale/version.rb
CHANGED
data/lib/shale.rb
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'yaml'
|
4
|
+
require 'bigdecimal'
|
4
5
|
|
5
6
|
require_relative 'shale/mapper'
|
6
7
|
require_relative 'shale/adapter/json'
|
7
8
|
require_relative 'shale/type'
|
8
9
|
require_relative 'shale/type/boolean'
|
9
10
|
require_relative 'shale/type/date'
|
11
|
+
require_relative 'shale/type/decimal'
|
10
12
|
require_relative 'shale/type/float'
|
11
13
|
require_relative 'shale/type/integer'
|
12
14
|
require_relative 'shale/type/string'
|
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: 1.2.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kamil Giszczak
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bigdecimal
|
@@ -72,6 +72,7 @@ files:
|
|
72
72
|
- lib/shale/schema/compiler/boolean.rb
|
73
73
|
- lib/shale/schema/compiler/complex.rb
|
74
74
|
- lib/shale/schema/compiler/date.rb
|
75
|
+
- lib/shale/schema/compiler/decimal.rb
|
75
76
|
- lib/shale/schema/compiler/float.rb
|
76
77
|
- lib/shale/schema/compiler/integer.rb
|
77
78
|
- lib/shale/schema/compiler/property.rb
|
@@ -109,6 +110,7 @@ files:
|
|
109
110
|
- lib/shale/type/boolean.rb
|
110
111
|
- lib/shale/type/complex.rb
|
111
112
|
- lib/shale/type/date.rb
|
113
|
+
- lib/shale/type/decimal.rb
|
112
114
|
- lib/shale/type/float.rb
|
113
115
|
- lib/shale/type/integer.rb
|
114
116
|
- lib/shale/type/string.rb
|