class Troy::Site
Attributes
options[RW]
root[RW]
Public Class Methods
new(root, options)
click to toggle source
# File lib/troy/site.rb, line 7 def initialize(root, options) @root = Pathname.new(root).realpath @options = options load_configuration load_extensions set_locale end
Public Instance Methods
config()
click to toggle source
A shortcut to the configuration.
# File lib/troy/site.rb, line 125 def config Troy.configuration end
export()
click to toggle source
# File lib/troy/site.rb, line 32 def export remove_public_dir export_assets export_files export_pages end
export_asset(sprockets, asset_name)
click to toggle source
# File lib/troy/site.rb, line 97 def export_asset(sprockets, asset_name) asset = sprockets[asset_name] output_file = asset.filename.to_s .gsub(root.join("assets").to_s, "") .gsub(%r{^/}, "") .gsub(/\.scss$/, ".css") .gsub(/\.coffee$/, ".js") asset.write_to root.join("public/#{output_file}") end
export_assets()
click to toggle source
# File lib/troy/site.rb, line 77 def export_assets sprockets = Sprockets::Environment.new sprockets.append_path root.join("assets/javascripts") sprockets.append_path root.join("assets/stylesheets") if config.assets.compress_css sprockets.css_compressor = Sprockets::SassCompressor end if config.assets.compress_js sprockets.js_compressor = Uglifier.new(uglifier_options) end config.assets.precompile.each_slice(options[:concurrency]) do |slice| slice.map do |asset_name| Thread.new { export_asset(sprockets, asset_name) } end.each(&:join) end end
export_file(assets, entry)
click to toggle source
# File lib/troy/site.rb, line 49 def export_file(assets, entry) basename = entry.to_s return if [".", "..", "javascripts", "stylesheets"].include?(basename) FileUtils.rm_rf root.join("public/#{basename}") FileUtils.cp_r assets.join(entry), root.join("public/#{basename}") end
export_files()
click to toggle source
# File lib/troy/site.rb, line 39 def export_files assets = root.join("assets") assets.entries.each_slice(options[:concurrency]) do |slice| slice.map do |entry| Thread.new { export_file(assets, entry) } end.each(&:join) end end
export_pages(file = nil)
click to toggle source
# File lib/troy/site.rb, line 61 def export_pages(file = nil) file = File.expand_path(file) if file pages .select {|page| file.nil? || page.path == file } .each_slice(options[:concurrency]) do |slice| threads = slice.map do |page| Thread.new do page.save end end threads.each(&:join) end end
load_configuration()
click to toggle source
# File lib/troy/site.rb, line 28 def load_configuration load root.join("config/troy.rb") end
load_extensions()
click to toggle source
# File lib/troy/site.rb, line 16 def load_extensions Dir[root.join("config/**/*helpers.rb")].each do |file| require file end end
pages()
click to toggle source
Return all pages wrapped in Troy::Page
class.
# File lib/troy/site.rb, line 120 def pages @pages ||= source.map {|path| Page.new(self, path) } end
remove_public_dir()
click to toggle source
# File lib/troy/site.rb, line 57 def remove_public_dir FileUtils.rm_rf root.join("public") end
set_locale()
click to toggle source
# File lib/troy/site.rb, line 22 def set_locale I18n.load_path += config.i18n.load_path I18n.default_locale = config.i18n.locale I18n.locale = config.i18n.locale end
source()
click to toggle source
# File lib/troy/site.rb, line 114 def source Dir[root.join("source/**/*.{html,erb,md,builder,xml,txt}").to_s] end
uglifier_options()
click to toggle source
# File lib/troy/site.rb, line 108 def uglifier_options options = Uglifier::DEFAULTS.dup options[:output][:comments] = :none options end