Sha256: 97b1a90a9ab133294dc1b449e629923b7dd895ad8f7dd613136671242cfa6013

Contents?: true

Size: 577 Bytes

Versions: 13

Compression:

Stored size: 577 Bytes

Contents

class Hyde
class Set < Array
  # Filters a set by given metadata criteria.
  #
  # @example
  #   Page['/'].children.find(layout: 'default')
  #
  def find(by={})
    self.class.new(select do |page|
      by.inject(true) { |b, (field, value)| b &&= (page.meta.send(field) == value) }
    end)
  end

  # Filters a set by removing items matching the given metadata criteria.
  # This is the opposite of #find.
  #
  def except(by={})
    self.class.new(reject do |page|
      by.inject(true) { |b, (field, value)| b &&= (page.meta.send(field) == value) }
    end)
  end
end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
hydeweb-0.2.2 lib/hyde/set.rb
hydeweb-0.1.14 lib/hyde/set.rb
hydeweb-0.1.13 lib/hyde/set.rb
hydeweb-0.1.12 lib/hyde/set.rb
hydeweb-0.1.11 lib/hyde/set.rb
hydeweb-0.1.10 lib/hyde/set.rb
hydeweb-0.1.9 lib/hyde/set.rb
hydeweb-0.1.8 lib/hyde/set.rb
hydeweb-0.1.7 lib/hyde/set.rb
hydeweb-0.1.6 lib/hyde/set.rb
hydeweb-0.1.5 lib/hyde/set.rb
hydeweb-0.1.4 lib/hyde/set.rb
hydeweb-0.1.3 lib/hyde/set.rb