Class: Jekyll::Page
Instance Attribute Summary collapse
-
#basename ⇒ Object
Returns the value of attribute basename.
-
#content ⇒ Object
Returns the value of attribute content.
-
#data ⇒ Object
Returns the value of attribute data.
-
#dir ⇒ Object
The generated directory into which the page will be placed upon generation.
-
#ext ⇒ Object
Returns the value of attribute ext.
-
#name ⇒ Object
Returns the value of attribute name.
-
#output ⇒ Object
Returns the value of attribute output.
-
#pager ⇒ Object
Returns the value of attribute pager.
-
#site ⇒ Object
Returns the value of attribute site.
Instance Method Summary collapse
-
#destination(dest) ⇒ Object
Obtain destination path.
-
#html? ⇒ Boolean
Returns the Boolean of whether this Page is HTML or not.
-
#index? ⇒ Boolean
Returns the Boolean of whether this Page is an index file or not.
-
#initialize(site, base, dir, name) ⇒ Page
constructor
Initialize a new Page.
-
#inspect ⇒ Object
Returns the object as a debug String.
-
#path ⇒ Object
The path to the source file.
-
#permalink ⇒ Object
The full path and filename of the post.
-
#process(name) ⇒ Object
Extract information from the page filename.
-
#render(layouts, site_payload) ⇒ Object
Add any necessary layouts to this post.
-
#template ⇒ Object
The template of the permalink.
-
#to_liquid ⇒ Object
Convert this Page’s data to a Hash suitable for use by Liquid.
-
#url ⇒ Object
The generated relative url of this page.
- #uses_relative_permalinks ⇒ Object
Methods included from Convertible
#converter, #do_layout, #output_ext, #read_yaml, #render_all_layouts, #render_liquid, #to_s, #transform, #write
Constructor Details
#initialize(site, base, dir, name) ⇒ Page
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.
16 17 18 19 20 21 22 23 24 |
# 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 |
Instance Attribute Details
#basename ⇒ Object
Returns the value of attribute basename.
7 8 9 |
# File 'lib/jekyll/page.rb', line 7 def basename @basename end |
#content ⇒ Object
Returns the value of attribute content.
8 9 10 |
# File 'lib/jekyll/page.rb', line 8 def content @content end |
#data ⇒ Object
Returns the value of attribute data.
8 9 10 |
# File 'lib/jekyll/page.rb', line 8 def data @data end |
#dir ⇒ Object
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.
31 32 33 |
# File 'lib/jekyll/page.rb', line 31 def dir url[-1, 1] == '/' ? url : File.dirname(url) end |
#ext ⇒ Object
Returns the value of attribute ext.
7 8 9 |
# File 'lib/jekyll/page.rb', line 7 def ext @ext end |
#name ⇒ Object
Returns the value of attribute name.
7 8 9 |
# File 'lib/jekyll/page.rb', line 7 def name @name end |
#output ⇒ Object
Returns the value of attribute output.
8 9 10 |
# File 'lib/jekyll/page.rb', line 8 def output @output end |
#pager ⇒ Object
Returns the value of attribute pager.
6 7 8 |
# File 'lib/jekyll/page.rb', line 6 def pager @pager end |
#site ⇒ Object
Returns the value of attribute site.
6 7 8 |
# File 'lib/jekyll/page.rb', line 6 def site @site end |
Instance Method Details
#destination(dest) ⇒ Object
Obtain destination path.
dest - The String path to the destination dir.
Returns the destination file path String.
136 137 138 139 140 |
# File 'lib/jekyll/page.rb', line 136 def destination(dest) path = File.join(dest, self.url) path = File.join(path, "index.html") if self.url =~ /\/$/ path end |
#html? ⇒ Boolean
Returns the Boolean of whether this Page is HTML or not.
148 149 150 |
# File 'lib/jekyll/page.rb', line 148 def html? output_ext == '.html' end |
#index? ⇒ Boolean
Returns the Boolean of whether this Page is an index file or not.
153 154 155 |
# File 'lib/jekyll/page.rb', line 153 def index? basename == 'index' end |
#inspect ⇒ Object
Returns the object as a debug String.
143 144 145 |
# File 'lib/jekyll/page.rb', line 143 def inspect "#<Jekyll:Page @name=#{self.name.inspect}>" end |
#path ⇒ Object
The path to the source file
Returns the path to the source file
127 128 129 |
# File 'lib/jekyll/page.rb', line 127 def path File.join(@dir, @name).sub(/\A\//, '') end |
#permalink ⇒ Object
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.
39 40 41 |
# File 'lib/jekyll/page.rb', line 39 def permalink self.data && self.data['permalink'] end |
#process(name) ⇒ Object
Extract information from the page filename.
name - The String filename of the page file.
Returns nothing.
94 95 96 97 |
# File 'lib/jekyll/page.rb', line 94 def process(name) self.ext = File.extname(name) self.basename = name[0 .. -self.ext.length-1] end |
#render(layouts, site_payload) ⇒ Object
Add any necessary layouts to this post
layouts - The Hash of => “layout”. site_payload - The site payload Hash.
Returns nothing.
105 106 107 108 109 110 111 112 |
# 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 |
#template ⇒ Object
The template of the permalink.
Returns the template String.
46 47 48 49 50 51 52 53 54 55 56 57 58 |
# 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 |
#to_liquid ⇒ Object
Convert this Page’s data to a Hash suitable for use by Liquid.
Returns the Hash representation of this Page.
117 118 119 120 121 122 |
# File 'lib/jekyll/page.rb', line 117 def to_liquid self.data.deep_merge({ "url" => self.url, "content" => self.content, "path" => self.data['path'] || path }) end |
#url ⇒ Object
The generated relative url of this page. e.g. /about.html.
Returns the String url.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# 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 |
#uses_relative_permalinks ⇒ Object
157 158 159 |
# File 'lib/jekyll/page.rb', line 157 def uses_relative_permalinks permalink && @dir != "" && site.config['relative_permalinks'] end |