class Webby::Resources::Resource

A Webby::Resource is any file that can be found in the content directory or in the layout directory. This class contains information about the resources available to Webby.

Attributes

dir[R]

The directory of the resource excluding the content directory

ext[R]

Extesion of the resource file

mtime[R]

Resource file modification time

name[R]

The name of the file excluding the directory and extension

path[R]

The full path to the resource file

Public Instance Methods

resource <=> other → -1, 0, +1, or nil click to toggle source

Resource comparison operates on the full path of the resource objects and uses the standard String comparison operator. Returns nil if other is not a Resource instance.

# File lib/webby/resources/resource.rb, line 69
def <=>( other )
  return unless other.kind_of? ::Webby::Resources::Resource
  self.destination <=> other.destination
end
==( other ) click to toggle source
Alias for: equal?
resource[key] → value or nil click to toggle source

Returns the value associated with the given meta-data key. Key is converted into a string.

# File lib/webby/resources/resource.rb, line 80
def []( key )
  _meta_data[key.to_s]
end
resource[key] = value click to toggle source

Sets the given meta-data key to the value. Key is converted into a string.

# File lib/webby/resources/resource.rb, line 90
def []=( key, value )
  _meta_data[key.to_s] = value
end
destination() click to toggle source

Returns the path in the output directory where the resource will be generated. This path is used to determine if the resource is dirty and in need of generating.

# File lib/webby/resources/resource.rb, line 166
def destination
  return @destination unless @destination.nil?

  @destination = ::File.join(::Webby.site.output_dir, directory, filename)
  ext = extension
  unless ext.nil? or ext.empty?
    @destination << '.' << ext
  end
  @destination
end
directory() click to toggle source

The location of this resource in the directory structure. This directory does not include the content folder or the output folder.

# File lib/webby/resources/resource.rb, line 157
def directory
  return _meta_data['directory'] if _meta_data.has_key? 'directory'
  dir
end
dirty? → true or false click to toggle source

Returns true if this resource is newer than its corresponding output product. The resource needs to be rendered (if a page or layout) or copied (if a static file) to the output directory.

# File lib/webby/resources/resource.rb, line 113
def dirty?
  return _meta_data['dirty'] if _meta_data.has_key? 'dirty'

  # if the destination file does not exist, then we are dirty
  return true unless test(e, destination)

  # if this file's mtime is larger than the destination file's
  # mtime, then we are dirty
  dirty = @mtime > ::File.mtime(destination)
  return dirty if dirty

  # check to see if the layout is dirty, and if it is then we
  # are dirty, too
  if _meta_data.has_key? 'layout'
    lyt = ::Webby::Resources.find_layout(_meta_data['layout'])
    unless lyt.nil?
      return true if lyt.dirty?
    end
  end

  # if we got here, then we are not dirty
  false
end
eql?( other ) click to toggle source
Alias for: equal?
equal?( other ) → true or false click to toggle source

Returns true if the path of this resource is equivalent to the path of the other resource. Returns false if this is not the case.

# File lib/webby/resources/resource.rb, line 55
def equal?( other )
  return false unless other.kind_of? ::Webby::Resources::Resource
  (self.destination == other.destination) && (self.path == other.path)
end
Also aliased as: ==, eql?
extension() click to toggle source

The resource file extension. This will either be the extension of the file or the ‘extension’ attribute from the meta-data if present.

# File lib/webby/resources/resource.rb, line 149
def extension
  return _meta_data['extension'] if _meta_data.has_key? 'extension'
  ext
end
filename() click to toggle source

The resource filename excluding path and extension. This will either be the name of the file or the ‘filename’ attribute from the meta-data if present.

# File lib/webby/resources/resource.rb, line 141
def filename
  return _meta_data['filename'] if _meta_data.has_key? 'filename'
  name
end
method_missing( symbol [, *args, &block] ) → result click to toggle source

Invoked by Ruby when a message is sent to the resource that it cannot handle. The default behavior is to convert symbol to a string and search for that string in the resource’s meta-data. If found, the meta-data item is returned; otherwise, nil is returned.

# File lib/webby/resources/resource.rb, line 102
def method_missing( name, *a, &b )
  _meta_data[name.to_s]
end
url() click to toggle source

Returns a string suitable for use as a URL linking to this resource.

# File lib/webby/resources/resource.rb, line 179
def url
  return @url unless @url.nil?
  @url = destination.sub(::Webby.site.output_dir, '')
end

Public Class Methods

new( filename ) → resource click to toggle source

Creates a new resource object given the filename.

# File lib/webby/resources/resource.rb, line 38
def initialize( fn )
  @path  = fn
  @dir   = ::Webby::Resources.dirname(@path)
  @name  = ::Webby::Resources.basename(@path)
  @ext   = ::Webby::Resources.extname(@path)
  @mtime = ::File.mtime @path

  @_meta_data =  {}
  self._reset
end