chrislloyd-fancypath 0.5.10 → 0.5.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/Rakefile +3 -3
  2. data/lib/fancypath.rb +33 -25
  3. data/spec/fancypath_spec.rb +40 -40
  4. metadata +3 -3
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ require 'date'
5
5
  require 'spec/rake/spectask'
6
6
 
7
7
  GEM = "fancypath"
8
- GEM_VERSION = "0.5.10"
8
+ GEM_VERSION = "0.5.11"
9
9
  AUTHORS = ["Myles Byrne", "Chris Lloyd"]
10
10
  EMAIL = "myles@ducknewmedia.com"
11
11
  HOMEPAGE = "http://ducknewmedia.com/fancypath"
@@ -22,10 +22,10 @@ spec = Gem::Specification.new do |s|
22
22
  s.authors = AUTHORS
23
23
  s.email = EMAIL
24
24
  s.homepage = HOMEPAGE
25
-
25
+
26
26
  # Uncomment this to add a dependency
27
27
  # s.add_dependency "foo"
28
-
28
+
29
29
  s.require_path = 'lib'
30
30
  s.autorequire = GEM
31
31
  s.files = %w(LICENSE README.rdoc Rakefile) + Dir.glob("{lib,spec}/**/*")
data/lib/fancypath.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'pathname'
2
2
 
3
3
  class Pathname
4
-
4
+
5
5
  def to_fancypath
6
6
  Fancypath.new(self)
7
7
  end
@@ -11,7 +11,7 @@ class Pathname
11
11
  end
12
12
 
13
13
  class String
14
-
14
+
15
15
  def to_fancypath
16
16
  Fancypath.new(self)
17
17
  end
@@ -22,14 +22,21 @@ end
22
22
 
23
23
  class Fancypath < Pathname
24
24
  # methods are chainable and do what you think they do
25
-
25
+
26
+ alias_method :dir, :dirname
27
+ alias_method :directory, :dirname
28
+
29
+ alias_method :expand, :expand_path
30
+ alias_method :abs, :expand_path
31
+ alias_method :absolute, :expand_path
32
+
26
33
  alias_method :exists?, :exist?
27
34
  alias_method :rename_to, :rename
28
-
35
+
29
36
  def join(path)
30
37
  super(path).to_path
31
38
  end
32
-
39
+
33
40
  alias_method :/, :join
34
41
 
35
42
  # make file
@@ -37,19 +44,19 @@ class Fancypath < Pathname
37
44
  FileUtils.touch self.to_s
38
45
  self
39
46
  end
40
-
47
+
41
48
  def create_dir
42
49
  mkpath unless exist?
43
50
  self
44
51
  end
45
-
52
+
46
53
  alias_method :create, :create_dir
47
-
54
+
48
55
  def copy(dest)
49
56
  FileUtils.cp(self, dest)
50
57
  self
51
58
  end
52
-
59
+
53
60
  alias_method :cp, :copy
54
61
 
55
62
  # file or dir
@@ -57,24 +64,24 @@ class Fancypath < Pathname
57
64
  directory? ? rmtree : delete if exist?
58
65
  self
59
66
  end
60
-
67
+
61
68
  alias_method :rm, :remove
62
69
  def write(contents, mode='wb')
63
70
  dirname.create
64
71
  open(mode) { |f| f.write contents }
65
72
  self
66
73
  end
67
-
74
+
68
75
  def append(contents)
69
76
  write(contents,'a+')
70
77
  self
71
78
  end
72
-
79
+
73
80
  def move(dest)
74
81
  self.rename(dest)
75
82
  dest.to_path
76
83
  end
77
-
84
+
78
85
  def tail(bytes)
79
86
  return self.read if self.size < bytes
80
87
  open('r') do |f|
@@ -84,52 +91,53 @@ class Fancypath < Pathname
84
91
  end
85
92
 
86
93
  alias_method :mv, :move
87
-
94
+
88
95
  def set_extension(ext)
89
96
  "#{without_extension}.#{ext}".to_path
90
97
  end
98
+
91
99
  alias_method :change_extension, :set_extension
92
-
100
+
93
101
  def without_extension
94
102
  to_s[/^ (.+?) (\. ([^\.]+))? $/x, 1].to_path
95
103
  end
96
-
104
+
97
105
  def has_extension?(ext)
98
106
  !!(self.to_s =~ /\.#{ext}$/)
99
107
  end
100
-
108
+
101
109
  def parent
102
110
  super.to_path
103
111
  end
104
-
112
+
105
113
  alias_method :all_children, :children
106
-
114
+
107
115
  def children
108
116
  super.reject { |c| c.basename.to_s =~ /^\./ }
109
117
  end
110
-
118
+
111
119
  # only takes sym atm
112
120
  def select(*args)
113
121
  return args.map { |arg| select(arg) }.flatten.uniq if args.size > 1
114
-
122
+
115
123
  case arg = args.first
116
124
  when Symbol
117
125
  Dir["#{self}/*.#{arg}"].map { |p| self.class.new(p) }
118
- when Regexp
126
+ when Regexp
119
127
  children.select { |child| child.to_s =~ arg }
120
128
  else
121
129
  Dir["#{self}/#{arg}"].map { |p| self.class.new(p) }
122
130
  end
123
131
  end
124
-
132
+
125
133
  def inspect
126
134
  super.sub('Pathname','Fancypath')
127
135
  end
128
-
136
+
129
137
  def to_path
130
138
  self
131
139
  end
132
-
140
+
133
141
  end
134
142
 
135
143
  def Fancypath(path); Fancypath.new(path) end
@@ -11,80 +11,80 @@ end
11
11
  after { TMP_DIR.rmtree }
12
12
 
13
13
  describe '#join', 'aliased to #/' do
14
-
15
- it('returns a Fancypath') { (@dir/'somefile').class.should == Fancypath }
14
+
15
+ it('returns a Fancypath') { (@dir/'somefile').class.should == Fancypath }
16
16
  it('joins paths') { (@dir/'somefile').to_s.should =~ /\/somefile$/ }
17
-
17
+
18
18
  end
19
19
 
20
20
  describe '#parent' do
21
-
21
+
22
22
  it('returns parent') { @file.parent.should == TMP_DIR.to_path }
23
23
  it('returns Fancypath') { @file.parent.should be_instance_of(Fancypath) }
24
-
24
+
25
25
  end
26
26
 
27
27
  describe '#touch', 'file does not exist' do
28
-
29
- it('returns self') { @file.touch.should == @file }
28
+
29
+ it('returns self') { @file.touch.should == @file }
30
30
  it('returns a Fancypath') { @file.touch.should be_instance_of(Fancypath) }
31
31
  it('creates file') { @file.touch.should be_file }
32
-
32
+
33
33
  end
34
34
 
35
35
  describe '#create', 'dir does not exist' do
36
-
36
+
37
37
  it('returns self') { @dir.create.should == @dir }
38
38
  it('returns a Fancypath') { @dir.create.should be_instance_of(Fancypath) }
39
39
  it('creates directory') { @dir.create.should be_directory }
40
-
40
+
41
41
  end
42
42
 
43
43
  describe '#remove' do
44
-
44
+
45
45
  it('returns self') { @file.remove.should == @file }
46
46
  it('returns a Fancypath') { @file.remove.should be_instance_of(Fancypath) }
47
- it('removes file') { @file.touch.remove.should_not exist }
47
+ it('removes file') { @file.touch.remove.should_not exist }
48
48
  it('removes directory') { @dir.create.remove.should_not exist }
49
-
49
+
50
50
  end
51
51
 
52
52
  describe '#write' do
53
-
53
+
54
54
  it('returns self') { @file.write('').should == @file }
55
55
  it('returns a Fancypath') { @file.write('').should be_instance_of(Fancypath) }
56
56
  it('writes contents to file') { @file.write('test').read.should == 'test' }
57
-
57
+
58
58
  end
59
59
 
60
60
  describe '#copy' do
61
-
61
+
62
62
  before { @file.touch }
63
63
  it('returns a Fancypath') { @file.copy(TMP_DIR/'foo').should be_instance_of(Fancypath) }
64
64
  it('creates a new file') { @file.copy(TMP_DIR/'foo').should exist }
65
65
  it('keeps the original') { @file.copy(TMP_DIR/'foo'); @file.should exist }
66
66
  it('copies the contents') { @file.copy(TMP_DIR/'foo').read.should == @file.read }
67
-
67
+
68
68
  end
69
69
 
70
70
  describe '#set_extension' do
71
-
71
+
72
72
  example "file without extension" do
73
73
  Fancypath('/tmp/foo').set_extension('rb').should == Fancypath('/tmp/foo.rb')
74
74
  end
75
-
75
+
76
76
  example "single extension" do
77
77
  Fancypath('/tmp/foo.py').set_extension('rb').should == Fancypath('/tmp/foo.rb')
78
78
  end
79
-
79
+
80
80
  example "multi extension" do
81
81
  Fancypath('/tmp/foo.py.z').set_extension('rb').should == Fancypath('/tmp/foo.py.rb')
82
82
  end
83
-
83
+
84
84
  end
85
85
 
86
86
  describe '#move' do
87
-
87
+
88
88
  example "destination has the file contents, source does not exist" do
89
89
  @file.write('foo')
90
90
  dest = TMP_DIR/'newfile'
@@ -92,65 +92,65 @@ describe '#move' do
92
92
  @file.should_not exist
93
93
  dest.read.should == 'foo'
94
94
  end
95
-
95
+
96
96
  end
97
97
 
98
98
  describe '#has_extension?' do
99
-
99
+
100
100
  example do
101
101
  Fancypath('/tmp/foo.bar').has_extension?('bar').should be_true
102
102
  end
103
-
103
+
104
104
  example do
105
105
  Fancypath('/tmp/foo.bar').has_extension?('foo').should be_false
106
106
  end
107
-
107
+
108
108
  end
109
109
 
110
110
  describe '#select' do
111
-
111
+
112
112
  example 'with symbol' do
113
113
  @dir.create_dir
114
114
  %W(a.jpg b.jpg c.gif).each { |f| (@dir/f).touch }
115
-
115
+
116
116
  @dir.select(:jpg).should == [@dir/'a.jpg', @dir/'b.jpg']
117
117
  end
118
-
118
+
119
119
  example 'with glob' do
120
120
  @dir.create_dir
121
121
  %W(a.jpg b.jpg c.gif).each { |f| (@dir/f).touch }
122
-
122
+
123
123
  @dir.select("*.jpg").should == [@dir/'a.jpg', @dir/'b.jpg']
124
124
  end
125
-
125
+
126
126
  example 'with regex' do
127
127
  @dir.create_dir
128
128
  %W(a.jpg b.jpg c.gif 1.jpg).each { |f| (@dir/f).touch }
129
-
129
+
130
130
  @dir.select(/[^\d]\.(jpg|gif)$/).should == [@dir/'a.jpg', @dir/'b.jpg', @dir/'c.gif']
131
131
  end
132
-
132
+
133
133
  example 'with multiple args' do
134
134
  @dir.create_dir
135
135
  %W(a.jpg b.jpg c.gif).each { |f| (@dir/f).touch }
136
-
136
+
137
137
  @dir.select(:jpg, '*.gif').should == [@dir/'a.jpg', @dir/'b.jpg', @dir/'c.gif']
138
138
  end
139
-
139
+
140
140
  # todo: with block
141
-
141
+
142
142
  end
143
143
 
144
144
  end #/Fancypath
145
145
 
146
146
  describe "String#to_path" do
147
-
147
+
148
148
  it('returns a Fancypath') { 'test'.to_path.should be_instance_of(Fancypath) }
149
-
149
+
150
150
  end
151
151
 
152
152
  describe "Pathname#to_path" do
153
-
153
+
154
154
  it('returns a Fancypath') { Fancypath.new('/').to_path.should be_instance_of(Fancypath) }
155
-
155
+
156
156
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chrislloyd-fancypath
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.10
4
+ version: 0.5.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Myles Byrne
@@ -10,7 +10,7 @@ autorequire: fancypath
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-03-17 00:00:00 -07:00
13
+ date: 2009-05-01 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
@@ -54,7 +54,7 @@ requirements: []
54
54
  rubyforge_project:
55
55
  rubygems_version: 1.2.0
56
56
  signing_key:
57
- specification_version: 2
57
+ specification_version: 3
58
58
  summary: Extensions for the Pathname library.
59
59
  test_files: []
60
60