class Webby::Resources::Resource - webby-0.9.4 Documentation

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

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