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.
32 33 34 35 36 37 |
# File 'lib/hashira/project.rb', line 32 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.
39 40 41 |
# File 'lib/hashira/project.rb', line 39 def directories @directories end |
Class Method Details
.detect(directories) ⇒ Object
7 8 9 10 |
# File 'lib/hashira/project.rb', line 7 def self.detect(directories) targets = directories.empty? ? default_directories : directories new(targets.map { descend(it.delete_suffix("/")) }) end |
Instance Method Details
#files ⇒ Object
41 |
# File 'lib/hashira/project.rb', line 41 def files = @directories.flat_map { Dir["#{it}/**/*.rb"] }.sort |
#label ⇒ Object
52 |
# File 'lib/hashira/project.rb', line 52 def label = @directories.join(", ") |
#package_for(path) ⇒ Object
43 44 45 46 47 48 |
# File 'lib/hashira/project.rb', line 43 def package_for(path) first, rest = relative(path).delete_suffix(".rb").split("/", 2) return ROOT_PACKAGE unless rest || folder?(path, first) contested.include?(first) ? "#{directory_of(path)}/#{first}" : first end |
#relative(path) ⇒ Object
50 |
# File 'lib/hashira/project.rb', line 50 def relative(path) = path.delete_prefix("#{directory_of(path)}/") |
#root_package ⇒ Object
54 |
# File 'lib/hashira/project.rb', line 54 def root_package = ROOT_PACKAGE |