Module: Webby::Resources

Defined in:
lib/webby/resources.rb,
lib/webby/resources/db.rb,
lib/webby/resources/file.rb,
lib/webby/resources/page.rb,
lib/webby/resources/layout.rb,
lib/webby/resources/static.rb,
lib/webby/resources/partial.rb,
lib/webby/resources/resource.rb

Defined Under Namespace

Classes: DB, File, Layout, Page, Partial, Resource, Static

Class Method Summary collapse

Class Method Details

.clearObject

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



25
26
27
28
29
# File 'lib/webby/resources.rb', line 25

def clear
  self.pages.clear
  self.layouts.clear
  self.partials.clear
end

.find_layout(filename) ⇒ Object

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



77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/webby/resources.rb', line 77

def find_layout( filename )
  return if filename.nil?

  fn  = ::Webby::Resources::File.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

.layoutsObject

Returns the layouts hash object.



12
13
14
# File 'lib/webby/resources.rb', line 12

def layouts
  @layouts ||= ::Webby::Resources::DB.new
end

.new(fn) ⇒ Object

call-seq:

Resources.new( filename )


35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# 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 = ::Webby::Resources::File.basename(fn)
  if %r/\A_/o =~ filename
    r = ::Webby::Resources::Partial.new(fn)
    self.partials << r
    return r
  end

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

  # this is a renderable page
  r = ::Webby::Resources::Page.new(fn)
  self.pages << r
  return r
end

.pagesObject

Returns the pages hash object.



6
7
8
# File 'lib/webby/resources.rb', line 6

def pages
  @pages ||= ::Webby::Resources::DB.new
end

.partialsObject

Returns the partials hash object.



18
19
20
# File 'lib/webby/resources.rb', line 18

def partials
  @partials ||= ::Webby::Resources::DB.new
end

.path(filename) ⇒ Object

Returns a normalized path for the given filename.



70
71
72
# File 'lib/webby/resources.rb', line 70

def path( filename )
  filename.sub(%r/\A(?:\.\/|\/)/o, '').freeze
end