Class: Rails::Paths::Path

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/rails/paths.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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, 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

#globObject

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_currentObject

:nodoc:



125
126
127
# File 'lib/rails/paths.rb', line 125

def absolute_current # :nodoc:
  File.expand_path(@current, @root.path)
end

#childrenObject



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

#existentObject

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
  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_directoriesObject



218
219
220
# File 'lib/rails/paths.rb', line 218

def existent_directories
  expanded.select { |d| File.directory?(d) }
end

#expandedObject 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 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

#extensionsObject

:nodoc:



181
182
183
# File 'lib/rails/paths.rb', line 181

def extensions # :nodoc:
  $1.split(",") if @glob =~ /\{([\S]+)\}/
end

#firstObject



136
137
138
# File 'lib/rails/paths.rb', line 136

def first
  expanded.first
end

#lastObject



140
141
142
# File 'lib/rails/paths.rb', line 140

def last
  expanded.last
end

#to_aryObject



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