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
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
- #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 <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 |
#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 @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 <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
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 {"name" => "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 <String>
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 |