fancypath 0.3.0 → 0.5.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1 @@
1
- == fancypath
2
-
3
- Extensions to the Pathname library to model file IO in an OO mannor.
1
+ Extensions to the Pathname library to model file IO in an OO manner.
data/lib/fancypath.rb CHANGED
@@ -1,78 +1,147 @@
1
1
  require 'pathname'
2
2
 
3
3
  class Pathname
4
- def to_path
4
+
5
+ def to_fancypath
5
6
  Fancypath.new(self)
6
7
  end
7
8
 
8
- alias_method :to_fancypath, :to_path
9
+ alias_method :to_path, :to_fancypath
9
10
 
10
11
  end
11
12
 
12
13
  class String
13
- def to_path
14
+
15
+ def to_fancypath
14
16
  Fancypath.new(self)
15
17
  end
16
18
 
17
- alias_method :to_fancypath, :to_path
19
+ alias_method :to_path, :to_fancypath
18
20
 
19
21
  end
20
22
 
21
23
  class Fancypath < Pathname
22
24
  # methods are chainable and do what you think they do
23
-
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
+
24
33
  alias_method :exists?, :exist?
25
34
  alias_method :rename_to, :rename
26
35
 
27
- def /(path)
28
- self.join(path).to_path
36
+ def join(path)
37
+ super(path).to_path
29
38
  end
30
39
 
40
+ alias_method :/, :join
41
+
31
42
  # make file
32
43
  def touch
33
44
  FileUtils.touch self.to_s
34
- self.to_path
45
+ self
35
46
  end
36
-
37
- # make dir
38
- def create
47
+
48
+ def create_dir
39
49
  mkpath unless exist?
40
- self.to_path
50
+ self
41
51
  end
42
-
52
+
53
+ alias_method :create, :create_dir
54
+
43
55
  def copy(dest)
44
56
  FileUtils.cp(self, dest)
45
57
  self
46
58
  end
47
-
59
+
60
+ alias_method :cp, :copy
61
+
48
62
  # file or dir
49
63
  def remove
50
64
  directory? ? rmtree : delete if exist?
51
- self.to_path
65
+ self
52
66
  end
53
-
67
+
68
+ alias_method :rm, :remove
54
69
  def write(contents, mode='wb')
55
70
  dirname.create
56
71
  open(mode) { |f| f.write contents }
57
- self.to_path
72
+ self
58
73
  end
59
-
74
+
60
75
  def append(contents)
61
76
  write(contents,'a+')
77
+ self
78
+ end
79
+
80
+ def move(dest)
81
+ self.rename(dest)
82
+ dest.to_path
83
+ end
84
+
85
+ def tail(bytes)
86
+ return self.read if self.size < bytes
87
+ open('r') do |f|
88
+ f.seek(-bytes, IO::SEEK_END)
89
+ f.read
90
+ end
91
+ end
92
+
93
+ alias_method :mv, :move
94
+
95
+ def set_extension(ext)
96
+ "#{without_extension}.#{ext}".to_path
97
+ end
98
+
99
+ alias_method :change_extension, :set_extension
100
+
101
+ def without_extension
102
+ to_s[/^ (.+?) (\. ([^\.]+))? $/x, 1].to_path
103
+ end
104
+
105
+ def has_extension?(ext)
106
+ !!(self.to_s =~ /\.#{ext}$/)
107
+ end
108
+
109
+ def parent
110
+ super.to_path
111
+ end
112
+
113
+ alias_method :all_children, :children
114
+
115
+ def children
116
+ super.reject { |c| c.basename.to_s =~ /^\./ }
117
+ end
118
+
119
+ # only takes sym atm
120
+ def select(*args)
121
+ return args.map { |arg| select(arg) }.flatten.uniq if args.size > 1
122
+
123
+ case arg = args.first
124
+ when Symbol
125
+ Dir["#{self}/*.#{arg}"].map { |p| self.class.new(p) }
126
+ when Regexp
127
+ children.select { |child| child.to_s =~ arg }
128
+ else
129
+ Dir["#{self}/#{arg}"].map { |p| self.class.new(p) }
130
+ end
62
131
  end
63
132
 
64
- def visible_children
65
- children.reject { |c| c.basename.to_s =~ /^\./ }
133
+ def empty?
134
+ directory? ? children.size == 0 : self.size == 0
66
135
  end
67
136
 
68
137
  def inspect
69
138
  super.sub('Pathname','Fancypath')
70
139
  end
71
-
140
+
72
141
  def to_path
73
142
  self
74
143
  end
75
-
144
+
76
145
  end
77
146
 
78
147
  def Fancypath(path); Fancypath.new(path) end
metadata CHANGED
@@ -1,37 +1,33 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fancypath
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.5.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Myles Byrne
8
8
  - Chris Lloyd
9
- autorequire: fancypath
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2008-11-24 00:00:00 +11:00
13
+ date: 2009-07-12 00:00:00 +10:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
17
17
  description: Extensions for the Pathname library.
18
- email: myles@ducknewmedia.com
18
+ email: myles@myles.id.au
19
19
  executables: []
20
20
 
21
21
  extensions: []
22
22
 
23
- extra_rdoc_files:
24
- - README.rdoc
25
- - LICENSE
23
+ extra_rdoc_files: []
24
+
26
25
  files:
27
26
  - LICENSE
28
- - README.rdoc
29
- - Rakefile
27
+ - README
30
28
  - lib/fancypath.rb
31
- - spec/fancypath_spec.rb
32
- - spec/spec_helper.rb
33
- has_rdoc: true
34
- homepage: http://ducknewmedia.com/fancypath
29
+ has_rdoc: false
30
+ homepage: http://github.com/tred/fancypath/tree/master
35
31
  post_install_message:
36
32
  rdoc_options: []
37
33
 
@@ -51,7 +47,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
51
47
  version:
52
48
  requirements: []
53
49
 
54
- rubyforge_project:
50
+ rubyforge_project: fancypath
55
51
  rubygems_version: 1.3.1
56
52
  signing_key:
57
53
  specification_version: 2
data/Rakefile DELETED
@@ -1,57 +0,0 @@
1
- require 'rubygems'
2
- require 'rake/gempackagetask'
3
- require 'rubygems/specification'
4
- require 'date'
5
- require 'spec/rake/spectask'
6
-
7
- GEM = "fancypath"
8
- GEM_VERSION = "0.3.0"
9
- AUTHORS = ["Myles Byrne", "Chris Lloyd"]
10
- EMAIL = "myles@ducknewmedia.com"
11
- HOMEPAGE = "http://ducknewmedia.com/fancypath"
12
- SUMMARY = "Extensions for the Pathname library."
13
-
14
- spec = Gem::Specification.new do |s|
15
- s.name = GEM
16
- s.version = GEM_VERSION
17
- s.platform = Gem::Platform::RUBY
18
- s.has_rdoc = true
19
- s.extra_rdoc_files = ['README.rdoc', 'LICENSE']
20
- s.summary = SUMMARY
21
- s.description = s.summary
22
- s.authors = AUTHORS
23
- s.email = EMAIL
24
- s.homepage = HOMEPAGE
25
-
26
- # Uncomment this to add a dependency
27
- # s.add_dependency "foo"
28
-
29
- s.require_path = 'lib'
30
- s.autorequire = GEM
31
- s.files = %w(LICENSE README.rdoc Rakefile) + Dir.glob("{lib,spec}/**/*")
32
- end
33
-
34
- task :default => :spec
35
-
36
- desc "Run specs"
37
- Spec::Rake::SpecTask.new do |t|
38
- t.spec_files = FileList['spec/**/*_spec.rb']
39
- t.spec_opts = %w(-fs --color)
40
- end
41
-
42
-
43
- Rake::GemPackageTask.new(spec) do |pkg|
44
- pkg.gem_spec = spec
45
- end
46
-
47
- desc "install the gem locally"
48
- task :install => [:package] do
49
- sh %{sudo gem install pkg/#{GEM}-#{GEM_VERSION}}
50
- end
51
-
52
- desc "create a gemspec file"
53
- task :make_spec do
54
- File.open("#{GEM}.gemspec", "w") do |file|
55
- file.puts spec.to_ruby
56
- end
57
- end
@@ -1,75 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- describe Fancypath do
4
-
5
- before do
6
- TMP_DIR.rmtree if TMP_DIR.exist?
7
- TMP_DIR.mkpath
8
- @file = TMP_DIR.to_path/'testfile'
9
- @dir = TMP_DIR.to_path/'testdir'
10
- end
11
- after { TMP_DIR.rmtree }
12
-
13
- describe '#/' do
14
-
15
- it('returns a Fancypath') { (@dir/'somefile').class.should == Fancypath }
16
- it('joins paths') { (@dir/'somefile').to_s.should =~ /\/somefile$/ }
17
-
18
- end
19
-
20
- describe '#touch', 'file does not exist' do
21
-
22
- it('returns self') { @file.touch.should == @file }
23
- it('returns a Fancypath') { @file.touch.should be_instance_of(Fancypath) }
24
- it('creates file') { @file.touch.should be_file }
25
-
26
- end
27
-
28
- describe '#create', 'dir does not exist' do
29
-
30
- it('returns self') { @dir.create.should == @dir }
31
- it('returns a Fancypath') { @dir.create.should be_instance_of(Fancypath) }
32
- it('creates directory') { @dir.create.should be_directory }
33
-
34
- end
35
-
36
- describe '#remove' do
37
-
38
- it('returns self') { @file.remove.should == @file }
39
- it('returns a Fancypath') { @file.remove.should be_instance_of(Fancypath) }
40
- it('removes file') { @file.touch.remove.should_not exist }
41
- it('removes directory') { @dir.create.remove.should_not exist }
42
-
43
- end
44
-
45
- describe '#write' do
46
-
47
- it('returns self') { @file.write('').should == @file }
48
- it('returns a Fancypath') { @file.write('').should be_instance_of(Fancypath) }
49
- it('writes contents to file') { @file.write('test').read.should == 'test' }
50
-
51
- end
52
-
53
- describe '#copy' do
54
-
55
- before { @file.touch }
56
- it('returns a Fancypath') { @file.copy(TMP_DIR/'foo').should be_instance_of(Fancypath) }
57
- it('creates a new file') { @file.copy(TMP_DIR/'foo').should exist }
58
- it('keeps the original') { @file.copy(TMP_DIR/'foo'); @file.should exist }
59
- it('copies the contents') { @file.copy(TMP_DIR/'foo').read.should == @file.read }
60
-
61
- end
62
-
63
- end #/Fancypath
64
-
65
- describe "String#to_path" do
66
-
67
- it('returns a Fancypath') { 'test'.to_path.should be_instance_of(Fancypath) }
68
-
69
- end
70
-
71
- describe "Pathname#to_path" do
72
-
73
- it('returns a Fancypath') { Fancypath.new('/').to_path.should be_instance_of(Fancypath) }
74
-
75
- end
data/spec/spec_helper.rb DELETED
@@ -1,6 +0,0 @@
1
- $TESTING=true
2
- $:.push File.join(File.dirname(__FILE__), '..', 'lib')
3
-
4
- require 'fancypath'
5
-
6
- TMP_DIR = __FILE__.to_path.dirname/'..'/'tmp'/'fancypath'