baldr 0.3.10 → 0.3.11

Sign up to get free protection for your applications and to get access to all the features.
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