class Jekyll::Page
Constants
- ATTRIBUTES_FOR_LIQUID
Attributes for Liquid templates
- FORWARD_SLASH
- HTML_EXTENSIONS
A set of extensions that are considered HTML or HTML-like so we should not alter them, this includes .xhtml through XHTM5.
Attributes
Public Class Methods
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 38 def initialize(site, base, dir, name) @site = site @base = base @dir = dir @name = name process(name) read_yaml(File.join(base, dir), name) data.default_proc = proc do |_, key| site.frontmatter_defaults.find(File.join(dir, name), type, key) end Jekyll::Hooks.trigger :pages, :post_init, self end
Public Instance Methods
Obtain destination path.
dest - The String path to the destination dir.
Returns the destination file path String.
# File lib/jekyll/page.rb, line 150 def destination(dest) path = site.in_dest_dir(dest, URL.unescape_path(url)) path = File.join(path, "index") if url.end_with?("/") path << output_ext unless path.end_with? output_ext path end
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 59 def dir if url.end_with?(FORWARD_SLASH) url else url_dir = File.dirname(url) url_dir.end_with?(FORWARD_SLASH) ? url_dir : "#{url_dir}/" end end
Returns the Boolean of whether this Page is HTML or not.
# File lib/jekyll/page.rb, line 163 def html? HTML_EXTENSIONS.include?(output_ext) end
Returns the Boolean of whether this Page is an index file or not.
# File lib/jekyll/page.rb, line 168 def index? basename == 'index' end
Returns the object as a debug String.
# File lib/jekyll/page.rb, line 158 def inspect "#<Jekyll:Page @name=#{name.inspect}>" end
The path to the source file
Returns the path to the source file
# File lib/jekyll/page.rb, line 136 def path data.fetch('path') { relative_path.sub(/\A\//, '') } end
The full path and filename of the post. Defined in the YAML of the post body.
Returns the String permalink or nil if none has been set.
# File lib/jekyll/page.rb, line 72 def permalink data.nil? ? nil : data['permalink'] end
Extract information from the page filename.
name - The String filename of the page file.
Returns nothing.
# File lib/jekyll/page.rb, line 115 def process(name) self.ext = File.extname(name) self.basename = name[0..-ext.length - 1] end
The path to the page source file, relative to the site source
# File lib/jekyll/page.rb, line 141 def relative_path File.join(*[@dir, @name].map(&:to_s).reject(&:empty?)) end
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 126 def render(layouts, site_payload) site_payload["page"] = to_liquid site_payload["paginator"] = pager.to_liquid do_layout(site_payload, layouts) end
The template of the permalink.
Returns the template String.
# File lib/jekyll/page.rb, line 79 def template if !html? "/:path/:basename:output_ext" elsif index? "/:path/" else Utils.add_permalink_suffix("/:path/:basename", site.permalink_style) end end
# File lib/jekyll/page.rb, line 172 def trigger_hooks(hook_name, *args) Jekyll::Hooks.trigger :pages, hook_name, self, *args end
The generated relative url of this page. e.g. /about.html.
Returns the String url.
# File lib/jekyll/page.rb, line 92 def url @url ||= URL.new({ :template => template, :placeholders => url_placeholders, :permalink => permalink }).to_s end
Returns a hash of URL placeholder names (as symbols) mapping to the desired placeholder replacements. For details see “url.rb”
# File lib/jekyll/page.rb, line 102 def url_placeholders { :path => @dir, :basename => basename, :output_ext => output_ext } end
# File lib/jekyll/page.rb, line 176 def write? true end