middleman-core 4.1.8 → 4.1.9
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.
- 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
|
+

|
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
|