class ZineBrewer::Application
Constants
- Commons
Attributes
converted[R]
corner[R]
css[R]
lead[R]
pic[R]
title[R]
Public Class Methods
new(path)
click to toggle source
# File lib/zine_brewer/main.rb, line 17 def initialize(path) begin Encoding.default_external = Kconv.guess(File.open(path, 'r:BINARY').read) input_data = File.open(path, 'rt').read.encode('UTF-8') rescue raise 'ERROR: The input file does not exist. Check it.' end @dir = File.dirname(path) @article_id = begin File.open("#{@dir}/id.txt", "rt").read.chomp rescue docdir = File.basename(@dir) /^\d+$/ =~ docdir ? docdir : '■記事ID■' end header, body = /\A((?:.|\n)*?)<%-- page -->/.match(input_data).yield_self do |m| if m.nil? ['', "\n\n" + Commons + "\n\n" + input_data] else [m[1], '<%-- page -->' + "\n\n" + Commons + "\n\n" + m.post_match] end end @article_id = $+ if header.sub!(/^■記事ID■[^0-9]+(\d+)$/, '') h = header.strip.split(/\n\n+/) @corner = set_header_item(h[0], 'IT人材ラボの記事・ニュース') @title = set_header_item(h[1], 'タイトル' ) @lead = set_header_item(h[2], 'リード') @pic = set_header_item(h[3], 'dummy.png') @author = set_header_item(h[4], '著者 クレジット') @css = set_header_item(h[5], '') @converted = convert(body) end
Public Instance Methods
convert(body)
click to toggle source
Converts markdown to html and returns body
# File lib/zine_brewer/main.rb, line 100 def convert(body) dkmn = Darkmouun.document.new(body, {:auto_ids => false, :input => 'sekd'}, :se_html) ### Sets templates dkmn.add_templates "#{__dir__}/templates/", *Dir['*.rb',base:"#{__dir__}/templates/"] ### Sets pre process dkmn.pre_process = lambda do |t| end ### Sets post process dkmn.post_process = lambda do |t| t.gsub!('(((BR)))', '<br/>') t.gsub!(/■記事ID■/, @article_id) t.gsub!(/—/, "―") t.gsub!(/[‘’]/, "'") t.gsub!(/<li>\\/, '<li>') t << "</div>" if /<div id="p1">/ =~ t end ### Converts a markdown document and returns that converted body dkmn.convert end
make_proof_directory()
click to toggle source
# File lib/zine_brewer/main.rb, line 72 def make_proof_directory @proof_dir = @dir + '/proof' begin Dir.mkdir(@proof_dir) rescue Errno::EEXIST end end
set_header_item(target, default)
click to toggle source
# File lib/zine_brewer/main.rb, line 55 def set_header_item(target, default) if /\A[\-%]+\Z/ =~ target || target.nil? default.define_singleton_method(:is_complete?){ false } default else target.define_singleton_method(:is_complete?){ true } target end end
write_out()
click to toggle source
Writing out header and body to each file
# File lib/zine_brewer/main.rb, line 66 def write_out make_proof_directory write_proof_header write_proof_body end
write_proof_body()
click to toggle source
# File lib/zine_brewer/main.rb, line 93 def write_proof_body File.open("#{@proof_dir}/body.txt", 'wb') do |f| f.write(@converted.gsub("<!-- page_delimiter -->\n", '')) end end
write_proof_header()
click to toggle source
# File lib/zine_brewer/main.rb, line 80 def write_proof_header header_output = "" header_output << "[コーナー]\n#{@corner}\n\n" if @corner.is_complete? header_output << "[タイトル]\n#{@title}\n\n" if @title.is_complete? header_output << "[リード]\n<p>#{@lead}</p>\n\n" if @lead.is_complete? header_output << "[タイトル画像]\n#{@pic}\n\n" if @pic.is_complete? header_output << "[著者クレジット]\n#{@author}\n\n" if @author.is_complete? header_output << "[追加CSS]\n#{@css}\n\n" if @css.is_complete? File.open("#{@proof_dir}/header.txt", 'wb') do |f| f.write(header_output) end end