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 16 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
Obtain destination path.
dest - The String path to the destination dir.
Returns the destination file path String.
# File lib/jekyll/page.rb, line 136 def destination(dest) # The url needs to be unescaped in order to preserve the correct # filename. path = File.join(dest, CGI.unescape(self.url)) path = File.join(path, "index.html") if self.url =~ /\/$/ 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 31 def dir url[-1, 1] == '/' ? url : File.dirname(url) end
Returns the Boolean of whether this Page is HTML or not.
# File lib/jekyll/page.rb, line 150 def html? output_ext == '.html' end
Returns the Boolean of whether this Page is an index file or not.
# File lib/jekyll/page.rb, line 155 def index? basename == 'index' end
Returns the object as a debug String.
# File lib/jekyll/page.rb, line 145 def inspect "#<Jekyll:Page @name=#{self.name.inspect}>" end
The path to the source file
Returns the path to the source file
# File lib/jekyll/page.rb, line 127 def path File.join(@dir, @name).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 39 def permalink self.data && self.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 94 def process(name) self.ext = File.extname(name) self.basename = name[0 .. -self.ext.length-1] 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 105 def render(layouts, site_payload) payload = { "page" => self.to_liquid, 'paginator' => pager.to_liquid }.deep_merge(site_payload) do_layout(payload, layouts) end
The template of the permalink.
Returns the template String.
# File lib/jekyll/page.rb, line 46 def template if self.site.permalink_style == :pretty if index? && html? "/:path/" elsif html? "/:path/:basename/" else "/:path/:basename:output_ext" end else "/:path/:basename:output_ext" end end
The generated relative url of this page. e.g. /about.html.
Returns the String url.
# File lib/jekyll/page.rb, line 63 def url return @url if @url url = if permalink if site.config['relative_permalinks'] File.join(@dir, permalink) else permalink end else { "path" => @dir, "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.gsub!(/\A([^\/])/, '/\1') @url end
Generated with the Darkfish Rdoc Generator 2.