Parent

Files

Class/Module Index [+]

Quicksearch

Jekyll::Collection

Attributes

label[R]
metadata[R]
site[R]

Public Class Methods

new(site, label) click to toggle source

Create a new Collection.

site - the site to which this collection belongs. label - the name of the collection

Returns nothing.

# File lib/jekyll/collection.rb, line 11
def initialize(site, label)
  @site     = site
  @label    = sanitize_label(label)
  @metadata = extract_metadata
end

Public Instance Methods

directory() click to toggle source

The full path to the directory containing the

Returns a String containing th directory name where the collection

is stored on the filesystem.
# File lib/jekyll/collection.rb, line 85
def directory
  Jekyll.sanitized_path(site.source, relative_directory)
end
docs() click to toggle source

Fetch the Documents in this collection. Defaults to an empty array if no documents have been read in.

Returns an array of Jekyll::Document objects.

# File lib/jekyll/collection.rb, line 21
def docs
  @docs ||= []
end
entries() click to toggle source

All the entries in this collection.

Returns an Array of file paths to the documents in this collection

relative to the collection's directory
# File lib/jekyll/collection.rb, line 55
def entries
  return Array.new unless exists?
  Dir.glob(File.join(directory, "**", "*.*")).map do |entry|
    entry[File.join(directory, "")] = ''; entry
  end
end
entry_filter() click to toggle source

The entry filter for this collection. Creates an instance of Jekyll::EntryFilter.

Returns the instance of Jekyll::EntryFilter for this collection.

# File lib/jekyll/collection.rb, line 103
def entry_filter
  @entry_filter ||= Jekyll::EntryFilter.new(site, relative_directory)
end
exists?() click to toggle source

Checks whether the directory “exists” for this collection. The directory must exist on the filesystem and must not be a symlink

if in safe mode.

Returns false if the directory doesn’t exist or if it’s a symlink

and we're in safe mode.
# File lib/jekyll/collection.rb, line 95
def exists?
  File.directory?(directory) && !(File.symlink?(directory) && site.safe)
end
extract_metadata() click to toggle source

Extract options for this collection from the site configuration.

Returns the metadata for this collection

# File lib/jekyll/collection.rb, line 160
def extract_metadata
  if site.config['collections'].is_a?(Hash)
    site.config['collections'][label] || Hash.new
  else
    {}
  end
end
files() click to toggle source

Fetch the static files in this collection. Defaults to an empty array if no static files have been read in.

Returns an array of Jekyll::StaticFile objects.

# File lib/jekyll/collection.rb, line 29
def files
  @files ||= []
end
filtered_entries() click to toggle source

Filtered version of the entries in this collection. See `Jekyll::EntryFilter#filter` for more information.

Returns a list of filtered entry paths.

# File lib/jekyll/collection.rb, line 66
def filtered_entries
  return Array.new unless exists?
  Dir.chdir(directory) do
    entry_filter.filter(entries).reject { |f| File.directory?(f) }
  end
end
inspect() click to toggle source

An inspect string.

Returns the inspect string

# File lib/jekyll/collection.rb, line 110
def inspect
  "#<Jekyll::Collection @label=#{label} docs=#{docs}>"
end
read() click to toggle source

Read the allowed documents into the collection’s array of docs.

Returns the sorted array of docs.

# File lib/jekyll/collection.rb, line 36
def read
  filtered_entries.each do |file_path|
    full_path = Jekyll.sanitized_path(directory, file_path)
    if Utils.has_yaml_header? full_path
      doc = Jekyll::Document.new(full_path, { site: site, collection: self })
      doc.read
      docs << doc
    else
      relative_dir = File.join(relative_directory, File.dirname(file_path)).chomp("/.")
      files << StaticFile.new(site, site.source, relative_dir, File.basename(full_path), self)
    end
  end
  docs.sort!
end
relative_directory() click to toggle source

The directory for this Collection, relative to the site source.

Returns a String containing the directory name where the collection

is stored on the filesystem.
# File lib/jekyll/collection.rb, line 77
def relative_directory
  "_#{label}"
end
sanitize_label(label) click to toggle source

Produce a sanitized label name Label names may not contain anything but alphanumeric characters,

underscores, and hyphens.

label - the possibly-unsafe label

Returns a sanitized version of the label.

# File lib/jekyll/collection.rb, line 121
def sanitize_label(label)
  label.gsub(/[^a-z0-9_\-\.]/, '')
end
to_liquid() click to toggle source

Produce a representation of this Collection for use in Liquid. Exposes two attributes:

- label
- docs

Returns a representation of this collection for use in Liquid.

# File lib/jekyll/collection.rb, line 131
def to_liquid
  metadata.merge({
    "label"     => label,
    "docs"      => docs,
    "files"     => files,
    "directory" => directory,
    "output"    => write?,
    "relative_directory" => relative_directory
  })
end
url_template() click to toggle source

The URL template to render collection’s documents at.

Returns the URL template to render collection’s documents at.

# File lib/jekyll/collection.rb, line 153
def url_template
  metadata.fetch('permalink', "/:collection/:path:output_ext")
end
write?() click to toggle source

Whether the collection’s documents ought to be written as individual

files in the output.

Returns true if the ‘write’ metadata is true, false otherwise.

# File lib/jekyll/collection.rb, line 146
def write?
  !!metadata['output']
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.