module Webby::Resources
Public Class Methods
basename( filename )
click to toggle source
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
clear()
click to toggle source
Clear the contents of the layouts
, pages
and
partials
hash objects.
# File lib/webby/resources.rb, line 25 def clear self.pages.clear self.layouts.clear self.partials.clear end
dirname( filename )
click to toggle source
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 = /\A(?:#{::Webby.site.content_dir}|#{::Webby.site.layout_dir})\//o dirname = ::File.dirname(filename) dirname << '/' if dirname.index(?/) == nil dirname.sub(rgxp, '') end
extname( filename )
click to toggle source
Returns the extension (the portion of file name in path after the period). This method excludes the period from the extension name.
# File lib/webby/resources.rb, line 122 def extname( filename ) ::File.extname(filename).tr('.', '') end
find_layout( filename )
click to toggle source
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
layouts()
click to toggle source
Returns the layouts hash object.
# File lib/webby/resources.rb, line 12 def layouts @layouts ||= ::Webby::Resources::DB.new end
new( filename )
click to toggle 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 /\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 /\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
pages()
click to toggle source
Returns the pages hash object.
# File lib/webby/resources.rb, line 6 def pages @pages ||= ::Webby::Resources::DB.new end
partials()
click to toggle source
Returns the partials hash object.
# File lib/webby/resources.rb, line 18 def partials @partials ||= ::Webby::Resources::DB.new end
path( filename )
click to toggle source
Returns a normalized path for the given filename.
# File lib/webby/resources.rb, line 81 def path( filename ) filename.sub(/\A(?:\.\/|\/)/o, '').freeze end