Sha256: 744200e9f794525e719515739cf542f918f5cd3e89dcbd02b370fd7a49ed0d50

Contents?: true

Size: 1.46 KB

Versions: 7

Compression:

Stored size: 1.46 KB

Contents

module Kitabu
  module Templates
    TEMPLATES_ROOT = File.join(Kitabu::Base::GEM_ROOT, 'templates')
    DIRECTORIES = %w(text templates output)
    
    extend self
    
    def process!(options)
      directories!(options)
      bundle_css!(options)
      files!(options)
      config!(options)
    end
    
    def directories!(options)
      FileUtils.mkdir(options[:path])
      
      DIRECTORIES.each do |d|
        FileUtils.mkdir File.join(options[:path], d)
      end
    end
    
    def files!(options)
      copy_file "Rakefile", "#{options[:path]}/Rakefile"
      copy_file "layouts/#{options[:layout]}/layout.css", "#{options[:path]}/templates/layout.css"
      copy_file "layouts/#{options[:layout]}/layout.html", "#{options[:path]}/templates/layout.html"
      copy_file "user.css", "#{options[:path]}/templates/user.css"
    end
    
    def config!(options)
      template = File.new(File.join(TEMPLATES_ROOT, 'config.yml')).read
      env = OpenStruct.new(options)
      contents = ERB.new(template).result env.instance_eval{binding}

      File.open(File.join(options[:path], 'config.yml'), 'w+') << contents
    end
    
    def bundle_css!(options)
      contents = Dir["#{TEMPLATES_ROOT}/themes/*.css"].collect do |file|
        File.read(file)
      end

      File.open("#{options[:path]}/templates/syntax.css", "w+") << contents.join("\n\n")
    end
    
    private
      def copy_file(from, to)
        FileUtils.cp File.join(TEMPLATES_ROOT, from), to
      end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
fnando-kitabu-0.3.10 lib/kitabu/templates.rb
fnando-kitabu-0.3.4 lib/kitabu/templates.rb
fnando-kitabu-0.3.5 lib/kitabu/templates.rb
fnando-kitabu-0.3.6 lib/kitabu/templates.rb
fnando-kitabu-0.3.7 lib/kitabu/templates.rb
fnando-kitabu-0.3.8 lib/kitabu/templates.rb
fnando-kitabu-0.3.9 lib/kitabu/templates.rb