Class: Quails::Paths::Path
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Enumerable
#as_json, #exclude?, #index_by, #many?, #pluck, #sum, #without
Constructor Details
#initialize(root, current, paths, options = {}) ⇒ Path
Returns a new instance of Path.
115
116
117
118
119
120
121
122
123
124
125
|
# File 'railties/lib/rails/paths.rb', line 115
def initialize(root, current, paths, options = {})
@paths = paths
@current = current
@root = root
@glob = options[:glob]
options[:autoload_once] ? autoload_once! : skip_autoload_once!
options[:eager_load] ? eager_load! : skip_eager_load!
options[:autoload] ? autoload! : skip_autoload!
options[:load_path] ? load_path! : skip_load_path!
end
|
Instance Attribute Details
Returns the value of attribute glob.
113
114
115
|
# File 'railties/lib/rails/paths.rb', line 113
def glob
@glob
end
|
Instance Method Details
#<<(path) ⇒ Object
Also known as:
push
166
167
168
|
# File 'railties/lib/rails/paths.rb', line 166
def <<(path)
@paths << path
end
|
#absolute_current ⇒ Object
127
128
129
|
# File 'railties/lib/rails/paths.rb', line 127
def absolute_current File.expand_path(@current, @root.path)
end
|
131
132
133
134
135
136
|
# File 'railties/lib/rails/paths.rb', line 131
def children
keys = @root.keys.find_all { |k|
k.start_with?(@current) && k != @current
}
@root.values_at(*keys.sort)
end
|
#concat(paths) ⇒ Object
171
172
173
|
# File 'railties/lib/rails/paths.rb', line 171
def concat(paths)
@paths.concat paths
end
|
#each(&block) ⇒ Object
162
163
164
|
# File 'railties/lib/rails/paths.rb', line 162
def each(&block)
@paths.each(&block)
end
|
Returns all expanded paths but only if they exist in the filesystem.
209
210
211
212
213
214
215
216
217
218
|
# File 'railties/lib/rails/paths.rb', line 209
def existent
expanded.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
220
221
222
|
# File 'railties/lib/rails/paths.rb', line 220
def existent_directories
expanded.select { |d| File.directory?(d) }
end
|
#expanded ⇒ Object
Also known as:
to_a
Expands all paths against the root and return all unique values.
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
|
# File 'railties/lib/rails/paths.rb', line 188
def expanded
raise "You need to set a path root" unless @root.path
result = []
each do |p|
path = File.expand_path(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
183
184
185
|
# File 'railties/lib/rails/paths.rb', line 183
def extensions $1.split(",") if @glob =~ /\{([\S]+)\}/
end
|
138
139
140
|
# File 'railties/lib/rails/paths.rb', line 138
def first
expanded.first
end
|
142
143
144
|
# File 'railties/lib/rails/paths.rb', line 142
def last
expanded.last
end
|
179
180
181
|
# File 'railties/lib/rails/paths.rb', line 179
def to_ary
@paths
end
|
#unshift(*paths) ⇒ Object
175
176
177
|
# File 'railties/lib/rails/paths.rb', line 175
def unshift(*paths)
@paths.unshift(*paths)
end
|