class Qwik::SiteArchive

Public Class Methods

generate(config, site, action) click to toggle source
# File vendor/qwik/lib/qwik/act-archive.rb, line 102
def self.generate(config, site, action)
  sitename = site.sitename
  site_cache_path = site.cache_path
  site_cache_path.check_directory

  zip_filename = "#{sitename}.zip"
  zip_file = site_cache_path + zip_filename

  Zip::ZipOutputStream.open(zip_file.to_s) {|zos|
    site.each_all {|page|
      add_page(site, action, zos, site_cache_path, page)
    }
    add_theme(site, action, zos, config.theme_dir)
  }

  return zip_file
end

Private Class Methods

add_entry(zos, filename, content, mtime = Time.new) click to toggle source
# File vendor/qwik/lib/qwik/act-archive.rb, line 147
def self.add_entry(zos, filename, content, mtime = Time.new)
  e = Zip::ZipEntry.new('', filename, '', '', 0,0,
                        Zip::ZipEntry::DEFLATED, 0, mtime)
  zos.put_next_entry(e)
  zos.write(content)
end
add_page(site, action, zos, site_cache_path, page) click to toggle source
# File vendor/qwik/lib/qwik/act-archive.rb, line 122
def self.add_page(site, action, zos, site_cache_path, page)
  base = "#{site.sitename}/#{page.key}"

  # Add original txt file.
  add_entry(zos, "#{base}.txt", page.load, page.mtime)

  # Generate a html file.
  html_path = site_cache_path+"#{page.key}.html"
  # Call act-html.
  #action.view_page_cache_generate(page.key) if ! html_path.exist?
  # Force create static HTML file.
  action.view_page_cache_generate(page.key)
  raise "Unknown error for '#{page.key}'" if ! html_path.exist?     # What?
  filename = "#{base}.html"
  add_entry(zos, filename, html_path.read)

  # Generate a presen file if the page is related to presen.
  if /\Apresen/i =~ page.key || /\{\{presen/ =~ page.load
    html_path = site_cache_path+"#{page.key}-presen.html"
    wabisabi = action.c_page_res(page.key)
    w = PresenGenerator.generate(site, page.key, wabisabi)
    add_entry(zos, "#{base}-presen.html", w.format_xml)
  end
end
add_theme(site, action, zos, theme_dir) click to toggle source
# File vendor/qwik/lib/qwik/act-archive.rb, line 154
def self.add_theme(site, action, zos, theme_dir)
  ar = []

  # FIXME: Collect this file list from the directory.
  ar << 'css/base.css'
  ar << 'css/wema.css'
  ar << 'js/base.js'
  ar << 'js/debugwindow.js'
  ar << 'js/niftypp.js'
  ar << 'js/wema.js'
  ar << 'i/external.png'
  ar << 'i/new.png'

  t = action.site_theme
  list = action.theme_files(t)
  list.each {|f|
    ar << "#{t}/#{f}"
  }

  ar << 's5/qwikworld/slides.css'
  ar << 's5/qwikworld/s5-core.css'
  ar << 's5/qwikworld/framing.css'
  ar << 's5/qwikworld/pretty.css'
  ar << 's5/qwikworld/bg-shade.png'
  ar << 's5/qwikworld/bg-slide.jpg'

  ar << 's5/default/opera.css'
  ar << 's5/default/outline.css'
  ar << 's5/default/print.css'
  ar << 's5/default/slides.js'

  ar.each {|b|
    add_entry(zos, "#{site.sitename}/.theme/#{b}",
              "#{theme_dir}/#{b}".path.read)
  }
end