Smaller changes.
This commit is contained in:
parent
95a2bcf5f6
commit
eb1715ae54
5 changed files with 30 additions and 15 deletions
|
@ -1,3 +1,5 @@
|
||||||
= Version 0.0.1
|
= Version 0.2
|
||||||
|
|
||||||
|
= Version 0.1
|
||||||
* Items
|
* Items
|
||||||
* Generators
|
* Generators
|
||||||
|
|
|
@ -1,3 +1,13 @@
|
||||||
|
h1. About
|
||||||
|
|
||||||
|
Ace is a static page generator like "Nanoc":http://nanoc.stoneship.org, "Jekyll":https://github.com/mojombo/jekyll or "Webby":http://webby.rubyforge.org/tutorial. How is it different? Well, it's better :) ! I really like Nanoc and I used it for quite a while, but it's not flexible enough. If you need to generate a lot of pages on the fly, it's a hassle. It provides helpers, but helpers are – let's face it – programming style we used to use years back when we yet believed that PHP is actually a really nice language.
|
||||||
|
|
||||||
|
Ace chose an OOP approach
|
||||||
|
|
||||||
|
Another common proble of these generators is, that they are way too opinionated. Thanks Webby, but I don't give a damn about your Sitemap, thank you very much!
|
||||||
|
|
||||||
|
Also, last but not least, Ace has a real template inheritance. Layouts are for kids, real men use template inheritance! What's the advantage? It's incredibly flexible. You can have
|
||||||
|
|
||||||
h1. Why you should be interested in ace?
|
h1. Why you should be interested in ace?
|
||||||
|
|
||||||
In Ace, every page is an instance
|
In Ace, every page is an instance
|
||||||
|
@ -7,11 +17,11 @@ There are also *generators* available for easier generating items on the fly.
|
||||||
|
|
||||||
Ace has *template inheritance*. I love template inheritance, it's more flexible pattern than layouts.
|
Ace has *template inheritance*. I love template inheritance, it's more flexible pattern than layouts.
|
||||||
|
|
||||||
Tasks for deployment included.
|
Tasks for deployment are included.
|
||||||
|
|
||||||
h1. The boot process
|
h1. The boot process
|
||||||
|
|
||||||
# load @boot.rb@ where the
|
# Load @boot.rb@ where the
|
||||||
# load the rules (controllers / globs mapping)
|
# load the rules (controllers / globs mapping)
|
||||||
# load & instantiate the items: only the renderables (concrete post)
|
# load & instantiate the items: only the renderables (concrete post)
|
||||||
# run the filters, layoutin' ... actually this can be defined in the controller
|
# run the filters, layoutin' ... actually this can be defined in the controller
|
||||||
|
|
19
lib/ace.rb
19
lib/ace.rb
|
@ -11,6 +11,10 @@ require "yaml"
|
||||||
require "fileutils"
|
require "fileutils"
|
||||||
|
|
||||||
module Ace
|
module Ace
|
||||||
|
module Helpers
|
||||||
|
# include your helpers here
|
||||||
|
end
|
||||||
|
|
||||||
class RawItem
|
class RawItem
|
||||||
attr_accessor :path, :metadata, :content
|
attr_accessor :path, :metadata, :content
|
||||||
def initialize(path)
|
def initialize(path)
|
||||||
|
@ -19,11 +23,11 @@ module Ace
|
||||||
|
|
||||||
def parse
|
def parse
|
||||||
pieces = @data.split(/^-{3,5}\s*$/)
|
pieces = @data.split(/^-{3,5}\s*$/)
|
||||||
if pieces.size < 3
|
# if pieces.size < 3
|
||||||
raise RuntimeError.new(
|
# raise RuntimeError.new(
|
||||||
"The file '#{content_filename}' appears to start with a metadata section (three or five dashes at the top) but it does not seem to be in the correct format."
|
# "The file '#{path}' appears to start with a metadata section (three or five dashes at the top) but it does not seem to be in the correct format."
|
||||||
)
|
# )
|
||||||
end
|
# end
|
||||||
|
|
||||||
# Parse
|
# Parse
|
||||||
self.metadata = YAML.load(pieces[1]).inject(Hash.new) { |metadata, pair| metadata.merge(pair[0].to_sym => pair[1]) } || Hash.new
|
self.metadata = YAML.load(pieces[1]).inject(Hash.new) { |metadata, pair| metadata.merge(pair[0].to_sym => pair[1]) } || Hash.new
|
||||||
|
@ -132,9 +136,4 @@ module Ace
|
||||||
|
|
||||||
class Asset < Item
|
class Asset < Item
|
||||||
end
|
end
|
||||||
|
|
||||||
module Helpers
|
|
||||||
def link_to(anchor, path_or_item, options = nil)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -10,12 +10,16 @@ end
|
||||||
|
|
||||||
module Ace
|
module Ace
|
||||||
class LayoutFilter < Filter
|
class LayoutFilter < Filter
|
||||||
|
class Scope
|
||||||
|
include Ace::Helpers
|
||||||
|
end
|
||||||
|
|
||||||
def initialize(options)
|
def initialize(options)
|
||||||
@path = options[:layout]
|
@path = options[:layout]
|
||||||
end
|
end
|
||||||
|
|
||||||
def call(item, content)
|
def call(item, content)
|
||||||
template = TemplateInheritance::Template.new(@path)
|
template = TemplateInheritance::Template.new(@path, Scope.new)
|
||||||
return template.render(item: item)
|
return template.render(item: item)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# encoding: utf-8
|
# encoding: utf-8
|
||||||
|
|
||||||
module Ace
|
module Ace
|
||||||
VERSION = "0.1"
|
VERSION = "0.2"
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue