Class: Rails::Paths::Path
- Inherits:
-
Object
- Object
- Rails::Paths::Path
- Includes:
- Enumerable
- Defined in:
- lib/rails/paths.rb
Instance Attribute Summary collapse
-
#glob ⇒ Object
Returns the value of attribute glob.
Instance Method Summary collapse
- #<<(path) ⇒ Object (also: #push)
-
#absolute_current ⇒ Object
:nodoc:.
- #children ⇒ Object
- #concat(paths) ⇒ Object
- #each(&block) ⇒ Object
-
#existent ⇒ Object
Returns all expanded paths but only if they exist in the filesystem.
- #existent_directories ⇒ Object
-
#expanded ⇒ Object
(also: #to_a)
Expands all paths against the root and return all unique values.
-
#extensions ⇒ Object
:nodoc:.
- #first ⇒ Object
-
#initialize(root, current, paths, options = {}) ⇒ Path
constructor
A new instance of Path.
- #last ⇒ Object
- #to_ary ⇒ Object
- #unshift(*paths) ⇒ Object
Constructor Details
#initialize(root, current, paths, options = {}) ⇒ Path
Returns a new instance of Path.
113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/rails/paths.rb', line 113 def initialize(root, current, paths, = {}) @paths = paths @current = current @root = root @glob = [:glob] [:autoload_once] ? autoload_once! : skip_autoload_once! [:eager_load] ? eager_load! : skip_eager_load! [:autoload] ? autoload! : skip_autoload! [:load_path] ? load_path! : skip_load_path! end |
Instance Attribute Details
#glob ⇒ Object
Returns the value of attribute glob.
111 112 113 |
# File 'lib/rails/paths.rb', line 111 def glob @glob end |
Instance Method Details
#<<(path) ⇒ Object Also known as: push
164 165 166 |
# File 'lib/rails/paths.rb', line 164 def <<(path) @paths << path end |
#absolute_current ⇒ Object
:nodoc:
125 126 127 |
# File 'lib/rails/paths.rb', line 125 def absolute_current # :nodoc: File.(@current, @root.path) end |
#children ⇒ Object
129 130 131 132 133 134 |
# File 'lib/rails/paths.rb', line 129 def children keys = @root.keys.find_all { |k| k.start_with?(@current) && k != @current } @root.values_at(*keys.sort) end |
#concat(paths) ⇒ Object
169 170 171 |
# File 'lib/rails/paths.rb', line 169 def concat(paths) @paths.concat paths end |
#each(&block) ⇒ Object
160 161 162 |
# File 'lib/rails/paths.rb', line 160 def each(&block) @paths.each(&block) end |
#existent ⇒ Object
Returns all expanded paths but only if they exist in the filesystem.
207 208 209 210 211 212 213 214 215 216 |
# File 'lib/rails/paths.rb', line 207 def existent .select do |f| does_exist = File.exist?(f) if !does_exist && File.symlink?(f) raise "File #{f.inspect} is a symlink that does not point to a valid file" end does_exist end end |
#existent_directories ⇒ Object
218 219 220 |
# File 'lib/rails/paths.rb', line 218 def existent_directories .select { |d| File.directory?(d) } end |
#expanded ⇒ Object Also known as: to_a
Expands all paths against the root and return all unique values.
186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 |
# File 'lib/rails/paths.rb', line 186 def raise "You need to set a path root" unless @root.path result = [] each do |p| path = File.(p, @root.path) if @glob && File.directory?(path) Dir.chdir(path) do result.concat(Dir.glob(@glob).map { |file| File.join path, file }.sort) end else result << path end end result.uniq! result end |
#extensions ⇒ Object
:nodoc:
181 182 183 |
# File 'lib/rails/paths.rb', line 181 def extensions # :nodoc: $1.split(",") if @glob =~ /\{([\S]+)\}/ end |
#first ⇒ Object
136 137 138 |
# File 'lib/rails/paths.rb', line 136 def first .first end |
#last ⇒ Object
140 141 142 |
# File 'lib/rails/paths.rb', line 140 def last .last end |
#to_ary ⇒ Object
177 178 179 |
# File 'lib/rails/paths.rb', line 177 def to_ary @paths end |
#unshift(*paths) ⇒ Object
173 174 175 |
# File 'lib/rails/paths.rb', line 173 def unshift(*paths) @paths.unshift(*paths) end |