Class: Dhall::Import::IntegrityCheck

Inherits:
Object
  • Object
show all
Defined in:
lib/dhall/ast.rb,
lib/dhall/binary.rb

Direct Known Subclasses

NoIntegrityCheck

Defined Under Namespace

Classes: FailureException

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.decode(integrity_check) ⇒ Object



218
219
220
221
222
223
224
225
226
# File 'lib/dhall/binary.rb', line 218

def self.decode(integrity_check)
	return unless integrity_check

	IntegrityCheck.new(
		Multihashes.decode(integrity_check).select { |k, _|
			[:code, :digest].include?(k)
		}
	)
end

Instance Method Details

#as_jsonObject



1305
1306
1307
# File 'lib/dhall/ast.rb', line 1305

def as_json
	Multihashes.encode(digest, Multihashes::TABLE[code])
end

#check(expr) ⇒ Object

Raises:



1298
1299
1300
1301
1302
1303
# File 'lib/dhall/ast.rb', line 1298

def check(expr)
	expr = expr.normalize
	return expr if expr.cache_key == to_s

	raise FailureException, "#{expr} does not match #{self}"
end

#hexdigestObject



1290
1291
1292
# File 'lib/dhall/ast.rb', line 1290

def hexdigest
	digest.unpack("H*").first.encode(Encoding::UTF_8)
end

#ipfsObject



1294
1295
1296
# File 'lib/dhall/ast.rb', line 1294

def ipfs
	"/ipfs/b#{Base32.encode("\x01\x55" + as_json).downcase.sub(/=*$/, "")}"
end

#to_sObject



1286
1287
1288
# File 'lib/dhall/ast.rb', line 1286

def to_s
	"#{Multihashes::TABLE[code].sub(/\Asha2-/, "sha")}:#{hexdigest}"
end