middleman-more 3.0.0 → 3.0.1.pre
Sign up to get free protection for your applications and to get access to all the features.
- data/.cane +2 -0
- data/.cane-exclusions.yml +3 -0
- data/features/coffee-script.feature +6 -1
- data/features/markdown_redcarpet.feature +23 -1
- data/features/minify_css.feature +2 -0
- data/features/sass-assets-paths.feature +11 -0
- data/features/sass_cache_path.feature +22 -0
- data/features/slim.feature +49 -1
- data/features/support/env.rb +2 -2
- data/fixtures/asset-host-app/config.rb +1 -1
- data/fixtures/auto-css-app/config.rb +1 -1
- data/fixtures/auto-js-app/config.rb +1 -1
- data/fixtures/coffeescript-app/config.rb +1 -1
- data/fixtures/content-for-app/config.rb +1 -1
- data/fixtures/extensionless-text-files-app/config.rb +1 -1
- data/fixtures/lorem-app/config.rb +1 -1
- data/fixtures/markdown-app/source/images/blank.gif +0 -0
- data/fixtures/minify-css-app/source/stylesheets/report.css +1 -0
- data/fixtures/nested-layout-app/config.rb +1 -1
- data/fixtures/page-classes-app/config.rb +1 -1
- data/fixtures/relative-assets-app/config.rb +1 -1
- data/fixtures/sass-assets-path-app/assets/stylesheets/_shared-asset.sass +1 -0
- data/fixtures/sass-assets-path-app/assets/stylesheets/_shared-asset.scss +1 -0
- data/fixtures/sass-assets-path-app/config.rb +4 -0
- data/fixtures/sass-assets-path-app/my-vendor/stylesheets/_partial.sass +2 -0
- data/fixtures/sass-assets-path-app/source/stylesheets/plain.css.sass +16 -0
- data/fixtures/sass-cache-path-custom-app/config.rb +3 -0
- data/fixtures/sass-cache-path-custom-app/source/stylesheets/plain.css.sass +4 -0
- data/fixtures/sass-cache-path-default-app/config.rb +3 -0
- data/fixtures/sass-cache-path-default-app/source/stylesheets/plain.css.sass +4 -0
- data/fixtures/traversal-app/config.rb +1 -1
- data/fixtures/wildcard-directory-index-app/config.rb +1 -1
- data/lib/middleman-more.rb +19 -16
- data/lib/middleman-more/core_extensions/assets.rb +5 -5
- data/lib/middleman-more/core_extensions/compass.rb +9 -4
- data/lib/middleman-more/core_extensions/default_helpers.rb +3 -3
- data/lib/middleman-more/core_extensions/i18n.rb +31 -27
- data/lib/middleman-more/extensions/asset_hash.rb +8 -7
- data/lib/middleman-more/extensions/asset_host.rb +9 -9
- data/lib/middleman-more/extensions/automatic_image_sizes.rb +6 -6
- data/lib/middleman-more/extensions/automatic_image_sizes/fastimage.rb +6 -6
- data/lib/middleman-more/extensions/cache_buster.rb +11 -11
- data/lib/middleman-more/extensions/directory_indexes.rb +14 -13
- data/lib/middleman-more/extensions/gzip.rb +7 -7
- data/lib/middleman-more/extensions/lorem.rb +10 -10
- data/lib/middleman-more/extensions/minify_css.rb +5 -5
- data/lib/middleman-more/extensions/minify_css/rainpress.rb +2 -2
- data/lib/middleman-more/extensions/minify_javascript.rb +7 -7
- data/lib/middleman-more/extensions/relative_assets.rb +9 -9
- data/lib/middleman-more/templates/smacss.rb +30 -0
- data/lib/middleman-more/templates/smacss/source/_footer.haml +1 -0
- data/lib/middleman-more/templates/smacss/source/index.html.haml +1 -0
- data/lib/middleman-more/templates/smacss/source/layouts/layout.haml +13 -0
- data/lib/middleman-more/templates/smacss/source/stylesheets/_0.site-settings.scss +0 -0
- data/lib/middleman-more/templates/smacss/source/stylesheets/_1.base.scss +2 -0
- data/lib/middleman-more/templates/smacss/source/stylesheets/_2.layout.scss +2 -0
- data/lib/middleman-more/templates/smacss/source/stylesheets/_3.states.scss +2 -0
- data/lib/middleman-more/templates/smacss/source/stylesheets/_4.themes.scss +2 -0
- data/lib/middleman-more/templates/smacss/source/stylesheets/modules/_btn.scss +2 -0
- data/lib/middleman-more/templates/smacss/source/stylesheets/style.css.scss +7 -0
- data/lib/middleman_extension.rb +1 -1
- metadata +47 -11
data/.cane
ADDED
@@ -14,4 +14,9 @@ Feature: Support coffee-script
|
|
14
14
|
Scenario: Rendering broken coffee
|
15
15
|
Given the Server is running at "coffeescript-app"
|
16
16
|
When I go to "/javascripts/broken-coffee.js"
|
17
|
-
Then I should see "reserved word"
|
17
|
+
Then I should see "reserved word"
|
18
|
+
|
19
|
+
Scenario: Building broken coffee
|
20
|
+
Given a built app at "coffeescript-app"
|
21
|
+
Then the output should contain "error build/javascripts/broken-coffee.js"
|
22
|
+
And the exit status should be 1
|
@@ -40,4 +40,26 @@ Feature: Markdown support
|
|
40
40
|
When I go to "/with_toc_data.html"
|
41
41
|
Then I should see "toc_0"
|
42
42
|
When I go to "/hard_wrap.html"
|
43
|
-
Then I should see "br"
|
43
|
+
Then I should see "br"
|
44
|
+
|
45
|
+
Scenario: Redcarpet uses our link_to and image_tag helpers
|
46
|
+
Given a fixture app "markdown-app"
|
47
|
+
And a file named "config.rb" with:
|
48
|
+
"""
|
49
|
+
set :markdown_engine, :redcarpet
|
50
|
+
activate :automatic_image_sizes
|
51
|
+
activate :directory_indexes
|
52
|
+
"""
|
53
|
+
And a file named "source/link_and_image.html.markdown" with:
|
54
|
+
"""
|
55
|
+
[A link](/smarty_pants.html)
|
56
|
+
|
57
|
+
![image](blank.gif)
|
58
|
+
"""
|
59
|
+
Given the Server is running at "markdown-app"
|
60
|
+
When I go to "/link_and_image/"
|
61
|
+
Then I should see "/smarty_pants/"
|
62
|
+
Then I should see 'width="1"'
|
63
|
+
And I should see 'height="1"'
|
64
|
+
And I should see 'src="/images/blank.gif"'
|
65
|
+
|
data/features/minify_css.feature
CHANGED
@@ -23,6 +23,8 @@ Feature: Minify CSS
|
|
23
23
|
And I should see "only screen and (device-width"
|
24
24
|
When I go to "/more-css/site.css"
|
25
25
|
Then I should see "1" lines
|
26
|
+
When I go to "/stylesheets/report.css"
|
27
|
+
Then I should see "p{border:1px solid #ff6600}"
|
26
28
|
|
27
29
|
Scenario: Rendering external css with passthrough compressor
|
28
30
|
Given a fixture app "passthrough-app"
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Feature: Support SASS assets paths
|
2
|
+
In order to import common shared assets when writing Sass
|
3
|
+
|
4
|
+
Scenario: Importing assets from 'assets/stylesheets/' directory in app root
|
5
|
+
Given the Server is running at "sass-assets-path-app"
|
6
|
+
When I go to "/stylesheets/plain.css"
|
7
|
+
Then I should see "color: green;"
|
8
|
+
Then I should see "/* Works with shared SCSS assets from APPROOT/assets/stylesheets/_shared-asset.scss */"
|
9
|
+
Then I should see "/* Works with shared SASS assets from APPROOT/assets/stylesheets/_shared-asset.sass */"
|
10
|
+
Then I should see "font-size: 18px"
|
11
|
+
Then I should see "/* Works with shared SASS assets from external source directory */"
|
@@ -0,0 +1,22 @@
|
|
1
|
+
Feature: SASS .sass_cache custom location
|
2
|
+
|
3
|
+
Scenario: Using the default location for .sass_cache folder
|
4
|
+
Given the Server is running at "sass-cache-path-default-app"
|
5
|
+
|
6
|
+
When I go to "/stylesheets/plain.css"
|
7
|
+
Then I should see "color: blue;"
|
8
|
+
|
9
|
+
# TODO::
|
10
|
+
# Not sure how to test this location, as the directory is stored outside of the app root
|
11
|
+
# during testing, but inside app root in "production"
|
12
|
+
|
13
|
+
# Then a directory named ".sass_cache" should exist
|
14
|
+
|
15
|
+
|
16
|
+
Scenario: Using a custom location for .sass_cache folder
|
17
|
+
Given the Server is running at "sass-cache-path-custom-app"
|
18
|
+
|
19
|
+
When I go to "/stylesheets/plain.css"
|
20
|
+
Then I should see "html, body, div, span, applet, object, iframe,"
|
21
|
+
|
22
|
+
Then a directory named "/tmp/middleman-more-custom-sass_cache_path" should exist
|
data/features/slim.feature
CHANGED
@@ -18,4 +18,52 @@ Feature: Support slim templating language
|
|
18
18
|
"""
|
19
19
|
And the Server is running at "empty_app"
|
20
20
|
When I go to "/slim.html"
|
21
|
-
Then I should see "<h1>Welcome to Slim</h1>"
|
21
|
+
Then I should see "<h1>Welcome to Slim</h1>"
|
22
|
+
|
23
|
+
Scenario: Rendering Scss in a Slim filter
|
24
|
+
Given an empty app
|
25
|
+
And a file named "config.rb" with:
|
26
|
+
"""
|
27
|
+
"""
|
28
|
+
And a file named "source/scss.html.slim" with:
|
29
|
+
"""
|
30
|
+
doctype 5
|
31
|
+
html lang='en'
|
32
|
+
head
|
33
|
+
meta charset="utf-8"
|
34
|
+
scss:
|
35
|
+
@import "compass";
|
36
|
+
@include global-reset;
|
37
|
+
body
|
38
|
+
h1 Welcome to Slim
|
39
|
+
"""
|
40
|
+
And a file named "source/sass.html.slim" with:
|
41
|
+
"""
|
42
|
+
doctype 5
|
43
|
+
html lang='en'
|
44
|
+
head
|
45
|
+
meta charset="utf-8"
|
46
|
+
sass:
|
47
|
+
@import "compass"
|
48
|
+
+global-reset
|
49
|
+
body
|
50
|
+
h1 Welcome to Slim
|
51
|
+
"""
|
52
|
+
And a file named "source/error.html.slim" with:
|
53
|
+
"""
|
54
|
+
doctype 5
|
55
|
+
html lang='en'
|
56
|
+
head
|
57
|
+
meta charset="utf-8"
|
58
|
+
scss:
|
59
|
+
+global-reset
|
60
|
+
body
|
61
|
+
h1 Welcome to Slim
|
62
|
+
"""
|
63
|
+
And the Server is running at "empty_app"
|
64
|
+
When I go to "/scss.html"
|
65
|
+
Then I should see "html, body, div"
|
66
|
+
When I go to "/sass.html"
|
67
|
+
Then I should see "html, body, div"
|
68
|
+
When I go to "/error.html"
|
69
|
+
Then I should see "Syntax error"
|
data/features/support/env.rb
CHANGED
@@ -6,5 +6,5 @@ PROJECT_ROOT_PATH = File.dirname(File.dirname(File.dirname(__FILE__)))
|
|
6
6
|
core_root = File.expand_path("../../../../middleman-core/lib/middleman-core", __FILE__)
|
7
7
|
|
8
8
|
require core_root
|
9
|
-
require File.join(core_root, "step_definitions")
|
10
|
-
require File.join(PROJECT_ROOT_PATH, 'lib', 'middleman-more')
|
9
|
+
require File.join(core_root, "step_definitions")
|
10
|
+
require File.join(PROJECT_ROOT_PATH, 'lib', 'middleman-more')
|
@@ -1 +1 @@
|
|
1
|
-
require "coffee-filter"
|
1
|
+
require "coffee-filter"
|
@@ -1 +1 @@
|
|
1
|
-
activate :directory_indexes
|
1
|
+
activate :directory_indexes
|
@@ -1 +1 @@
|
|
1
|
-
# activate :minify_css
|
1
|
+
# activate :minify_css
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
p{border: 1px solid #ff6600;}
|
@@ -1 +1 @@
|
|
1
|
-
set :layout, :inner
|
1
|
+
set :layout, :inner
|
@@ -1 +1 @@
|
|
1
|
-
# activate :relative_assets
|
1
|
+
# activate :relative_assets
|
@@ -0,0 +1 @@
|
|
1
|
+
/* Works with shared SASS assets from APPROOT/assets/stylesheets/_shared-asset.sass */
|
@@ -0,0 +1 @@
|
|
1
|
+
/* Works with shared SCSS assets from APPROOT/assets/stylesheets/_shared-asset.scss */
|
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
red
|
3
|
+
color: green
|
4
|
+
|
5
|
+
/* imports below
|
6
|
+
|
7
|
+
// SCSS with extension
|
8
|
+
@import "_shared-asset.scss"
|
9
|
+
|
10
|
+
// without extension
|
11
|
+
@import "shared-asset"
|
12
|
+
|
13
|
+
// imported from outside of local 'assets/' directory
|
14
|
+
@import "_partial.sass"
|
15
|
+
|
16
|
+
/* Works with shared SASS assets from external source directory */
|
@@ -4,4 +4,4 @@ page "/sub/fake.html", :proxy => "/proxied.html", :ignore => true
|
|
4
4
|
page "/sub/fake2.html", :proxy => "/proxied.html", :ignore => true
|
5
5
|
|
6
6
|
page "/directory-indexed/fake.html", :proxy => "/proxied.html", :ignore => true
|
7
|
-
page "/directory-indexed/fake2.html", :proxy => "/proxied.html", :ignore => true
|
7
|
+
page "/directory-indexed/fake2.html", :proxy => "/proxied.html", :ignore => true
|
@@ -1,2 +1,2 @@
|
|
1
1
|
activate :directory_indexes
|
2
|
-
page "/admin/*", :layout => :admin
|
2
|
+
page "/admin/*", :layout => :admin
|
data/lib/middleman-more.rb
CHANGED
@@ -6,15 +6,18 @@ $LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
|
|
6
6
|
|
7
7
|
module Middleman
|
8
8
|
module More
|
9
|
-
|
9
|
+
|
10
10
|
# Setup extension
|
11
11
|
class << self
|
12
12
|
|
13
13
|
# Once registered
|
14
14
|
def registered(app, options={})
|
15
|
-
###
|
15
|
+
###
|
16
16
|
# Setup Core Extensions
|
17
17
|
###
|
18
|
+
|
19
|
+
require "middleman-core/templates"
|
20
|
+
require "middleman-more/templates/smacss"
|
18
21
|
|
19
22
|
# Setup default helpers
|
20
23
|
require "middleman-more/core_extensions/default_helpers"
|
@@ -29,62 +32,62 @@ module Middleman
|
|
29
32
|
app.after_configuration do
|
30
33
|
# This is for making the tests work - since the tests
|
31
34
|
# don't completely reload middleman, I18n.load_path can get
|
32
|
-
# polluted with paths from other test app directories that don't
|
35
|
+
# polluted with paths from other test app directories that don't
|
33
36
|
# exist anymore.
|
34
37
|
::I18n.load_path.delete_if {|path| path =~ %r{tmp/aruba}}
|
35
38
|
::I18n.reload!
|
36
39
|
end
|
37
|
-
|
40
|
+
|
38
41
|
Middleman::Extensions.register(:i18n) do
|
39
42
|
require "middleman-more/core_extensions/i18n"
|
40
43
|
Middleman::CoreExtensions::Internationalization
|
41
44
|
end
|
42
|
-
|
45
|
+
|
43
46
|
# Compass framework
|
44
47
|
require "middleman-more/core_extensions/compass"
|
45
48
|
Middleman::Application.register Middleman::CoreExtensions::Compass
|
46
49
|
|
47
|
-
###
|
50
|
+
###
|
48
51
|
# Setup Optional Extensions
|
49
52
|
###
|
50
53
|
|
51
|
-
# CacheBuster adds a query string to assets in dynamic templates to
|
52
|
-
# browser caches failing to update to your new content.
|
54
|
+
# CacheBuster adds a query string to assets in dynamic templates to
|
55
|
+
# avoid browser caches failing to update to your new content.
|
53
56
|
Middleman::Extensions.register(:cache_buster) do
|
54
57
|
require "middleman-more/extensions/cache_buster"
|
55
|
-
Middleman::Extensions::CacheBuster
|
58
|
+
Middleman::Extensions::CacheBuster
|
56
59
|
end
|
57
60
|
|
58
61
|
# MinifyCss compresses CSS
|
59
62
|
Middleman::Extensions.register(:minify_css) do
|
60
63
|
require "middleman-more/extensions/minify_css"
|
61
|
-
Middleman::Extensions::MinifyCss
|
64
|
+
Middleman::Extensions::MinifyCss
|
62
65
|
end
|
63
66
|
|
64
67
|
# MinifyJavascript compresses JS
|
65
68
|
Middleman::Extensions.register(:minify_javascript) do
|
66
69
|
require "middleman-more/extensions/minify_javascript"
|
67
|
-
Middleman::Extensions::MinifyJavascript
|
70
|
+
Middleman::Extensions::MinifyJavascript
|
68
71
|
end
|
69
72
|
|
70
73
|
# RelativeAssets allow any asset path in dynamic templates to be either
|
71
74
|
# relative to the root of the project or use an absolute URL.
|
72
75
|
Middleman::Extensions.register(:relative_assets) do
|
73
76
|
require "middleman-more/extensions/relative_assets"
|
74
|
-
Middleman::Extensions::RelativeAssets
|
77
|
+
Middleman::Extensions::RelativeAssets
|
75
78
|
end
|
76
79
|
|
77
80
|
# GZIP assets and pages during build
|
78
81
|
Middleman::Extensions.register(:gzip) do
|
79
82
|
require "middleman-more/extensions/gzip"
|
80
|
-
Middleman::Extensions::Gzip
|
83
|
+
Middleman::Extensions::Gzip
|
81
84
|
end
|
82
85
|
|
83
86
|
# AssetHash appends a hash of the file contents to the assets filename
|
84
87
|
# to avoid browser caches failing to update to your new content.
|
85
88
|
Middleman::Extensions.register(:asset_hash) do
|
86
89
|
require "middleman-more/extensions/asset_hash"
|
87
|
-
Middleman::Extensions::AssetHash
|
90
|
+
Middleman::Extensions::AssetHash
|
88
91
|
end
|
89
92
|
|
90
93
|
# AssetHost allows you to setup multiple domains to host your static
|
@@ -92,13 +95,13 @@ module Middleman
|
|
92
95
|
# through each of the asset servers to better spread the load.
|
93
96
|
Middleman::Extensions.register(:asset_host) do
|
94
97
|
require "middleman-more/extensions/asset_host"
|
95
|
-
Middleman::Extensions::AssetHost
|
98
|
+
Middleman::Extensions::AssetHost
|
96
99
|
end
|
97
100
|
|
98
101
|
# Provide Apache-style index.html files for directories
|
99
102
|
Middleman::Extensions.register(:directory_indexes) do
|
100
103
|
require "middleman-more/extensions/directory_indexes"
|
101
|
-
Middleman::Extensions::DirectoryIndexes
|
104
|
+
Middleman::Extensions::DirectoryIndexes
|
102
105
|
end
|
103
106
|
|
104
107
|
# Lorem provides a handful of helpful prototyping methods to generate
|
@@ -1,24 +1,24 @@
|
|
1
1
|
module Middleman
|
2
2
|
module CoreExtensions
|
3
|
-
|
3
|
+
|
4
4
|
# Base helper to manipulate asset paths
|
5
5
|
module Assets
|
6
|
-
|
6
|
+
|
7
7
|
# Extension registered
|
8
8
|
class << self
|
9
9
|
def registered(app)
|
10
10
|
# Disable Padrino cache buster
|
11
11
|
app.set :asset_stamp, false
|
12
|
-
|
12
|
+
|
13
13
|
# Include helpers
|
14
14
|
app.send :include, InstanceMethod
|
15
15
|
end
|
16
16
|
alias :included :registered
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
# Methods to be mixed-in to Middleman::Application
|
20
20
|
module InstanceMethod
|
21
|
-
|
21
|
+
|
22
22
|
# Get the URL of an asset given a type/prefix
|
23
23
|
#
|
24
24
|
# @param [String] path The path (such as "photo.jpg")
|
@@ -17,12 +17,18 @@ module Middleman
|
|
17
17
|
# done with it
|
18
18
|
app.define_hook :compass_config
|
19
19
|
|
20
|
+
# Location of SASS/SCSS files external to source directory.
|
21
|
+
# @return [Array]
|
22
|
+
# set :sass_assets_paths, ["#{root}/assets/sass/", "/path/2/external/sass/repository/"]
|
23
|
+
app.set :sass_assets_paths, []
|
24
|
+
|
20
25
|
app.after_configuration do
|
21
26
|
::Compass.configuration do |config|
|
22
27
|
config.project_path = source_dir
|
23
28
|
config.environment = :development
|
24
|
-
config.cache_path =
|
29
|
+
config.cache_path = sass_cache_path
|
25
30
|
config.sass_dir = css_dir
|
31
|
+
config.additional_import_paths = sass_assets_paths
|
26
32
|
config.css_dir = css_dir
|
27
33
|
config.javascripts_dir = js_dir
|
28
34
|
config.fonts_dir = fonts_dir
|
@@ -65,16 +71,15 @@ module Middleman
|
|
65
71
|
|
66
72
|
end
|
67
73
|
|
68
|
-
# A Compass template for Tilt
|
74
|
+
# A Compass Sass template for Tilt, adding our options in
|
69
75
|
class CompassSassTemplate < ::Middleman::Renderers::Sass::SassPlusCSSFilenameTemplate
|
70
|
-
private
|
71
76
|
def sass_options
|
72
77
|
super.merge(::Compass.configuration.to_sass_engine_options)
|
73
78
|
end
|
74
79
|
end
|
75
80
|
|
81
|
+
# A Compass Scss template for Tilt, adding our options in
|
76
82
|
class CompassScssTemplate < ::Middleman::Renderers::Sass::ScssPlusCSSFilenameTemplate
|
77
|
-
private
|
78
83
|
def sass_options
|
79
84
|
super.merge(::Compass.configuration.to_sass_engine_options)
|
80
85
|
end
|