middleman 0.9.17 → 0.9.18

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.
data/Rakefile CHANGED
@@ -11,6 +11,8 @@ begin
11
11
  gem.authors = ["Thomas Reynolds"]
12
12
  gem.rubyforge_project = "middleman"
13
13
  gem.executables = %w(mm-init mm-build mm-server)
14
+ gem.add_dependency("thin")
15
+ gem.add_dependency("shotgun")
14
16
  gem.add_dependency("templater")
15
17
  gem.add_dependency("sprockets")
16
18
  gem.add_dependency("sinatra")
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.17
1
+ 0.9.18
data/bin/mm-build CHANGED
@@ -6,7 +6,7 @@ ENV['MM_ENV'] = "build"
6
6
  require File.join(File.dirname(__FILE__), "..", "lib", "middleman")
7
7
  require 'middleman/builder'
8
8
 
9
- Middleman::Base.init!
9
+ #Middleman::Base.init!
10
10
  Middleman::Builder.init!
11
11
 
12
12
  Middleman::Generators.run_cli(Dir.pwd, 'mm-build', 1, %w(build --force).concat(ARGV))
data/bin/mm-server CHANGED
@@ -5,15 +5,39 @@ require 'optparse'
5
5
  # Require Middleman
6
6
  require File.join(File.dirname(__FILE__), '..', 'lib', 'middleman')
7
7
 
8
+ env = ENV['MM_ENV'] || ENV['RACK_ENV'] || 'development'
9
+ options = { :Port => 4567, :AccessLog => [] }
10
+
11
+ OptionParser.new { |opts|
12
+ opts.banner = "Usage: mm-server [rack options]"
13
+ opts.separator ""
14
+ opts.separator "Rack options:"
15
+ opts.on("-p", "--port PORT", "use PORT (default: 4567)") { |port|
16
+ options[:Port] = port
17
+ }
18
+ opts.on("-E", "--env ENVIRONMENT", "use ENVIRONMENT for defaults (default: development)") { |e|
19
+ env = e
20
+ }
21
+ opts.on("--debug", "Debug mode") {
22
+ ::Middleman::Base.set :logging, true
23
+ }
24
+
25
+ opts.parse! ARGV
26
+ }
27
+
28
+ ENV['RACK_ENV'] = env
29
+
8
30
  class Middleman::Base
9
31
  set :root, Dir.pwd
32
+ end
33
+
34
+ require 'shotgun'
35
+ config = File.join(File.dirname(__FILE__), '..', 'lib', 'middleman', 'config.ru')
36
+ app = Shotgun.new(config, lambda { |inner_app| Middleman::Base })
10
37
 
11
- OptionParser.new { |op|
12
- op.on('-e env') { |val| set :environment, val.to_sym }
13
- op.on('-s server') { |val| set :server, val }
14
- op.on('-p port') { |val| set :port, val.to_i }
15
- }.parse!(ARGV.dup)
38
+ require 'thin'
39
+ Thin::Logging.silent = true
16
40
 
17
- # Start Middleman
18
- run!
41
+ Rack::Handler::Thin.run app, options do |inst|
42
+ puts "== The Middleman is standing watch on port #{options[:Port]}"
19
43
  end
@@ -8,49 +8,44 @@ module Middleman
8
8
  class Base < Sinatra::Base
9
9
  set :app_file, __FILE__
10
10
  set :root, Dir.pwd
11
+ set :reload, false
12
+ set :logging, false
11
13
  set :environment, ENV['MM_ENV'] || :development
12
- set :supported_formats, ["erb"]
14
+ set :supported_formats, %w(erb)
13
15
  set :index_file, "index.html"
14
16
  set :js_dir, "javascripts"
15
17
  set :css_dir, "stylesheets"
16
18
  set :images_dir, "images"
17
19
  set :build_dir, "build"
18
20
  set :http_prefix, "/"
19
-
20
- # Features enabled by default
21
- enable :compass
22
- enable :content_for
23
- enable :sprockets
24
21
 
25
- # Features disabled by default
26
- disable :slickmap
27
- disable :cache_buster
28
- disable :minify_css
29
- disable :minify_javascript
30
- disable :relative_assets
31
- disable :maruku
32
- disable :smush_pngs
22
+ use Rack::ConditionalGet if environment == :development
23
+
24
+ @@features = []
33
25
 
34
- # Default build features
35
- configure :build do
36
- enable :minify_css
37
- enable :minify_javascript
38
- enable :cache_buster
26
+ def self.enable(*opts)
27
+ @@features << opts
28
+ super
39
29
  end
40
-
30
+
31
+ def self.disable(*opts)
32
+ @@features -= opts
33
+ super
34
+ end
35
+
41
36
  # Rack helper for adding mime-types during local preview
42
37
  def self.mime(ext, type)
43
38
  ext = ".#{ext}" unless ext.to_s[0] == ?.
44
- Rack::Mime::MIME_TYPES[ext.to_s] = type
39
+ ::Rack::Mime::MIME_TYPES[ext.to_s] = type
45
40
  end
46
-
41
+
47
42
  # Convenience function to discover if a tempalte exists for the requested renderer (haml, sass, etc)
48
43
  def template_exists?(path, renderer=nil)
49
44
  template_path = path.dup
50
45
  template_path << ".#{renderer}" if renderer
51
46
  File.exists? File.join(options.views, template_path)
52
47
  end
53
-
48
+
54
49
  # Base case renderer (do nothing), Should be over-ridden
55
50
  module StaticRender
56
51
  def render_path(path)
@@ -62,84 +57,74 @@ module Middleman
62
57
  end
63
58
  end
64
59
  include StaticRender
65
-
66
- # Disable static asset handling in Rack, so we can customize it here
67
- disable :static
68
-
60
+
69
61
  # This will match all requests not overridden in the project's init.rb
70
62
  not_found do
71
63
  # Normalize the path and add index if we're looking at a directory
72
64
  path = request.path
73
65
  path << options.index_file if path.match(%r{/$})
74
66
  path.gsub!(%r{^/}, '')
75
-
67
+
76
68
  # If the enabled renderers succeed, return the content, mime-type and an HTTP 200
77
69
  if content = render_path(path)
78
70
  content_type media_type(File.extname(path)), :charset => 'utf-8'
79
71
  status 200
80
72
  content
81
73
  else
82
- # If no template handler renders the template, return the static file if it exists
83
- path = File.join(options.public, request.path)
84
- if !File.directory?(path) && File.exists?(path)
85
- status 200
86
- send_file(path)
87
- else
88
- status 404
89
- end
74
+ status 404
90
75
  end
91
76
  end
92
-
93
- # Copy, pasted & edited version of the setup in Sinatra.
94
- # Basically just changed the app's name and call out feature & configuration init.
95
- def self.run!(options={}, &block)
96
- init!
97
- set options
98
- handler = detect_rack_handler
99
- handler_name = handler.name.gsub(/.*::/, '')
100
- puts "== The Middleman is standing watch on port #{port}"
101
- handler.run self, :Host => host, :Port => port do |server|
102
- trap(:INT) do
103
- ## Use thins' hard #stop! if available, otherwise just #stop
104
- server.respond_to?(:stop!) ? server.stop! : server.stop
105
- puts "\n== The Middleman has ended his patrol"
106
- end
107
-
108
- if block_given?
109
- block.call
110
- ## Use thins' hard #stop! if available, otherwise just #stop
111
- server.respond_to?(:stop!) ? server.stop! : server.stop
112
- end
113
- end
114
- rescue Errno::EADDRINUSE => e
115
- puts "== The Middleman is already standing watch on port #{port}!"
77
+ end
78
+ end
79
+
80
+ # Haml is required & includes helpers
81
+ require "middleman/haml"
82
+ require "middleman/sass"
83
+ require 'sinatra/content_for'
84
+ require 'middleman/helpers'
85
+ require 'middleman/rack/static'
86
+ require 'middleman/rack/sprockets'
87
+
88
+ class Middleman::Base
89
+ helpers Sinatra::ContentFor
90
+ helpers Middleman::Helpers
91
+
92
+ use Middleman::Rack::Static
93
+ use Middleman::Rack::Sprockets
94
+
95
+ enable :compass
96
+
97
+ # Features disabled by default
98
+ disable :slickmap
99
+ disable :cache_buster
100
+ disable :minify_css
101
+ disable :minify_javascript
102
+ disable :relative_assets
103
+ disable :maruku
104
+ disable :smush_pngs
105
+
106
+ # Default build features
107
+ configure :build do
108
+ enable :minify_css
109
+ enable :minify_javascript
110
+ enable :cache_buster
111
+ end
112
+
113
+ def self.new(*args, &bk)
114
+ # Check for and evaluate local configuration
115
+ local_config = File.join(self.root, "init.rb")
116
+ if File.exists? local_config
117
+ puts "== Reading: Local config" if logging?
118
+ class_eval File.read(local_config)
116
119
  end
117
120
 
118
- # Require the features for this project
119
- def self.init!(quiet=false)
120
- # Built-in helpers
121
- require 'middleman/helpers'
122
- helpers Middleman::Helpers
123
-
124
- # Haml is required & includes helpers
125
- require "middleman/features/haml"
126
-
127
- # Check for and evaluate local configuration
128
- local_config = File.join(self.root, "init.rb")
129
- if File.exists? local_config
130
- puts "== Local config at: #{local_config}" unless quiet
131
- class_eval File.read(local_config)
132
- end
133
-
134
- # loop over enabled feature
135
- features_path = File.expand_path("features/*.rb", File.dirname(__FILE__))
136
- Dir[features_path].each do |f|
137
- feature_name = File.basename(f, '.rb')
138
- option_name = :"#{feature_name}?"
139
- if respond_to?(option_name) && send(option_name) === true
140
- require "middleman/features/#{feature_name}"
141
- end
142
- end
121
+ # loop over enabled feature
122
+ @@features.flatten.each do |feature_name|
123
+ next unless send(:"#{feature_name}?")
124
+ puts "== Enabling: #{feature_name.capitalize}" if logging?
125
+ require "middleman/features/#{feature_name}"
143
126
  end
127
+
128
+ super
144
129
  end
145
130
  end
@@ -1,6 +1,5 @@
1
1
  require 'templater'
2
2
  require 'middleman/templater+dynamic_renderer.rb'
3
- require 'rack/test' # Use Rack::Test to access Sinatra without starting up a full server
4
3
 
5
4
  # Placeholder for any methods the builder needs to abstract to allow feature integration
6
5
  module Middleman
@@ -37,9 +36,12 @@ module Middleman
37
36
  end
38
37
 
39
38
  def self.init!
40
- glob! File.basename(Middleman::Base.public), Middleman::Base.supported_formats
39
+ glob! File.basename(Middleman::Base.public), []
41
40
  glob! File.basename(Middleman::Base.views), Middleman::Base.supported_formats
42
41
  end
42
+
43
+ def after_run
44
+ end
43
45
  end
44
46
 
45
47
  module Generators
@@ -0,0 +1,2 @@
1
+ require 'middleman'
2
+ run Middleman::Base
@@ -1,15 +1,13 @@
1
- class Middleman::Base
1
+ class << Middleman::Base
2
2
  alias_method :pre_cache_buster_asset_url, :asset_url
3
- helpers do
4
- def asset_url(path, prefix="")
5
- http_path = pre_cache_buster_asset_url(path, prefix)
6
- if http_path.include?("://") || !%w(.css .png .jpg .js .gif).include?(File.extname(http_path))
7
- http_path
8
- else
9
- real_path = File.join(self.class.environment == "build" ? options.build_dir : options.public, prefix, path)
10
- http_path << "?" + File.mtime(real_path).strftime("%s") if File.readable?(real_path)
11
- http_path
12
- end
3
+ def asset_url(path, prefix="", request=nil)
4
+ http_path = pre_cache_buster_asset_url(path, prefix, request)
5
+ if http_path.include?("://") || !%w(.css .png .jpg .js .gif).include?(File.extname(http_path))
6
+ http_path
7
+ else
8
+ real_path = File.join(self.public, prefix, path)
9
+ http_path << "?" + File.mtime(real_path).strftime("%s") if File.readable?(real_path)
10
+ http_path
13
11
  end
14
12
  end
15
13
  end
@@ -1,5 +1,3 @@
1
- require 'compass'
2
-
3
1
  class Middleman::Base
4
2
  configure do
5
3
  ::Compass.configuration do |config|
@@ -12,20 +12,24 @@ module Middleman
12
12
  END
13
13
  end
14
14
  end
15
+ end
15
16
 
16
- module StaticJavascript
17
- def render_path(path)
18
- if template_exists?(path, :js)
19
- compressor = YUI::JavaScriptCompressor.new(:munge => true)
20
- compressor.compress(super)
21
- else
22
- super
17
+ class Builder
18
+ alias_method :pre_yui_after_run, :after_run
19
+ def after_run
20
+ pre_yui_after_run
21
+
22
+ compressor = ::YUI::JavaScriptCompressor.new(:munge => true)
23
+ Dir[File.join(Middleman::Base.build_dir, Middleman::Base.js_dir, "**", "*.js")].each do |path|
24
+ lines = IO.readlines(path)
25
+ if lines.length > 1
26
+ compressed_js = compressor.compress(lines.join($/))
27
+ File.open(path, 'w') { |f| f.write(compressed_js) }
28
+ say "<%= color('#{"[COMPRESSED]".rjust(12)}', :yellow) %> " + path.gsub(Middleman::Base.build_dir+"/", '')
23
29
  end
24
30
  end
25
31
  end
26
- end
27
-
28
- class Base
29
- include Middleman::Minified::StaticJavascript
30
- end
31
- end
32
+ end if Middleman::Base.environment == "build"
33
+ end
34
+
35
+ Middleman::Base.supported_formats << "js"
@@ -1,30 +1,24 @@
1
- class Middleman::Base
2
- if compass?
3
- configure do
4
- ::Compass.configuration do |config|
5
- config.relative_assets = true
6
- end
7
- end
8
- end
9
-
10
- helpers do
11
- alias_method :pre_relative_asset_url, :asset_url
12
- def asset_url(path, prefix="")
13
- path = pre_relative_asset_url(path, prefix)
14
- if path.include?("://")
15
- path
1
+ ::Compass.configuration do |config|
2
+ config.relative_assets = true
3
+ end
4
+
5
+ class << Middleman::Base
6
+ alias_method :pre_relative_asset_url, :asset_url
7
+ def asset_url(path, prefix="", request=nil)
8
+ path = pre_relative_asset_url(path, prefix, request)
9
+ if path.include?("://")
10
+ path
11
+ else
12
+ path = path[1,path.length-1] if path[0,1] == '/'
13
+ request_path = request.path_info.dup
14
+ request_path << self.class.index_file if path.match(%r{/$})
15
+ request_path.gsub!(%r{^/}, '')
16
+ parts = request_path.split('/')
17
+
18
+ if parts.length > 1
19
+ "../" * (parts.length - 1) + path
16
20
  else
17
- path = path[1,path.length-1] if path[0,1] == '/'
18
- request_path = request.path_info.dup
19
- request_path << options.index_file if path.match(%r{/$})
20
- request_path.gsub!(%r{^/}, '')
21
- parts = request_path.split('/')
22
-
23
- if parts.length > 1
24
- "../" * (parts.length - 1) + path
25
- else
26
- path
27
- end
21
+ path
28
22
  end
29
23
  end
30
24
  end
@@ -1,4 +1,4 @@
1
- require 'haml'
1
+ require "haml"
2
2
 
3
3
  module Middleman
4
4
  module Haml
@@ -62,71 +62,8 @@ module Middleman
62
62
  end
63
63
  end
64
64
  end
65
-
66
- module Sass
67
- def self.included(base)
68
- base.supported_formats << "sass"
69
- end
70
-
71
- def render_path(path)
72
- if template_exists?(path, :sass)
73
- begin
74
- static_version = options.public + request.path_info
75
- send_file(static_version) if File.exists? static_version
76
-
77
- location_of_sass_file = options.environment == "build" ? File.join(options.build_dir, options.css_dir) : "public"
78
- css_filename = File.join(Dir.pwd, location_of_sass_file) + request.path_info
79
- sass(path.to_sym, Compass.sass_engine_options.merge({ :css_filename => css_filename }))
80
- rescue Exception => e
81
- sass_exception_string(e)
82
- end
83
- else
84
- super
85
- end
86
- end
87
-
88
- # Handle Sass errors
89
- def sass_exception_string(e)
90
- e_string = "#{e.class}: #{e.message}"
91
-
92
- if e.is_a? ::Sass::SyntaxError
93
- e_string << "\non line #{e.sass_line}"
94
-
95
- if e.sass_filename
96
- e_string << " of #{e.sass_filename}"
97
-
98
- if File.exists?(e.sass_filename)
99
- e_string << "\n\n"
100
-
101
- min = [e.sass_line - 5, 0].max
102
- begin
103
- File.read(e.sass_filename).rstrip.split("\n")[
104
- min .. e.sass_line + 5
105
- ].each_with_index do |line, i|
106
- e_string << "#{min + i + 1}: #{line}\n"
107
- end
108
- rescue
109
- e_string << "Couldn't read sass file: #{e.sass_filename}"
110
- end
111
- end
112
- end
113
- end
114
- <<END
115
- /*
116
- #{e_string}
117
-
118
- Backtrace:\n#{e.backtrace.join("\n")}
119
- */
120
- body:before {
121
- white-space: pre;
122
- font-family: monospace;
123
- content: "#{e_string.gsub('"', '\"').gsub("\n", '\\A ')}"; }
124
- END
125
- end
126
- end
127
65
  end
128
66
 
129
67
  class Middleman::Base
130
68
  include Middleman::Haml::Renderer
131
- include Middleman::Sass
132
69
  end
@@ -1,4 +1,11 @@
1
1
  module Middleman
2
+ class Base
3
+ def self.asset_url(path, prefix="", request=nil)
4
+ base_url = File.join(self.http_prefix, prefix)
5
+ path.include?("://") ? path : File.join(base_url, path)
6
+ end
7
+ end
8
+
2
9
  module Helpers
3
10
  def page_classes(*additional)
4
11
  path = request.path_info
@@ -14,16 +21,15 @@ module Middleman
14
21
  classes.join(' ')
15
22
  end
16
23
 
24
+ def asset_url(path, prefix="")
25
+ self.class.asset_url(path, prefix, request)
26
+ end
27
+
17
28
  def link_to(title, url="#", params={})
18
29
  params.merge!(:href => url)
19
30
  params = params.map { |k,v| %Q{#{k}="#{v}"}}.join(' ')
20
31
  %Q{<a #{params}>#{title}</a>}
21
32
  end
22
-
23
- def asset_url(path, prefix="")
24
- base_url = File.join(options.http_prefix, prefix)
25
- path.include?("://") ? path : File.join(base_url, path)
26
- end
27
33
 
28
34
  def image_tag(path, params={})
29
35
  params[:alt] ||= ""
@@ -0,0 +1,34 @@
1
+ begin
2
+ require 'sprockets'
3
+ require 'middleman/rack/sprockets+ruby19' # Sprockets ruby 1.9 duckpunch
4
+ rescue LoadError
5
+ puts "Sprockets not available. Install it with: gem install sprockets"
6
+ end
7
+
8
+ module Middleman
9
+ module Rack
10
+ class Sprockets
11
+ def initialize(app, options={})
12
+ @app = app
13
+ end
14
+
15
+ def call(env)
16
+ path = env["PATH_INFO"]
17
+ source = File.join(Middleman::Base.views, path)
18
+
19
+ if path.match(/\.js$/) && File.exists?(source)
20
+ secretary = ::Sprockets::Secretary.new( :root => Middleman::Base.root,
21
+ :source_files => [ File.join("views", path) ],
22
+ :load_path => [ File.join("public", Middleman::Base.js_dir),
23
+ File.join("views", Middleman::Base.js_dir) ])
24
+
25
+ [200, { "Content-Type" => "text/javascript" }, [secretary.concatenation.to_s]]
26
+ else
27
+ @app.call(env)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ Middleman::Base.supported_formats << "js"
@@ -0,0 +1,21 @@
1
+ module Middleman
2
+ module Rack
3
+ class Static
4
+ def initialize(app, options={})
5
+ @app = app
6
+ root = Middleman::Base.public
7
+ @file_server = ::Rack::File.new(root)
8
+ end
9
+
10
+ def call(env)
11
+ path = env["PATH_INFO"]
12
+ file_path = File.join(Middleman::Base.public, path)
13
+ if path.include?("favicon.ico") || (File.exists?(file_path) && !File.directory?(file_path))
14
+ @file_server.call(env)
15
+ else
16
+ @app.call(env)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,70 @@
1
+ require "sass"
2
+ require 'compass'
3
+
4
+ module Middleman
5
+ module Sass
6
+ def self.included(base)
7
+ base.supported_formats << "sass"
8
+ end
9
+
10
+ def render_path(path)
11
+ if template_exists?(path, :sass)
12
+ begin
13
+ static_version = options.public + request.path_info
14
+ send_file(static_version) if File.exists? static_version
15
+
16
+ location_of_sass_file = options.environment == "build" ? File.join(options.build_dir, options.css_dir) : "public"
17
+ css_filename = File.join(Dir.pwd, location_of_sass_file) + request.path_info
18
+ sass(path.to_sym, ::Compass.sass_engine_options.merge({ :css_filename => css_filename }))
19
+ rescue Exception => e
20
+ sass_exception_string(e)
21
+ end
22
+ else
23
+ super
24
+ end
25
+ end
26
+
27
+ # Handle Sass errors
28
+ def sass_exception_string(e)
29
+ e_string = "#{e.class}: #{e.message}"
30
+
31
+ if e.is_a? ::Sass::SyntaxError
32
+ e_string << "\non line #{e.sass_line}"
33
+
34
+ if e.sass_filename
35
+ e_string << " of #{e.sass_filename}"
36
+
37
+ if File.exists?(e.sass_filename)
38
+ e_string << "\n\n"
39
+
40
+ min = [e.sass_line - 5, 0].max
41
+ begin
42
+ File.read(e.sass_filename).rstrip.split("\n")[
43
+ min .. e.sass_line + 5
44
+ ].each_with_index do |line, i|
45
+ e_string << "#{min + i + 1}: #{line}\n"
46
+ end
47
+ rescue
48
+ e_string << "Couldn't read sass file: #{e.sass_filename}"
49
+ end
50
+ end
51
+ end
52
+ end
53
+ <<END
54
+ /*
55
+ #{e_string}
56
+
57
+ Backtrace:\n#{e.backtrace.join("\n")}
58
+ */
59
+ body:before {
60
+ white-space: pre;
61
+ font-family: monospace;
62
+ content: "#{e_string.gsub('"', '\"').gsub("\n", '\\A ')}"; }
63
+ END
64
+ end
65
+ end
66
+ end
67
+
68
+ class Middleman::Base
69
+ include Middleman::Sass
70
+ end
@@ -1,3 +1,5 @@
1
+ require 'rack/test' # Use Rack::Test to access Sinatra without starting up a full server
2
+
1
3
  # Monkey-patch to use a dynamic renderer
2
4
  class Templater::Actions::File
3
5
  def identical?
@@ -12,20 +14,12 @@ end
12
14
 
13
15
  class Templater::Actions::Template
14
16
  def render
15
- # The default render just requests the page over Rack and writes the response
16
- request_path = destination.gsub(File.join(Dir.pwd, Middleman::Base.build_dir), "")
17
- browser = Rack::Test::Session.new(Rack::MockSession.new(Middleman::Base))
18
- browser.get(request_path)
19
- browser.last_response.body
20
- end
21
-
22
- def identical?
23
- if File.exists?(destination)
24
- extension = File.extname(source)
25
- return true if !%w(.sass .js .haml).include?(extension) && File.exists?(source) && File.mtime(source) < File.mtime(destination)
26
- File.read(destination) == render
27
- else
28
- false
17
+ @render_cache ||= begin
18
+ # The default render just requests the page over Rack and writes the response
19
+ request_path = destination.gsub(File.join(Dir.pwd, Middleman::Base.build_dir), "")
20
+ browser = Rack::Test::Session.new(Rack::MockSession.new(Middleman::Base))
21
+ browser.get(request_path)
22
+ browser.last_response.body
29
23
  end
30
24
  end
31
25
  end
data/middleman.gemspec CHANGED
@@ -1,15 +1,15 @@
1
1
  # Generated by jeweler
2
- # DO NOT EDIT THIS FILE
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{middleman}
8
- s.version = "0.9.17"
8
+ s.version = "0.9.18"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Thomas Reynolds"]
12
- s.date = %q{2009-10-14}
12
+ s.date = %q{2009-10-22}
13
13
  s.email = %q{tdreyno@gmail.com}
14
14
  s.executables = ["mm-init", "mm-build", "mm-server"]
15
15
  s.extra_rdoc_files = [
@@ -30,20 +30,22 @@ Gem::Specification.new do |s|
30
30
  "lib/middleman.rb",
31
31
  "lib/middleman/base.rb",
32
32
  "lib/middleman/builder.rb",
33
+ "lib/middleman/config.ru",
33
34
  "lib/middleman/features/cache_buster.rb",
34
35
  "lib/middleman/features/compass.rb",
35
- "lib/middleman/features/content_for.rb",
36
36
  "lib/middleman/features/growl.rb",
37
- "lib/middleman/features/haml.rb",
38
37
  "lib/middleman/features/maruku.rb",
39
38
  "lib/middleman/features/minify_css.rb",
40
39
  "lib/middleman/features/minify_javascript.rb",
41
40
  "lib/middleman/features/relative_assets.rb",
42
41
  "lib/middleman/features/slickmap.rb",
43
42
  "lib/middleman/features/smush_pngs.rb",
44
- "lib/middleman/features/sprockets+ruby19.rb",
45
- "lib/middleman/features/sprockets.rb",
43
+ "lib/middleman/haml.rb",
46
44
  "lib/middleman/helpers.rb",
45
+ "lib/middleman/rack/sprockets+ruby19.rb",
46
+ "lib/middleman/rack/sprockets.rb",
47
+ "lib/middleman/rack/static.rb",
48
+ "lib/middleman/sass.rb",
47
49
  "lib/middleman/template/init.rbt",
48
50
  "lib/middleman/template/views/index.html.haml",
49
51
  "lib/middleman/template/views/layout.html.haml",
@@ -53,13 +55,13 @@ Gem::Specification.new do |s|
53
55
  "spec/builder_spec.rb",
54
56
  "spec/cache_buster_spec.rb",
55
57
  "spec/fixtures/sample/init.rb",
56
- "spec/fixtures/sample/public/javascripts/empty-with-include.js",
57
58
  "spec/fixtures/sample/public/javascripts/to-be-included.js",
58
59
  "spec/fixtures/sample/public/static.html",
59
60
  "spec/fixtures/sample/public/stylesheets/static.css",
60
61
  "spec/fixtures/sample/views/_partial.haml",
61
62
  "spec/fixtures/sample/views/index.html.haml",
62
63
  "spec/fixtures/sample/views/inline-js.html.haml",
64
+ "spec/fixtures/sample/views/javascripts/empty-with-include.js",
63
65
  "spec/fixtures/sample/views/layout.haml",
64
66
  "spec/fixtures/sample/views/maruku.html.maruku",
65
67
  "spec/fixtures/sample/views/services/index.html.haml",
@@ -88,6 +90,8 @@ Gem::Specification.new do |s|
88
90
  s.specification_version = 3
89
91
 
90
92
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
93
+ s.add_runtime_dependency(%q<thin>, [">= 0"])
94
+ s.add_runtime_dependency(%q<shotgun>, [">= 0"])
91
95
  s.add_runtime_dependency(%q<templater>, [">= 0"])
92
96
  s.add_runtime_dependency(%q<sprockets>, [">= 0"])
93
97
  s.add_runtime_dependency(%q<sinatra>, [">= 0"])
@@ -99,6 +103,8 @@ Gem::Specification.new do |s|
99
103
  s.add_development_dependency(%q<rspec>, [">= 0"])
100
104
  s.add_development_dependency(%q<sdoc>, [">= 0"])
101
105
  else
106
+ s.add_dependency(%q<thin>, [">= 0"])
107
+ s.add_dependency(%q<shotgun>, [">= 0"])
102
108
  s.add_dependency(%q<templater>, [">= 0"])
103
109
  s.add_dependency(%q<sprockets>, [">= 0"])
104
110
  s.add_dependency(%q<sinatra>, [">= 0"])
@@ -111,6 +117,8 @@ Gem::Specification.new do |s|
111
117
  s.add_dependency(%q<sdoc>, [">= 0"])
112
118
  end
113
119
  else
120
+ s.add_dependency(%q<thin>, [">= 0"])
121
+ s.add_dependency(%q<shotgun>, [">= 0"])
114
122
  s.add_dependency(%q<templater>, [">= 0"])
115
123
  s.add_dependency(%q<sprockets>, [">= 0"])
116
124
  s.add_dependency(%q<sinatra>, [">= 0"])
@@ -123,3 +131,4 @@ Gem::Specification.new do |s|
123
131
  s.add_dependency(%q<sdoc>, [">= 0"])
124
132
  end
125
133
  end
134
+
@@ -4,25 +4,15 @@ base = ::Middleman::Base
4
4
  base.set :root, File.join(File.dirname(__FILE__), "fixtures", "sample")
5
5
 
6
6
  describe "Cache Buster Feature" do
7
- before do
7
+ it "should not append query string if off" do
8
8
  base.disable :cache_buster
9
- base.init!(true)
10
- @app = base.new
9
+ base.new
10
+ base.asset_url("stylesheets/static.css").should_not include("?")
11
11
  end
12
12
 
13
- it "should not append query string if off" do
14
- @app.asset_url("stylesheets/static.css").should_not include("?")
15
- end
16
- end
17
-
18
- describe "Cache Buster Feature" do
19
- before do
20
- base.enable :cache_buster
21
- base.init!(true)
22
- @app = base.new
23
- end
24
-
25
13
  it "should append query string if on" do
26
- @app.asset_url("stylesheets/static.css").should include("?")
14
+ base.enable :cache_buster
15
+ base.new
16
+ base.asset_url("stylesheets/static.css").should include("?")
27
17
  end
28
18
  end
@@ -0,0 +1 @@
1
+ //= require <to-be-included>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.17
4
+ version: 0.9.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Reynolds
@@ -9,9 +9,29 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-14 00:00:00 -07:00
12
+ date: 2009-10-22 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: thin
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: shotgun
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
15
35
  - !ruby/object:Gem::Dependency
16
36
  name: templater
17
37
  type: :runtime
@@ -137,20 +157,22 @@ files:
137
157
  - lib/middleman.rb
138
158
  - lib/middleman/base.rb
139
159
  - lib/middleman/builder.rb
160
+ - lib/middleman/config.ru
140
161
  - lib/middleman/features/cache_buster.rb
141
162
  - lib/middleman/features/compass.rb
142
- - lib/middleman/features/content_for.rb
143
163
  - lib/middleman/features/growl.rb
144
- - lib/middleman/features/haml.rb
145
164
  - lib/middleman/features/maruku.rb
146
165
  - lib/middleman/features/minify_css.rb
147
166
  - lib/middleman/features/minify_javascript.rb
148
167
  - lib/middleman/features/relative_assets.rb
149
168
  - lib/middleman/features/slickmap.rb
150
169
  - lib/middleman/features/smush_pngs.rb
151
- - lib/middleman/features/sprockets+ruby19.rb
152
- - lib/middleman/features/sprockets.rb
170
+ - lib/middleman/haml.rb
153
171
  - lib/middleman/helpers.rb
172
+ - lib/middleman/rack/sprockets+ruby19.rb
173
+ - lib/middleman/rack/sprockets.rb
174
+ - lib/middleman/rack/static.rb
175
+ - lib/middleman/sass.rb
154
176
  - lib/middleman/template/init.rbt
155
177
  - lib/middleman/template/views/index.html.haml
156
178
  - lib/middleman/template/views/layout.html.haml
@@ -160,13 +182,13 @@ files:
160
182
  - spec/builder_spec.rb
161
183
  - spec/cache_buster_spec.rb
162
184
  - spec/fixtures/sample/init.rb
163
- - spec/fixtures/sample/public/javascripts/empty-with-include.js
164
185
  - spec/fixtures/sample/public/javascripts/to-be-included.js
165
186
  - spec/fixtures/sample/public/static.html
166
187
  - spec/fixtures/sample/public/stylesheets/static.css
167
188
  - spec/fixtures/sample/views/_partial.haml
168
189
  - spec/fixtures/sample/views/index.html.haml
169
190
  - spec/fixtures/sample/views/inline-js.html.haml
191
+ - spec/fixtures/sample/views/javascripts/empty-with-include.js
170
192
  - spec/fixtures/sample/views/layout.haml
171
193
  - spec/fixtures/sample/views/maruku.html.maruku
172
194
  - spec/fixtures/sample/views/services/index.html.haml
@@ -1,9 +0,0 @@
1
- begin
2
- require 'sinatra/content_for'
3
-
4
- class Middleman::Base
5
- helpers Sinatra::ContentFor
6
- end
7
- rescue LoadError
8
- puts "Sinatra::ContentFor not available. Install it with: gem install sinatra-content-for"
9
- end
@@ -1,29 +0,0 @@
1
- begin
2
- require 'sprockets'
3
- require 'middleman/features/sprockets+ruby19' # Sprockets ruby 1.9 duckpunch
4
- rescue LoadError
5
- puts "Sprockets not available. Install it with: gem install sprockets"
6
- end
7
-
8
- module Middleman
9
- module Sprockets
10
- def self.included(base)
11
- base.supported_formats << "js"
12
- end
13
-
14
- def render_path(path)
15
- source = File.join(options.public, path)
16
- if File.extname(path) == '.js' && File.exists?(source)
17
- secretary = ::Sprockets::Secretary.new( :asset_root => options.public,
18
- :source_files => [source] )
19
- secretary.concatenation.to_s
20
- else
21
- super
22
- end
23
- end
24
- end
25
- end
26
-
27
- class Middleman::Base
28
- include Middleman::Sprockets
29
- end
@@ -1 +0,0 @@
1
- //= require "to-be-included"