middleman 0.9.8 → 0.9.9

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.8
1
+ 0.9.9
@@ -1,87 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'templater'
4
-
5
3
  ENV['MM_ENV'] = "build"
6
4
 
7
5
  # Require app
8
6
  require File.join(File.dirname(__FILE__), "..", "lib", "middleman")
9
- require 'middleman/builder'
10
-
11
7
  Middleman::Base.init!
12
8
 
13
- module Generators
14
- extend Templater::Manifold
15
- desc "Build a staticmatic site"
16
-
17
- class Builder < Templater::Generator
18
- # Define source and desintation
19
- def self.source_root; Dir.pwd; end
20
- def destination_root; File.join(Dir.pwd, Middleman::Base.build_dir); end
21
-
22
- # Override template to ask middleman for the correct extension to output
23
- def self.template(name, *args, &block)
24
- return if args[0].include?('layout')
25
-
26
- args.first.split('/').each do |part|
27
- return if part[0,1] == '_'
28
- end
29
-
30
- if (args[0] === args[1])
31
- args[1] = args[0].gsub("#{File.basename(Middleman::Base.views)}/", "")
32
- .gsub("#{File.basename(Middleman::Base.public)}/", "")
33
- if File.extname(args[1]) != ".js"
34
- args[1] = args[1].gsub!(File.extname(args[1]), "") if File.basename(args[1]).split('.').length > 2
35
- end
36
- end
37
-
38
- super(name, *args, &block)
39
- end
40
-
41
- def self.file(name, *args, &block)
42
- if (args[0] === args[1])
43
- args[1] = args[0].gsub("#{File.basename(Middleman::Base.views)}/", "")
44
- .gsub("#{File.basename(Middleman::Base.public)}/", "")
45
- end
46
- super(name, *args, &block)
47
- end
48
-
49
- glob! File.basename(Middleman::Base.public), Middleman::Base.supported_formats
50
- glob! File.basename(Middleman::Base.views), Middleman::Base.supported_formats
51
-
52
- if Middleman::Base.slickmap?
53
- template :slickmap, "sitemap.html", "sitemap.html"
54
- end
55
- end
56
-
57
- add :build, Builder
58
- end
59
-
60
- # Monkey-patch to use a dynamic renderer
61
- class Templater::Actions::File
62
- def identical?
63
- if exists?
64
- return true if File.mtime(source) < File.mtime(destination)
65
- ::FileUtils.identical?(source, destination)
66
- else
67
- false
68
- end
69
- end
70
- end
71
-
72
- class Templater::Actions::Template
73
- def render
74
- ::Middleman::Builder.render_file(source, destination)
75
- end
76
-
77
- def identical?
78
- if ::File.exists?(destination)
79
- return true if File.exists?(source) && File.mtime(source) < File.mtime(destination)
80
- ::File.read(destination) == render
81
- else
82
- false
83
- end
84
- end
85
- end
86
-
87
- Generators.run_cli(Dir.pwd, 'mm-build', 1, %w(build --force).concat(ARGV))
9
+ require 'middleman/builder'
10
+ Middleman::Generators.run_cli(Dir.pwd, 'mm-build', 1, %w(build --force).concat(ARGV))
@@ -6,7 +6,7 @@ module Generators
6
6
  desc "Generator for streamlining staticmatic"
7
7
 
8
8
  class NewSite < Templater::Generator
9
- desc "Creates a new staticmatic scaffold."
9
+ desc "Creates a new middleman scaffold."
10
10
  first_argument :location, :required => true, :desc => "Project location"
11
11
 
12
12
  option :css_dir, :desc => 'The path to the css files'
@@ -40,7 +40,7 @@ module Middleman
40
40
  end
41
41
 
42
42
  # Rack helper for adding mime-types during local preview
43
- def mime(ext, type)
43
+ def self.mime(ext, type)
44
44
  ext = ".#{ext}" unless ext.to_s[0] == ?.
45
45
  Rack::Mime::MIME_TYPES[ext.to_s] = type
46
46
  end
@@ -55,7 +55,11 @@ module Middleman
55
55
  # Base case renderer (do nothing), Should be over-ridden
56
56
  module StaticRender
57
57
  def render_path(path)
58
- false
58
+ if template_exists?(path, :erb)
59
+ erb(path.to_sym)
60
+ else
61
+ false
62
+ end
59
63
  end
60
64
  end
61
65
  include StaticRender
@@ -113,7 +117,7 @@ module Middleman
113
117
  end
114
118
 
115
119
  # Require the features for this project
116
- def self.init!
120
+ def self.init!(quiet=false)
117
121
  # Built-in helpers
118
122
  require 'middleman/helpers'
119
123
  helpers Middleman::Helpers
@@ -124,7 +128,7 @@ module Middleman
124
128
  # Check for and evaluate local configuration
125
129
  local_config = File.join(self.root, "init.rb")
126
130
  if File.exists? local_config
127
- puts "== Local config at: #{local_config}"
131
+ puts "== Local config at: #{local_config}" unless quiet
128
132
  class_eval File.read(local_config)
129
133
  end
130
134
 
@@ -1,15 +1,79 @@
1
- # Use Rack::Test to access Sinatra without starting up a full server
2
- require 'rack/test'
1
+ require 'templater'
2
+ require 'rack/test' # Use Rack::Test to access Sinatra without starting up a full server
3
3
 
4
4
  # Placeholder for any methods the builder needs to abstract to allow feature integration
5
5
  module Middleman
6
- class Builder
7
- # The default render just requests the page over Rack and writes the response
8
- def self.render_file(source, destination)
9
- request_path = destination.gsub(File.join(Dir.pwd, Middleman::Base.build_dir), "")
10
- browser = Rack::Test::Session.new(Rack::MockSession.new(Middleman::Base))
11
- browser.get(request_path)
12
- browser.last_response.body
6
+ class Builder < ::Templater::Generator
7
+ # Define source and desintation
8
+ def self.source_root; Dir.pwd; end
9
+ def destination_root; File.join(Dir.pwd, Middleman::Base.build_dir); end
10
+
11
+ # Override template to ask middleman for the correct extension to output
12
+ def self.template(name, *args, &block)
13
+ return if args[0].include?('layout')
14
+
15
+ args.first.split('/').each do |part|
16
+ return if part[0,1] == '_'
17
+ end
18
+
19
+ if (args[0] === args[1])
20
+ args[1] = args[0].gsub("#{File.basename(Middleman::Base.views)}/", "")
21
+ .gsub("#{File.basename(Middleman::Base.public)}/", "")
22
+ if File.extname(args[1]) != ".js"
23
+ args[1] = args[1].gsub!(File.extname(args[1]), "") if File.basename(args[1]).split('.').length > 2
24
+ end
25
+ end
26
+
27
+ super(name, *args, &block)
28
+ end
29
+
30
+ def self.file(name, *args, &block)
31
+ if (args[0] === args[1])
32
+ args[1] = args[0].gsub("#{File.basename(Middleman::Base.views)}/", "")
33
+ .gsub("#{File.basename(Middleman::Base.public)}/", "")
34
+ end
35
+ super(name, *args, &block)
36
+ end
37
+
38
+ glob! File.basename(Middleman::Base.public), Middleman::Base.supported_formats
39
+ glob! File.basename(Middleman::Base.views), Middleman::Base.supported_formats
40
+ end
41
+
42
+ module Generators
43
+ extend ::Templater::Manifold
44
+ desc "Build a static site"
45
+
46
+ add :build, ::Middleman::Builder
47
+ end
48
+ end
49
+
50
+ # Monkey-patch to use a dynamic renderer
51
+ class Templater::Actions::File
52
+ def identical?
53
+ if exists?
54
+ return true if File.mtime(source) < File.mtime(destination)
55
+ FileUtils.identical?(source, destination)
56
+ else
57
+ false
13
58
  end
14
59
  end
15
60
  end
61
+
62
+ class Templater::Actions::Template
63
+ def render
64
+ # The default render just requests the page over Rack and writes the response
65
+ request_path = destination.gsub(File.join(Dir.pwd, Middleman::Base.build_dir), "")
66
+ browser = Rack::Test::Session.new(Rack::MockSession.new(Middleman::Base))
67
+ browser.get(request_path)
68
+ browser.last_response.body
69
+ end
70
+
71
+ def identical?
72
+ if File.exists?(destination)
73
+ return true if File.exists?(source) && File.mtime(source) < File.mtime(destination)
74
+ File.read(destination) == render
75
+ else
76
+ false
77
+ end
78
+ end
79
+ end
@@ -5,12 +5,14 @@ rescue LoadError
5
5
  puts "Slickmap not available. Install it with: gem install compass-slickmap"
6
6
  end
7
7
 
8
+ if Middleman::Base.environment == "build"
9
+ Middleman::Builder.template :slickmap, "sitemap.html", "sitemap.html"
10
+ end
11
+
8
12
  Entry = Struct.new(:dir, :children)
9
13
 
10
14
  class Middleman::Base
11
- def build_sitemap(&block)
12
- html_files = Dir[File.join(File.dirname(Middleman::Base.views), "**", "*.html*")]
13
-
15
+ def build_sitemap(&block)
14
16
  @@utility = []
15
17
  [recurse_sitemap(Middleman::Base.views, &block), @@utility]
16
18
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{middleman}
8
- s.version = "0.9.8"
8
+ s.version = "0.9.9"
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-06}
12
+ s.date = %q{2009-10-08}
13
13
  s.email = %q{tdreyno@gmail.com}
14
14
  s.executables = ["mm-init", "mm-build", "mm-server"]
15
15
  s.extra_rdoc_files = [
@@ -6,7 +6,7 @@ base.set :root, File.join(File.dirname(__FILE__), "fixtures", "sample")
6
6
  describe "Cache Buster Feature" do
7
7
  before do
8
8
  base.disable :cache_buster
9
- base.init!
9
+ base.init!(true)
10
10
  @app = base.new
11
11
  end
12
12
 
@@ -18,7 +18,7 @@ end
18
18
  describe "Cache Buster Feature" do
19
19
  before do
20
20
  base.enable :cache_buster
21
- base.init!
21
+ base.init!(true)
22
22
  @app = base.new
23
23
  end
24
24
 
@@ -1,2 +1,2 @@
1
1
  # enable :maruku
2
- #enable :markaby
2
+ # enable :markaby
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.8
4
+ version: 0.9.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Reynolds
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-06 00:00:00 -07:00
12
+ date: 2009-10-08 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency