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
- #index? ⇒ Boolean
-
#initialize(site, base, dir, name) ⇒ Page
constructor
Initialize a new Page.
- #inspect ⇒ Object
-
#permalink ⇒ Object
The full path and filename of the post.
-
#process(name) ⇒ Object
Extract information from the page filename
nameis the String filename of the page file. -
#render(layouts, site_payload) ⇒ Object
Add any necessary layouts to this post
layoutsis a Hash of => "layout"site_payloadis the site payload hash. - #template ⇒ Object
- #to_liquid ⇒ Object
-
#url ⇒ Object
The generated relative url of this page e.g.
-
#write(dest) ⇒ Object
Write the generated page file to the destination directory.
Methods included from Convertible
#converter, #do_layout, #output_ext, #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 dir is the String path between name is the String filename of the file
Returns
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 |
#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
32 33 34 |
# File 'lib/jekyll/page.rb', line 32 def dir @dir 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 is the String path to the destination dir
Returns destination file path.
101 102 103 104 105 106 |
# File 'lib/jekyll/page.rb', line 101 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 |
#html? ⇒ Boolean
124 125 126 |
# File 'lib/jekyll/page.rb', line 124 def html? output_ext == '.html' end |
#index? ⇒ Boolean
128 129 130 |
# File 'lib/jekyll/page.rb', line 128 def index? basename == 'index' end |
#inspect ⇒ Object
120 121 122 |
# File 'lib/jekyll/page.rb', line 120 def inspect "#<Jekyll:Page @name=#{self.name.inspect}>" end |
#permalink ⇒ Object
The full path and filename of the post. Defined in the YAML of the post body (Optional)
Returns
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
72 73 74 75 |
# File 'lib/jekyll/page.rb', line 72 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 is a Hash of => "layout"
site_payload is the site payload hash
Returns nothing
82 83 84 85 86 87 88 89 |
# File 'lib/jekyll/page.rb', line 82 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
45 46 47 48 49 50 51 |
# File 'lib/jekyll/page.rb', line 45 def template if self.site.permalink_style == :pretty && !index? && html? "/:basename/" else "/:basename:output_ext" end end |
#to_liquid ⇒ Object
91 92 93 94 95 |
# File 'lib/jekyll/page.rb', line 91 def to_liquid self.data.deep_merge({ "url" => File.join(@dir, self.url), "content" => self.content }) end |
#url ⇒ Object
The generated relative url of this page e.g. /about.html
Returns
57 58 59 60 61 62 63 64 65 66 |
# File 'lib/jekyll/page.rb', line 57 def url return permalink if permalink @url ||= { "basename" => self.basename, "output_ext" => self.output_ext, }.inject(template) { |result, token| result.gsub(/:#{token.first}/, token.last) }.gsub(/\/\//, "/") end |
#write(dest) ⇒ Object
Write the generated page file to the destination directory.
dest is the String path to the destination dir
Returns nothing
112 113 114 115 116 117 118 |
# File 'lib/jekyll/page.rb', line 112 def write(dest) path = destination(dest) FileUtils.mkdir_p(File.dirname(path)) File.open(path, 'w') do |f| f.write(self.output) end end |