middleman 2.0.0.beta5 → 2.0.0.beta6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,4 +4,9 @@ Feature: Support SCSS Syntax
4
4
  Scenario: Rendering scss
5
5
  Given the Server is running
6
6
  When I go to "/stylesheets/site_scss.css"
7
+ Then I should see "html"
8
+
9
+ Scenario: Rendering scss
10
+ Given the Server is running
11
+ When I go to "/stylesheets/layout.css"
7
12
  Then I should see "html"
@@ -0,0 +1,2 @@
1
+ html
2
+ test: value
data/lib/middleman.rb CHANGED
@@ -68,6 +68,8 @@ module Middleman
68
68
  autoload :Haml, "middleman/renderers/haml"
69
69
  autoload :Sass, "middleman/renderers/sass"
70
70
  autoload :Slim, "middleman/renderers/slim"
71
+ autoload :Markdown, "middleman/renderers/markdown"
72
+ autoload :CoffeeScript, "middleman/renderers/coffee_script"
71
73
  end
72
74
 
73
75
  # Features API
@@ -85,10 +85,8 @@ module Middleman
85
85
  lookup = File.join(lookup, '*')
86
86
 
87
87
  results = Dir[lookup].sort do |a, b|
88
- simple_a = a.gsub(Middleman::Server.root + "/", '')
89
- .gsub(Middleman::Server.views + "/", '')
90
- simple_b = b.gsub(Middleman::Server.root + "/", '')
91
- .gsub(Middleman::Server.views + "/", '')
88
+ simple_a = a.gsub(Middleman::Server.root + "/", '').gsub(Middleman::Server.views + "/", '')
89
+ simple_b = b.gsub(Middleman::Server.root + "/", '').gsub(Middleman::Server.views + "/", '')
92
90
 
93
91
  a_dir = simple_a.split("/").first
94
92
  b_dir = simple_b.split("/").first
@@ -108,7 +106,7 @@ module Middleman
108
106
  next
109
107
  end
110
108
 
111
- next if file_source.include?('layout')
109
+ next if file_source.include?('layout') && !file_source.include?('.css')
112
110
 
113
111
  # Skip partials prefixed with an underscore
114
112
  next unless file_source.gsub(Middleman::Server.root, '').split('/').select { |p| p[0,1] == '_' }.empty?
@@ -4,23 +4,27 @@ module Middleman
4
4
  module Features
5
5
  module Blog
6
6
  class << self
7
- def registered(app)
7
+ def registered(app)
8
8
  # Include helpers
9
9
  app.helpers Middleman::Features::Blog::Helpers
10
-
10
+
11
11
  app.after_feature_init do
12
12
  if !app.settings.respond_to? :blog_permalink
13
13
  app.set :blog_permalink, "/:year/:month/:day/:title.html"
14
14
  end
15
-
15
+
16
+ if !app.settings.respond_to? :blog_taglink
17
+ app.set :blog_taglink, "/tags/:tag.html"
18
+ end
19
+
16
20
  if !app.settings.respond_to? :blog_layout
17
21
  app.set :blog_layout, "layout"
18
22
  end
19
-
23
+
20
24
  if !app.settings.respond_to? :blog_summary_separator
21
25
  app.set :blog_summary_separator, /READMORE/
22
26
  end
23
-
27
+
24
28
  if !app.settings.respond_to? :blog_summary_length
25
29
  app.set :blog_summary_length, 250
26
30
  end
@@ -32,44 +36,60 @@ module Middleman
32
36
  if !app.settings.respond_to? :blog_index_template
33
37
  app.set :blog_index_template, "index_template"
34
38
  end
35
-
39
+
36
40
  if !app.settings.respond_to? :blog_article_template
37
41
  app.set :blog_article_template, "article_template"
38
42
  end
39
-
43
+
40
44
  $stderr.puts "== Blog: #{app.settings.blog_permalink}"
41
-
45
+
42
46
  articles_glob = File.join(app.views, app.settings.blog_permalink.gsub(/(:\w+)/, "*") + ".*")
43
-
47
+
44
48
  articles = Dir[articles_glob].map do |article|
45
49
  template_content = File.read(article)
46
50
  data, content = parse_front_matter(template_content)
47
51
  data["date"] = Date.parse(data["date"])
48
-
52
+
49
53
  yaml_regex = /^(---\s*\n.*?\n?)^(---\s*$\n?)/m
50
54
  data["raw"] = template_content.split(yaml_regex).last
51
55
  data["url"] = article.gsub(app.views, "").split(".html").first + ".html"
52
-
53
- all_content = Tilt.new(article).render
56
+
57
+ all_content = Tilt.new(article).render
54
58
  data["body"] = all_content.gsub!(app.settings.blog_summary_separator, "")
55
-
59
+
56
60
  sum = if data["raw"] =~ app.settings.blog_summary_separator
57
61
  data["raw"].split(app.settings.blog_summary_separator).first
58
- else data["raw"].match(/(.{1,#{app.settings.blog_summary_length}}.*?)(\n|\Z)/m).to_s
62
+ else
63
+ data["raw"].match(/(.{1,#{app.settings.blog_summary_length}}.*?)(\n|\Z)/m).to_s
59
64
  end
60
-
65
+
61
66
  engine = RDiscount.new(sum)
62
67
  data["summary"] = engine.to_html
63
68
  data
64
- end.sort { |a, b| b["date"] <=> a["date"] }
65
-
66
- app.data_content("blog", { :articles => articles })
67
-
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
+
68
88
  app.get(app.settings.blog_permalink) do
69
89
  options = {}
70
90
  options[:layout] = settings.blog_layout
71
91
  options[:layout_engine] = settings.blog_layout_engine
72
-
92
+
73
93
  extensionless_path, template_engine = resolve_template(request.path)
74
94
 
75
95
  full_file_path = "#{extensionless_path}.#{template_engine}"
@@ -78,40 +98,70 @@ module Middleman
78
98
 
79
99
  # Forward remaining data to helpers
80
100
  self.class.data_content("page", data)
81
-
101
+
82
102
  output = render(request.path, options)
83
-
103
+
84
104
  # No need for separator on permalink page
85
105
  output.gsub!(settings.blog_summary_separator, "")
86
-
106
+
87
107
  status 200
88
108
  output
89
109
  end
110
+
90
111
  end
91
-
92
112
  end
93
113
  alias :included :registered
94
114
  end
95
-
115
+
96
116
  module Helpers
97
117
  def is_blog_article?
98
118
  !current_article_title.blank?
99
119
  end
100
-
120
+
101
121
  def blog_title
102
122
  end
103
-
123
+
104
124
  def current_article_date
105
125
  DateTime.parse(current_article_metadata.date)
106
126
  end
107
-
127
+
108
128
  def current_article_title
109
129
  current_article_metadata.title
110
130
  end
111
-
131
+
112
132
  def current_article_metadata
113
133
  data.page
114
134
  end
135
+
136
+ def current_article_tags
137
+ article_tags_hash = {}
138
+ if is_blog_article? && current_article_metadata.tags
139
+ article_tags = current_article_metadata.tags.split(',').map{|t| t.strip}
140
+ article_tags.each do |tag_title|
141
+ article_tags_hash[tag_title] = self.class.blog_taglink.gsub(/(:\w+)/, tag_title.parameterize)
142
+ end
143
+ end
144
+ article_tags_hash
145
+ end
146
+
147
+ def blog_tags
148
+ data.blog.tags
149
+ end
150
+
151
+ def current_tag_data
152
+ data.blog.tags[request.path]
153
+ end
154
+
155
+ def current_tag_articles
156
+ data.blog.articles.map do |article|
157
+ article if current_tag_data.pages.has_value?(article.url)
158
+ end.compact
159
+ end
160
+
161
+ def current_tag_title
162
+ current_tag_data[:title]
163
+ end
164
+
115
165
  end
116
166
  end
117
167
  end
@@ -6,15 +6,10 @@ module Middleman::Features::FrontMatter
6
6
  def registered(app)
7
7
  app.extend ClassMethods
8
8
 
9
- ::Tilt::register MarukuTemplate, 'markdown', 'mkd', 'md'
10
- ::Tilt::register MarukuTemplate, 'markdown', 'mkd', 'md'
11
- ::Tilt::register KramdownTemplate, 'markdown', 'mkd', 'md'
12
- ::Tilt::register BlueClothTemplate, 'markdown', 'mkd', 'md'
13
- ::Tilt::register RedcarpetTemplate, 'markdown', 'mkd', 'md'
14
9
  ::Tilt::register RDiscountTemplate, 'markdown', 'mkd', 'md'
15
- ::Tilt::register RedClothTemplate, 'textile'
16
- ::Tilt::register ERBTemplate, 'erb', 'rhtml'
17
- ::Tilt::register ErubisTemplate, 'erb', 'rhtml', 'erubis'
10
+ ::Tilt::register RedClothTemplate, 'textile'
11
+ ::Tilt::register ERBTemplate, 'erb', 'rhtml'
12
+ ::Tilt::register ErubisTemplate, 'erb', 'rhtml', 'erubis'
18
13
  end
19
14
  alias :included :registered
20
15
  end
@@ -45,22 +40,6 @@ module Middleman::Features::FrontMatter
45
40
  end
46
41
 
47
42
  # MARKDOWN
48
- class MarukuTemplate < ::Tilt::MarukuTemplate
49
- include Middleman::Features::FrontMatter::YamlAware
50
- end
51
-
52
- class KramdownTemplate < ::Tilt::KramdownTemplate
53
- include Middleman::Features::FrontMatter::YamlAware
54
- end
55
-
56
- class BlueClothTemplate < ::Tilt::BlueClothTemplate
57
- include Middleman::Features::FrontMatter::YamlAware
58
- end
59
-
60
- class RedcarpetTemplate < ::Tilt::RedcarpetTemplate
61
- include Middleman::Features::FrontMatter::YamlAware
62
- end
63
-
64
43
  class RDiscountTemplate < ::Tilt::RDiscountTemplate
65
44
  include Middleman::Features::FrontMatter::YamlAware
66
45
  end
@@ -0,0 +1,12 @@
1
+ module Middleman
2
+ module Renderers
3
+ module CoffeeScript
4
+ class << self
5
+ def registered(app)
6
+ require "coffee_script"
7
+ end
8
+ alias :included :registered
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module Middleman
2
+ module Renderers
3
+ module Markdown
4
+ class << self
5
+ def registered(app)
6
+ require "rdiscount"
7
+ end
8
+ alias :included :registered
9
+ end
10
+ end
11
+ end
12
+ end
@@ -78,6 +78,8 @@ module Middleman
78
78
  register Middleman::Renderers::Slim
79
79
  register Middleman::Renderers::Haml
80
80
  register Middleman::Renderers::Sass
81
+ register Middleman::Renderers::Markdown
82
+ register Middleman::Renderers::CoffeeScript
81
83
 
82
84
  # Rack helper for adding mime-types during local preview
83
85
  def self.mime(ext, type)
@@ -186,8 +188,12 @@ module Middleman
186
188
 
187
189
  status 404
188
190
  rescue Padrino::Rendering::TemplateNotFound
189
- $stderr.puts "File not found: #{request.path}"
190
- status 404
191
+ if settings.environment == :development
192
+ raise $!
193
+ else
194
+ $stderr.puts "File not found: #{request.path}"
195
+ status 404
196
+ end
191
197
  end
192
198
  end
193
199
  end
@@ -1,3 +1,3 @@
1
1
  module Middleman
2
- VERSION = "2.0.0.beta5"
2
+ VERSION = "2.0.0.beta6"
3
3
  end
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.beta5
5
+ version: 2.0.0.beta6
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-06-24 00:00:00 -07:00
13
+ date: 2011-07-01 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -335,6 +335,7 @@ files:
335
335
  - fixtures/test-app/source/stylesheets/auto-css/auto-css.css
336
336
  - fixtures/test-app/source/stylesheets/auto-css/index.css
337
337
  - fixtures/test-app/source/stylesheets/auto-css/sub/auto-css.css
338
+ - fixtures/test-app/source/stylesheets/layout.css.sass
338
339
  - fixtures/test-app/source/stylesheets/relative_assets.css.sass
339
340
  - fixtures/test-app/source/stylesheets/site.css.sass
340
341
  - fixtures/test-app/source/stylesheets/site_scss.css.scss
@@ -363,7 +364,9 @@ files:
363
364
  - lib/middleman/features/relative_assets.rb
364
365
  - lib/middleman/features/tiny_src.rb
365
366
  - lib/middleman/features/ugly_haml.rb
367
+ - lib/middleman/renderers/coffee_script.rb
366
368
  - lib/middleman/renderers/haml.rb
369
+ - lib/middleman/renderers/markdown.rb
367
370
  - lib/middleman/renderers/sass.rb
368
371
  - lib/middleman/renderers/slim.rb
369
372
  - lib/middleman/server.rb
@@ -489,6 +492,7 @@ test_files:
489
492
  - fixtures/test-app/source/stylesheets/auto-css/auto-css.css
490
493
  - fixtures/test-app/source/stylesheets/auto-css/index.css
491
494
  - fixtures/test-app/source/stylesheets/auto-css/sub/auto-css.css
495
+ - fixtures/test-app/source/stylesheets/layout.css.sass
492
496
  - fixtures/test-app/source/stylesheets/relative_assets.css.sass
493
497
  - fixtures/test-app/source/stylesheets/site.css.sass
494
498
  - fixtures/test-app/source/stylesheets/site_scss.css.scss