Sha256: 1784963e27c33bc7fb8e9fd0bad6123acab667cafc840a784e0388919893982a
Contents?: true
Size: 1.11 KB
Versions: 28
Compression:
Stored size: 1.11 KB
Contents
module Puppet::Pops module Loader # A namespace/name/type combination that can be used as a compound hash key # # @api public class TypedName DOUBLE_COLON = '::'.freeze attr_reader :hash attr_reader :type attr_reader :name_authority attr_reader :name attr_reader :name_parts attr_reader :compound_name def initialize(type, name, name_authority = Pcore::RUNTIME_NAME_AUTHORITY) @type = type @name_authority = name_authority # relativize the name (get rid of leading ::), and make the split string available parts = name.to_s.split(DOUBLE_COLON) if parts[0].empty? parts.shift @name = name[2..-1] else @name = name end @name_parts = parts.freeze # Use a frozen compound key for the hash and comparison. Most varying part first @compound_name = "#{@name}/#{@type}/#{@name_authority}".freeze @hash = @compound_name.hash freeze end def ==(o) o.class == self.class && o.compound_name == @compound_name end alias eql? == def qualified? @name_parts.size > 1 end def to_s "#{@name_authority}/#{@type}/#{@name}" end end end end
Version data entries
28 entries across 28 versions & 1 rubygems