Class: Opal::Hike::Trail
- Inherits:
- 
      Object
      
        - Object
- Opal::Hike::Trail
 
- Defined in:
- opal/lib/opal/hike.rb
Overview
Trail is the public container class for holding paths and extensions.
Instance Attribute Summary collapse
- 
  
    
      #extensions  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Trail#extensionsis a mutableExtensionscollection.
- 
  
    
      #paths  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Trail#pathsis a mutablePathscollection.
Instance Method Summary collapse
- 
  
    
      #append_extensions(*extensions)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Append extensiontoExtensionscollection.
- 
  
    
      #append_paths(*paths)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Append pathtoPathscollection.
- 
  
    
      #entries(path)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Trail#entriesis equivalent toDir#entries.
- 
  
    
      #find(*args, &block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Trail#findreturns a the expand path for a logical path in the path collection.
- 
  
    
      #index  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Trail#indexreturns anIndexobject 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#rootreturns root path as aString.
- 
  
    
      #stat(path)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Trail#statis 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 'opal/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 'opal/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 'opal/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 'opal/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 'opal/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 'opal/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 'opal/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 'opal/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 'opal/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 'opal/lib/opal/hike.rb', line 284 def stat(path) if File.exist?(path) File.stat(path.to_s) else # nil end end |