pleasant_path 1.1.0 → 1.2.0
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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +18 -0
- data/README.md +2 -0
- data/lib/pleasant_path/array.rb +0 -0
- data/lib/pleasant_path/file.rb +2 -2
- data/lib/pleasant_path/io.rb +1 -1
- data/lib/pleasant_path/json/object.rb +0 -0
- data/lib/pleasant_path/json/pathname.rb +1 -1
- data/lib/pleasant_path/json.rb +0 -0
- data/lib/pleasant_path/pathname.rb +71 -9
- data/lib/pleasant_path/string.rb +1 -1
- data/lib/pleasant_path/version.rb +1 -1
- data/lib/pleasant_path/yaml/object.rb +3 -1
- data/lib/pleasant_path/yaml/pathname.rb +1 -1
- data/lib/pleasant_path/yaml.rb +0 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 56365c199042c351833d072a2e26985b4aceea7cb37fdd4fe8f21c038bdee6ed
|
4
|
+
data.tar.gz: dea582a2684edab33b60b3f4e3e624ff610d0a23a78fe17c62fbc71476e4c88e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9242bc111208a89cad99db62ab0d1b01290ee9d9e59e63e2fe9a15a96fc736b67aea03b0f972cdceac46a0e95680b755db5524033357b711b128a38f0497be84
|
7
|
+
data.tar.gz: 8ee6d00eb11286b9d1e0fce25e69ced19c73e8135d2db58f24c4562184ca5a4baa56e3866f29fe522c1e3c032046e6805095f1717564f5e5beacc51d0f00da9e
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
## 1.2.0
|
2
|
+
|
3
|
+
* Added `Pathname#existence`.
|
4
|
+
* Added `Pathname#chdir`.
|
5
|
+
* Fixed `Object#write_to_yaml` to make parent directories as necessary.
|
6
|
+
|
7
|
+
## 1.1.0
|
8
|
+
|
9
|
+
* Added `Pathname#copy` and `Pathname#copy_into`.
|
10
|
+
* Added `Pathname#rename_basename` and `Pathname#rename_extname`.
|
11
|
+
* Added `File.common_path` and `Pathname#common_path`.
|
12
|
+
* Added `Pathname::NULL`.
|
13
|
+
* Added JSON-related and YAML-related APIs.
|
14
|
+
* Fixed `File.edit_text` and `File.edit_lines` to properly truncate.
|
15
|
+
|
16
|
+
## 1.0.0
|
17
|
+
|
18
|
+
* Initial release
|
data/README.md
CHANGED
@@ -30,6 +30,7 @@ The following methods are available:
|
|
30
30
|
- [#append_file](http://www.rubydoc.info/gems/pleasant_path/Pathname:append_file)
|
31
31
|
- [#append_lines](http://www.rubydoc.info/gems/pleasant_path/Pathname:append_lines)
|
32
32
|
- [#append_text](http://www.rubydoc.info/gems/pleasant_path/Pathname:append_text)
|
33
|
+
- [#chdir](http://www.rubydoc.info/gems/pleasant_path/Pathname:chdir)
|
33
34
|
- [#common_path](http://www.rubydoc.info/gems/pleasant_path/Pathname:common_path)
|
34
35
|
- [#copy](http://www.rubydoc.info/gems/pleasant_path/Pathname:copy)
|
35
36
|
- [#copy_into](http://www.rubydoc.info/gems/pleasant_path/Pathname:copy_into)
|
@@ -40,6 +41,7 @@ The following methods are available:
|
|
40
41
|
- [#dirs_r](http://www.rubydoc.info/gems/pleasant_path/Pathname:dirs_r)
|
41
42
|
- [#edit_lines](http://www.rubydoc.info/gems/pleasant_path/Pathname:edit_lines)
|
42
43
|
- [#edit_text](http://www.rubydoc.info/gems/pleasant_path/Pathname:edit_text)
|
44
|
+
- [#existence](http://www.rubydoc.info/gems/pleasant_path/Pathname:existence)
|
43
45
|
- [#files](http://www.rubydoc.info/gems/pleasant_path/Pathname:files)
|
44
46
|
- [#files_r](http://www.rubydoc.info/gems/pleasant_path/Pathname:files_r)
|
45
47
|
- [#make_dir](http://www.rubydoc.info/gems/pleasant_path/Pathname:make_dir)
|
data/lib/pleasant_path/array.rb
CHANGED
File without changes
|
data/lib/pleasant_path/file.rb
CHANGED
@@ -43,7 +43,7 @@ class File
|
|
43
43
|
# @yieldreturn [String] new contents
|
44
44
|
# @return [String]
|
45
45
|
def self.edit_text(filename)
|
46
|
-
self.open(filename,
|
46
|
+
self.open(filename, "r+") do |f|
|
47
47
|
text = yield f.read
|
48
48
|
f.seek(0, IO::SEEK_SET)
|
49
49
|
f.write(text)
|
@@ -73,7 +73,7 @@ class File
|
|
73
73
|
# @yieldreturn [Array<String>] new contents
|
74
74
|
# @return [Array<String>]
|
75
75
|
def self.edit_lines(filename)
|
76
|
-
self.open(filename,
|
76
|
+
self.open(filename, "r+") do |f|
|
77
77
|
lines = yield f.read_lines
|
78
78
|
f.seek(0, IO::SEEK_SET)
|
79
79
|
f.write_lines(lines)
|
data/lib/pleasant_path/io.rb
CHANGED
File without changes
|
data/lib/pleasant_path/json.rb
CHANGED
File without changes
|
@@ -14,7 +14,7 @@ class Pathname
|
|
14
14
|
end
|
15
15
|
|
16
16
|
# Joins the parent (+dirname+) of the Pathname with the argument. The
|
17
|
-
#
|
17
|
+
# mnemonic for this operator is that the resultant path goes up one
|
18
18
|
# directory level from the original, then goes down to the directory
|
19
19
|
# specified by the argument.
|
20
20
|
#
|
@@ -37,6 +37,22 @@ class Pathname
|
|
37
37
|
self.dirname.basename
|
38
38
|
end
|
39
39
|
|
40
|
+
# Returns the Pathname if +exist?+ returns true, otherwise returns
|
41
|
+
# nil.
|
42
|
+
#
|
43
|
+
# @example
|
44
|
+
# FileUtils.mkdir("dir1")
|
45
|
+
# FileUtils.touch("dir1/file1")
|
46
|
+
#
|
47
|
+
# Pathname.new("dir1/file1").existence # == Pathname.new("dir1/file1")
|
48
|
+
#
|
49
|
+
# Pathname.new("dir1/file2").existence # == nil
|
50
|
+
#
|
51
|
+
# @return [Pathname, nil]
|
52
|
+
def existence
|
53
|
+
self if self.exist?
|
54
|
+
end
|
55
|
+
|
40
56
|
# Computes the longest path that the Pathname and +other+ have in
|
41
57
|
# common. See also {File.common_path}.
|
42
58
|
#
|
@@ -164,6 +180,48 @@ class Pathname
|
|
164
180
|
self.find.select(&:file?)
|
165
181
|
end
|
166
182
|
|
183
|
+
# Changes the current working directory to the directory indicated by
|
184
|
+
# the Pathname. If a block is given, it is called with the Pathname,
|
185
|
+
# and the original working directory is restored after the block
|
186
|
+
# exits.
|
187
|
+
#
|
188
|
+
# Returns the return value of the block, if one is given. Otherwise,
|
189
|
+
# returns the Pathname.
|
190
|
+
#
|
191
|
+
# Raises an exception if the directory indicated by the Pathname does
|
192
|
+
# not exist.
|
193
|
+
#
|
194
|
+
# See also +Dir::chdir+.
|
195
|
+
#
|
196
|
+
# @example
|
197
|
+
# FileUtils.mkdir("dir1")
|
198
|
+
# FileUtils.mkdir("dir2")
|
199
|
+
#
|
200
|
+
# Pathname.new("dir1").chdir # == Pathname.new("dir1")
|
201
|
+
# Pathname.pwd # == Pathname.new("dir1")
|
202
|
+
#
|
203
|
+
# Pathname.new("dir2").chdir{|path| "in #{path}" } # == "in dir2"
|
204
|
+
# Pathname.pwd # == Pathname.new("dir1")
|
205
|
+
#
|
206
|
+
# @overload chdir()
|
207
|
+
# @return [Pathname]
|
208
|
+
# @overload chdir()
|
209
|
+
# @yieldparam path [Pathname]
|
210
|
+
# @yieldreturn [Object] block_retval
|
211
|
+
# @return [block_retval]
|
212
|
+
# @raise [SystemCallError]
|
213
|
+
# if the directory does not exist
|
214
|
+
def chdir
|
215
|
+
if block_given?
|
216
|
+
Dir.chdir(self) do |dir|
|
217
|
+
yield dir.to_pathname
|
218
|
+
end
|
219
|
+
else
|
220
|
+
Dir.chdir(self)
|
221
|
+
self
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
167
225
|
# Alias of +Pathname#mkpath+, but this method returns the Pathname.
|
168
226
|
#
|
169
227
|
# @example
|
@@ -361,7 +419,9 @@ class Pathname
|
|
361
419
|
# @param new_basename [String]
|
362
420
|
# @return [Pathname]
|
363
421
|
def rename_basename(new_basename)
|
364
|
-
self.
|
422
|
+
new_path = self.dirname / new_basename
|
423
|
+
self.rename(new_path)
|
424
|
+
new_path
|
365
425
|
end
|
366
426
|
|
367
427
|
# Renames the file extension of the file indicated by the Pathname.
|
@@ -391,7 +451,9 @@ class Pathname
|
|
391
451
|
unless new_extname.start_with?(".") || new_extname.empty?
|
392
452
|
new_extname = ".#{new_extname}"
|
393
453
|
end
|
394
|
-
self.
|
454
|
+
new_path = self.sub_ext(new_extname)
|
455
|
+
self.rename(new_path)
|
456
|
+
new_path
|
395
457
|
end
|
396
458
|
|
397
459
|
# Writes given text to the file indicated by the Pathname, and returns
|
@@ -411,7 +473,7 @@ class Pathname
|
|
411
473
|
# @param text [String]
|
412
474
|
# @return [Pathname]
|
413
475
|
def write_text(text)
|
414
|
-
self.make_dirname.open(
|
476
|
+
self.make_dirname.open("w"){|f| f.write(text) }
|
415
477
|
self
|
416
478
|
end
|
417
479
|
|
@@ -432,7 +494,7 @@ class Pathname
|
|
432
494
|
# @param text [String]
|
433
495
|
# @return [Pathname]
|
434
496
|
def append_text(text)
|
435
|
-
self.make_dirname.open(
|
497
|
+
self.make_dirname.open("a"){|f| f.write(text) }
|
436
498
|
self
|
437
499
|
end
|
438
500
|
|
@@ -452,7 +514,7 @@ class Pathname
|
|
452
514
|
# @param lines [Enumerable<#to_s>]
|
453
515
|
# @return [Pathname]
|
454
516
|
def write_lines(lines)
|
455
|
-
self.make_dirname.open(
|
517
|
+
self.make_dirname.open("w"){|f| f.write_lines(lines) }
|
456
518
|
self
|
457
519
|
end
|
458
520
|
|
@@ -472,7 +534,7 @@ class Pathname
|
|
472
534
|
# @param lines [Enumerable<#to_s>]
|
473
535
|
# @return [Pathname]
|
474
536
|
def append_lines(lines)
|
475
|
-
self.make_dirname.open(
|
537
|
+
self.make_dirname.open("a"){|f| f.write_lines(lines) }
|
476
538
|
self
|
477
539
|
end
|
478
540
|
|
@@ -496,7 +558,7 @@ class Pathname
|
|
496
558
|
#
|
497
559
|
# @return [Array<String>]
|
498
560
|
def read_lines
|
499
|
-
self.open(
|
561
|
+
self.open("r"){|f| f.read_lines }
|
500
562
|
end
|
501
563
|
|
502
564
|
# Reads the contents of the file indicated by the Pathname into memory
|
@@ -563,7 +625,7 @@ class Pathname
|
|
563
625
|
# @param source [String, Pathname]
|
564
626
|
# @return [Pathname]
|
565
627
|
def append_file(source)
|
566
|
-
self.open(
|
628
|
+
self.open("a"){|destination| IO::copy_stream(source, destination) }
|
567
629
|
self
|
568
630
|
end
|
569
631
|
|
data/lib/pleasant_path/string.rb
CHANGED
@@ -29,7 +29,7 @@ class String
|
|
29
29
|
|
30
30
|
# Treating the string as a path, joins the parent (+dirname+) of the
|
31
31
|
# path with the argument, and returns the result as a +Pathname+
|
32
|
-
# object. The
|
32
|
+
# object. The mnemonic for this operator is that the resultant path
|
33
33
|
# goes up one directory level from the original, then goes down to the
|
34
34
|
# directory specified by the argument. See also {Pathname#^}.
|
35
35
|
#
|
@@ -15,7 +15,9 @@ class Object
|
|
15
15
|
# @param options [Hash]
|
16
16
|
# @return [self]
|
17
17
|
def write_to_yaml(file, options = {})
|
18
|
-
|
18
|
+
file.to_pathname.make_dirname.open("w") do |f|
|
19
|
+
YAML.dump(self, f, options)
|
20
|
+
end
|
19
21
|
self
|
20
22
|
end
|
21
23
|
|
@@ -12,7 +12,7 @@ class Pathname
|
|
12
12
|
#
|
13
13
|
# @return [nil, true, false, Numeric, String, Array, Hash]
|
14
14
|
def read_yaml
|
15
|
-
self.open(
|
15
|
+
self.open("r"){|f| YAML.safe_load(f, [], [], false, self) }
|
16
16
|
end
|
17
17
|
|
18
18
|
# Reads the contents of the file indicated by the Pathname, and parses
|
data/lib/pleasant_path/yaml.rb
CHANGED
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pleasant_path
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Hefner
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-07-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -75,6 +75,7 @@ extra_rdoc_files: []
|
|
75
75
|
files:
|
76
76
|
- ".gitignore"
|
77
77
|
- ".travis.yml"
|
78
|
+
- CHANGELOG.md
|
78
79
|
- Gemfile
|
79
80
|
- LICENSE.txt
|
80
81
|
- README.md
|
@@ -113,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
114
|
version: '0'
|
114
115
|
requirements: []
|
115
116
|
rubyforge_project:
|
116
|
-
rubygems_version: 2.6
|
117
|
+
rubygems_version: 2.7.6
|
117
118
|
signing_key:
|
118
119
|
specification_version: 4
|
119
120
|
summary: A fluent API for pleasant file IO.
|