Sha256: 2fe9abed4ece1aa5246a09abfcfbe080f3f49fd316fac1fda77a46f3d0c86d12
Contents?: true
Size: 1.87 KB
Versions: 1
Compression:
Stored size: 1.87 KB
Contents
require_relative 'rails_base' require 'github/markup' require 'nokogiri' require 'ro_html_handler' module RoCommands class PostCell include Celluloid def handle_single(p) tag_name = File.dirname(p) title, content = if p.match(%r{\.md$}) handle_markdown(p) elsif p.match(%r{(.+)\.html$}) handle_html(p) end return {title: title, content: content} #post.tags.create name: tag_name end private def handle_markdown(p) title = File.basename(p).gsub(%r{\.\w+$}, "") content = GitHub::Markup::Markdown.new.render(RoFile.read(p)) return title, content end def handle_html(p) origin = RoFile.read(p) title = get_title(origin) content = get_smth_in_html(origin, 'inner_html') return title, content end def get_title(html) doc(html) do |d| d.css('title').text end end def get_smth_in_html(html, smth) doc(html) do |d| d.css("body").send(:"#{smth}") end end private include RoHtmlHandler end class PostHandler < RailsBase desc usage("handle"), "" def handle path = File.join(::Rails.root, 'posts') futures = [] ::Find.find(path) do |p| if test(?f, p) and p.match(%r{(.+)\.(html|md)}) futures << PostCell.new.future.handle_single(p) end end futures.map(&:value).each do |record| post_create(record) end end private def post_create(attrs={}) if attrs[:title] Out.table("creating a record", attrs[:title], "file:#{File.basename __FILE__} line:#{__LINE__}") post = Post.find_or_initialize_by(title: attrs[:title]) post.update(attrs) post else raise "create a post must be has a title" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rrjj-0.0.1 | lib/ro_commands/post_handler.rb |