Parent

Included Modules

Files

Jekyll::Page

Attributes

basename[RW]
content[RW]
data[RW]
dir[W]
ext[RW]
name[RW]
output[RW]
pager[RW]
site[RW]

Public Class Methods

new(site, base, dir, name) click to toggle source

Initialize a new Page.

site - The Site object. base - The String path to the source. dir - The String path between the source and the file. name - The String filename of the file.

# File lib/jekyll/page.rb, line 17
def initialize(site, base, dir, name)
  @site = site
  @base = base
  @dir  = dir
  @name = name

  self.process(name)
  self.read_yaml(File.join(base, dir), name)
end

Public Instance Methods

destination(dest) click to toggle source

Obtain destination path.

dest - The String path to the destination dir.

Returns the destination file path String.

# File lib/jekyll/page.rb, line 117
def destination(dest)
  # The url needs to be unescaped in order to preserve the correct
  # filename.
  path = File.join(dest, @dir, CGI.unescape(self.url))
  path = File.join(path, "index.html") if self.url =~ /\/$/
  path
end
dir() click to toggle source

The generated directory into which the page will be placed upon generation. This is derived from the permalink or, if permalink is absent, we be '/'

Returns the String destination directory.

# File lib/jekyll/page.rb, line 32
def dir
  url[-1, 1] == '/' ? url : File.dirname(url)
end
html?() click to toggle source

Returns the Boolean of whether this Page is HTML or not.

# File lib/jekyll/page.rb, line 144
def html?
  output_ext == '.html'
end
index?() click to toggle source

Returns the Boolean of whether this Page is an index file or not.

# File lib/jekyll/page.rb, line 149
def index?
  basename == 'index'
end
inspect() click to toggle source

Returns the object as a debug String.

# File lib/jekyll/page.rb, line 139
def inspect
  "#<Jekyll:Page @name=#{self.name.inspect}>"
end
process(name) click to toggle source

Extract information from the page filename.

name - The String filename of the page file.

Returns nothing.

# File lib/jekyll/page.rb, line 83
def process(name)
  self.ext = File.extname(name)
  self.basename = name[0 .. -self.ext.length-1]
end
render(layouts, site_payload) click to toggle source

Add any necessary layouts to this post

layouts - The Hash of {"name" => "layout"}. site_payload - The site payload Hash.

Returns nothing.

# File lib/jekyll/page.rb, line 94
def render(layouts, site_payload)
  payload = {
    "page" => self.to_liquid,
    'paginator' => pager.to_liquid
  }.deep_merge(site_payload)

  do_layout(payload, layouts)
end
template() click to toggle source

The template of the permalink.

Returns the template String.

# File lib/jekyll/page.rb, line 47
def template
  if self.site.permalink_style == :pretty && !index? && html?
    "/:basename/"
  else
    "/:basename:output_ext"
  end
end
to_liquid() click to toggle source

Convert this Page's data to a Hash suitable for use by Liquid.

Returns the Hash representation of this Page.

# File lib/jekyll/page.rb, line 106
def to_liquid
  self.data.deep_merge({
    "url"        => File.join(@dir, self.url),
    "content"    => self.content })
end
url() click to toggle source

The generated relative url of this page. e.g. /about.html.

Returns the String url.

# File lib/jekyll/page.rb, line 58
def url
  return @url if @url

  url = if permalink
    permalink
  else
    {
      "basename"   => self.basename,
      "output_ext" => self.output_ext,
    }.inject(template) { |result, token|
      result.gsub(/:#{token.first}/, token.last)
    }.gsub(/\/\//, "/")
  end

  # sanitize url
  @url = url.split('/').reject{ |part| part =~ /^\.+$/ }.join('/')
  @url += "/" if url =~ /\/$/
  @url
end
write(dest) click to toggle source

Write the generated page file to the destination directory.

dest - The String path to the destination dir.

Returns nothing.

# File lib/jekyll/page.rb, line 130
def write(dest)
  path = destination(dest)
  FileUtils.mkdir_p(File.dirname(path))
  File.open(path, 'w') do |f|
    f.write(self.output)
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.