Module: Jekyll::Filters
- Defined in:
- lib/jekyll-dyndoc.rb
Overview
module Generators
# Promotes select Dyndoc attributes to Jekyll front matter
class DyndocPreprocessor < Generator
def generate(site)
dyndoc_converter = JEKYLL_MIN_VERSION_3 ?
site.find_converter_instance(Jekyll::Converters::DyndocConverter) :
site.getConverterImpl(Jekyll::Converters::DyndocConverter)
dyndoc_converter.setup
unless (page_attr_prefix = site.config['dyndoc_page_attribute_prefix']).empty?
page_attr_prefix = %(#{page_attr_prefix}-)
end
page_attr_prefix_l = page_attr_prefix.length
site.pages.each do |page|
if dyndoc_converter.matches(page.ext)
next unless (doc = dyndoc_converter.load_header(page.content))
page.data['title'] = doc.doctitle if doc.header?
page.data['author'] = doc. if doc.
unless (dyndoc_front_matter = doc.attributes
.select {|name| name.start_with?(page_attr_prefix) }
.map {|name, val| %(#{name[page_attr_prefix_l..-1]}: #{val}) }).empty?
page.data.update(SafeYAML.load(dyndoc_front_matter * "\n"))
end
page.data['layout'] = 'default' unless page.data.key? 'layout'
end
end
(JEKYLL_MIN_VERSION_3 ? site.posts.docs : site.posts).each do |post|
if dyndoc_converter.matches(JEKYLL_MIN_VERSION_3 ? post.data['ext'] : post.ext)
next unless (doc = dyndoc_converter.load_header(post.content))
post.data['title'] = doc.doctitle if doc.header?
post.data['author'] = doc. if doc.
post.data['date'] = DateTime.parse(doc.revdate).to_time if doc.attr? 'revdate'
unless (dyndoc_front_matter = doc.attributes
.select {|name| name.start_with?(page_attr_prefix) }
.map {|name, val| %(#{name[page_attr_prefix_l..-1]}: #{val}) }).empty?
post.data.update(SafeYAML.load(dyndoc_front_matter * "\n"))
end
post.data['layout'] = 'post' unless post.data.key? 'layout'
end
end
end
end
end
Instance Method Summary collapse
-
#dyndocify(input) ⇒ Object
Convert an Dyndoc string into HTML output.
Instance Method Details
#dyndocify(input) ⇒ Object
Convert an Dyndoc string into HTML output.
input - The Dyndoc String to convert.
Returns the HTML formatted String.
145 146 147 148 149 150 151 |
# File 'lib/jekyll-dyndoc.rb', line 145 def dyndocify(input) site = @context.registers[:site] converter = JEKYLL_MIN_VERSION_3 ? site.find_converter_instance(Jekyll::Converters::DyndocConverter) : site.getConverterImpl(Jekyll::Converters::DyndocConverter) converter.convert(input) end |