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.
-
#ext ⇒ Object
Returns the value of attribute ext.
-
#name ⇒ Object
Returns the value of attribute name.
-
#output ⇒ Object
Returns the value of attribute output.
-
#site ⇒ Object
Returns the value of attribute site.
Instance Method Summary collapse
-
#dir ⇒ Object
The generated directory into which the page will be placed upon generation.
-
#initialize(site, base, dir, name) ⇒ Page
constructor
Initialize a new Page.
-
#permalink ⇒ Object
The full path and filename of the post.
-
#process(name) ⇒ Object
Extract information from the page filename
name
is the String filename of the page file. -
#render(layouts, site_payload) ⇒ Object
Add any necessary layouts to this post
layouts
is a Hash of => “layout”site_payload
is the site payload hash. - #template ⇒ Object
-
#url ⇒ Object
The generated relative url of this page e.g.
-
#write(dest_prefix, dest_suffix = nil) ⇒ Object
Write the generated page file to the destination directory.
Methods included from Convertible
#content_type, #do_layout, #read_yaml, #to_s, #transform
Constructor Details
#initialize(site, base, dir, name) ⇒ Page
Initialize a new Page.
+site+ is the Site
+base+ is the String path to the <source>
+dir+ is the String path between <source> and the file
+name+ is the String filename of the file
Returns <Page>
17 18 19 20 21 22 23 24 25 |
# 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 |
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 |
#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 |
#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
#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, set to ‘/’
Returns <String>
32 33 34 |
# File 'lib/jekyll/page.rb', line 32 def dir url[-1, 1] == '/' ? url : File.dirname(url) end |
#permalink ⇒ Object
The full path and filename of the post. Defined in the YAML of the post body (Optional)
Returns <String>
41 42 43 |
# File 'lib/jekyll/page.rb', line 41 def permalink self.data && self.data['permalink'] end |
#process(name) ⇒ Object
Extract information from the page filename
+name+ is the String filename of the page file
Returns nothing
67 68 69 70 |
# File 'lib/jekyll/page.rb', line 67 def process(name) self.ext = File.extname(name) self.basename = name.split('.')[0..-2].first end |
#render(layouts, site_payload) ⇒ Object
Add any necessary layouts to this post
+layouts+ is a Hash of {"name" => "layout"}
+site_payload+ is the site payload hash
Returns nothing
77 78 79 80 |
# File 'lib/jekyll/page.rb', line 77 def render(layouts, site_payload) payload = {"page" => self.data}.deep_merge(site_payload) do_layout(payload, layouts) end |
#template ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/jekyll/page.rb', line 45 def template if self.site.permalink_style == :pretty && !index? "/:name/" else "/:name.html" end end |
#url ⇒ Object
The generated relative url of this page e.g. /about.html
Returns <String>
57 58 59 60 61 |
# File 'lib/jekyll/page.rb', line 57 def url return permalink if permalink @url ||= (ext == '.html') ? template.gsub(':name', basename) : "/#{name}" end |
#write(dest_prefix, dest_suffix = nil) ⇒ Object
Write the generated page file to the destination directory.
+dest_prefix+ is the String path to the destination dir
+dest_suffix+ is a suffix path to the destination dir
Returns nothing
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/jekyll/page.rb', line 87 def write(dest_prefix, dest_suffix = nil) dest = File.join(dest_prefix, @dir) dest = File.join(dest, dest_suffix) if dest_suffix FileUtils.mkdir_p(dest) # The url needs to be unescaped in order to preserve the correct filename path = File.join(dest, CGI.unescape(self.url)) if self.ext == '.html' && self.url[/\.html$/].nil? FileUtils.mkdir_p(path) path = File.join(path, "index.html") end File.open(path, 'w') do |f| f.write(self.output) end end |