middleman 2.0.0.rc5 → 2.0.0.rc6
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/mm-migrate +1 -1
- data/bin/mm-server +1 -0
- data/features/sinatra.feature +6 -0
- data/fixtures/test-app/config.rb +4 -0
- data/lib/middleman/base.rb +19 -4
- data/lib/middleman/core_extensions/front_matter.rb +6 -4
- data/lib/middleman/core_extensions/routing.rb +3 -2
- data/lib/middleman/features/blog.rb +45 -44
- data/lib/middleman/guard.rb +1 -1
- data/lib/middleman/version.rb +1 -1
- metadata +4 -2
data/bin/mm-migrate
CHANGED
data/bin/mm-server
CHANGED
data/fixtures/test-app/config.rb
CHANGED
data/lib/middleman/base.rb
CHANGED
@@ -78,7 +78,7 @@ module Middleman::Base
|
|
78
78
|
end
|
79
79
|
|
80
80
|
# See if Tilt cannot handle this file
|
81
|
-
app.
|
81
|
+
app.before_processing do
|
82
82
|
if !settings.views.include?(settings.root)
|
83
83
|
settings.set :views, File.join(settings.root, settings.views)
|
84
84
|
end
|
@@ -92,12 +92,14 @@ module Middleman::Base
|
|
92
92
|
content_type mime_type(File.extname(request.path_info)), :charset => 'utf-8'
|
93
93
|
status 200
|
94
94
|
send_file File.join(settings.views, request.path_info)
|
95
|
-
|
95
|
+
false
|
96
|
+
else
|
97
|
+
true
|
96
98
|
end
|
97
99
|
else
|
98
100
|
$stderr.puts "File not found: #{request.path_info}"
|
99
101
|
status 404
|
100
|
-
|
102
|
+
false
|
101
103
|
end
|
102
104
|
end
|
103
105
|
end
|
@@ -115,6 +117,19 @@ module Middleman::Base
|
|
115
117
|
super(option, value, &nil)
|
116
118
|
end
|
117
119
|
|
120
|
+
def before_processing(&block)
|
121
|
+
@before_processes ||= []
|
122
|
+
@before_processes << block
|
123
|
+
end
|
124
|
+
|
125
|
+
def execute_before_processing!(inst)
|
126
|
+
@before_processes ||= []
|
127
|
+
|
128
|
+
@before_processes.all? do |block|
|
129
|
+
inst.instance_eval(&block)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
118
133
|
# Convenience method to check if we're in build mode
|
119
134
|
def build?; environment == :build; end
|
120
135
|
end
|
@@ -122,7 +137,7 @@ module Middleman::Base
|
|
122
137
|
module InstanceMethods
|
123
138
|
# Internal method to look for templates and evaluate them if found
|
124
139
|
def process_request(options={})
|
125
|
-
return
|
140
|
+
return unless settings.execute_before_processing!(self)
|
126
141
|
|
127
142
|
options.merge!(request['custom_options'] || {})
|
128
143
|
|
@@ -23,25 +23,27 @@ module Middleman::CoreExtensions::FrontMatter
|
|
23
23
|
::Tilt.prefer(HamlTemplate)
|
24
24
|
|
25
25
|
app.after_feature_init do
|
26
|
-
app.
|
26
|
+
app.before_processing do
|
27
27
|
result = resolve_template(request.path_info, :raise_exceptions => false)
|
28
|
-
|
28
|
+
|
29
29
|
if result && Tilt.mappings.has_key?(result[1].to_s)
|
30
30
|
extensionless_path, template_engine = result
|
31
31
|
full_file_path = "#{extensionless_path}.#{template_engine}"
|
32
32
|
system_path = File.join(settings.views, full_file_path)
|
33
33
|
data, content = app.parse_front_matter(File.read(system_path))
|
34
|
-
|
34
|
+
|
35
35
|
request['custom_options'] = {}
|
36
36
|
%w(layout layout_engine).each do |opt|
|
37
37
|
if data.has_key?(opt)
|
38
38
|
request['custom_options'][opt.to_sym] = data.delete(opt)
|
39
39
|
end
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
# Forward remaining data to helpers
|
43
43
|
app.data_content("page", data)
|
44
44
|
end
|
45
|
+
|
46
|
+
true
|
45
47
|
end
|
46
48
|
end
|
47
49
|
end
|
@@ -4,8 +4,9 @@ module Middleman::CoreExtensions::Routing
|
|
4
4
|
app.extend ClassMethods
|
5
5
|
|
6
6
|
# Normalize the path and add index if we're looking at a directory
|
7
|
-
app.
|
7
|
+
app.before_processing do
|
8
8
|
request.path_info = self.class.path_to_index(request.path)
|
9
|
+
true
|
9
10
|
end
|
10
11
|
end
|
11
12
|
alias :included :registered
|
@@ -43,7 +44,7 @@ module Middleman::CoreExtensions::Routing
|
|
43
44
|
|
44
45
|
paths = [url]
|
45
46
|
paths << "#{url}/" if url.length > 1 && url.split("/").last.split('.').length <= 1
|
46
|
-
paths << "
|
47
|
+
paths << "/#{path_to_index(url)}"
|
47
48
|
|
48
49
|
options[:layout] = settings.layout if options[:layout].nil?
|
49
50
|
|
@@ -42,60 +42,61 @@ module Middleman
|
|
42
42
|
end
|
43
43
|
|
44
44
|
$stderr.puts "== Blog: #{app.settings.blog_permalink}"
|
45
|
-
|
46
|
-
app.before do
|
47
|
-
articles_glob = File.join(app.views, app.settings.blog_permalink.gsub(/(:\w+)/, "*") + ".*")
|
48
|
-
|
49
|
-
articles = Dir[articles_glob].map do |article|
|
50
|
-
template_content = File.read(article)
|
51
|
-
data, content = app.parse_front_matter(template_content)
|
52
|
-
data["date"] = Date.parse(data["date"])
|
53
|
-
|
54
|
-
data["raw"] = content
|
55
|
-
data["url"] = article.gsub(app.views, "").split(".html").first + ".html"
|
56
|
-
|
57
|
-
all_content = Tilt.new(article).render
|
58
|
-
data["body"] = all_content.gsub!(app.settings.blog_summary_separator, "")
|
59
|
-
|
60
|
-
sum = if data["raw"] =~ app.settings.blog_summary_separator
|
61
|
-
data["raw"].split(app.settings.blog_summary_separator).first
|
62
|
-
else
|
63
|
-
data["raw"].match(/(.{1,#{app.settings.blog_summary_length}}.*?)(\n|\Z)/m).to_s
|
64
|
-
end
|
65
|
-
|
66
|
-
engine = app.settings.markdown_engine.new { sum }
|
67
|
-
data["summary"] = engine.render
|
68
|
-
data
|
69
|
-
end.sort { |a, b| b["date"] <=> a["date"] }
|
70
|
-
|
71
|
-
tags = {}
|
72
|
-
articles.each do |article|
|
73
|
-
article["tags"] ||= ""
|
74
|
-
if !article["tags"].empty?
|
75
|
-
tags_array = article["tags"].split(',').map{|t| t.strip}
|
76
|
-
tags_array.each do |tag_title|
|
77
|
-
tag_key = tag_title.parameterize
|
78
|
-
tag_path = blog_taglink.gsub(/(:\w+)/, tag_key)
|
79
|
-
(tags[tag_path] ||= {})["title"] = tag_title
|
80
|
-
tags[tag_path]["ident"] = tag_key
|
81
|
-
(tags[tag_path]["pages"] ||= {})[article["title"]] = article["url"]
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
app.data_content("blog", { :articles => articles, :tags => tags })
|
87
|
-
end
|
88
45
|
|
89
46
|
app.get(app.settings.blog_permalink) do
|
90
47
|
process_request({
|
91
48
|
:layout => settings.blog_layout,
|
92
49
|
:layout_engine => settings.blog_layout_engine
|
93
50
|
})
|
94
|
-
|
51
|
+
|
95
52
|
# No need for separator on permalink page
|
96
53
|
body body.gsub!(settings.blog_summary_separator, "")
|
97
54
|
end
|
98
55
|
end
|
56
|
+
|
57
|
+
app.before_processing do
|
58
|
+
articles_glob = File.join(app.views, app.settings.blog_permalink.gsub(/(:\w+)/, "*") + ".*")
|
59
|
+
|
60
|
+
articles = Dir[articles_glob].map do |article|
|
61
|
+
template_content = File.read(article)
|
62
|
+
data, content = app.parse_front_matter(template_content)
|
63
|
+
data["date"] = Date.parse(data["date"])
|
64
|
+
|
65
|
+
data["raw"] = content
|
66
|
+
data["url"] = article.gsub(app.views, "").split(".html").first + ".html"
|
67
|
+
|
68
|
+
all_content = Tilt.new(article).render
|
69
|
+
data["body"] = all_content.gsub!(app.settings.blog_summary_separator, "")
|
70
|
+
|
71
|
+
sum = if data["raw"] =~ app.settings.blog_summary_separator
|
72
|
+
data["raw"].split(app.settings.blog_summary_separator).first
|
73
|
+
else
|
74
|
+
data["raw"].match(/(.{1,#{app.settings.blog_summary_length}}.*?)(\n|\Z)/m).to_s
|
75
|
+
end
|
76
|
+
|
77
|
+
engine = app.settings.markdown_engine.new { sum }
|
78
|
+
data["summary"] = engine.render
|
79
|
+
data
|
80
|
+
end.sort { |a, b| b["date"] <=> a["date"] }
|
81
|
+
|
82
|
+
tags = {}
|
83
|
+
articles.each do |article|
|
84
|
+
article["tags"] ||= ""
|
85
|
+
if !article["tags"].empty?
|
86
|
+
tags_array = article["tags"].split(',').map{|t| t.strip}
|
87
|
+
tags_array.each do |tag_title|
|
88
|
+
tag_key = tag_title.parameterize
|
89
|
+
tag_path = blog_taglink.gsub(/(:\w+)/, tag_key)
|
90
|
+
(tags[tag_path] ||= {})["title"] = tag_title
|
91
|
+
tags[tag_path]["ident"] = tag_key
|
92
|
+
(tags[tag_path]["pages"] ||= {})[article["title"]] = article["url"]
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
app.data_content("blog", { :articles => articles, :tags => tags })
|
98
|
+
true
|
99
|
+
end
|
99
100
|
end
|
100
101
|
alias :included :registered
|
101
102
|
end
|
data/lib/middleman/guard.rb
CHANGED
data/lib/middleman/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: middleman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: 6
|
5
|
-
version: 2.0.0.
|
5
|
+
version: 2.0.0.rc6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Thomas Reynolds
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-07-
|
13
|
+
date: 2011-07-14 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -309,6 +309,7 @@ files:
|
|
309
309
|
- features/page_alias_and_layouts.feature
|
310
310
|
- features/relative_assets.feature
|
311
311
|
- features/scss-support.feature
|
312
|
+
- features/sinatra.feature
|
312
313
|
- features/slim.feature
|
313
314
|
- features/sprockets.feature
|
314
315
|
- features/step_definitions/asset_host_steps.rb
|
@@ -483,6 +484,7 @@ test_files:
|
|
483
484
|
- features/page_alias_and_layouts.feature
|
484
485
|
- features/relative_assets.feature
|
485
486
|
- features/scss-support.feature
|
487
|
+
- features/sinatra.feature
|
486
488
|
- features/slim.feature
|
487
489
|
- features/sprockets.feature
|
488
490
|
- features/step_definitions/asset_host_steps.rb
|