Class: Webby::PagesDB
- Inherits:
-
Object
- Object
- Webby::PagesDB
- Includes:
- Enumerable
- Defined in:
- lib/webby/pages_db.rb
Instance Method Summary collapse
-
#add(page) ⇒ Object
(also: #<<)
call-seq: add( resource ).
-
#children(page, opts = {}) ⇒ Object
call-seq: children( page, opts = {} ) => array.
-
#clear ⇒ Object
call-seq: clear.
-
#each(&b) ⇒ Object
call-seq: each {|resource| block}.
-
#find_by_name(name) ⇒ Object
call-seq: find_by_name( name ).
-
#initialize ⇒ PagesDB
constructor
call-seq: PagesDB.new.
-
#siblings(page, opts = {}) ⇒ Object
call-seq: siblings( page, opts = {} ) => array.
Constructor Details
Instance Method Details
#add(page) ⇒ Object Also known as: <<
call-seq:
add( resource )
20 21 22 23 |
# File 'lib/webby/pages_db.rb', line 20 def add( page ) @db[page.dir] << page self end |
#children(page, opts = {}) ⇒ Object
call-seq:
children( page, opts = {} ) => array
Options include:
:sorty_by => 'attribute'
:reverse => true
75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/webby/pages_db.rb', line 75 def children( page, opts = {} ) rgxp = Regexp.new "\\A#{page.dir}/[^/]+" keys = @db.keys.find_all {|k| rgxp =~ k} ary = keys.map {|k| @db[k]} ary.flatten! return ary unless opts.has_key? :sort_by m = opts[:sort_by] ary.sort! {|a,b| a.send(m) <=> b.send(m)} ary.reverse! if opts[:reverse] ary end |
#clear ⇒ Object
call-seq:
clear
29 30 31 |
# File 'lib/webby/pages_db.rb', line 29 def clear @db.clear end |
#each(&b) ⇒ Object
call-seq:
each {|resource| block}
36 37 38 39 40 41 |
# File 'lib/webby/pages_db.rb', line 36 def each( &b ) keys = @db.keys.sort keys.each do |k| @db[k].sort.each(&b) end end |
#find_by_name(name) ⇒ Object
call-seq:
find_by_name( name )
46 47 48 |
# File 'lib/webby/pages_db.rb', line 46 def find_by_name( name ) self.find {|page| page.filename == name} end |
#siblings(page, opts = {}) ⇒ Object
call-seq:
siblings( page, opts = {} ) => array
Options include:
:sorty_by => 'attribute'
:reverse => true
57 58 59 60 61 62 63 64 65 66 |
# File 'lib/webby/pages_db.rb', line 57 def siblings( page, opts = {} ) ary = @db[page.dir].dup ary.delete page return ary unless opts.has_key? :sort_by m = opts[:sort_by] ary.sort! {|a,b| a.send(m) <=> b.send(m)} ary.reverse! if opts[:reverse] ary end |