All Files
    (
      
  100.0%
     
     covered at
     
       
         9.96
       
     hits/line
    )
  
  
  
    10 files in total.
  
  
    159 relevant lines,
    159 lines covered and
    0 lines missed. 
    (
  100.0%
)
  
  
    
      10 total branches, 
      10 branches covered and
      0 branches missed.
      (
  100.0%
)
    
  
  
 
        
       
      
      
      
        
  
  
    
      
        
          
- 
            
            
              
            
            
# frozen_string_literal: true
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "xdg/cache"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "xdg/config"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "xdg/data"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "xdg/environment"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "xdg/pair"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "xdg/paths/combined"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "xdg/paths/directory"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "xdg/paths/home"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "xdg/state"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
            
              
            
            
# Main namespace.
           
        
      
        
          
- 
            
              1
            
            
              
            
            
module XDG
           
        
      
        
          
- 
            
              1
            
            
              
            
            
  DELIMITER = "="
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
  def self.new = Environment.new
           
        
      
        
          
- 
            
            
              
            
            
end
           
        
      
    
  
 
      
        
  
  
    
      
        
          
- 
            
            
              
            
            
# frozen_string_literal: true
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "forwardable"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "xdg/pair"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
module XDG
           
        
      
        
          
- 
            
            
              
            
            
  # Provides cache support.
           
        
      
        
          
- 
            
              1
            
            
              
            
            
  class Cache
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    extend Forwardable
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    HOME_PAIR = Pair["XDG_CACHE_HOME", ".cache"].freeze
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    delegate %i[home directories all to_s to_str] => :combined
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def initialize home: Paths::Home, directories: Paths::Directory, environment: ENV
           
        
      
        
          
- 
            
              18
            
            
              
            
            
      @combined = Paths::Combined.new home.new(HOME_PAIR, environment),
           
        
      
        
          
- 
            
            
              
            
            
                                      directories.new(Pair.new, environment)
           
        
      
        
          
- 
            
              18
            
            
              
            
            
      freeze
           
        
      
        
          
- 
            
            
              
            
            
    end
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def inspect = "#<#{self.class}:#{object_id} #{self}>"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    private
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    attr_reader :combined
           
        
      
        
          
- 
            
            
              
            
            
  end
           
        
      
        
          
- 
            
            
              
            
            
end
           
        
      
    
  
 
      
        
  
  
    
      
        
          
- 
            
            
              
            
            
# frozen_string_literal: true
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "forwardable"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "xdg/pair"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
module XDG
           
        
      
        
          
- 
            
            
              
            
            
  # Provides configuration support.
           
        
      
        
          
- 
            
              1
            
            
              
            
            
  class Config
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    extend Forwardable
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    HOME_PAIR = Pair["XDG_CONFIG_HOME", ".config"].freeze
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    DIRS_PAIR = Pair["XDG_CONFIG_DIRS", "/etc/xdg"].freeze
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    delegate %i[home directories all to_s to_str] => :combined
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def initialize home: Paths::Home, directories: Paths::Directory, environment: ENV
           
        
      
        
          
- 
            
              18
            
            
              
            
            
      @combined = Paths::Combined.new home.new(HOME_PAIR, environment),
           
        
      
        
          
- 
            
            
              
            
            
                                      directories.new(DIRS_PAIR, environment)
           
        
      
        
          
- 
            
              18
            
            
              
            
            
      freeze
           
        
      
        
          
- 
            
            
              
            
            
    end
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def inspect = "#<#{self.class}:#{object_id} #{self}>"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    private
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    attr_reader :combined
           
        
      
        
          
- 
            
            
              
            
            
  end
           
        
      
        
          
- 
            
            
              
            
            
end
           
        
      
    
  
 
      
        
  
  
    
      
        
          
- 
            
            
              
            
            
# frozen_string_literal: true
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "forwardable"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "xdg/pair"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
module XDG
           
        
      
        
          
- 
            
            
              
            
            
  # Provides data support.
           
        
      
        
          
- 
            
              1
            
            
              
            
            
  class Data
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    extend Forwardable
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    HOME_PAIR = Pair["XDG_DATA_HOME", ".local/share"].freeze
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    DIRS_PAIR = Pair["XDG_DATA_DIRS", "/usr/local/share:/usr/share"].freeze
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    delegate %i[home directories all to_s to_str] => :combined
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def initialize home: Paths::Home, directories: Paths::Directory, environment: ENV
           
        
      
        
          
- 
            
              18
            
            
              
            
            
      @combined = Paths::Combined.new home.new(HOME_PAIR, environment),
           
        
      
        
          
- 
            
            
              
            
            
                                      directories.new(DIRS_PAIR, environment)
           
        
      
        
          
- 
            
              18
            
            
              
            
            
      freeze
           
        
      
        
          
- 
            
            
              
            
            
    end
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def inspect = "#<#{self.class}:#{object_id} #{self}>"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    private
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    attr_reader :combined
           
        
      
        
          
- 
            
            
              
            
            
  end
           
        
      
        
          
- 
            
            
              
            
            
end
           
        
      
    
  
 
      
        
  
  
    
      
        
          
- 
            
            
              
            
            
# frozen_string_literal: true
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
module XDG
           
        
      
        
          
- 
            
            
              
            
            
  # A convenience wrapper to all XDG functionality.
           
        
      
        
          
- 
            
              1
            
            
              
            
            
  class Environment
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def initialize home: Paths::Home, directories: Paths::Directory, environment: ENV
           
        
      
        
          
- 
            
              11
            
            
              
            
            
      @cache = Cache.new(home:, directories:, environment:)
           
        
      
        
          
- 
            
              11
            
            
              
            
            
      @config = Config.new(home:, directories:, environment:)
           
        
      
        
          
- 
            
              11
            
            
              
            
            
      @data = Data.new(home:, directories:, environment:)
           
        
      
        
          
- 
            
              11
            
            
              
            
            
      @state = State.new(home:, directories:, environment:)
           
        
      
        
          
- 
            
              11
            
            
              
            
            
      freeze
           
        
      
        
          
- 
            
            
              
            
            
    end
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def cache_home = cache.home
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def config_home = config.home
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def config_dirs = config.directories
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def data_home = data.home
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def data_dirs = data.directories
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def state_home = state.home
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def to_s = "#{cache} #{config} #{data} #{state}"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    alias to_str to_s
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def inspect = "#<#{self.class}:#{object_id} #{self}>"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    private
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    attr_reader :cache, :config, :data, :state
           
        
      
        
          
- 
            
            
              
            
            
  end
           
        
      
        
          
- 
            
            
              
            
            
end
           
        
      
    
  
 
      
        
  
  
    
      
        
          
- 
            
            
              
            
            
# frozen_string_literal: true
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
module XDG
           
        
      
        
          
- 
            
            
              
            
            
  # A generic key-value pair (KVP).
           
        
      
        
          
- 
            
              1
            
            
              
            
            
  Pair = Data.define :key, :value do
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def initialize key: nil, value: nil
           
        
      
        
          
- 
            
              152
            
            
              
            
            
      super
           
        
      
        
          
- 
            
            
              
            
            
    end
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def key? = key.to_s.size.positive?
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def value? = value.to_s.size.positive?
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              5
            
            
              
            
            
    def empty? = !(key? && value?)
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def to_env = {key => value}
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              9
            
            
              
                
                  then: 6
                
              
                
                  else: 2
                
              
            
            
    def to_s = key? || value? ? "#{key}#{DELIMITER}#{value}" : ""
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    alias_method :to_str, :to_s
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def inspect
           
        
      
        
          
- 
            
              4
            
            
              
            
            
      type = self.class
           
        
      
        
          
- 
            
              4
            
            
              
                
                  then: 3
                
              
                
                  else: 1
                
              
            
            
      key? || value? ? "#<data #{type} #{key}#{DELIMITER}#{value}>" : "#<data #{type}>"
           
        
      
        
          
- 
            
            
              
            
            
    end
           
        
      
        
          
- 
            
            
              
            
            
  end
           
        
      
        
          
- 
            
            
              
            
            
end
           
        
      
    
  
 
      
        
  
  
    
      
        
          
- 
            
            
              
            
            
# frozen_string_literal: true
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "pathname"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
module XDG
           
        
      
        
          
- 
            
              1
            
            
              
            
            
  module Paths
           
        
      
        
          
- 
            
            
              
            
            
    # The combined home and directory paths.
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    class Combined
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def initialize initial_home, initial_directories
           
        
      
        
          
- 
            
              83
            
            
              
            
            
        @initial_home = initial_home
           
        
      
        
          
- 
            
              83
            
            
              
            
            
        @initial_directories = initial_directories
           
        
      
        
          
- 
            
              83
            
            
              
            
            
        freeze
           
        
      
        
          
- 
            
            
              
            
            
      end
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def home = initial_home.dynamic
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def directories = initial_directories.dynamic
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def all = directories.prepend(*home)
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def to_s = [initial_home.to_s, initial_directories.to_s].reject(&:empty?).join " "
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      alias to_str to_s
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def inspect = "#<#{self.class}:#{object_id} #{self}>"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      private
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      attr_reader :initial_home, :initial_directories
           
        
      
        
          
- 
            
            
              
            
            
    end
           
        
      
        
          
- 
            
            
              
            
            
  end
           
        
      
        
          
- 
            
            
              
            
            
end
           
        
      
    
  
 
      
        
  
  
    
      
        
          
- 
            
            
              
            
            
# frozen_string_literal: true
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "pathname"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
module XDG
           
        
      
        
          
- 
            
              1
            
            
              
            
            
  module Paths
           
        
      
        
          
- 
            
            
              
            
            
    # A collection of XDG directories.
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    class Directory
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      DELIMITER = ":"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def initialize pair, environment = ENV
           
        
      
        
          
- 
            
              101
            
            
              
            
            
        @pair = pair
           
        
      
        
          
- 
            
              101
            
            
              
            
            
        @environment = environment
           
        
      
        
          
- 
            
              101
            
            
              
            
            
        freeze
           
        
      
        
          
- 
            
            
              
            
            
      end
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              6
            
            
              
            
            
      def default = value.split(DELIMITER).map { |path| expand path }
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def dynamic
           
        
      
        
          
- 
            
              114
            
            
              
                
                  then: 45
                
              
                
                  else: 12
                
              
            
            
        String(environment[key]).then { |env_value| env_value.empty? ? value : env_value }
           
        
      
        
          
- 
            
            
              
            
            
                                .split(DELIMITER)
           
        
      
        
          
- 
            
            
              
            
            
                                .uniq
           
        
      
        
          
- 
            
              58
            
            
              
            
            
                                .map { |path| expand path }
           
        
      
        
          
- 
            
            
              
            
            
      end
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def to_s = [key, dynamic.join(DELIMITER)].reject(&:empty?).join XDG::DELIMITER
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      alias to_str to_s
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def inspect
           
        
      
        
          
- 
            
              2
            
            
              
            
            
        pairs = to_s
           
        
      
        
          
- 
            
              2
            
            
              
            
            
        type = self.class
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              2
            
            
              
                
                  then: 1
                
              
                
                  else: 1
                
              
            
            
        pairs.empty? ? "#<#{type}:#{object_id}>" : "#<#{type}:#{object_id} #{self}>"
           
        
      
        
          
- 
            
            
              
            
            
      end
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      private
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      attr_reader :pair, :environment
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def key = String pair.key
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def value = String pair.value
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def expand(path) = Pathname(path).expand_path
           
        
      
        
          
- 
            
            
              
            
            
    end
           
        
      
        
          
- 
            
            
              
            
            
  end
           
        
      
        
          
- 
            
            
              
            
            
end
           
        
      
    
  
 
      
        
  
  
    
      
        
          
- 
            
            
              
            
            
# frozen_string_literal: true
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "forwardable"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "pathname"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
module XDG
           
        
      
        
          
- 
            
              1
            
            
              
            
            
  module Paths
           
        
      
        
          
- 
            
            
              
            
            
    # A XDG home path.
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    class Home
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      extend Forwardable
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      KEY = "HOME"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      delegate %i[key value] => :pair
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def initialize pair, environment = ENV
           
        
      
        
          
- 
            
              98
            
            
              
            
            
        @pair = pair
           
        
      
        
          
- 
            
              98
            
            
              
            
            
        @environment = environment
           
        
      
        
          
- 
            
              98
            
            
              
            
            
        freeze
           
        
      
        
          
- 
            
            
              
            
            
      end
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def default = expand String(value)
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              55
            
            
              
                
                  then: 31
                
              
                
                  else: 23
                
              
            
            
      def dynamic = String(environment[key]).then { |path| path.empty? ? default : expand(path) }
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def to_s = [pair.key, dynamic].compact.join XDG::DELIMITER
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      alias to_str to_s
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def inspect = "#<#{self.class}:#{object_id} #{self}>"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      private
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      attr_reader :pair, :environment
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def expand(path) = home.join(path).expand_path
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
      def home = Pathname environment.fetch(KEY)
           
        
      
        
          
- 
            
            
              
            
            
    end
           
        
      
        
          
- 
            
            
              
            
            
  end
           
        
      
        
          
- 
            
            
              
            
            
end
           
        
      
    
  
 
      
        
  
  
    
      
        
          
- 
            
            
              
            
            
# frozen_string_literal: true
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "forwardable"
           
        
      
        
          
- 
            
              1
            
            
              
            
            
require "xdg/pair"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
module XDG
           
        
      
        
          
- 
            
            
              
            
            
  # Provides state support.
           
        
      
        
          
- 
            
              1
            
            
              
            
            
  class State
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    extend Forwardable
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    HOME_PAIR = Pair["XDG_STATE_HOME", ".local/state"].freeze
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    delegate %i[home directories all to_s to_str] => :combined
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def initialize home: Paths::Home, directories: Paths::Directory, environment: ENV
           
        
      
        
          
- 
            
              18
            
            
              
            
            
      @combined = Paths::Combined.new home.new(HOME_PAIR, environment),
           
        
      
        
          
- 
            
            
              
            
            
                                      directories.new(Pair.new, environment)
           
        
      
        
          
- 
            
              18
            
            
              
            
            
      freeze
           
        
      
        
          
- 
            
            
              
            
            
    end
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    def inspect = "#<#{self.class}:#{object_id} #{self}>"
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    private
           
        
      
        
          
- 
            
            
              
            
            
           
        
      
        
          
- 
            
              1
            
            
              
            
            
    attr_reader :combined
           
        
      
        
          
- 
            
            
              
            
            
  end
           
        
      
        
          
- 
            
            
              
            
            
end