module Refinements::Pathname
Provides additional enhancements to the Pathname
primitive.
Public Instance Methods
Pathname(object)
click to toggle source
Calls superclass method
# File lib/refinements/pathname.rb, line 9 def Pathname object return super(String(object)) unless object super end
change_dir() { |Pathname(path)| ... }
click to toggle source
# File lib/refinements/pathname.rb, line 33 def change_dir if block_given? Dir.chdir(self) { |path| yield Pathname(path) } else Dir.chdir self and self end end
copy(to)
click to toggle source
# File lib/refinements/pathname.rb, line 41 def copy to destination = to.directory? ? to.join(basename) : to read.then { |content| destination.write content } self end
deep_touch(...)
click to toggle source
# File lib/refinements/pathname.rb, line 47 def deep_touch(...) = make_ancestors.touch(...) def delete = super && self def delete_prefix(pattern) = parent.join %(#{name.sub(/\A#{pattern}/, "")}#{extname}) def delete_suffix(pattern) = parent.join %(#{name.sub(/#{pattern}\z/, "")}#{extname}) def directories pattern = "*", flag: File::FNM_SYSCASE glob(pattern, flag).select(&:directory?) end def empty = file? ? (truncate(0) and self) : remove_tree.make_dir def extensions = basename.to_s.split(/(?=\.)+/).tap(&:shift) def files(pattern = "*", flag: File::FNM_SYSCASE) = glob(pattern, flag).select(&:file?) def gsub(pattern, replacement) = self.class.new(to_s.gsub(pattern, replacement)) def make_ancestors dirname.mkpath self end def make_dir = exist? ? self : (mkdir and self) def make_path mkpath self end def name = basename extname def puts(content) = write "#{content}\n" def relative_parent(root_dir) = relative_path_from(root_dir).parent def remove_dir = exist? ? (rmdir and self) : self def remove_tree rmtree if exist? self end def rewrite = read.then { |content| write yield(content) if block_given? } def touch at = Time.now exist? ? utime(at, at) : write("") self end def write content, offset: nil, **options super
delete(= super && self)
click to toggle source
# File lib/refinements/pathname.rb, line 49 def delete = super && self def delete_prefix(pattern) = parent.join %(#{name.sub(/\A#{pattern}/, "")}#{extname}) def delete_suffix(pattern) = parent.join %(#{name.sub(/#{pattern}\z/, "")}#{extname}) def directories pattern = "*", flag: File::FNM_SYSCASE glob(pattern, flag).select(&:directory?) end def empty = file? ? (truncate(0) and self) : remove_tree.make_dir def extensions = basename.to_s.split(/(?=\.)+/).tap(&:shift) def files(pattern = "*", flag: File::FNM_SYSCASE) = glob(pattern, flag).select(&:file?) def gsub(pattern, replacement) = self.class.new(to_s.gsub(pattern, replacement)) def make_ancestors dirname.mkpath self end def make_dir = exist? ? self : (mkdir and self) def make_path mkpath self end def name = basename extname def puts(content) = write "#{content}\n" def relative_parent(root_dir) = relative_path_from(root_dir).parent def remove_dir = exist? ? (rmdir and self) : self def remove_tree rmtree if exist? self end def rewrite = read.then { |content| write yield(content) if block_given? } def touch at = Time.now exist? ? utime(at, at) : write("") self end def write content, offset: nil, **options super content,
delete_prefix(pattern)
click to toggle source
# File lib/refinements/pathname.rb, line 51 def delete_prefix(pattern) = parent.join %(#{name.sub(/\A#{pattern}/, "")}#{extname}) def delete_suffix(pattern) = parent.join %(#{name.sub(/#{pattern}\z/, "")}#{extname}) def directories pattern = "*", flag: File::FNM_SYSCASE glob(pattern, flag).select(&:directory?) end def empty = file? ? (truncate(0) and self) : remove_tree.make_dir def extensions = basename.to_s.split(/(?=\.)+/).tap(&:shift) def files(pattern = "*", flag: File::FNM_SYSCASE) = glob(pattern, flag).select(&:file?) def gsub(pattern, replacement) = self.class.new(to_s.gsub(pattern, replacement)) def make_ancestors dirname.mkpath self end def make_dir = exist? ? self : (mkdir and self) def make_path mkpath self end def name = basename extname def puts(content) = write "#{content}\n" def relative_parent(root_dir) = relative_path_from(root_dir).parent def remove_dir = exist? ? (rmdir and self) : self def remove_tree rmtree if exist? self end def rewrite = read.then { |content| write yield(content) if block_given? } def touch at = Time.now exist? ? utime(at, at) : write("") self end def write content, offset: nil, **options super content, offset
delete_suffix(pattern)
click to toggle source
# File lib/refinements/pathname.rb, line 53 def delete_suffix(pattern) = parent.join %(#{name.sub(/#{pattern}\z/, "")}#{extname}) def directories pattern = "*", flag: File::FNM_SYSCASE glob(pattern, flag).select(&:directory?) end def empty = file? ? (truncate(0) and self) : remove_tree.make_dir def extensions = basename.to_s.split(/(?=\.)+/).tap(&:shift) def files(pattern = "*", flag: File::FNM_SYSCASE) = glob(pattern, flag).select(&:file?) def gsub(pattern, replacement) = self.class.new(to_s.gsub(pattern, replacement)) def make_ancestors dirname.mkpath self end def make_dir = exist? ? self : (mkdir and self) def make_path mkpath self end def name = basename extname def puts(content) = write "#{content}\n" def relative_parent(root_dir) = relative_path_from(root_dir).parent def remove_dir = exist? ? (rmdir and self) : self def remove_tree rmtree if exist? self end def rewrite = read.then { |content| write yield(content) if block_given? } def touch at = Time.now exist? ? utime(at, at) : write("") self end def write content, offset: nil, **options super content, offset,
directories(pattern = "*", flag: File::FNM_SYSCASE)
click to toggle source
# File lib/refinements/pathname.rb, line 55 def directories pattern = "*", flag: File::FNM_SYSCASE glob(pattern, flag).select(&:directory?) end
empty(= file? ? (truncate(0) and self) : remove_tree.make_dir)
click to toggle source
# File lib/refinements/pathname.rb, line 59 def empty = file? ? (truncate(0) and self) : remove_tree.make_dir def extensions = basename.to_s.split(/(?=\.)+/).tap(&:shift) def files(pattern = "*", flag: File::FNM_SYSCASE) = glob(pattern, flag).select(&:file?) def gsub(pattern, replacement) = self.class.new(to_s.gsub(pattern, replacement)) def make_ancestors dirname.mkpath self end def make_dir = exist? ? self : (mkdir and self) def make_path mkpath self end def name = basename extname def puts(content) = write "#{content}\n" def relative_parent(root_dir) = relative_path_from(root_dir).parent def remove_dir = exist? ? (rmdir and self) : self def remove_tree rmtree if exist? self end def rewrite = read.then { |content| write yield(content) if block_given? } def touch at = Time.now exist? ? utime(at, at) : write("") self end def write content, offset: nil, **options super content, offset, **options
extensions(= basename.to_s.split(/(?=\.)+/).tap(&:shift))
click to toggle source
# File lib/refinements/pathname.rb, line 61 def extensions = basename.to_s.split(/(?=\.)+/).tap(&:shift) def files(pattern = "*", flag: File::FNM_SYSCASE) = glob(pattern, flag).select(&:file?) def gsub(pattern, replacement) = self.class.new(to_s.gsub(pattern, replacement)) def make_ancestors dirname.mkpath self end def make_dir = exist? ? self : (mkdir and self) def make_path mkpath self end def name = basename extname def puts(content) = write "#{content}\n" def relative_parent(root_dir) = relative_path_from(root_dir).parent def remove_dir = exist? ? (rmdir and self) : self def remove_tree rmtree if exist? self end def rewrite = read.then { |content| write yield(content) if block_given? } def touch at = Time.now exist? ? utime(at, at) : write("") self end def write content, offset: nil, **options super content, offset, **options
files(pattern = "*", flag: File::FNM_SYSCASE)
click to toggle source
# File lib/refinements/pathname.rb, line 63 def files(pattern = "*", flag: File::FNM_SYSCASE) = glob(pattern, flag).select(&:file?) def gsub(pattern, replacement) = self.class.new(to_s.gsub(pattern, replacement)) def make_ancestors dirname.mkpath self end def make_dir = exist? ? self : (mkdir and self) def make_path mkpath self end def name = basename extname def puts(content) = write "#{content}\n" def relative_parent(root_dir) = relative_path_from(root_dir).parent def remove_dir = exist? ? (rmdir and self) : self def remove_tree rmtree if exist? self end def rewrite = read.then { |content| write yield(content) if block_given? } def touch at = Time.now exist? ? utime(at, at) : write("") self end def write content, offset: nil, **options super content, offset, **options self
gsub(pattern, replacement)
click to toggle source
# File lib/refinements/pathname.rb, line 65 def gsub(pattern, replacement) = self.class.new(to_s.gsub(pattern, replacement)) def make_ancestors dirname.mkpath self end def make_dir = exist? ? self : (mkdir and self) def make_path mkpath self end def name = basename extname def puts(content) = write "#{content}\n" def relative_parent(root_dir) = relative_path_from(root_dir).parent def remove_dir = exist? ? (rmdir and self) : self def remove_tree rmtree if exist? self end def rewrite = read.then { |content| write yield(content) if block_given? } def touch at = Time.now exist? ? utime(at, at) : write("") self end def write content, offset: nil, **options super content, offset, **options self end
home(= new ENV.fetch("HOME", ""))
click to toggle source
# File lib/refinements/pathname.rb, line 17 def home = new ENV.fetch("HOME", "") def make_temp_dir prefix: "temp-", suffix: nil, root: nil if block_given? Dir.mktmpdir([prefix, suffix], root) { |path| yield new(path) } else new Dir.mktmpdir([prefix, suffix], root) end end def require_tree(root) = new(root).files("**/*.rb").each { |path| require path.to_s } def root = new(File::SEPARATOR) end refine ::Pathname do def change_dir if block_given? Dir.chdir(self) { |path| yield Pathname(path) } else Dir.chdir self and self end end def copy to destination = to.directory? ? to.join(basename) : to read.then { |content| destination.write content } self end def deep_touch(...) = make_ancestors.touch(...) def delete = super && self def delete_prefix(pattern) = parent.join %(#{name.sub(/\A#{pattern}/, "")}#{extname}) def delete_suffix(pattern) = parent.join %(#{name.sub(/#{pattern}\z/, "")}#{extname}) def directories pattern = "*", flag: File::FNM_SYSCASE glob(pattern, flag).select(&:directory?) end def empty = file? ? (truncate(0) and self) : remove_tree.make_dir def extensions = basename.to_s.split(/(?=\.)+/).tap(&:shift) def files(pattern = "*", flag: File::FNM_SYSCASE) = glob(pattern, flag).select(&:file?) def gsub(pattern, replacement) = self.class.new(to_s.gsub(pattern, replacement)) def make_ancestors dirname.mkpath self end def make_dir = exist? ? self : (mkdir and self) def make_path mkpath self end def name = basename extname def puts(content) = write "#{content}\n" def relative_parent(root_dir) = relative_path_from(root_dir).parent def remove_dir = exist? ? (rmdir and self) : self def remove_tree rmtree if exist? self end def rewrite = read.then { |content| write yield(content) if block_given? } def touch at = Time.now exist? ? utime(at, at) : write("") self end def write content, offset: nil, **options
make_ancestors()
click to toggle source
# File lib/refinements/pathname.rb, line 67 def make_ancestors dirname.mkpath self end
make_dir(= exist? ? self : (mkdir and self))
click to toggle source
# File lib/refinements/pathname.rb, line 72 def make_dir = exist? ? self : (mkdir and self) def make_path mkpath self end def name = basename extname def puts(content) = write "#{content}\n" def relative_parent(root_dir) = relative_path_from(root_dir).parent def remove_dir = exist? ? (rmdir and self) : self def remove_tree rmtree if exist? self end def rewrite = read.then { |content| write yield(content) if block_given? } def touch at = Time.now exist? ? utime(at, at) : write("") self end def write content, offset: nil, **options super content, offset, **options self end
make_path()
click to toggle source
# File lib/refinements/pathname.rb, line 74 def make_path mkpath self end
make_temp_dir(prefix: "temp-", suffix: nil, root: nil) { |new(path)| ... }
click to toggle source
# File lib/refinements/pathname.rb, line 19 def make_temp_dir prefix: "temp-", suffix: nil, root: nil if block_given? Dir.mktmpdir([prefix, suffix], root) { |path| yield new(path) } else new Dir.mktmpdir([prefix, suffix], root) end end
name(= basename extname)
click to toggle source
# File lib/refinements/pathname.rb, line 79 def name = basename extname def puts(content) = write "#{content}\n" def relative_parent(root_dir) = relative_path_from(root_dir).parent def remove_dir = exist? ? (rmdir and self) : self def remove_tree rmtree if exist? self end def rewrite = read.then { |content| write yield(content) if block_given? } def touch at = Time.now exist? ? utime(at, at) : write("") self end def write content, offset: nil, **options super content, offset, **options self end end
puts(content)
click to toggle source
# File lib/refinements/pathname.rb, line 81 def puts(content) = write "#{content}\n" def relative_parent(root_dir) = relative_path_from(root_dir).parent def remove_dir = exist? ? (rmdir and self) : self def remove_tree rmtree if exist? self end def rewrite = read.then { |content| write yield(content) if block_given? } def touch at = Time.now exist? ? utime(at, at) : write("") self end def write content, offset: nil, **options super content, offset, **options self end end end
relative_parent(root_dir)
click to toggle source
# File lib/refinements/pathname.rb, line 83 def relative_parent(root_dir) = relative_path_from(root_dir).parent def remove_dir = exist? ? (rmdir and self) : self def remove_tree rmtree if exist? self end def rewrite = read.then { |content| write yield(content) if block_given? } def touch at = Time.now exist? ? utime(at, at) : write("") self end def write content, offset: nil, **options super content, offset, **options self end end end end
remove_dir(= exist? ? (rmdir and self) : self)
click to toggle source
# File lib/refinements/pathname.rb, line 85 def remove_dir = exist? ? (rmdir and self) : self def remove_tree rmtree if exist? self end def rewrite = read.then { |content| write yield(content) if block_given? } def touch at = Time.now exist? ? utime(at, at) : write("") self end def write content, offset: nil, **options super content, offset, **options self end end end
remove_tree()
click to toggle source
# File lib/refinements/pathname.rb, line 87 def remove_tree rmtree if exist? self end
require_tree(root)
click to toggle source
# File lib/refinements/pathname.rb, line 27 def require_tree(root) = new(root).files("**/*.rb").each { |path| require path.to_s } def root = new(File::SEPARATOR) end refine ::Pathname do def change_dir if block_given? Dir.chdir(self) { |path| yield Pathname(path) } else Dir.chdir self and self end end def copy to destination = to.directory? ? to.join(basename) : to read.then { |content| destination.write content } self end def deep_touch(...) = make_ancestors.touch(...) def delete = super && self def delete_prefix(pattern) = parent.join %(#{name.sub(/\A#{pattern}/, "")}#{extname}) def delete_suffix(pattern) = parent.join %(#{name.sub(/#{pattern}\z/, "")}#{extname}) def directories pattern = "*", flag: File::FNM_SYSCASE glob(pattern, flag).select(&:directory?) end def empty = file? ? (truncate(0) and self) : remove_tree.make_dir def extensions = basename.to_s.split(/(?=\.)+/).tap(&:shift) def files(pattern = "*", flag: File::FNM_SYSCASE) = glob(pattern, flag).select(&:file?) def gsub(pattern, replacement) = self.class.new(to_s.gsub(pattern, replacement)) def make_ancestors dirname.mkpath self end def make_dir = exist? ? self : (mkdir and self) def make_path mkpath self end def name = basename extname def puts(content) = write "#{content}\n" def relative_parent(root_dir) = relative_path_from(root_dir).parent def remove_dir = exist? ? (rmdir and self) : self def remove_tree rmtree if exist? self end def rewrite = read.then { |content| write yield(content) if block_given? } def touch at = Time.now exist? ? utime(at, at) : write("") self end def write content, offset: nil, **options
rewrite(= read.then { |content| write yield(content) if block_given? })
click to toggle source
# File lib/refinements/pathname.rb, line 92 def rewrite = read.then { |content| write yield(content) if block_given? } def touch at = Time.now exist? ? utime(at, at) : write("") self end def write content, offset: nil, **options super content, offset, **options self end end
root(= new(File::SEPARATOR))
click to toggle source
# File lib/refinements/pathname.rb, line 29 def root = new(File::SEPARATOR) end
touch(at = Time.now)
click to toggle source
# File lib/refinements/pathname.rb, line 94 def touch at = Time.now exist? ? utime(at, at) : write("") self end
write(content, offset: nil, **options)
click to toggle source
Calls superclass method
# File lib/refinements/pathname.rb, line 99 def write content, offset: nil, **options super content, offset, **options self end