class Bookery::Project
Constants
- DEFAULTS
Attributes
config[R]
dir[R]
Public Class Methods
new(project_dir, config = {})
click to toggle source
# File lib/bookery/project.rb, line 11 def initialize(project_dir, config = {}) @dir = project_dir @config = DEFAULTS.merge(config) end
Public Instance Methods
assets()
click to toggle source
# File lib/bookery/project.rb, line 34 def assets Dir.glob(File.join(dir, config[:assets_dir], '**/*')).reject do |file| File.directory?(file) or file =~ /\/(includes|templates)\// end.sort end
book_config()
click to toggle source
# File lib/bookery/project.rb, line 16 def book_config @book_config ||= Proc.new do conf = config[:book] conf[:template] = File.join(dir, conf[:template]) conf end.call end
books()
click to toggle source
# File lib/bookery/project.rb, line 30 def books @books ||= load_books end
generator_config()
click to toggle source
# File lib/bookery/project.rb, line 24 def generator_config conf = config[:generator] conf[:project_dir] = dir conf end
publish(publishers)
click to toggle source
# File lib/bookery/project.rb, line 40 def publish(publishers) books.each do |book| prepare_output_dir(book) publishers.each { |publisher| publisher.publish(book) } end end
Private Instance Methods
load_books()
click to toggle source
# File lib/bookery/project.rb, line 61 def load_books path = File.join(dir, config[:book_dir]) Dir.entries(path).sort.collect do |language| make_book(path, language) unless language =~ /\.\.?\z/ end.compact end
make_book(path, language)
click to toggle source
# File lib/bookery/project.rb, line 68 def make_book(path, language) Book.new( Factories::ChapterFactory.create_chapters(File.join(path, language)), Config.new(language, book_config) ) end
prepare_output_dir(book)
click to toggle source
# File lib/bookery/project.rb, line 49 def prepare_output_dir(book) output_dir = File.join(dir, 'output', book.language) ::FileUtils.rm_rf(output_dir) ::FileUtils.mkdir_p(output_dir) assets.each do |asset| dest = File.dirname(File.join(output_dir, asset.sub("#{dir}/", ''))) ::FileUtils.mkdir_p(dest) ::FileUtils.cp(asset, dest) end end