Module: XDG::BaseDir::Mixin

Extended by:
Mixin
Included in:
Mixin
Defined in:
lib/xdg/base_dir/mixin.rb

Overview

The BaseDir::Mixin module can be used to add XDG base directory methods to your own classes.

class MyAppConfig
  include XDG::BaseDir::Mixin

  def subdirectory
    'myapp'
  end
end

c = MyAppConfig.new

c.config.home.list  #=> ['~/.config/myapp']

Instance Method Summary collapse

Instance Method Details

#cacheObject



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/xdg/base_dir/mixin.rb', line 66

def cache
  obj = XDG['CACHE'].with_subdirectory(subdirectory)
  class << obj
    def home
      XDG['CACHE_HOME'].with_subdirectory(subdirectory)
    end
    def dirs
      XDG['CACHE_DIRS'].with_subdirectory(subdirectory)
    end
    def work
      XDG['CACHE_WORK'].with_subdirectory(subdirectory)
    end
  end
  return obj
end

#configObject



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/xdg/base_dir/mixin.rb', line 49

def config
  obj = XDG['CONFIG'].with_subdirectory(subdirectory)
  class << obj
    def home
      XDG['CONFIG_HOME'].with_subdirectory(subdirectory)
    end
    def dirs
      XDG['CONFIG_DIRS'].with_subdirectory(subdirectory)
    end
    def work
      XDG['CONFIG_WORK'].with_subdirectory(subdirectory)
    end
  end
  return obj
end

#dataObject



35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/xdg/base_dir/mixin.rb', line 35

def data
  obj = XDG['DATA'].with_subdirectory(subdirectory)
  class << obj
    def home
      XDG['DATA_HOME'].with_subdirectory(subdirectory)
    end
    def dirs
      XDG['DATA_DIRS'].with_subdirectory(subdirectory)
    end
  end
  return obj
end

#homeObject



30
31
32
# File 'lib/xdg/base_dir/mixin.rb', line 30

def home
  File.expand_path('~')
end

#subdirectoryObject

Override this method to change the subdirectory of the mixin.



25
26
27
# File 'lib/xdg/base_dir/mixin.rb', line 25

def subdirectory
  nil
end