Class: Hashira::Project
- Inherits:
-
Object
- Object
- Hashira::Project
- Defined in:
- lib/hashira/project.rb
Constant Summary collapse
- ROOT_PACKAGE =
"(root)"
Instance Attribute Summary collapse
-
#directories ⇒ Object
readonly
Returns the value of attribute directories.
Class Method Summary collapse
Instance Method Summary collapse
- #files ⇒ Object
-
#initialize(directories) ⇒ Project
constructor
A new instance of Project.
- #label ⇒ Object
- #package_for(path) ⇒ Object
- #relative(path) ⇒ Object
- #root_package ⇒ Object
Constructor Details
#initialize(directories) ⇒ Project
Returns a new instance of Project.
19 20 21 22 23 24 |
# File 'lib/hashira/project.rb', line 19 def initialize(directories) missing = directories.reject { Dir.exist?(it) } raise Error, "no such directory: #{missing.join(", ")}" unless missing.empty? @directories = directories.map { it.delete_suffix("/") } end |
Instance Attribute Details
#directories ⇒ Object (readonly)
Returns the value of attribute directories.
26 27 28 |
# File 'lib/hashira/project.rb', line 26 def directories @directories end |
Class Method Details
.detect(directories) ⇒ Object
7 8 9 |
# File 'lib/hashira/project.rb', line 7 def self.detect(directories) directories.empty? ? new(default_directories) : new(directories) end |
Instance Method Details
#files ⇒ Object
28 |
# File 'lib/hashira/project.rb', line 28 def files = @directories.flat_map { Dir["#{it}/**/*.rb"] }.sort |
#label ⇒ Object
37 |
# File 'lib/hashira/project.rb', line 37 def label = @directories.join(", ") |
#package_for(path) ⇒ Object
30 31 32 33 |
# File 'lib/hashira/project.rb', line 30 def package_for(path) first, rest = relative(path).delete_suffix(".rb").split("/", 2) rest || folder?(path, first) ? first : ROOT_PACKAGE end |
#relative(path) ⇒ Object
35 |
# File 'lib/hashira/project.rb', line 35 def relative(path) = path.delete_prefix("#{directory_of(path)}/") |
#root_package ⇒ Object
39 |
# File 'lib/hashira/project.rb', line 39 def root_package = ROOT_PACKAGE |