New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

filepath

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

filepath

  • 0.7
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

filepath

filepath is a small library to manipulate paths; a modern replacement for the standard Pathname.

filepath is built around two main classes: Filepath, that represents paths, and FilepathList, lists of paths. These classes provide immutable objects with dozens of convenience methods for common operations such as calculating relative paths, concatenating paths, finding all the files in a directory or modifying all the extensions of a list of filenames at once.

Features and examples

The main purpose of Filepath is to able to write

require __FILE__.as_path / 'spec' / 'tasks'

instead of cumbersome code like

require File.join(File.dirname(__FILE__), ['spec', 'tasks'])

The main features of Filepath are…

Path concatenation

oauth_conf = ENV['HOME'].as_path / '.config' / 'myapp' / 'oauth.ini'
oauth_conf.to_s  #=> "/home/gioele/.config/myapp/oauth.ini"

joe_home = ENV['HOME'].as_path / '..' / 'joe'
joe_home.to_raw_string #=> "/home/gioele/../joe"
joe_home.to_s          #=> "/home/joe"

rel1 = oauth_conf.relative_to(joe_home)
rel1.to_s #=> "../gioele/.config/myapp/oauth.ini"

rel2 = joe_home.relative_to(oauth_conf)
rel2.to_s #=> "../../../joe"

Path manipulation

image = ENV['HOME'].as_path / 'Documents' / 'images' / 'cat.png'
image.parent_dir.to_s  #=> "/home/gioele/Documents/images"
image.filename.to_s    #=> "cat.png"
image.extension        #=> "png"

converted_img = image.replace_extension("jpeg")
converted_img.to_s     #=> "/home/gioele/Documents/images/cat.jpeg"
convert(image, converted_img)

Path traversal

file_dir = Filepath.new("/srv/example.org/web/html/")
file_dir.descend do |path|
    is = path.readable? ? "is" : "is not!"

    puts "#{path} #{is} readable"
end

produces

/ is readable
/srv is readable
/srv/example.org is readable
/srv/example.org/web is not! readable
/srv/example.org/web/html is not! redable

Shortcuts for file and directory operations

home_dir = ENV['HOME']

files = home_dir.files
files.count #=> 3
files.each { |path| puts path.filename.to_s }

produces

# .bashrc
# .vimrc
# TODO.txt

Similarly,

dirs = home_dir.directories
dirs.count  #=> 2
dirs.each { |path| puts path.filename.to_s + "/"}

produces

# .ssh/
# Documents/

Requirements

The filepath library does not require any external library: it relies complitely on functionalities available in the Ruby's core classes.

The filepath library has been tested and found compatible with Ruby 1.9.3, Ruby 2.3 and JRuby 9.1.x.x.

Installation

gem install filepath

Authors

  • Gioele Barabucci http://svario.it/gioele (initial author)

Development

Code : https://github.com/gioele/filepath

Report issues : https://github.com/gioele/filepath/issues

Documentation : http://rubydoc.info/gems/filepath

License

This is free software released into the public domain (CC0 license).

See the COPYING file or http://creativecommons.org/publicdomain/zero/1.0/ for more details.

FAQs

Package last updated on 08 Jul 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc