fancypath 0.3.0 → 0.5.12

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.
@@ -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'