Sha256: 2075c800e8973e3961ffe3be848a70105cc045d9dc6628728f76ffc30dd2c84a
Contents?: true
Size: 1.3 KB
Versions: 1
Compression:
Stored size: 1.3 KB
Contents
# frozen_string_literal: true # This private class encapsulates pairs (mod, cname). # # Objects represent the constant cname in the class or module object mod, and # have API to manage them that encapsulates the constants API. Examples: # # cref.path # cref.set(value) # cref.get # # The constant may or may not exist in mod. class Zeitwerk::Cref include Zeitwerk::RealModName # @sig Symbol attr_reader :cname # The type of the first argument is Module because Class < Module, class # objects are also valid. # # @sig (Module, Symbol) -> void def initialize(mod, cname) @mod = mod @cname = cname @path = nil end # @sig () -> String def path @path ||= Object.equal?(@mod) ? @cname.name : "#{real_mod_name(@mod)}::#{@cname.name}".freeze end # @sig () -> String? def autoload? @mod.autoload?(@cname, false) end # @sig (String) -> bool def autoload(abspath) @mod.autoload(@cname, abspath) end # @sig () -> bool def defined? @mod.const_defined?(@cname, false) end # @sig (Object) -> Object def set(value) @mod.const_set(@cname, value) end # @raise [NameError] # @sig () -> Object def get @mod.const_get(@cname, false) end # @raise [NameError] # @sig () -> void def remove @mod.__send__(:remove_const, @cname) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
zeitwerk-2.7.0 | lib/zeitwerk/cref.rb |