class GeraBlog::Render
Get all markdown files and return posts in html
Attributes
Public Class Methods
new(config)
click to toggle source
# File lib/gerablog/render.rb, line 9 def initialize(config) @config = config end
Public Instance Methods
file_to_post(filename, category)
click to toggle source
# File lib/gerablog/render.rb, line 60 def file_to_post(filename, category) md_content = File.read(filename) newfile = File.basename(filename).sub(/md$/, 'html') post_element(md_content, newfile, category) end
make_full_filename(filename, category)
click to toggle source
# File lib/gerablog/render.rb, line 38 def make_full_filename(filename, category) File.join(@config['dir']['output'], 'texts', category, filename) end
make_full_url(filename, category)
click to toggle source
# File lib/gerablog/render.rb, line 42 def make_full_url(filename, category) File.join(@config['blog']['url'], 'texts', category, filename) end
post_element(md_content, newfile, category)
click to toggle source
# File lib/gerablog/render.rb, line 46 def post_element(md_content, newfile, category) lines = md_content.split("\n") { title: lines[0][2..-1], category: category, description: lines[2][3..-1], date: Date.parse(newfile.match('\A(....-..-..)')[1]).rfc822, filename: make_full_filename(newfile, category), url: make_full_url(newfile, category), markdown: md_content } end
render()
click to toggle source
# File lib/gerablog/render.rb, line 13 def render c_dir = Dir[File.join(@config['dir']['texts'], '*')] c_names = c_dir.map { |d| File.basename d } categories_dir = Hash[c_names.zip c_dir] parser = Tenjin::Engine.new context = { categories: c_names, config: @config } categories = parser.render @config['template']['categories'], context [rendered_posts(categories_dir, categories), categories] end
render_post(md_render, filename, category, categories)
click to toggle source
# File lib/gerablog/render.rb, line 67 def render_post(md_render, filename, category, categories) post = file_to_post(filename, category) post[:content] = md_render.to_html( post, post[:markdown], categories ) post end
rendered_posts(categories_dir, categories)
click to toggle source
# File lib/gerablog/render.rb, line 24 def rendered_posts(categories_dir, categories) posts = [] categories_dir.each do |category, dir| md_render = GeraBlog::RedcarpetDriver.new(category, @config) Dir["#{dir}/*.md"].sort.reverse.each do |file| posts.push render_post(md_render, file, category, categories) end end posts end