# 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