Returns the last component of the filename with any extension information removed.
# File lib/webby/resources.rb, line 115 def basename( filename ) ::File.basename(filename, '.*') end
Returns the directory component of the filename with the content directory removed from the beginning if it is present.
# 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 layout resource corresponding to the given filename or nil if no layout exists under that filename.
# 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
# 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