30 lines
		
	
	
		
			590 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			590 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # typed: strict
 | |
| # frozen_string_literal: true
 | |
| 
 | |
| # A formula's checksum.
 | |
| class Checksum
 | |
|   extend Forwardable
 | |
| 
 | |
|   sig { returns(String) }
 | |
|   attr_reader :hexdigest
 | |
| 
 | |
|   sig { params(hexdigest: String).void }
 | |
|   def initialize(hexdigest)
 | |
|     @hexdigest = T.let(hexdigest.downcase, String)
 | |
|   end
 | |
| 
 | |
|   delegate [:empty?, :to_s, :length, :[]] => :@hexdigest
 | |
| 
 | |
|   sig { params(other: T.any(String, Checksum, Symbol)).returns(T::Boolean) }
 | |
|   def ==(other)
 | |
|     case other
 | |
|     when String
 | |
|       to_s == other.downcase
 | |
|     when Checksum
 | |
|       hexdigest == other.hexdigest
 | |
|     else
 | |
|       false
 | |
|     end
 | |
|   end
 | |
| end
 | 
