edison 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/edison +20 -20
- metadata +4 -4
data/bin/edison
CHANGED
@@ -71,19 +71,19 @@ class Edison::ModelsLoader
|
|
71
71
|
end
|
72
72
|
|
73
73
|
class Edison::Renderer
|
74
|
-
attr_accessor :
|
75
|
-
def initialize(
|
76
|
-
self.
|
74
|
+
attr_accessor :views
|
75
|
+
def initialize(views)
|
76
|
+
self.views = views
|
77
77
|
end
|
78
|
-
def render(
|
79
|
-
|
80
|
-
if
|
81
|
-
raise Exception, "Called for
|
78
|
+
def render(view_name, data)
|
79
|
+
view = self.views[view_name]
|
80
|
+
if view.nil?
|
81
|
+
raise Exception, "Called for view #{view_name}, but _views/#{view_name} does not exist"
|
82
82
|
end
|
83
|
-
body = Mustache.render(
|
84
|
-
if
|
83
|
+
body = Mustache.render(view.body, data)
|
84
|
+
if view.layout
|
85
85
|
newdata = data.merge("yield" => body)
|
86
|
-
self.render(
|
86
|
+
self.render(view.layout, newdata)
|
87
87
|
else
|
88
88
|
body
|
89
89
|
end
|
@@ -96,14 +96,14 @@ class Edison::Router
|
|
96
96
|
@urls = []
|
97
97
|
@static = []
|
98
98
|
end
|
99
|
-
def url(url,
|
100
|
-
if b and
|
99
|
+
def url(url, view=nil, data={}, &b)
|
100
|
+
if b and view and data
|
101
101
|
raise Exception, "Please pass data or block, not both!"
|
102
102
|
end
|
103
103
|
if b
|
104
104
|
b.call(@urls.find { |(url, _, _)| url == url}[2])
|
105
105
|
else
|
106
|
-
@urls << [url,
|
106
|
+
@urls << [url, view, Hashie::Mash.new(data)]
|
107
107
|
end
|
108
108
|
end
|
109
109
|
def copy(url)
|
@@ -123,8 +123,8 @@ module Edison
|
|
123
123
|
loader = ModelsLoader.new
|
124
124
|
@models = loader.load(File.join(directory, "_models"))
|
125
125
|
|
126
|
-
|
127
|
-
puts "Loading
|
126
|
+
views = Hash[Dir[File.join(directory, "_views", "*")].map do |fname|
|
127
|
+
puts "Loading view _views/#{File.basename(fname)}..."
|
128
128
|
name = File.basename(fname).sub(/\.[^\.]+$/,'')
|
129
129
|
data = Hashie::Mash.new Edison::YAMLFrontMatter.read(fname)
|
130
130
|
[name, data]
|
@@ -142,14 +142,14 @@ module Edison
|
|
142
142
|
if %w{.html .md}.include?(File.extname(fname))
|
143
143
|
data = Hashie::Mash.new Edison::YAMLFrontMatter.read(fname)
|
144
144
|
url = name.sub(/\.md$/,'')
|
145
|
-
|
145
|
+
views[url] = data
|
146
146
|
@routes.url url, url, data
|
147
147
|
else
|
148
148
|
@routes.copy name
|
149
149
|
end
|
150
150
|
end
|
151
151
|
|
152
|
-
@renderer = Renderer.new(
|
152
|
+
@renderer = Renderer.new(views)
|
153
153
|
end
|
154
154
|
def self.config(&b)
|
155
155
|
instance_eval &b
|
@@ -166,13 +166,13 @@ module Edison
|
|
166
166
|
FileUtils.mkdir_p File.dirname(dest)
|
167
167
|
FileUtils.copy src, dest
|
168
168
|
end
|
169
|
-
routes.urls.each do |(url,
|
169
|
+
routes.urls.each do |(url, view_name, data)|
|
170
170
|
puts "Creating /#{url}..."
|
171
171
|
|
172
172
|
fname = File.join(site, url)
|
173
173
|
FileUtils.mkdir_p(File.dirname(fname))
|
174
174
|
File.open(fname, "w") do |f|
|
175
|
-
f.write @renderer.render(
|
175
|
+
f.write @renderer.render(view_name, data)
|
176
176
|
end
|
177
177
|
end
|
178
178
|
end
|
@@ -206,7 +206,7 @@ def build
|
|
206
206
|
directory = Dir.pwd
|
207
207
|
puts "Running in #{directory}..."
|
208
208
|
Edison.initialize!(directory)
|
209
|
-
load File.join(directory, "
|
209
|
+
load File.join(directory, "_config.rb")
|
210
210
|
site = File.join(directory, "_site")
|
211
211
|
Edison.generate!
|
212
212
|
puts "Done!"
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: edison
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Michael Maltese
|
@@ -98,7 +98,7 @@ extra_rdoc_files: []
|
|
98
98
|
files:
|
99
99
|
- bin/edison
|
100
100
|
- README.md
|
101
|
-
homepage: http://github.com/michaelmaltese/
|
101
|
+
homepage: http://github.com/michaelmaltese/edison
|
102
102
|
licenses: []
|
103
103
|
|
104
104
|
post_install_message:
|