middleman 0.14.1 → 0.99.0.pre

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.
Files changed (44) hide show
  1. data/Rakefile +14 -18
  2. data/VERSION +1 -1
  3. data/features/automatic_image_sizes.feature +7 -7
  4. data/features/cache_buster.feature +10 -10
  5. data/features/minify_css.feature +10 -10
  6. data/features/minify_javascript.feature +6 -6
  7. data/features/step_definitions/asset_host_steps.rb +1 -0
  8. data/features/step_definitions/middleman_steps.rb +1 -1
  9. data/lib/middleman.rb +1 -18
  10. data/lib/middleman/assets.rb +33 -0
  11. data/lib/middleman/base.rb +25 -66
  12. data/lib/middleman/builder.rb +8 -4
  13. data/lib/middleman/features.rb +39 -0
  14. data/lib/middleman/features/asset_host.rb +16 -19
  15. data/lib/middleman/features/automatic_image_sizes.rb +24 -24
  16. data/lib/middleman/{fastimage.rb → features/automatic_image_sizes/fastimage.rb} +0 -0
  17. data/lib/middleman/features/cache_buster.rb +31 -38
  18. data/lib/middleman/{helpers.rb → features/default_helpers.rb} +8 -11
  19. data/lib/middleman/features/livereload.rb +19 -0
  20. data/lib/middleman/features/minify_css.rb +9 -0
  21. data/lib/middleman/features/minify_javascript.rb +15 -17
  22. data/lib/middleman/features/minify_javascript/rack.rb +31 -0
  23. data/lib/middleman/features/relative_assets.rb +29 -40
  24. data/lib/middleman/features/slickmap.rb +69 -70
  25. data/lib/middleman/features/smush_pngs.rb +8 -6
  26. data/lib/middleman/features/ugly_haml.rb +7 -0
  27. data/lib/middleman/renderers.rb +26 -0
  28. data/lib/middleman/renderers/coffee.rb +28 -0
  29. data/lib/middleman/renderers/haml.rb +2 -25
  30. data/lib/middleman/renderers/sass.rb +40 -87
  31. data/lib/middleman/template/init.rbt +30 -7
  32. data/middleman.gemspec +58 -69
  33. data/spec/builder_spec.rb +10 -4
  34. data/spec/fixtures/sample/views/stylesheets/site_scss.css.scss +1 -0
  35. data/spec/fixtures/sample/views/stylesheets/test_less.css.less +5 -0
  36. metadata +125 -113
  37. data/lib/middleman/rack/minify_css.rb +0 -25
  38. data/lib/middleman/rack/minify_javascript.rb +0 -25
  39. data/lib/middleman/rack/sprockets.rb +0 -61
  40. data/lib/middleman/renderers/builder.rb +0 -23
  41. data/lib/middleman/renderers/erb.rb +0 -24
  42. data/lib/middleman/renderers/less.rb +0 -23
  43. data/spec/fixtures/sample/public/javascripts/to-be-included.js +0 -1
  44. data/spec/fixtures/sample/views/javascripts/empty-with-include.js +0 -1
@@ -1,24 +1,21 @@
1
- class Middleman::Base
2
- after_feature_init do
3
- ::Compass.configuration do |config|
4
- config.asset_host(&self.asset_host)
1
+ class Middleman::Features::AssetHost
2
+ def initialize(app)
3
+ Middleman::Base.after_feature_init do
4
+ if Middleman::Base.asset_host.is_a?(Proc)
5
+ ::Compass.configuration.asset_host(&Middleman::Base.asset_host)
6
+ end
5
7
  end
6
- end if self.enabled?(:asset_host) && self.asset_host && self.asset_host.is_a?(Proc)
7
- end
8
-
9
- class << Middleman::Base
10
- alias_method :pre_asset_host_asset_url, :asset_url
11
- def asset_url(path, prefix="", request=nil)
12
- original_output = pre_asset_host_asset_url(path, prefix, request)
13
-
14
- valid_extensions = %w(.png .gif .jpg .jpeg .js .css)
15
8
 
16
- if !self.enabled?(:asset_host) || path.include?("://") || !valid_extensions.include?(File.extname(path)) || !self.asset_host || !self.asset_host.is_a?(Proc) || !self.asset_host.respond_to?(:call)
17
- return original_output
18
- end
9
+ Middleman::Assets.register :asset_host do |path, prefix, request|
10
+ original_output = Middleman::Assets.before(:asset_host, path, prefix, request)
19
11
 
20
- asset_prefix = self.asset_host.call(original_output)
21
-
22
- return File.join(asset_prefix, original_output)
12
+ valid_extensions = %w(.png .gif .jpg .jpeg .js .css)
13
+
14
+ asset_prefix = Middleman::Base.asset_host.call(original_output)
15
+
16
+ File.join(asset_prefix, original_output)
17
+ end
23
18
  end
24
19
  end
20
+
21
+ Middleman::Features.register :asset_host, Middleman::Features::AssetHost
@@ -1,31 +1,31 @@
1
- require "middleman/fastimage"
1
+ class Middleman::Features::AutomaticImageSizes
2
+ def initialize(app)
3
+ require "middleman/features/automatic_image_sizes/fastimage"
2
4
 
3
- class Middleman::Base
4
- alias_method :pre_automatic_image_tag, :image_tag
5
- helpers do
6
- def image_tag(path, params={})
7
- if !self.enabled?(:automatic_image_sizes)
8
- return pre_automatic_image_tag(path, params)
9
- end
10
-
11
- if (!params[:width] || !params[:height]) && !path.include?("://")
12
- params[:alt] ||= ""
13
- http_prefix = settings.http_images_path rescue settings.images_dir
5
+ Middleman::Base.send :alias_method, :pre_automatic_image_tag, :image_tag
6
+ Middleman::Base.helpers do
7
+ def image_tag(path, params={})
8
+ if (!params[:width] || !params[:height]) && !path.include?("://")
9
+ params[:alt] ||= ""
10
+ http_prefix = settings.http_images_path rescue settings.images_dir
14
11
 
15
- begin
16
- real_path = File.join(settings.public, settings.images_dir, path)
17
- if File.exists? real_path
18
- dimensions = Middleman::FastImage.size(real_path, :raise_on_failure => true)
19
- params[:width] ||= dimensions[0]
20
- params[:height] ||= dimensions[1]
12
+ begin
13
+ real_path = File.join(settings.public, settings.images_dir, path)
14
+ if File.exists? real_path
15
+ dimensions = Middleman::FastImage.size(real_path, :raise_on_failure => true)
16
+ params[:width] ||= dimensions[0]
17
+ params[:height] ||= dimensions[1]
18
+ end
19
+ rescue
21
20
  end
22
- rescue
23
- end
24
21
 
25
- capture_haml { haml_tag(:img, params.merge(:src => asset_url(path, http_prefix))) }
26
- else
27
- pre_automatic_image_tag(path, params)
22
+ capture_haml { haml_tag(:img, params.merge(:src => asset_url(path, http_prefix))) }
23
+ else
24
+ pre_automatic_image_tag(path, params)
25
+ end
28
26
  end
29
27
  end
30
28
  end
31
- end
29
+ end
30
+
31
+ Middleman::Features.register :automatic_image_sizes, Middleman::Features::AutomaticImageSizes
@@ -1,50 +1,43 @@
1
- class Middleman::Base
2
- after_feature_init do
3
- ::Compass.configuration do |config|
4
- if self.enabled?(:cache_buster)
1
+ class Middleman::Features::CacheBuster
2
+ def initialize(app)
3
+ Middleman::Assets.register :cache_buster do |path, prefix, request|
4
+ http_path = Middleman::Assets.before(:cache_buster, path, prefix, request)
5
+
6
+ if http_path.include?("://") || !%w(.css .png .jpg .js .gif).include?(File.extname(http_path))
7
+ http_path
8
+ else
9
+ begin
10
+ prefix = Middleman::Base.images_dir if prefix == Middleman::Base.http_images_path
11
+ rescue
12
+ end
13
+
14
+ real_path_static = File.join(Middleman::Base.public, prefix, path)
15
+
16
+ if File.readable?(real_path_static)
17
+ http_path << "?" + File.mtime(real_path_static).strftime("%s")
18
+ elsif Middleman::Base.environment == "build"
19
+ real_path_dynamic = File.join(Middleman::Base.root, Middleman::Base.build_dir, prefix, path)
20
+ http_path << "?" + File.mtime(real_path_dynamic).strftime("%s") if File.readable?(real_path_dynamic)
21
+ end
22
+
23
+ http_path
24
+ end
25
+ end
26
+
27
+ Middleman::Base.after_feature_init do
28
+ ::Compass.configuration do |config|
5
29
  config.asset_cache_buster do |path, real_path|
6
30
  real_path = real_path.path if real_path.is_a? File
7
- real_path = real_path.gsub(File.join(self.root, self.build_dir), self.public)
31
+ real_path = real_path.gsub(File.join(Middleman::Base.root, Middleman::Base.build_dir), Middleman::Base.public)
8
32
  if File.readable?(real_path)
9
33
  File.mtime(real_path).strftime("%s")
10
34
  else
11
35
  $stderr.puts "WARNING: '#{File.basename(path)}' was not found (or cannot be read) in #{File.dirname(real_path)}"
12
36
  end
13
37
  end
14
- else
15
- config.asset_cache_buster { false }
16
38
  end
17
39
  end
18
-
19
- ::Compass.configure_sass_plugin!
20
40
  end
21
41
  end
22
-
23
- class << Middleman::Base
24
- alias_method :pre_cache_buster_asset_url, :asset_url
25
- def asset_url(path, prefix="", request=nil)
26
- http_path = pre_cache_buster_asset_url(path, prefix, request)
27
-
28
- return http_path unless self.enabled?(:cache_buster)
29
-
30
- if http_path.include?("://") || !%w(.css .png .jpg .js .gif).include?(File.extname(http_path))
31
- http_path
32
- else
33
- begin
34
- prefix = self.images_dir if prefix == self.http_images_path
35
- rescue
36
- end
37
-
38
- real_path_static = File.join(self.public, prefix, path)
39
-
40
- if File.readable?(real_path_static)
41
- http_path << "?" + File.mtime(real_path_static).strftime("%s")
42
- elsif Middleman::Base.environment == "build"
43
- real_path_dynamic = File.join(self.root, self.build_dir, prefix, path)
44
- http_path << "?" + File.mtime(real_path_dynamic).strftime("%s") if File.readable?(real_path_dynamic)
45
- end
46
-
47
- http_path
48
- end
49
- end
50
- end
42
+
43
+ Middleman::Features.register :cache_buster, Middleman::Features::CacheBuster
@@ -1,15 +1,9 @@
1
- module Middleman
2
- class Base
3
- def self.asset_url(path, prefix="", request=nil)
4
- path.include?("://") ? path : File.join(self.http_prefix || "/", prefix, path)
5
- end
1
+ class Middleman::Features::DefaultHelpers
2
+ def initialize(app)
3
+ Middleman::Base.helpers Helpers
6
4
  end
7
5
 
8
6
  module Helpers
9
- def haml_partial(name, options = {})
10
- haml name.to_sym, options.merge(:layout => false)
11
- end
12
-
13
7
  def auto_stylesheet_link_tag(separator="/")
14
8
  path = request.path_info.dup
15
9
  path << self.class.index_file if path.match(%r{/$})
@@ -19,8 +13,9 @@ module Middleman
19
13
 
20
14
  css_file = File.join(self.class.public, self.class.css_dir, "#{path}.css")
21
15
  sass_file = File.join(self.class.views, self.class.css_dir, "#{path}.css.sass")
16
+ scss_file = File.join(self.class.views, self.class.css_dir, "#{path}.css.scss")
22
17
 
23
- if File.exists?(css_file) || File.exists?(sass_file)
18
+ if File.exists?(css_file) || File.exists?(sass_file) || File.exists?(scss_file)
24
19
  stylesheet_link_tag "#{path}.css"
25
20
  end
26
21
  end
@@ -38,7 +33,7 @@ module Middleman
38
33
  end
39
34
 
40
35
  def asset_url(path, prefix="")
41
- self.class.asset_url(path, prefix, request)
36
+ Middleman::Assets.get_url(path, prefix, request)
42
37
  end
43
38
 
44
39
  def link_to(title, url="#", params={})
@@ -69,3 +64,5 @@ module Middleman
69
64
  end
70
65
  end
71
66
  end
67
+
68
+ Middleman::Features.register :default_helpers, Middleman::Features::DefaultHelpers, { :auto_enable => true }
@@ -0,0 +1,19 @@
1
+ class Middleman::Features::LiveReload
2
+ def initialize(app)
3
+ return unless Middleman::Base.environment == :development
4
+
5
+ begin
6
+ require 'livereload'
7
+ rescue LoadError
8
+ puts "Livereload not available. Install it with: gem install livereload"
9
+ end
10
+
11
+ new_config = ::LiveReload::Config.new do |config|
12
+ config.exts = %w(haml sass scss coffee less builder)
13
+ end
14
+
15
+ ::LiveReload.run [Middleman::Base.public, Middleman::Base.views], new_config
16
+ end
17
+ end
18
+
19
+ Middleman::Features.register :livereload, Middleman::Features::LiveReload
@@ -0,0 +1,9 @@
1
+ class Middleman::Features::MinifyCSS
2
+ def initialize(app)
3
+ Middleman::Base.after_feature_init do
4
+ ::Compass.configuration.output_style = :compressed
5
+ end
6
+ end
7
+ end
8
+
9
+ Middleman::Features.register :minify_css, Middleman::Features::MinifyCSS
@@ -1,22 +1,20 @@
1
- module Middleman
2
- module Minified
1
+ class Middleman::Features::MinifyJavascript
2
+ def initialize(app)
3
+ Haml::Javascript.send :include, ::Haml::Filters::Base
4
+
5
+ require "middleman/features/minify_javascript/rack"
6
+ app.use Middleman::Rack::MinifyJavascript
7
+ end
8
+
9
+ module Haml
3
10
  module Javascript
4
- include ::Haml::Filters::Base
5
11
  def render_with_options(text, options)
6
- if Middleman::Base.respond_to?(:minify_javascript?) && Middleman::Base.minify_javascript?
7
- compressor = ::YUI::JavaScriptCompressor.new(:munge => true)
8
- data = compressor.compress(text)
9
- %Q{<script type=#{options[:attr_wrapper]}text/javascript#{options[:attr_wrapper]}>#{data.chomp}</script>}
10
- else
11
- <<END
12
- <script type=#{options[:attr_wrapper]}text/javascript#{options[:attr_wrapper]}>
13
- //<![CDATA[
14
- #{text.rstrip.gsub("\n", "\n ")}
15
- //]]>
16
- </script>
17
- END
18
- end
12
+ compressor = ::YUI::JavaScriptCompressor.new(:munge => true)
13
+ data = compressor.compress(text)
14
+ %Q{<script type=#{options[:attr_wrapper]}text/javascript#{options[:attr_wrapper]}>#{data.chomp}</script>}
19
15
  end
20
16
  end
21
17
  end
22
- end
18
+ end
19
+
20
+ Middleman::Features.register :minify_javascript, Middleman::Features::MinifyJavascript
@@ -0,0 +1,31 @@
1
+ begin
2
+ require "yui/compressor"
3
+ rescue LoadError
4
+ puts "YUI-Compressor not available. Install it with: gem install yui-compressor"
5
+ end
6
+
7
+ module Middleman
8
+ module Rack
9
+
10
+ class MinifyJavascript
11
+ def initialize(app, options={})
12
+ @app = app
13
+ end
14
+
15
+ def call(env)
16
+ status, headers, response = @app.call(env)
17
+
18
+ if env["PATH_INFO"].match(/\.js$/)
19
+ compressor = ::YUI::JavaScriptCompressor.new(:munge => true)
20
+
21
+ uncompressed_source = response.is_a?(::Rack::File) ? File.read(response.path) : response
22
+ response = compressor.compress(uncompressed_source)
23
+ headers["Content-Length"] = ::Rack::Utils.bytesize(response).to_s
24
+ end
25
+
26
+ [status, headers, response]
27
+ end
28
+ end
29
+
30
+ end
31
+ end
@@ -1,46 +1,35 @@
1
- class Middleman::Base
2
- after_feature_init do
3
- ::Compass.configuration do |config|
4
- config.relative_assets = Proc.new do
5
- Middleman::Base.enabled?(:relative_assets)
1
+ class Middleman::Features::RelativeAssets
2
+ def initialize(app)
3
+ ::Compass.configuration.relative_assets = true
4
+
5
+ Middleman::Assets.register :relative_assets do |path, prefix, request|
6
+ begin
7
+ prefix = Middleman::Base.images_dir if prefix == Middleman::Base.http_images_path
8
+ rescue
6
9
  end
7
- end
8
-
9
- ::Compass.configure_sass_plugin!
10
- end
11
- end
12
-
13
- class << Middleman::Base
14
- alias_method :pre_relative_asset_url, :asset_url
15
- def asset_url(path, prefix="", request=nil)
16
- if !self.enabled?(:relative_assets)
17
- return pre_relative_asset_url(path, prefix, request)
18
- end
19
-
20
- begin
21
- prefix = self.images_dir if prefix == self.http_images_path
22
- rescue
23
- end
24
10
 
25
- if path.include?("://")
26
- pre_relative_asset_url(path, prefix, request)
27
- elsif path[0,1] == "/"
28
- path
29
- else
30
- path = File.join(prefix, path) if prefix.length > 0
31
- request_path = request.path_info.dup
32
- request_path << self.index_file if path.match(%r{/$})
33
- request_path.gsub!(%r{^/}, '')
34
- parts = request_path.split('/')
35
-
36
- if parts.length > 1
37
- arry = []
38
- (parts.length - 1).times { arry << ".." }
39
- arry << path
40
- File.join(*arry)
41
- else
11
+ if path.include?("://")
12
+ Middleman::Assets.before(:relative_assets, path, prefix, request)
13
+ elsif path[0,1] == "/"
42
14
  path
15
+ else
16
+ path = File.join(prefix, path) if prefix.length > 0
17
+ request_path = request.path_info.dup
18
+ request_path << Middleman::Base.index_file if path.match(%r{/$})
19
+ request_path.gsub!(%r{^/}, '')
20
+ parts = request_path.split('/')
21
+
22
+ if parts.length > 1
23
+ arry = []
24
+ (parts.length - 1).times { arry << ".." }
25
+ arry << path
26
+ File.join(*arry)
27
+ else
28
+ path
29
+ end
43
30
  end
44
31
  end
45
32
  end
46
- end
33
+ end
34
+
35
+ Middleman::Features.register :relative_assets, Middleman::Features::RelativeAssets
@@ -1,92 +1,91 @@
1
- begin
2
- require 'slickmap'
3
- ::Compass.configure_sass_plugin!
4
- rescue LoadError
5
- puts "Slickmap not available. Install it with: gem install compass-slickmap"
6
- end
1
+ Entry = Struct.new(:dir, :children)
7
2
 
8
- if Middleman::Base.environment == "build"
9
- Middleman::Builder.template :slickmap, "sitemap.html", "sitemap.html"
10
- end
3
+ class Middleman::Features::Slickmap
4
+ def initialize(app)
5
+ require 'slickmap'
11
6
 
12
- Entry = Struct.new(:dir, :children)
7
+ if Middleman::Base.environment == "build"
8
+ Middleman::Builder.template :slickmap, "sitemap.html", "sitemap.html"
9
+ end
13
10
 
14
- class Middleman::Base
15
- def build_sitemap(&block)
16
- @@utility = []
17
- [recurse_sitemap(Middleman::Base.views, &block), @@utility]
18
- end
19
-
20
- def recurse_sitemap(path, &block)
21
- bad_ext = path.split('.html')[1]
22
- path = path.gsub(bad_ext, '') if bad_ext
23
- entry = Entry.new(path, [])
11
+ def build_sitemap(&block)
12
+ @@utility = []
13
+ [recurse_sitemap(Middleman::Base.views, &block), @@utility]
14
+ end
24
15
 
25
- #no "." or ".." dirs
26
- Dir[File.join(path, "*")].each do |e|
27
- next if !File.directory?(e) && !e.include?(".html")
28
- if File.directory?(e)
29
- entry.children << recurse_sitemap(e, &block)
30
- elsif block_given?
31
- how_to_handle = block.call(e)
32
- if how_to_handle == :valid
16
+ def recurse_sitemap(path, &block)
17
+ bad_ext = path.split('.html')[1]
18
+ path = path.gsub(bad_ext, '') if bad_ext
19
+ entry = Entry.new(path, [])
20
+
21
+ #no "." or ".." dirs
22
+ Dir[File.join(path, "*")].each do |e|
23
+ next if !File.directory?(e) && !e.include?(".html")
24
+ if File.directory?(e)
33
25
  entry.children << recurse_sitemap(e, &block)
34
- elsif how_to_handle == :utility
35
- bad_ext = e.split('.html')[1]
36
- e = e.gsub(bad_ext, '') if bad_ext
37
- @@utility << e.gsub(Middleman::Base.views + "/", '')
26
+ elsif block_given?
27
+ how_to_handle = block.call(e)
28
+ if how_to_handle == :valid
29
+ entry.children << recurse_sitemap(e, &block)
30
+ elsif how_to_handle == :utility
31
+ bad_ext = e.split('.html')[1]
32
+ e = e.gsub(bad_ext, '') if bad_ext
33
+ @@utility << e.gsub(Middleman::Base.views + "/", '')
34
+ end
38
35
  end
39
36
  end
40
- end
41
37
 
42
- entry
43
- end
44
-
45
- helpers do
46
- def sitemap_node(n, first=false)
47
- if n.children.length < 1
48
- if !first && File.extname(n.dir).length > 0
49
- haml_tag :li do
50
- path = n.dir.gsub(self.class.views, '')
51
- haml_concat link_to(File.basename(path), path)
52
- end
53
- end
54
- else
55
- haml_tag(:li, :id => first ? "home" : nil) do
56
- if first
57
- haml_concat link_to("Homepage", "/" + self.class.index_file)
58
- else
59
- # we are a dir
60
- index = n.children.find { |c| c.dir.include?(self.class.index_file) }
61
- haml_concat link_to(index.dir.gsub(self.class.views + "/", '').gsub("/" + File.basename(index.dir), '').capitalize, index.dir.gsub(self.class.views, ''))
38
+ entry
39
+ end
40
+
41
+ Middleman::Base.helpers do
42
+ def sitemap_node(n, first=false)
43
+ if n.children.length < 1
44
+ if !first && File.extname(n.dir).length > 0
45
+ haml_tag :li do
46
+ path = n.dir.gsub(self.class.views, '')
47
+ haml_concat link_to(File.basename(path), path)
48
+ end
62
49
  end
63
-
64
- other_children = n.children.select { |c| !c.dir.include?(self.class.index_file) }
65
- if other_children.length > 0
50
+ else
51
+ haml_tag(:li, :id => first ? "home" : nil) do
66
52
  if first
67
- other_children.each { |i| sitemap_node(i) }
53
+ haml_concat link_to("Homepage", "/" + self.class.index_file)
68
54
  else
69
- haml_tag :ul do
55
+ # we are a dir
56
+ index = n.children.find { |c| c.dir.include?(self.class.index_file) }
57
+ haml_concat link_to(index.dir.gsub(self.class.views + "/", '').gsub("/" + File.basename(index.dir), '').capitalize, index.dir.gsub(self.class.views, ''))
58
+ end
59
+
60
+ other_children = n.children.select { |c| !c.dir.include?(self.class.index_file) }
61
+ if other_children.length > 0
62
+ if first
70
63
  other_children.each { |i| sitemap_node(i) }
64
+ else
65
+ haml_tag :ul do
66
+ other_children.each { |i| sitemap_node(i) }
67
+ end
71
68
  end
72
69
  end
73
- end
74
- end
70
+ end
71
+ end
75
72
  end
76
73
  end
77
- end
78
-
79
- get '/sitemap.html' do
80
- # Return :utility to put it util top menu. False to ignore
81
- @tree, @utility = build_sitemap do |file_name|
82
- :valid
74
+
75
+ Middleman::Base.get '/sitemap.html' do
76
+ # Return :utility to put it util top menu. False to ignore
77
+ @tree, @utility = build_sitemap do |file_name|
78
+ :valid
79
+ end
80
+ haml :sitemap, :layout => false
83
81
  end
84
- haml :sitemap, :layout => false
85
- end
86
82
 
87
- use_in_file_templates!
83
+ Middleman::Base.use_in_file_templates!
84
+ end
88
85
  end
89
86
 
87
+ Middleman::Features.register :slickmap, Middleman::Features::Slickmap
88
+
90
89
  __END__
91
90
 
92
91
  @@ sitemap
@@ -97,7 +96,7 @@ __END__
97
96
  %title Sitemap
98
97
  %style{ :type => "text/css" }
99
98
  :sass
100
- @import slickmap.sass
99
+ @import "slickmap"
101
100
  +slickmap
102
101
  :javascript
103
102
  window.onload = function() {