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