Sha256: 5272175771c8a13698d5b08e1a0129ab720c473c0cf9c84c5a47cdd283982467

Contents?: true

Size: 1.24 KB

Versions: 3

Compression:

Stored size: 1.24 KB

Contents

module Asciibook
  module Builders
    class HtmlBuilder < BaseBuilder
      def initialize(book)
        super
        @dest_dir = File.join(@book.dest_dir, 'html')
        @theme_dir = File.join(@book.theme_dir, 'html')
      end

      def build
        FileUtils.mkdir_p @dest_dir
        FileUtils.rm_r Dir.glob("#{@dest_dir}/*")

        generate_pages
        copy_assets
      end

      def generate_pages
        layout = Liquid::Template.parse(File.read(File.join(@theme_dir, 'layout.html')))
        @book.pages.each do |page|
          File.open(File.join(@dest_dir, page.path), 'w') do |file|
            file.write layout.render({
              'book' => @book.to_hash,
              'page' => page.to_hash
            })
          end
        end
      end

      def copy_assets
        @book.assets.each do |path|
          copy_file(path, @book.base_dir, @dest_dir)
        end

        Dir.glob('**/*.{jpb,png,gif,svg,css,js}', File::FNM_CASEFOLD, base: @theme_share_dir).each do |path|
          copy_file(path, @theme_share_dir, @dest_dir)
        end

        Dir.glob('**/*.{jpb,png,gif,svg,css,js}', File::FNM_CASEFOLD, base: @theme_dir).each do |path|
          copy_file(path, @theme_dir, @dest_dir)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
asciibook-0.0.2.beta2 lib/asciibook/builders/html_builder.rb
asciibook-0.0.2.beta1 lib/asciibook/builders/html_builder.rb
asciibook-0.0.1 lib/asciibook/builders/html_builder.rb