xdg 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (9) hide show
  1. data/CHANGES +39 -0
  2. data/MANIFEST +1 -1
  3. data/README +10 -6
  4. data/RELEASE +20 -12
  5. data/VERSION +1 -1
  6. data/lib/xdg.rb +61 -25
  7. data/test/test_xdg.rb +8 -8
  8. metadata +4 -3
  9. data/meta/releases +0 -1
data/CHANGES ADDED
@@ -0,0 +1,39 @@
1
+ == 0.0.4 / 2008-10-26
2
+
3
+ * 9 Other Enhancements
4
+
5
+ * removed xdg_ prefixes and replaced _file methods with _find and _glob methods (#d414dfa6fef6ec382c76689116b4483cbbcafd72)
6
+ * prepare for v0.4 release (#c634ffd603b0859027dd4bfd9c1c57b87d634d9c)
7
+ * remove some old commented-out code (#f62bac03f2ffe31e8a95d841be234311f7cfbff0)
8
+ * fixed data_find and data_glob (#8107b5b5b8893d040c6bd60ae9a0d65d6885ae84)
9
+ * Update RELEASE file. (#722f7600f403c39792c3df91ad789c5d3ae13473)
10
+ * updated documentation for 0.4 release (#c535b36186a6a3d2b1ea5766a07e541ec90a75d1)
11
+ * added MANIFEST to .gitignore (#723be0082d9a1e9a0f579aa094267027e1708730)
12
+ * correction or RELEASE (#0f3bd5f80c241704b338037b1bb66b0fbd8e597b)
13
+ * Fixed plural in RELEASE file. (#ccdf281610d5339aa1bff32be34c8369f204e463)
14
+
15
+
16
+ == 0.0.3 / 2008-10-11
17
+
18
+ * 5 Other Enhancements
19
+
20
+ * removed xdg_ prefix from module methods (#240e88d385ee1b7e063e8cd87e22ce8fb085afd8)
21
+ * moved web/index.html to doc directory (#e61b13e66eefb16566ea5f1ce3723dbfda8369dc)
22
+ * updated reap serives (#5cfaf1f6ad47ecc518047053902ef4e092c69891)
23
+ * prepare for next release (#7566509dd82d9cfe3bf28e32bdb68304429ebe93)
24
+ * fixed issue of xdg_ prefix still being used internally (#ad95493af4413e864cfa2ef2f982c7f48f371473)
25
+
26
+
27
+ == 0.0.1 / 2008-09-27
28
+
29
+ * 1 Major Enhancements
30
+
31
+ * Started project. (#10ca99f20bd90399220a68939f4a04677ff22402)
32
+
33
+ * 4 Other Enhancements
34
+
35
+ * added gitignore (#8d1385c2bcc0acbdb5ed5e014c977213caf7d4a6)
36
+ * Folio namespace is not used. (#577aca3700f5cc179a343068863a0a964133159e)
37
+ * added website (#067510f4af2c7deb3c3ac27832e0980b17af1695)
38
+ * VERSION file has been added. (#c76940fd4e79270d247a881a2a0e58a2f2fa9bdf)
39
+
data/MANIFEST CHANGED
@@ -9,6 +9,7 @@ test/fakeroot/etc
9
9
  test/fakeroot/etc/xdg
10
10
  test/fakeroot/etc/xdg/bar.config
11
11
  test/test_xdg.rb
12
+ CHANGES
12
13
  RELEASE
13
14
  README
14
15
  HISTORY
@@ -16,7 +17,6 @@ meta
16
17
  meta/homepage
17
18
  meta/summary
18
19
  meta/abstract
19
- meta/releases
20
20
  meta/title
21
21
  meta/authors
22
22
  meta/contact
data/README CHANGED
@@ -19,13 +19,17 @@ XDG is a module with a small set of easy to use methods:
19
19
 
20
20
  XDG.config_home
21
21
  XDG.config_dirs
22
+ XDG.config_find(pattern){ |path| ... }
23
+ XDG.config_select(pattern){ |path| ... }
24
+
22
25
  XDG.data_home
23
26
  XDG.data_dirs
24
- XDG.cache_home
27
+ XDG.data_find(pattern){ |path| ... }
28
+ XDG.data_select(pattern){ |path| ... }
25
29
 
26
- XDG.data_file(file)
27
- XDG.config_file(file)
28
- XDG.cache_file(file)
30
+ XDG.cache_home
31
+ XDG.cache_find(pattern){ |path| ... }
32
+ XDG.cache_select(pattern){ |path| ... }
29
33
 
30
34
  XDG.config_work
31
35
  XDG.data_work
@@ -43,8 +47,8 @@ Using RubyGems:
43
47
  Installing the tarball requires Ruby Setup
44
48
  (see http://setup.rubyforge.org).
45
49
 
46
- $ tar -xvzf xdg-0.4.1
47
- $ cd xdg-0.4.1
50
+ $ tar -xvzf xdg-0.5.0
51
+ $ cd xdg-0.5.0
48
52
  $ sudo setup.rb all
49
53
 
50
54
  == Development
data/RELEASE CHANGED
@@ -1,21 +1,29 @@
1
- = XDG 0.4 hits the streets!
1
+ = XDG 0.5
2
2
 
3
3
  http://xdg.rubyforge.org
4
4
 
5
- This release removes the xdg_ prefix from the instance-level
6
- method names. Now module and instance levels are the same.
5
+ XDG provides a module for supporting the XDG Base Directory
6
+ Standard[1].
7
7
 
8
- Also, data_file, config_file and cache_file have been replaced with
9
- data_find, config_find, cache_find, data_glob, config_glob and
10
- cache_glob.
8
+ If your program utilizes user or system-wide support files
9
+ (eg. configuration files), you owe it to yourself to checkout
10
+ the XDG standard.
11
11
 
12
- What' next? Well, I can't say I'm fond of the term 'glob', so I
13
- may rename that to 'map' or 'collect' (or 'select'?) and then
14
- add the ability to use blocks for matching too.
12
+ In this release, _glob methods were renamed to _select and now
13
+ can take a selection block in addition to, or as opposed to,
14
+ the glob pattern argument.
15
15
 
16
+ What's next? The API should be stable now. I do not forsee
17
+ and reasons for it to change. In the future, I may add some
18
+ additonal ruby-esque features, but that should be purely
19
+ in addition to what is already there. If all this holds true
20
+ for a hwile a 1.0 release will be forth-coming.
16
21
 
17
- ### 0.4.0 / 2008-10-26
22
+ [1]http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html
18
23
 
19
- * Renamed instance level methods without 'xdg_' prefix.
20
- * Replace _file methods with _find and _glob methods.
24
+ ---
25
+
26
+ ### 0.5.0 / 2008-10-28
27
+
28
+ * Renamed *_glob methods to *_select, and added block option.
21
29
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- xdg 0.4.0 beta (2008-10-26)
1
+ xdg 0.5.0 beta (2008-10-26)
data/lib/xdg.rb CHANGED
@@ -1,8 +1,3 @@
1
- # :Title: XDG
2
- # :Author: &trans;
3
- # :Copyright: (c)2008 Tiger Ops
4
- # :License: GPLv3
5
-
6
1
  # = XDG Base Directory Standard
7
2
  #
8
3
  # This provides a conveient library for conforming to the
@@ -28,13 +23,14 @@
28
23
  # files. Like var/ in FHS.
29
24
  #
30
25
  # This module returns paths as strings.
31
-
26
+ #
32
27
  module XDG
33
28
 
34
29
  extend self #module_function
35
30
 
31
+ # Returns user's home directory.
36
32
  def home
37
- ENV['HOME'] || File.expand_path('~')
33
+ File.expand_path('~') # ENV['HOME']
38
34
  end
39
35
 
40
36
  # Location of user's personal config directory.
@@ -77,12 +73,31 @@ module XDG
77
73
  end
78
74
 
79
75
  # Find a file or directory in data dirs.
80
- def data_find(*glob_and_flags)
81
- data_glob(*glob_and_flags).first
76
+ #
77
+ # See: +data_select+.
78
+ #
79
+ def data_find(*glob_and_flags, &block)
80
+ data_select(*glob_and_flags, &block).first
82
81
  end
83
82
 
84
- def data_glob(*glob_and_flags)
83
+ # Return array of matching files or directories
84
+ # in any of the data locations.
85
+ #
86
+ # This starts with the user's home directory
87
+ # and then searches system directories.
88
+ #
89
+ # String parameters are joined into a pathname
90
+ # while Integers and Symbols treated as flags.
91
+ #
92
+ # For example, the following are equivalent:
93
+ #
94
+ # XDG.data_select('stick/units', File::FNM_CASEFOLD)
95
+ #
96
+ # XDG.data_select('stick', 'uits', :casefold)
97
+ #
98
+ def data_select(*glob_and_flags, &block)
85
99
  glob, flags = *glob_and_flags.partition{ |e| String===e }
100
+ glob = ['**/*'] if glob.empty?
86
101
  flag = flags.inject(0) do |m, f|
87
102
  if Symbol === f
88
103
  m + File::const_get("FNM_#{f.to_s.upcase}")
@@ -93,7 +108,11 @@ module XDG
93
108
  find = []
94
109
  [data_home, *data_dirs].each do |dir|
95
110
  path = File.join(dir, *glob)
96
- find.concat(Dir.glob(path, flag))
111
+ if block_given?
112
+ find.concat(Dir.glob(path, flag).select(&block))
113
+ else
114
+ find.concat(Dir.glob(path, flag))
115
+ end
97
116
  end
98
117
  find
99
118
  end
@@ -101,9 +120,10 @@ module XDG
101
120
  # Return the fist matching file or directory
102
121
  # from the config locations.
103
122
  #
104
- # See +config_glog+.
105
- def config_find(*glob_and_flags)
106
- config_glob(*glob_and_flags).first
123
+ # See: +config_select+.
124
+ #
125
+ def config_find(*glob_and_flags, &block)
126
+ config_select(*glob_and_flags, &block).first
107
127
  end
108
128
 
109
129
  # Return array of matching files or directories
@@ -117,12 +137,13 @@ module XDG
117
137
  #
118
138
  # For example, the following are equivalent:
119
139
  #
120
- # XDG.config_glob('sow/plugins', File::FNM_CASEFOLD)
140
+ # XDG.config_select('sow/plugins', File::FNM_CASEFOLD)
121
141
  #
122
- # XDG.config_glob('sow', 'plugins', :casefold)
142
+ # XDG.config_select('sow', 'plugins', :casefold)
123
143
  #
124
- def config_glob(*glob_and_flags)
144
+ def config_select(*glob_and_flags)
125
145
  glob, flags = *glob_and_flags.partition{ |e| String===e }
146
+ glob = ['**/*'] if glob.empty?
126
147
  flag = flags.inject(0) do |m, f|
127
148
  if Symbol === f
128
149
  m + File::const_get("FNM_#{f.to_s.upcase}")
@@ -133,7 +154,11 @@ module XDG
133
154
  find = []
134
155
  [config_home, *config_dirs].each do |dir|
135
156
  path = File.join(dir, *glob)
136
- find.concat(Dir.glob(path, flag))
157
+ if block_given?
158
+ find.concat(Dir.glob(path, flag).select(&block))
159
+ else
160
+ find.concat(Dir.glob(path, flag))
161
+ end
137
162
  end
138
163
  find
139
164
  end
@@ -141,9 +166,10 @@ module XDG
141
166
  # Return the fist matching file or directory
142
167
  # in the cache directory.
143
168
  #
144
- # See +cache_glog+.
145
- def cache_find(*glob_and_flags)
146
- cache_glob(*glob_and_flags).first
169
+ # See: +cache_select+.
170
+ #
171
+ def cache_find(*glob_and_flags, &block)
172
+ cache_select(*glob_and_flags, &block).first
147
173
  end
148
174
 
149
175
  # Return array of matching files or directories
@@ -154,12 +180,13 @@ module XDG
154
180
  #
155
181
  # For example, the following are equivalent:
156
182
  #
157
- # XDG.cache_glob('sow/tmp', File::FNM_CASEFOLD)
183
+ # XDG.cache_select('sow/tmp', File::FNM_CASEFOLD)
158
184
  #
159
- # XDG.cache_glob('sow', 'tmp', :casefold)
185
+ # XDG.cache_select('sow', 'tmp', :casefold)
160
186
  #
161
- def cache_glob(*glob_and_flags)
187
+ def cache_select(*glob_and_flags)
162
188
  glob, flags = *glob_and_flags.partition{ |e| String===e }
189
+ glob = ['**/*'] if glob.empty?
163
190
  flag = flags.inject(0) do |m, f|
164
191
  if Symbol === f
165
192
  m + File::const_get("FNM_#{f.to_s.upcase}")
@@ -168,7 +195,11 @@ module XDG
168
195
  end
169
196
  end
170
197
  path = File.join(cache_home,*glob)
171
- Dir.glob(path, flag)
198
+ if block_given?
199
+ Dir.glob(path, flag).select(&block)
200
+ else
201
+ Dir.glob(path, flag)
202
+ end
172
203
  end
173
204
 
174
205
  #--
@@ -199,3 +230,8 @@ module XDG
199
230
 
200
231
  end # module XDG
201
232
 
233
+ # :Title: XDG
234
+ # :Author: &trans;
235
+ # :Copyright: (c)2008 Tiger Ops
236
+ # :License: GPLv3
237
+
@@ -60,23 +60,23 @@ class TestXDG < Test::Unit::TestCase
60
60
 
61
61
  # Test the glob methods.
62
62
 
63
- def test_data_glob
63
+ def test_data_select
64
64
  file = 'foo.dat'
65
- assert_equal(File.join(Dir.pwd,'home/.local/share', file), XDG.data_find(file))
65
+ assert_equal([File.join(Dir.pwd,'home/.local/share', file)], XDG.data_select(file))
66
66
  file = 'bar.dat'
67
- assert_equal([File.join(Dir.pwd,'usr/share', file)], XDG.data_glob(file))
67
+ assert_equal([File.join(Dir.pwd,'usr/share', file)], XDG.data_select(file))
68
68
  end
69
69
 
70
- def test_config_glob
70
+ def test_config_select
71
71
  file = 'foo.config'
72
- assert_equal([File.join(Dir.pwd,'home/.config', file)], XDG.config_glob(file))
72
+ assert_equal([File.join(Dir.pwd,'home/.config', file)], XDG.config_select(file))
73
73
  file = 'bar.config'
74
- assert_equal([File.join(Dir.pwd,'etc/xdg', file)], XDG.config_glob(file))
74
+ assert_equal([File.join(Dir.pwd,'etc/xdg', file)], XDG.config_select(file))
75
75
  end
76
76
 
77
- def test_cache_glob
77
+ def test_cache_select
78
78
  file = 'foo.cache'
79
- assert_equal([File.join(Dir.pwd,'home/.cache', file)], XDG.cache_glob(file))
79
+ assert_equal([File.join(Dir.pwd,'home/.cache', file)], XDG.cache_select(file))
80
80
  end
81
81
 
82
82
  # Test the working directory variations.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xdg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - tigerops-community@rubyforge.org
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2008-10-26 00:00:00 -04:00
13
+ date: 2008-10-28 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
@@ -23,6 +23,7 @@ extensions: []
23
23
  extra_rdoc_files:
24
24
  - README
25
25
  - MANIFEST
26
+ - CHANGES
26
27
  - RELEASE
27
28
  - HISTORY
28
29
  - VERSION
@@ -32,6 +33,7 @@ files:
32
33
  - meta
33
34
  - test
34
35
  - MANIFEST
36
+ - CHANGES
35
37
  - RELEASE
36
38
  - README
37
39
  - HISTORY
@@ -41,7 +43,6 @@ files:
41
43
  - meta/homepage
42
44
  - meta/summary
43
45
  - meta/abstract
44
- - meta/releases
45
46
  - meta/title
46
47
  - meta/authors
47
48
  - meta/contact
@@ -1 +0,0 @@
1
-