baldr 0.3.10 → 0.3.11

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.
data/lib/baldr/parser.rb CHANGED
@@ -36,6 +36,7 @@ class Baldr::Parser
36
36
  def validate
37
37
  if @roots
38
38
  @roots.each { |e| Baldr::Validator.validate!(e, @grammar, @version) }
39
+ @roots.each { |e| Baldr::Types.convert_after_parse!(e, @grammar, @version) }
39
40
  end
40
41
  rescue Baldr::Error => e
41
42
  @error = e.message
@@ -0,0 +1,86 @@
1
+ module Baldr::Types
2
+
3
+ extend self
4
+
5
+ def convert_after_load!(envelope, grammar = nil, version = nil)
6
+ grammar ||= Baldr::Grammar::Envelope
7
+ convert_tree!(envelope, grammar, version) do |record_def, element|
8
+ case record_def[:type]
9
+ when :number
10
+ if element.is_a? String
11
+ if record_def[:decimals] == 0
12
+ element
13
+ else
14
+ element.to_f
15
+ end
16
+ else
17
+ element
18
+ end
19
+ else
20
+ element
21
+ end
22
+ end
23
+ end
24
+
25
+ def convert_after_parse!(envelope, grammar = nil, version = nil)
26
+ grammar ||= Baldr::Grammar::Envelope
27
+ convert_tree!(envelope, grammar, version) do |record_def, element|
28
+ case record_def[:type]
29
+ when :number
30
+ if element.is_a? String
31
+ if record_def[:decimals] == 0
32
+ element
33
+ else
34
+ element.to_f / (10.0 ** record_def[:decimals])
35
+ end
36
+ else
37
+ element
38
+ end
39
+ else
40
+ element
41
+ end
42
+ end
43
+ end
44
+
45
+ def convert_before_render!(envelope, grammar = nil, version = nil)
46
+ grammar ||= Baldr::Grammar::Envelope
47
+ convert_tree!(envelope, grammar, version) do |record_def, element|
48
+ case record_def[:type]
49
+ when :number
50
+ if element.is_a? String
51
+ element
52
+ else
53
+ if record_def[:decimals] == 0
54
+ element
55
+ else
56
+ (element * (10.0 ** record_def[:decimals])).round.to_s
57
+ end
58
+ end
59
+ else
60
+ element
61
+ end
62
+ end
63
+ end
64
+
65
+ protected
66
+
67
+ def convert_tree!(segment, grammar, version, &block)
68
+ record_defs = grammar.record_defs
69
+
70
+ record_defs[segment.id].each.with_index do |r, i|
71
+ if segment.elements[i].present?
72
+ segment.elements[i] = yield r, segment.elements[i]
73
+ end
74
+ end
75
+
76
+ version ||= segment.sub_version
77
+ sub_grammar = segment.sub_grammar(version)
78
+
79
+ segment.children.each do |loop|
80
+ loop.segments.each do |child|
81
+ convert_tree!(child, sub_grammar || grammar, version, &block)
82
+ end
83
+ end
84
+ end
85
+
86
+ end
data/lib/baldr/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Baldr
2
- VERSION = '0.3.10'
2
+ VERSION = '0.3.11'
3
3
  end
data/lib/baldr.rb CHANGED
@@ -3,6 +3,7 @@ require 'baldr/version'
3
3
  require 'baldr/builder'
4
4
  require 'baldr/parser'
5
5
  require 'baldr/segment'
6
+ require 'baldr/types'
6
7
  require 'baldr/envelope'
7
8
  require 'baldr/transaction'
8
9
  require 'baldr/functional_group'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: baldr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.10
4
+ version: 0.3.11
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -62,6 +62,7 @@ files:
62
62
  - lib/baldr/renderer/x12.rb
63
63
  - lib/baldr/segment.rb
64
64
  - lib/baldr/transaction.rb
65
+ - lib/baldr/types.rb
65
66
  - lib/baldr/utils.rb
66
67
  - lib/baldr/validator.rb
67
68
  - lib/baldr/version.rb