Module: Bparity::SpecBundle::Checksum
- Defined in:
- lib/bparity/spec_bundle.rb
Class Method Summary collapse
Class Method Details
.calculate(bundle) ⇒ Object
16 17 18 19 |
# File 'lib/bparity/spec_bundle.rb', line 16 def calculate(bundle) payload = deep_sort(bundle.reject { |key, _| key.to_s == "checksum" }) "sha256:#{Digest::SHA256.hexdigest(JSON.generate(payload))}" end |
.deep_sort(value) ⇒ Object
21 22 23 24 25 26 27 |
# File 'lib/bparity/spec_bundle.rb', line 21 def deep_sort(value) case value when Hash then value.sort_by { |key, _| key.to_s }.to_h { |key, item| [key.to_s, deep_sort(item)] } when Array then value.map { |item| deep_sort(item) } else value end end |