Module: Jekyll::Convertible
Instance Method Summary collapse
- #determine_content_type ⇒ Object
-
#do_layout(payload, layouts) ⇒ Object
Add any necessary layouts to this convertible document
layouts
is a Hash of => “layout”site_payload
is the site payload hash. -
#read_yaml(base, name) ⇒ Object
Read the YAML frontmatter
base
is the String path to the dir containing the filename
is the String filename of the file. -
#to_s ⇒ Object
Return the contents as a string.
-
#transform ⇒ Object
Transform the contents based on the file extension.
Instance Method Details
#determine_content_type ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'lib/jekyll/convertible.rb', line 37 def determine_content_type case self.ext[1..-1] when /textile/i return :textile when /markdown/i, /mkdn/i, /md/i return :markdown end return :unknown end |
#do_layout(payload, layouts) ⇒ Object
Add any necessary layouts to this convertible document
+layouts+ is a Hash of {"name" => "layout"}
+site_payload+ is the site payload hash
Returns nothing
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/jekyll/convertible.rb', line 52 def do_layout(payload, layouts) # render and transform content (this becomes the final content of the object) Jekyll.content_type = self.determine_content_type self.content = Liquid::Template.parse(self.content).render(payload, [Jekyll::Filters]) self.transform # output keeps track of what will finally be written self.output = self.content # recursively render layouts layout = layouts[self.data["layout"]] while layout payload = payload.deep_merge({"content" => self.output, "page" => layout.data}) self.output = Liquid::Template.parse(layout.content).render(payload, [Jekyll::Filters]) layout = layouts[layout.data["layout"]] end end |
#read_yaml(base, name) ⇒ Object
Read the YAML frontmatter
+base+ is the String path to the dir containing the file
+name+ is the String filename of the file
Returns nothing
13 14 15 16 17 18 19 20 21 |
# File 'lib/jekyll/convertible.rb', line 13 def read_yaml(base, name) self.content = File.read(File.join(base, name)) if self.content =~ /^(---\s*\n.*?)\n---\s*\n/m self.content = self.content[($1.size + 5)..-1] self.data = YAML.load($1) end end |
#to_s ⇒ Object
Return the contents as a string
4 5 6 |
# File 'lib/jekyll/convertible.rb', line 4 def to_s self.content || '' end |
#transform ⇒ Object
Transform the contents based on the file extension.
Returns nothing
26 27 28 29 30 31 32 33 34 35 |
# File 'lib/jekyll/convertible.rb', line 26 def transform case Jekyll.content_type when :textile self.ext = ".html" self.content = RedCloth.new(self.content).to_html when :markdown self.ext = ".html" self.content = Jekyll.markdown_proc.call(self.content) end end |