Module Webby::Resources
In: lib/webby/resources.rb
lib/webby/resources/db.rb
lib/webby/resources/layout.rb
lib/webby/resources/meta_file.rb
lib/webby/resources/page.rb
lib/webby/resources/partial.rb
lib/webby/resources/resource.rb
lib/webby/resources/static.rb

Methods

basename   clear   dirname   extname   find_layout   layouts   new   pages   partials   path  

Classes and Modules

Class Webby::Resources::DB
Class Webby::Resources::Layout
Class Webby::Resources::MetaFile
Class Webby::Resources::Page
Class Webby::Resources::Partial
Class Webby::Resources::Resource
Class Webby::Resources::Static

Public Class methods

Returns the last component of the filename with any extension information removed.

[Source]

# File lib/webby/resources.rb, line 115
    def basename( filename )
      ::File.basename(filename, '.*')
    end

Clear the contents of the layouts, pages and partials hash objects.

[Source]

# File lib/webby/resources.rb, line 25
    def clear
      self.pages.clear
      self.layouts.clear
      self.partials.clear
    end

Returns the directory component of the filename with the content directory removed from the beginning if it is present.

[Source]

# File lib/webby/resources.rb, line 105
    def dirname( filename )
      rgxp = %r/\A(?:#{::Webby.site.content_dir}|#{::Webby.site.layout_dir})\//o
      dirname = ::File.dirname(filename)
      dirname << '/' if dirname.index(?/) == nil
      dirname.sub(rgxp, '')
    end

Returns the extension (the portion of file name in path after the period). This method excludes the period from the extension name.

[Source]

# File lib/webby/resources.rb, line 122
    def extname( filename )
      ::File.extname(filename).tr('.', '')
    end

Returns the layout resource corresponding to the given filename or nil if no layout exists under that filename.

[Source]

# File lib/webby/resources.rb, line 88
    def find_layout( filename )
      return unless filename
      filename = filename.to_s

      fn  = self.basename(filename)
      dir = ::File.dirname(filename)
      dir = '.' == dir ? '' : dir

      layouts.find(:filename => fn, :in_directory => dir)

    rescue RuntimeError
      raise Webby::Error, "could not find layout #{filename.inspect}"
    end

Returns the layouts hash object.

[Source]

# File lib/webby/resources.rb, line 12
    def layouts
      @layouts ||= ::Webby::Resources::DB.new
    end

[Source]

# File lib/webby/resources.rb, line 35
    def new( fn )
      # normalize the path
      fn = self.path(fn)

      # see if we are dealing with a layout
      if %r/\A#{::Webby.site.layout_dir}\//o =~ fn
        r = ::Webby::Resources::Layout.new(fn)
        self.layouts << r
        return r
      end

      # see if we are dealing with a partial
      filename = self.basename(fn)
      if %r/\A_/o =~ filename
        r = ::Webby::Resources::Partial.new(fn)
        self.partials << r
        return r
      end

      begin
        fd = ::File.open(fn, 'r')
        mf = MetaFile.new fd

        # see if we are dealing with a static resource
        unless mf.meta_data?
          r = ::Webby::Resources::Static.new(fn)
          self.pages << r
          return r
        end

        # this is a renderable page
        mf.each do |meta_data|
          r = ::Webby::Resources::Page.new(fn, meta_data)
          self.pages << r
          r
        end
      rescue MetaFile::Error => err
        logger.error "error loading file #{fn.inspect}"
        logger.error err
      ensure
        fd.close if fd
      end
    end

Returns the pages hash object.

[Source]

# File lib/webby/resources.rb, line 6
    def pages
      @pages ||= ::Webby::Resources::DB.new
    end

Returns the partials hash object.

[Source]

# File lib/webby/resources.rb, line 18
    def partials
      @partials ||= ::Webby::Resources::DB.new
    end

Returns a normalized path for the given filename.

[Source]

# File lib/webby/resources.rb, line 81
    def path( filename )
      filename.sub(%r/\A(?:\.\/|\/)/o, '').freeze
    end

[Validate]