Module: IgniterLang::Assembler::Canonical

Defined in:
lib/igniter_lang/assembler.rb

Class Method Summary collapse

Class Method Details

.hash(value) ⇒ Object



48
49
50
# File 'lib/igniter_lang/assembler.rb', line 48

def hash(value)
  "sha256:#{Digest::SHA256.hexdigest(JSON.generate(normalize(value)))}"
end

.json(value) ⇒ Object



44
45
46
# File 'lib/igniter_lang/assembler.rb', line 44

def json(value)
  JSON.pretty_generate(normalize(value)) + "\n"
end

.normalize(value) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/igniter_lang/assembler.rb', line 29

def normalize(value)
  case value
  when Hash
    value.keys.sort_by(&:to_s).each_with_object({}) do |key, out|
      out[key.to_s] = normalize(value[key])
    end
  when Array
    value.map { |item| normalize(item) }
  when Symbol
    value.to_s
  else
    value
  end
end

.short_hash(value) ⇒ Object



52
53
54
# File 'lib/igniter_lang/assembler.rb', line 52

def short_hash(value)
  hash(value).split(":").last[0, 16]
end