Module: Jekyll::Convertible
Instance Method Summary collapse
-
#converter ⇒ Object
Determine which converter to use based on this convertible’s extension.
-
#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. -
#output_ext ⇒ Object
Determine the extension depending on content_type.
-
#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 content type.
Instance Method Details
#converter ⇒ Object
Determine which converter to use based on this convertible’s extension
51 52 53 |
# File 'lib/jekyll/convertible.rb', line 51 def converter @converter ||= self.site.converters.find { |c| c.matches(self.ext) } 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
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/jekyll/convertible.rb', line 60 def do_layout(payload, layouts) info = { :filters => [Jekyll::Filters], :registers => { :site => self.site } } # render and transform content (this becomes the final content of the object) payload["pygments_prefix"] = converter.pygments_prefix payload["pygments_suffix"] = converter.pygments_suffix self.content = Liquid::Template.parse(self.content).render(payload, info) 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, info) layout = layouts[layout.data["layout"]] end end |
#output_ext ⇒ Object
Determine the extension depending on content_type
Returns the extensions for the output file
45 46 47 |
# File 'lib/jekyll/convertible.rb', line 45 def output_ext converter.output_ext(self.ext) 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
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/jekyll/convertible.rb', line 23 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 + $2.size)..-1] self.data = YAML.load($1) end self.data ||= {} end |
#to_s ⇒ Object
Return the contents as a string
14 15 16 |
# File 'lib/jekyll/convertible.rb', line 14 def to_s self.content || '' end |
#transform ⇒ Object
Transform the contents based on the content type.
Returns nothing
38 39 40 |
# File 'lib/jekyll/convertible.rb', line 38 def transform self.content = converter.convert(self.content) end |