class GeraBlog::Blog
Attributes
config[R]
Public Class Methods
new(root = './')
click to toggle source
# File lib/gerablog/blog.rb, line 64 def initialize(root = './') @config = ParseConfig.new ini_blog ini_dir root ini_template reset_parser end
Public Instance Methods
create_category_dir(category)
click to toggle source
# File lib/gerablog/blog.rb, line 84 def create_category_dir(category) category_dir = File.join config['dir']['output'], 'texts', category GeraBlog.create_dir category_dir GeraBlog.make_dest_dir( File.join(@config['dir']['texts'], category, 'images'), category_dir, remove: true ) end
create_dirs()
click to toggle source
# File lib/gerablog/blog.rb, line 109 def create_dirs GeraBlog.create_dir File.join(@config['dir']['output'], 'texts') GeraBlog.make_dest_dir( @config['dir']['assets'], @config['dir']['output'], remove: true ) @posts.map { |p| p[:category] } .uniq .map { |category| create_category_dir category } end
full_template_dir(file)
click to toggle source
# File lib/gerablog/blog.rb, line 45 def full_template_dir(file) File.join @config['dir']['template'], file end
ini_blog()
click to toggle source
# File lib/gerablog/blog.rb, line 24 def ini_blog @config.add 'blog', 'root' => '.', 'url' => 'http://localhost:8080', 'title' => 'GeraBlog', 'name' => 'GeraBlog Static Blog Generator', 'description' => 'GeraBlog - My own static site generator', 'language' => 'pt-br', 'itens_in_rss' => '50', 'itens_in_index' => 10 end
ini_dir(root)
click to toggle source
# File lib/gerablog/blog.rb, line 36 def ini_dir(root) @config.add 'dir', 'root' => root, 'texts' => File.join(root, 'texts'), 'assets' => File.join(root, 'assets'), 'output' => File.join(root, 'output'), 'template' => File.join(root, 'templates') end
ini_template()
click to toggle source
# File lib/gerablog/blog.rb, line 49 def ini_template @config.add 'template', 'category' => full_template_dir('category.rbhtml'), 'categories' => full_template_dir('categories.rbhtml'), 'feed' => full_template_dir('feed.rbxml'), 'post' => full_template_dir('post.rbhtml'), 'footer' => full_template_dir('footer.rbhtml'), 'header' => full_template_dir('header.rbhtml'), 'index' => full_template_dir('index.rbhtml') end
load_config(config_file)
click to toggle source
# File lib/gerablog/blog.rb, line 73 def load_config(config_file) @config = ParseConfig.new(config_file) reset_parser end
new_blog()
click to toggle source
# File lib/gerablog/blog.rb, line 96 def new_blog @config['dir'].values.map { |dir| GeraBlog.create_dir(dir) } GeraBlog.make_dest_dir( File.join(__dir__, '..', '..', 'assets'), @config['dir']['root'] ) GeraBlog.make_dest_dir( File.join(__dir__, '..', '..', 'templates'), @config['dir']['root'] ) end
reset_parser()
click to toggle source
# File lib/gerablog/blog.rb, line 60 def reset_parser @parser = Tenjin::Engine.new path: @config['dir']['templates'] end
save()
click to toggle source
# File lib/gerablog/blog.rb, line 197 def save @posts, @categories = GeraBlog::Render.new(@config).render @posts.sort_by! { |p| File.basename p[:filename] }.reverse! write_posts write_general_rss write_general_html write_by_category_files end
save_config()
click to toggle source
# File lib/gerablog/blog.rb, line 78 def save_config @config.write( File.open(File.join(@config['dir']['root'], 'gerablog.conf'), 'w') ) end
write_by_category_files()
click to toggle source
# File lib/gerablog/blog.rb, line 171 def write_by_category_files @posts.map { |p| p[:category] }.uniq.each do |category| title = { url: File.join(@config['blog']['url'], 'texts', category), description: "#{@config['blog']['description']} (#{category})" } category_posts = @posts.select { |p| p[:category] == category } write_category_index( 'feed.xml', @config['template']['feed'], category, title, category_posts ) write_category_index( 'index.html', @config['template']['category'], category, title, category_posts ) end end
write_category_index(file, template, category, title, posts)
click to toggle source
# File lib/gerablog/blog.rb, line 123 def write_category_index(file, template, category, title, posts) context = { title: title, posts: posts, config: @config, categories: @categories } File.write( File.join(@config['dir']['output'], 'texts', category, file), @parser.render(template, context) ) end
write_general_html()
click to toggle source
# File lib/gerablog/blog.rb, line 154 def write_general_html context = { config: @config, categories: @categories, title: { title: @config['blog']['title'], description: @config['blog']['description'] }, posts: @posts.take(Integer(@config['blog']['itens_in_index'])) } File.write( File.join(@config['dir']['output'], 'index.html'), @parser.render(@config['template']['index'], context) ) end
write_general_rss()
click to toggle source
# File lib/gerablog/blog.rb, line 143 def write_general_rss File.write( File.join(@config['dir']['output'], 'feed.xml'), @parser.render( @config['template']['feed'], config: @config, posts: @posts.take(Integer(@config['blog']['itens_in_rss'])) ) ) end
write_posts()
click to toggle source
# File lib/gerablog/blog.rb, line 137 def write_posts create_dirs @posts.map { |post| File.write(post[:filename], post[:content]) } end