filename 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +10 -1
- data/VERSION +1 -1
- data/bin/filename-create +2 -2
- data/filename.gemspec +1 -1
- data/lib/filename.rb +50 -9
- data/spec/cache_spec.rb +15 -0
- data/spec/configuration_spec.rb +10 -0
- data/spec/filename_spec.rb +6 -0
- metadata +2 -2
data/README.md
CHANGED
@@ -91,7 +91,7 @@ Default options add suffixes and use additional parts of sequential numbers.
|
|
91
91
|
filename = FileName.new('base.txt', :format => "@%03d@")
|
92
92
|
p filename.create(:add => :always) # => "/path/to/base.txt.@000@"
|
93
93
|
|
94
|
-
filename = FileName.new('base.txt', :type => :
|
94
|
+
filename = FileName.new('base.txt', :type => :number, :format => lambda { |n| sprintf("%03d", n * n) })
|
95
95
|
p filename.create(:add => :always) # => "/path/to/base.txt.100"
|
96
96
|
p filename.create(:add => :always) # => "/path/to/base.txt.121"
|
97
97
|
|
@@ -104,6 +104,15 @@ Default options add suffixes and use additional parts of sequential numbers.
|
|
104
104
|
filename = FileName.new('base.txt', :start => 10, :format => lambda { |t| t.usec.to_s })
|
105
105
|
p filename.create(:add => :always) # For example, returns "/path/to/base.txt.849963"
|
106
106
|
|
107
|
+
### Use of variable for proc set by :format option
|
108
|
+
|
109
|
+
require 'filename'
|
110
|
+
filename = FileName.new('base.txt', :data => { :a => 3 },
|
111
|
+
:format => lambda { |n| s = sprintf("%03d", @a * n); @a += 2; s })
|
112
|
+
p filename.create(:add => :always) # => "/path/to/base.txt.000"
|
113
|
+
p filename.create(:add => :always) # => "/path/to/base.txt.005"
|
114
|
+
p filename.create(:add => :always) # => "/path/to/base.txt.014"
|
115
|
+
|
107
116
|
## How to use command 'filename-create'
|
108
117
|
|
109
118
|
filename-create with 'new' and basename puts path of file.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.6
|
data/bin/filename-create
CHANGED
@@ -80,7 +80,7 @@ begin
|
|
80
80
|
when 'cache'
|
81
81
|
raise OptionParser::InvalidArgument if args.size != 1
|
82
82
|
key = args[0]
|
83
|
-
if fname = manage.load_cache(key)
|
83
|
+
if fname = manage.load_cache(key)
|
84
84
|
$stdout.puts fname.create
|
85
85
|
manage.save_cache(key, fname)
|
86
86
|
exit(0)
|
@@ -99,7 +99,7 @@ begin
|
|
99
99
|
exit(0)
|
100
100
|
when 'config'
|
101
101
|
raise OptionParser::InvalidArgument if args.size <= 1
|
102
|
-
if fname = FileName.configuration(*args)
|
102
|
+
if fname = FileName.configuration(*args, options)
|
103
103
|
if create_cache
|
104
104
|
manage.save_cache(create_cache, fname)
|
105
105
|
else
|
data/filename.gemspec
CHANGED
data/lib/filename.rb
CHANGED
@@ -6,6 +6,8 @@ autoload :FileUtils, 'fileutils'
|
|
6
6
|
#
|
7
7
|
class FileName
|
8
8
|
|
9
|
+
attr_accessor :configuration_key, :format
|
10
|
+
|
9
11
|
OPTIONS_CREATE = [:extension, :add, :directory]
|
10
12
|
|
11
13
|
# The options are following:
|
@@ -38,13 +40,19 @@ class FileName
|
|
38
40
|
# [:path]
|
39
41
|
# We sepecify if path created by FileName#create is absolute or relative.
|
40
42
|
# Default is absolute.
|
41
|
-
#
|
43
|
+
#
|
44
|
+
# [:data]
|
45
|
+
# We specify hash expressing instance variables for evaluation of format proc,
|
46
|
+
# which is set by an option :format.
|
47
|
+
# If we set { :a => 1, :b => 2 } for :data option,
|
48
|
+
# we can use @a and @b in proc object set by :format option.
|
49
|
+
#
|
42
50
|
# [:extension]
|
43
51
|
# Default value of the option of FileName#create.
|
44
52
|
#
|
45
53
|
# [:add]
|
46
54
|
# Default value of the option of FileName#create.
|
47
|
-
#
|
55
|
+
#
|
48
56
|
# [:directory]
|
49
57
|
# Default value of the option of FileName#create.
|
50
58
|
def initialize(basepath, *rest)
|
@@ -72,6 +80,13 @@ class FileName
|
|
72
80
|
@default_create[key] = val
|
73
81
|
end
|
74
82
|
end
|
83
|
+
@configuration_key = nil
|
84
|
+
@data = Object.new
|
85
|
+
if opts[:data]
|
86
|
+
opts[:data].each do |key, val|
|
87
|
+
@data.instance_variable_set("@#{key}", val)
|
88
|
+
end
|
89
|
+
end
|
75
90
|
end
|
76
91
|
|
77
92
|
def get_basepath(extension = nil)
|
@@ -94,7 +109,7 @@ class FileName
|
|
94
109
|
when String
|
95
110
|
t.strftime(@format)
|
96
111
|
when Proc
|
97
|
-
@
|
112
|
+
@data.instance_exec(t, &@format)
|
98
113
|
else
|
99
114
|
t.strftime("%Y%m%d_%H%M%S_") + sprintf("%06d", t.usec)
|
100
115
|
end
|
@@ -106,7 +121,7 @@ class FileName
|
|
106
121
|
when String
|
107
122
|
sprintf(@format, number)
|
108
123
|
when Proc
|
109
|
-
@
|
124
|
+
@data.instance_exec(number, &@format)
|
110
125
|
else
|
111
126
|
sprintf("%0#{@digit}d", number)
|
112
127
|
end
|
@@ -209,8 +224,20 @@ class FileName
|
|
209
224
|
end
|
210
225
|
|
211
226
|
# If @format is a Proc object, we can not dump a FileName object.
|
227
|
+
# But, even if @format is Proc object, the object created from configuration
|
228
|
+
# can be dumped.
|
212
229
|
def dump
|
213
|
-
|
230
|
+
if not Proc === @format
|
231
|
+
dumped = Marshal.dump(self)
|
232
|
+
elsif @configuration_key
|
233
|
+
tmp = @format
|
234
|
+
@format = nil
|
235
|
+
dumped = Marshal.dump(self)
|
236
|
+
@format = tmp
|
237
|
+
else
|
238
|
+
raise "Can not dump."
|
239
|
+
end
|
240
|
+
dumped
|
214
241
|
end
|
215
242
|
|
216
243
|
def save_to(path)
|
@@ -220,7 +247,12 @@ class FileName
|
|
220
247
|
end
|
221
248
|
|
222
249
|
def self.load(str)
|
223
|
-
Marshal.load(str)
|
250
|
+
filename = Marshal.load(str)
|
251
|
+
if key = filename.configuration_key
|
252
|
+
opts = self.manage.configuration_setting(key)
|
253
|
+
filename.format = opts[:format]
|
254
|
+
end
|
255
|
+
filename
|
224
256
|
end
|
225
257
|
|
226
258
|
def self.load_from(path)
|
@@ -272,10 +304,19 @@ class FileName
|
|
272
304
|
# $SAFE = old_safe_level
|
273
305
|
end
|
274
306
|
|
275
|
-
def
|
307
|
+
def configuration_setting(key)
|
276
308
|
load_configuration unless @@configuration
|
277
|
-
|
278
|
-
|
309
|
+
@@configuration[key.intern]
|
310
|
+
end
|
311
|
+
|
312
|
+
def configuration(key, basepath, *rest)
|
313
|
+
if opts = configuration_setting(key)
|
314
|
+
if Hash === rest[-1]
|
315
|
+
opts = opts.merge(rest.delete_at(-1))
|
316
|
+
end
|
317
|
+
filename = FileName.new(basepath, *rest, opts)
|
318
|
+
filename.configuration_key = key
|
319
|
+
return filename
|
279
320
|
end
|
280
321
|
return nil
|
281
322
|
end
|
data/spec/cache_spec.rb
CHANGED
@@ -11,4 +11,19 @@ describe FileName do
|
|
11
11
|
FileName.load(s).should be_an_instance_of FileName
|
12
12
|
end
|
13
13
|
|
14
|
+
it "should dump and load" do
|
15
|
+
s = FileName.new('abc', :data => { :a => 1 }).dump
|
16
|
+
s.should be_an_instance_of String
|
17
|
+
filename = FileName.load(s)
|
18
|
+
filename.should be_an_instance_of FileName
|
19
|
+
data = filename.instance_eval { @data }
|
20
|
+
data.instance_variable_get(:@a).should == 1
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should not be able to dump" do
|
24
|
+
filename = FileName.new('abc', :format => lambda { |n| sprintf("%02d", n * n) })
|
25
|
+
lambda do
|
26
|
+
filename.dump
|
27
|
+
end.should raise_error
|
28
|
+
end
|
14
29
|
end
|
data/spec/configuration_spec.rb
CHANGED
@@ -34,6 +34,16 @@ describe FileName do
|
|
34
34
|
FileName.configuration(@conf, 'base.path').should be_an_instance_of(FileName)
|
35
35
|
end
|
36
36
|
|
37
|
+
it "should return key" do
|
38
|
+
FileName.configuration(@conf, 'base.path').configuration_key.should == @conf
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should dump and load" do
|
42
|
+
s = FileName.configuration(@conf, 'base.path').dump
|
43
|
+
s.should be_an_instance_of String
|
44
|
+
FileName.load(s).should be_an_instance_of FileName
|
45
|
+
end
|
46
|
+
|
37
47
|
it "should return nil" do
|
38
48
|
FileName.configuration(:not_exist, 'base.path').should be_nil
|
39
49
|
end
|
data/spec/filename_spec.rb
CHANGED
@@ -53,6 +53,12 @@ describe FileName do
|
|
53
53
|
filename.create.should match(/\.009$/)
|
54
54
|
end
|
55
55
|
|
56
|
+
it "should set variables for evaluation of format proc" do
|
57
|
+
filename = FileName.new(__FILE__, :start => 3, :data => { :a => 'hello', :b => 'world' },
|
58
|
+
:format => lambda { |n| sprintf("%03d_#{@a}_#{@b}", n * n) })
|
59
|
+
filename.create.should match(/\.009_hello_world$/)
|
60
|
+
end
|
61
|
+
|
56
62
|
it "should raise error" do
|
57
63
|
filename = FileName.new(__FILE__, :format => "")
|
58
64
|
lambda do
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: filename
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Takayuki YAMAGUCHI
|
@@ -94,7 +94,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
94
|
requirements:
|
95
95
|
- - ">="
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
hash:
|
97
|
+
hash: -1246538817859403112
|
98
98
|
segments:
|
99
99
|
- 0
|
100
100
|
version: "0"
|