Class: Opal::Hike::Trail
- Inherits:
-
Object
- Object
- Opal::Hike::Trail
- Defined in:
- lib/opal/hike.rb
Overview
Trail
is the public container class for holding paths and extensions.
Instance Attribute Summary collapse
-
#extensions ⇒ Object
readonly
Trail#extensions
is a mutableExtensions
collection. -
#paths ⇒ Object
readonly
Trail#paths
is a mutablePaths
collection.
Instance Method Summary collapse
-
#append_extensions(*extensions) ⇒ Object
Append
extension
toExtensions
collection. -
#append_paths(*paths) ⇒ Object
Append
path
toPaths
collection. -
#entries(path) ⇒ Object
Trail#entries
is equivalent toDir#entries
. -
#find(*args, &block) ⇒ Object
Trail#find
returns a the expand path for a logical path in the path collection. -
#index ⇒ Object
Trail#index
returns anIndex
object that has the same interface asTrail
. -
#initialize(root = '.') ⇒ Trail
constructor
A Trail accepts an optional root path that defaults to your current working directory.
-
#root ⇒ Object
Trail#root
returns root path as aString
. -
#stat(path) ⇒ Object
Trail#stat
is equivalent toFile#stat
.
Constructor Details
#initialize(root = '.') ⇒ Trail
A Trail accepts an optional root path that defaults to your
current working directory. Any relative paths added to
Trail#paths
will expanded relative to the root.
217 218 219 220 221 |
# File 'lib/opal/hike.rb', line 217 def initialize(root = '.') @root = Pathname.new(root). @paths = [] @extensions = [] end |
Instance Attribute Details
#extensions ⇒ Object (readonly)
Trail#extensions
is a mutable Extensions
collection.
trail = Hike::Trail.new
trail.paths.push "~/Projects/hike/lib"
trail.extensions.push ".rb"
Extensions allow you to find files by just their name omitting
their extension. Is similar to Ruby's require mechanism that
allows you to require files with specifiying foo.rb
.
212 213 214 |
# File 'lib/opal/hike.rb', line 212 def extensions @extensions end |
#paths ⇒ Object (readonly)
Trail#paths
is a mutable Paths
collection.
trail = Hike::Trail.new
trail.paths.push "~/Projects/hike/lib", "~/Projects/hike/test"
The order of the paths is significant. Paths in the beginning of
the collection will be checked first. In the example above,
~/Projects/hike/lib/hike.rb
would shadow the existent of
~/Projects/hike/test/hike.rb
.
201 202 203 |
# File 'lib/opal/hike.rb', line 201 def paths @paths end |
Instance Method Details
#append_extensions(*extensions) ⇒ Object
Append extension
to Extensions
collection
234 235 236 |
# File 'lib/opal/hike.rb', line 234 def append_extensions(*extensions) @extensions.concat(extensions.map { |e| normalize_extension(e) }) end |
#append_paths(*paths) ⇒ Object
Append path
to Paths
collection
229 230 231 |
# File 'lib/opal/hike.rb', line 229 def append_paths(*paths) @paths.concat(paths.map { |p| normalize_path(p) }) end |
#entries(path) ⇒ Object
Trail#entries
is equivalent to Dir#entries
. It is not
recommend to use this method for general purposes. It exists for
parity with Index#entries
.
272 273 274 275 276 277 278 279 |
# File 'lib/opal/hike.rb', line 272 def entries(path) pathname = Pathname.new(path) if pathname.directory? pathname.entries.reject { |entry| entry.to_s =~ /^\.|~$|^\#.*\#$/ }.sort else [] end end |
#find(*args, &block) ⇒ Object
Trail#find
returns a the expand path for a logical path in the
path collection.
trail = Hike::Trail.new "~/Projects/hike"
trail.extensions.push ".rb"
trail.paths.push "lib", "test"
trail.find "hike/trail"
# => "~/Projects/hike/lib/hike/trail.rb"
trail.find "test_trail"
# => "~/Projects/hike/test/test_trail.rb"
251 252 253 |
# File 'lib/opal/hike.rb', line 251 def find(*args, &block) index.find(*args, &block) end |
#index ⇒ Object
Trail#index
returns an Index
object that has the same
interface as Trail
. An Index
is a cached Trail
object that
does not update when the file system changes. If you are
confident that you are not making changes the paths you are
searching, index
will avoid excess system calls.
index = trail.index
index.find "hike/trail"
index.find "test_trail"
265 266 267 |
# File 'lib/opal/hike.rb', line 265 def index Index.new(root, paths, extensions) end |
#root ⇒ Object
Trail#root
returns root path as a String
. This attribute is immutable.
224 225 226 |
# File 'lib/opal/hike.rb', line 224 def root @root.to_s end |
#stat(path) ⇒ Object
Trail#stat
is equivalent to File#stat
. It is not
recommend to use this method for general purposes. It exists for
parity with Index#stat
.
284 285 286 287 288 289 290 |
# File 'lib/opal/hike.rb', line 284 def stat(path) if File.exist?(path) File.stat(path.to_s) else # nil end end |