diff --git a/lib/transformer/caster/template.rb b/lib/transformer/caster/template.rb index c8c3e00..3ed9e6e 100644 --- a/lib/transformer/caster/template.rb +++ b/lib/transformer/caster/template.rb @@ -1,6 +1,8 @@ module Transformer module Caster class Template + PRECISION = 14 + def initialize @template = { area: {}, file_values: {}, graph_values: {} } end @@ -9,6 +11,9 @@ def add_graph_value(graph_method, value) key = graph_method.export_key.to_s export_method = graph_method.export_method + # Round all numeric values recursively to PRECISION decimals for consistency + value = deep_round(value) + @template.fetch(:graph_values)[key] ||= {} @template.fetch(:graph_values).fetch(key).store(export_method, value) end @@ -29,6 +34,22 @@ def get(key) def dump @template end + + private + + # Recursively rounds all Float values to PRECISION decimal places + def deep_round(value) + case value + when Float + value.round(PRECISION) + when Hash + value.transform_values { |v| deep_round(v) } + when Array + value.map { |v| deep_round(v) } + else + value + end + end end end end