lib/amiba/site.rb in amiba-0.0.8 vs lib/amiba/site.rb in amiba-0.0.9

- old
+ new

@@ -2,19 +2,28 @@ require 'webrick' module Amiba module Site + class Editor < Thor::Group + include Amiba::Generator + + namespace :"site:editor" + class_option :port, :default => 4567 + + def edit + require 'amiba/frontend/app' + Protozoa::App.run!(options) + end + end class Preview < Thor::Group include Amiba::Generator namespace :"site:preview" class_option :port, :default => 4321 - # class_option :drafts, :default => false def create - # invoke Amiba::Site::Generate, [], :drafts => options[:drafts] invoke Amiba::Site::Generate end def preview root = File.expand_path(File.join(Amiba::Configuration.site_dir, "public")) @@ -143,11 +152,11 @@ end def process_and_copy_sass Dir.glob('public/css/[^_]*.scss').each do |scss_file| create_file File.join(Amiba::Configuration.site_dir,"public/css/", File.basename(scss_file).gsub('scss', 'css')) do - Tilt.new(scss_file).render + Amiba::Tilt.new(scss_file).render end end end def build_entries @@ -165,10 +174,11 @@ end end def build_json Dir.glob('entries/*').each do |cat| + next unless File.directory? cat c = File.basename cat create_file(File.join(Amiba::Configuration.site_dir, "public", c, "latest.json")) do Amiba::Source::Entry.send(c.to_sym.pluralize).limit(20).each.inject([]) do |acc, ent| a = ent.metadata a["content"] = ent.render @@ -181,11 +191,11 @@ def build_feeds Dir.glob('feeds/*.builder').each do |feed_file| feed = Amiba::Source::Feed.new(feed_file) begin create_file(feed.output_filename) do - Tilt.new(feed.filename).render(Amiba::Scope.new(feed), :xml => Builder::XmlMarkup.new) + Amiba::Tilt.new(feed.filename).render(Amiba::Scope.new(feed), :xml => Builder::XmlMarkup.new) end rescue say_status "Failed", "Unable to process #{feed.name}: #{$!}, skipping", :red end end @@ -201,20 +211,21 @@ end end def build_layout(page) layout = Amiba::Source::Layout.new(page.layout) - return layout if File.exists? layout.staged_filename - create_file(layout.staged_filename) do layout.content end + # Fall back to the default layout if we can't find the requested one + if layout.new? + layout = Amiba::Source::Layout.new("default") + end layout end def build_page(page) layout = build_layout(page) - create_file(page.staged_filename) do page.content end begin create_file(page.output_filename) do - Tilt.new(layout.staged_filename).render(Amiba::Scope.new(page)) + Amiba::Tilt.new(layout, :smartypants=>true).render(Amiba::Scope.new(page)) end rescue say_status "Failed", "Unable to process #{page.name}: #{$!}, skipping", :red end end