middleman-core 4.1.8 → 4.1.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/features/helpers_link_to.feature +11 -1
- data/features/markdown_redcarpet_in_slim.feature +41 -0
- data/features/sass_in_slim.feature +40 -0
- data/fixtures/sass-in-slim-app/config.rb +0 -0
- data/lib/middleman-core/application.rb +2 -2
- data/lib/middleman-core/renderers/slim.rb +1 -5
- data/lib/middleman-core/template_context.rb +22 -16
- data/lib/middleman-core/util/paths.rb +9 -3
- data/lib/middleman-core/version.rb +1 -1
- data/middleman-core.gemspec +1 -0
- data/spec/middleman-core/util_spec.rb +7 -0
- metadata +22 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1bccc6ed0250ec6eca700de9c7a9fe08d002878d
|
4
|
+
data.tar.gz: 74b10ad510adda189d3e9b4f138425b3243246f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a9a907fc76debe6f613ab50ed3e061db1aa2e4cb6f4841c92a2a0ca5674231e608f10da5dca677e683b1a53ac2e9f06d88f55c35e0fce6d824408ef35ba86709
|
7
|
+
data.tar.gz: add958d204c4d9265d5407b5cb5f66e3e41fd8ea948bab1b4cf0d226343cfe65b61918df21ce55b87eeba34c1d5a03f1285c8dfb3deeb05712f0e58627826902
|
@@ -40,19 +40,29 @@ Feature: link_to helper
|
|
40
40
|
"""
|
41
41
|
absolute: <%= link_to "Needs Index", "/needs_index.html", relative: true %>
|
42
42
|
relative: <%= link_to "Relative", "needs_index.html", relative: true %>
|
43
|
+
|
44
|
+
absolute spaces: <%= link_to "Spaces Index", "/evil spaces.html", relative: true %>
|
45
|
+
relative spaces: <%= link_to "Spaces Relative", "evil spaces.html", relative: true %>
|
43
46
|
"""
|
44
47
|
And a file named "source/link_to/sub.html.erb" with:
|
45
48
|
"""
|
46
49
|
absolute: <%= link_to "Needs Index", "/needs_index.html", relative: true %>
|
47
50
|
relative: <%= link_to "Relative", "../needs_index.html", relative: true %>
|
51
|
+
|
52
|
+
absolute spaces: <%= link_to "Spaces Index", "/evil spaces.html", relative: true %>
|
53
|
+
relative spaces: <%= link_to "Spaces Relative", "../evil spaces.html", relative: true %>
|
48
54
|
"""
|
49
55
|
And the Server is running at "indexable-app"
|
50
56
|
When I go to "/link_to.html"
|
51
57
|
Then I should see 'absolute: <a href="needs_index.html">Needs Index</a>'
|
52
58
|
Then I should see 'relative: <a href="needs_index.html">Relative</a>'
|
59
|
+
Then I should see 'absolute spaces: <a href="evil%20spaces.html">Spaces Index</a>'
|
60
|
+
Then I should see 'relative spaces: <a href="evil%20spaces.html">Spaces Relative</a>'
|
53
61
|
When I go to "/link_to/sub.html"
|
54
62
|
Then I should see 'absolute: <a href="../needs_index.html">Needs Index</a>'
|
55
63
|
Then I should see 'relative: <a href="../needs_index.html">Relative</a>'
|
64
|
+
Then I should see 'absolute spaces: <a href="../evil%20spaces.html">Spaces Index</a>'
|
65
|
+
Then I should see 'relative spaces: <a href="../evil%20spaces.html">Spaces Relative</a>'
|
56
66
|
|
57
67
|
Scenario: link_to relative works with strip_index_file
|
58
68
|
Given a fixture app "indexable-app"
|
@@ -113,7 +123,7 @@ Feature: link_to helper
|
|
113
123
|
When I go to "/link_to/sub.html"
|
114
124
|
Then I should see 'absolute: <a href="../needs_index.html">Needs Index</a>'
|
115
125
|
Then I should see 'relative: <a href="../needs_index.html">Relative</a>'
|
116
|
-
|
126
|
+
|
117
127
|
Scenario: link_to knows about directory indexes
|
118
128
|
Given a fixture app "indexable-app"
|
119
129
|
And a file named "source/link_to.html.erb" with:
|
@@ -0,0 +1,41 @@
|
|
1
|
+
Feature: Markdown support in Slim
|
2
|
+
In order to test support of the Slim markdown filter
|
3
|
+
|
4
|
+
Scenario: Markdown filter in Slim works
|
5
|
+
Given a fixture app "markdown-in-slim-app"
|
6
|
+
And a file named "config.rb" with:
|
7
|
+
"""
|
8
|
+
set :markdown_engine, :redcarpet
|
9
|
+
activate :directory_indexes
|
10
|
+
"""
|
11
|
+
And a file named "source/markdown_filter.html.slim" with:
|
12
|
+
"""
|
13
|
+
markdown:
|
14
|
+
# H1
|
15
|
+
|
16
|
+
paragraph
|
17
|
+
"""
|
18
|
+
Given the Server is running at "markdown-in-slim-app"
|
19
|
+
When I go to "/markdown_filter/"
|
20
|
+
Then I should see ">H1</h1>"
|
21
|
+
Then I should see "<p>paragraph</p>"
|
22
|
+
|
23
|
+
|
24
|
+
Scenario: Markdown filter in Slim uses our link_to and image_tag helpers
|
25
|
+
Given a fixture app "markdown-in-slim-app"
|
26
|
+
And a file named "config.rb" with:
|
27
|
+
"""
|
28
|
+
set :markdown_engine, :redcarpet
|
29
|
+
activate :directory_indexes
|
30
|
+
"""
|
31
|
+
And a file named "source/link_and_image.html.slim" with:
|
32
|
+
"""
|
33
|
+
markdown:
|
34
|
+
[A link](/link_target.html)
|
35
|
+
|
36
|
+
![image](blank.gif)
|
37
|
+
"""
|
38
|
+
Given the Server is running at "markdown-in-slim-app"
|
39
|
+
When I go to "/link_and_image/"
|
40
|
+
Then I should see "/link_target/"
|
41
|
+
Then I should see 'src="/images/blank.gif"'
|
@@ -0,0 +1,40 @@
|
|
1
|
+
Feature: Sass/SCSS support in Slim
|
2
|
+
In order to test support of the Slim sass and scss filters
|
3
|
+
|
4
|
+
Scenario: Sass filter in Slim works
|
5
|
+
Given a fixture app "sass-in-slim-app"
|
6
|
+
And a file named "config.rb" with:
|
7
|
+
"""
|
8
|
+
activate :directory_indexes
|
9
|
+
"""
|
10
|
+
And a file named "source/sass_filter.html.slim" with:
|
11
|
+
"""
|
12
|
+
sass:
|
13
|
+
.sass
|
14
|
+
margin: 0
|
15
|
+
"""
|
16
|
+
Given the Server is running at "sass-in-slim-app"
|
17
|
+
When I go to "/sass_filter/"
|
18
|
+
Then I should see "text/css"
|
19
|
+
Then I should see ".sass"
|
20
|
+
Then I should see "margin:0"
|
21
|
+
|
22
|
+
|
23
|
+
Scenario: SCSS filter in Slim works
|
24
|
+
Given a fixture app "sass-in-slim-app"
|
25
|
+
And a file named "config.rb" with:
|
26
|
+
"""
|
27
|
+
activate :directory_indexes
|
28
|
+
"""
|
29
|
+
And a file named "source/scss_filter.html.slim" with:
|
30
|
+
"""
|
31
|
+
scss:
|
32
|
+
.scss {
|
33
|
+
margin: 0;
|
34
|
+
}
|
35
|
+
"""
|
36
|
+
Given the Server is running at "sass-in-slim-app"
|
37
|
+
When I go to "/scss_filter/"
|
38
|
+
Then I should see "text/css"
|
39
|
+
Then I should see ".scss"
|
40
|
+
Then I should see "margin:0"
|
File without changes
|
@@ -266,6 +266,8 @@ module Middleman
|
|
266
266
|
# Evaluate a passed block if given
|
267
267
|
config_context.instance_exec(&block) if block_given?
|
268
268
|
|
269
|
+
apply_cli_options
|
270
|
+
|
269
271
|
execute_callbacks(:before_sitemap)
|
270
272
|
|
271
273
|
# Initialize the Sitemap
|
@@ -276,8 +278,6 @@ module Middleman
|
|
276
278
|
# Before config is parsed, before extensions get to it.
|
277
279
|
execute_callbacks(:initialized)
|
278
280
|
|
279
|
-
apply_cli_options
|
280
|
-
|
281
281
|
# Before config is parsed. Mostly used for extensions.
|
282
282
|
execute_callbacks(:before_configuration)
|
283
283
|
|
@@ -12,13 +12,9 @@ class ::Slim::Template
|
|
12
12
|
|
13
13
|
def initialize(file, line, opts, &block)
|
14
14
|
if opts.key?(:context)
|
15
|
-
context_hack = {
|
16
|
-
context: opts[:context]
|
17
|
-
}
|
18
|
-
|
19
15
|
::Slim::Embedded::SassEngine.disable_option_validator!
|
20
16
|
%w(sass scss markdown).each do |engine|
|
21
|
-
::Slim::Embedded.options[engine.to_sym] =
|
17
|
+
(::Slim::Embedded.options[engine.to_sym] ||= {})[:context] = opts[:context]
|
22
18
|
end
|
23
19
|
end
|
24
20
|
|
@@ -127,30 +127,36 @@ module Middleman
|
|
127
127
|
# @return [String]
|
128
128
|
Contract String, Maybe[Bool] => Maybe[IsA['Middleman::SourceFile']]
|
129
129
|
def locate_partial(partial_path, try_static=true)
|
130
|
-
|
130
|
+
partial_file = nil
|
131
|
+
lookup_stack = []
|
132
|
+
non_root = partial_path.to_s.sub(/^\//, '')
|
133
|
+
non_root_no_underscore = non_root.sub(/^_/, '').sub(/\/_/, '/')
|
134
|
+
|
135
|
+
if resource = current_resource
|
136
|
+
current_dir = resource.file_descriptor[:relative_path].dirname
|
137
|
+
relative_dir = current_dir + Pathname(non_root)
|
138
|
+
relative_dir_no_underscore = current_dir + Pathname(non_root_no_underscore)
|
139
|
+
end
|
131
140
|
|
132
|
-
# Look for partials relative to the current path
|
133
|
-
current_dir = resource.file_descriptor[:relative_path].dirname
|
134
|
-
non_root = partial_path.to_s.sub(/^\//, '')
|
135
|
-
relative_dir = current_dir + Pathname(non_root)
|
136
141
|
|
137
|
-
|
138
|
-
|
142
|
+
lookup_stack.push [ relative_dir.to_s,
|
143
|
+
{ preferred_engine: resource.file_descriptor[:relative_path]
|
144
|
+
.extname[1..-1].to_sym }] if relative_dir
|
145
|
+
lookup_stack.push [ non_root ]
|
146
|
+
lookup_stack.push [ non_root,
|
147
|
+
{ try_static: try_static }]
|
148
|
+
lookup_stack.push [ relative_dir_no_underscore.to_s,
|
149
|
+
{ try_static: try_static }] if relative_dir_no_underscore
|
150
|
+
lookup_stack.push [ non_root_no_underscore,
|
151
|
+
{ try_static: try_static }]
|
139
152
|
|
140
|
-
partial_file = nil
|
141
153
|
|
142
|
-
|
143
|
-
[relative_dir.to_s, { preferred_engine: resource.file_descriptor[:relative_path].extname[1..-1].to_sym }],
|
144
|
-
[non_root],
|
145
|
-
[non_root, { try_static: try_static }],
|
146
|
-
[relative_dir_no_underscore.to_s, { try_static: try_static }],
|
147
|
-
[non_root_no_underscore, { try_static: try_static }]
|
148
|
-
].each do |args|
|
154
|
+
lookup_stack.each do |args|
|
149
155
|
partial_file = ::Middleman::TemplateRenderer.resolve_template(@app, *args)
|
150
156
|
break if partial_file
|
151
157
|
end
|
152
158
|
|
153
|
-
partial_file
|
159
|
+
partial_file
|
154
160
|
end
|
155
161
|
|
156
162
|
def current_path
|
@@ -118,7 +118,9 @@ module Middleman
|
|
118
118
|
# relative path, since it only takes absolute url paths.
|
119
119
|
dest_path = url_for(app, path, options.merge(relative: false))
|
120
120
|
|
121
|
-
result = if resource = app.sitemap.
|
121
|
+
result = if resource = app.sitemap.find_resource_by_path(dest_path)
|
122
|
+
resource.url
|
123
|
+
elsif resource = app.sitemap.find_resource_by_destination_path(dest_path)
|
122
124
|
resource.url
|
123
125
|
else
|
124
126
|
path = ::File.join(prefix, path)
|
@@ -158,8 +160,12 @@ module Middleman
|
|
158
160
|
begin
|
159
161
|
uri = URI(url)
|
160
162
|
rescue ::URI::InvalidURIError
|
161
|
-
|
162
|
-
|
163
|
+
begin
|
164
|
+
uri = URI(::URI.encode(url))
|
165
|
+
rescue ::URI::InvalidURIError
|
166
|
+
# Nothing we can do with it, it's not really a URI
|
167
|
+
return url
|
168
|
+
end
|
163
169
|
end
|
164
170
|
|
165
171
|
relative = options[:relative]
|
data/middleman-core.gemspec
CHANGED
@@ -162,6 +162,13 @@ describe Middleman::Util do
|
|
162
162
|
expect( Middleman::Util.asset_url( @mm, '/how/about/that.html' ) ).to eq '/how/about/that/'
|
163
163
|
end
|
164
164
|
|
165
|
+
it "returns a resource url when asset_hash is on" do
|
166
|
+
Given.fixture 'asset-hash-app'
|
167
|
+
@mm = Middleman::Application.new
|
168
|
+
|
169
|
+
expect( Middleman::Util.asset_url( @mm, '100px.png', 'images') ).to match %r|/images/100px-[a-f0-9]+.png|
|
170
|
+
end
|
171
|
+
|
165
172
|
end
|
166
173
|
|
167
174
|
describe "::find_related_files" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: middleman-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.1.
|
4
|
+
version: 4.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Reynolds
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-05-
|
13
|
+
date: 2016-05-31 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -116,6 +116,20 @@ dependencies:
|
|
116
116
|
- - ">="
|
117
117
|
- !ruby/object:Gem::Version
|
118
118
|
version: '0'
|
119
|
+
- !ruby/object:Gem::Dependency
|
120
|
+
name: dotenv
|
121
|
+
requirement: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
type: :runtime
|
127
|
+
prerelease: false
|
128
|
+
version_requirements: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
119
133
|
- !ruby/object:Gem::Dependency
|
120
134
|
name: activesupport
|
121
135
|
requirement: !ruby/object:Gem::Requirement
|
@@ -405,6 +419,7 @@ files:
|
|
405
419
|
- features/markdown_kramdown_in_slim.feature
|
406
420
|
- features/markdown_redcarpet.feature
|
407
421
|
- features/markdown_redcarpet_in_haml.feature
|
422
|
+
- features/markdown_redcarpet_in_slim.feature
|
408
423
|
- features/minify_css.feature
|
409
424
|
- features/minify_javascript.feature
|
410
425
|
- features/missing-tilt-lib.feature
|
@@ -427,6 +442,7 @@ files:
|
|
427
442
|
- features/relative_assets.feature
|
428
443
|
- features/relative_assets_helpers_only.feature
|
429
444
|
- features/sass-assets-paths.feature
|
445
|
+
- features/sass_in_slim.feature
|
430
446
|
- features/sass_partials.feature
|
431
447
|
- features/scss-support.feature
|
432
448
|
- features/sitemap_traversal.feature
|
@@ -1338,6 +1354,7 @@ files:
|
|
1338
1354
|
- fixtures/sass-assets-path-app/config.rb
|
1339
1355
|
- fixtures/sass-assets-path-app/my-vendor/stylesheets/_partial.sass
|
1340
1356
|
- fixtures/sass-assets-path-app/source/stylesheets/plain.css.sass
|
1357
|
+
- fixtures/sass-in-slim-app/config.rb
|
1341
1358
|
- fixtures/scss-app/config.rb
|
1342
1359
|
- fixtures/scss-app/source/stylesheets/layout.css.sass
|
1343
1360
|
- fixtures/scss-app/source/stylesheets/site_scss.css.scss
|
@@ -1602,6 +1619,7 @@ test_files:
|
|
1602
1619
|
- features/markdown_kramdown_in_slim.feature
|
1603
1620
|
- features/markdown_redcarpet.feature
|
1604
1621
|
- features/markdown_redcarpet_in_haml.feature
|
1622
|
+
- features/markdown_redcarpet_in_slim.feature
|
1605
1623
|
- features/minify_css.feature
|
1606
1624
|
- features/minify_javascript.feature
|
1607
1625
|
- features/missing-tilt-lib.feature
|
@@ -1624,6 +1642,7 @@ test_files:
|
|
1624
1642
|
- features/relative_assets.feature
|
1625
1643
|
- features/relative_assets_helpers_only.feature
|
1626
1644
|
- features/sass-assets-paths.feature
|
1645
|
+
- features/sass_in_slim.feature
|
1627
1646
|
- features/sass_partials.feature
|
1628
1647
|
- features/scss-support.feature
|
1629
1648
|
- features/sitemap_traversal.feature
|
@@ -2535,6 +2554,7 @@ test_files:
|
|
2535
2554
|
- fixtures/sass-assets-path-app/config.rb
|
2536
2555
|
- fixtures/sass-assets-path-app/my-vendor/stylesheets/_partial.sass
|
2537
2556
|
- fixtures/sass-assets-path-app/source/stylesheets/plain.css.sass
|
2557
|
+
- fixtures/sass-in-slim-app/config.rb
|
2538
2558
|
- fixtures/scss-app/config.rb
|
2539
2559
|
- fixtures/scss-app/source/stylesheets/layout.css.sass
|
2540
2560
|
- fixtures/scss-app/source/stylesheets/site_scss.css.scss
|