Start getting middleman-more tests passing. About 50% done

This commit is contained in:
Thomas Reynolds 2011-12-29 19:04:39 -08:00
parent c8a134a386
commit 73913f0ace
97 changed files with 267 additions and 161 deletions

View file

@ -3,3 +3,7 @@ rvm:
- 1.9.2 - 1.9.2
- 1.9.3 - 1.9.3
script: "bundle exec rake test" script: "bundle exec rake test"
branches:
only:
- master

10
Gemfile
View file

@ -7,10 +7,18 @@ group :development do
gem "rspec", "~> 2.7" gem "rspec", "~> 2.7"
gem "rdoc", "~> 3.9" gem "rdoc", "~> 3.9"
gem "yard" gem "yard"
end
group :test do
# For actual tests # For actual tests
gem "sinatra" gem "sinatra"
gem "slim"
gem "coffee-filter", "~> 0.1.1"
gem "liquid", "~> 2.2"
gem "jquery-rails"
gem "bootstrap-rails", "0.0.5"
end end
gem "middleman-core", :path => "middleman-core" gem "middleman-core", :path => "middleman-core"
# gem "middleman-more", :path => "middleman-more" gem "middleman-more", :path => "middleman-more"
gem "middleman", :path => "middleman"

View file

@ -1,7 +1,25 @@
ROOT = File.expand_path(File.dirname(__FILE__)) require 'rubygems' unless defined?(Gem)
# require 'fileutils' unless defined?(FileUtils)
require 'rake'
require 'yard'
# require File.expand_path("../middleman-core/lib/middleman-core/version.rb", __FILE__)
ROOT = File.expand_path(File.dirname(__FILE__))
GEM_NAME = 'middleman'
middleman_gems = %w(middleman-core middleman-more)
desc "Run tests for all middleman gems"
task :test do task :test do
["middleman-core"].each do |g| middleman_gems.each do |g|
sh "cd #{File.join(ROOT, g)} && bundle exec rake test" sh "cd #{File.join(ROOT, g)} && bundle exec rake test"
end end
end
desc "Run tests for all middleman gems"
task :default => :test
desc "Generate documentation"
task :doc do
YARD::CLI::Yardoc.new.run
end end

View file

@ -5,19 +5,17 @@ require 'bundler/gem_tasks'
require 'yard' require 'yard'
# Skip the releasing tag # Skip the releasing tag
# class Bundler::GemHelper class Bundler::GemHelper
# def release_gem def release_gem
# guard_clean guard_clean
# guard_already_tagged guard_already_tagged
# built_gem_path = build_gem built_gem_path = build_gem
# rubygem_push(built_gem_path) rubygem_push(built_gem_path)
# end end
# end end
Cucumber::Rake::Task.new(:test, 'Run features that should pass') do |t| Cucumber::Rake::Task.new(:test, 'Run features that should pass') do |t|
t.cucumber_opts = "--color --tags ~@wip --strict --format #{ENV['CUCUMBER_FORMAT'] || 'pretty'}" t.cucumber_opts = "--color --tags ~@wip --strict --format #{ENV['CUCUMBER_FORMAT'] || 'pretty'}"
end end
YARD::Rake::YardocTask.new
task :default => :test task :default => :test

View file

@ -36,6 +36,14 @@ ARGV << "server" if ARGV.length < 1
# Require Middleman # Require Middleman
require 'middleman-core' require 'middleman-core'
begin
# Rubygems
require "middleman-more"
rescue LoadError
# Local
require File.expand_path(File.join(File.dirname(File.dirname(libdir)), "middleman-more", "lib", "middleman-more"))
end
# Change directory to the root # Change directory to the root
Dir.chdir(ENV["MM_ROOT"] || Dir.pwd) do Dir.chdir(ENV["MM_ROOT"] || Dir.pwd) do

View file

@ -0,0 +1,12 @@
Feature: Alternate between multiple asset hosts
In order to speed up page loading
# Scenario: Rendering css with the feature enabled
# Given the Server is running at "asset-host-app"
# When I go to "/stylesheets/asset_host.css"
# Then I should see "http://assets"
Scenario: Rendering html with the feature enabled
Given the Server is running at "asset-host-app"
When I go to "/asset_host.html"
Then I should see "http://assets"

View file

@ -3,14 +3,14 @@ Feature: Automatically detect and insert image dimensions into tags
Scenario: Rendering an image with the feature disabled Scenario: Rendering an image with the feature disabled
Given "automatic_image_sizes" feature is "disabled" Given "automatic_image_sizes" feature is "disabled"
And the Server is running at "test-app" And the Server is running at "automatic-image-size-app"
When I go to "/auto-image-sizes.html" When I go to "/auto-image-sizes.html"
Then I should not see "width=" Then I should not see "width="
And I should not see "height=" And I should not see "height="
Scenario: Rendering an image with the feature enabled Scenario: Rendering an image with the feature enabled
Given "automatic_image_sizes" feature is "enabled" Given "automatic_image_sizes" feature is "enabled"
And the Server is running at "test-app" And the Server is running at "automatic-image-size-app"
When I go to "/auto-image-sizes.html" When I go to "/auto-image-sizes.html"
Then I should see "width=" Then I should see "width="
And I should see "height=" And I should see "height="

View file

@ -0,0 +1 @@
<%= image_tag "blank.gif" %>

View file

Before

Width:  |  Height:  |  Size: 43 B

After

Width:  |  Height:  |  Size: 43 B

View file

@ -0,0 +1 @@
<%= image_tag "blank.gif" %>

View file

@ -20,8 +20,8 @@ require "middleman-core/vendor/hooks-0.2.0/lib/hooks"
# Top-level Middleman object # Top-level Middleman object
module Middleman module Middleman
WINDOWS = !!(RUBY_PLATFORM =~ /(mingw|bccwin|wince|mswin32)/i) WINDOWS = !!(RUBY_PLATFORM =~ /(mingw|bccwin|wince|mswin32)/i) unless const_defined?(:WINDOWS)
JRUBY = !!(RbConfig::CONFIG["RUBY_INSTALL_NAME"] =~ /^jruby/i) JRUBY = !!(RbConfig::CONFIG["RUBY_INSTALL_NAME"] =~ /^jruby/i) unless const_defined?(:JRUBY)
# Auto-load modules on-demand # Auto-load modules on-demand
autoload :Base, "middleman-core/base" autoload :Base, "middleman-core/base"
@ -85,14 +85,24 @@ module Middleman
module Extensions module Extensions
# Provide Apache-style index.html files for directories # Provide Apache-style index.html files for directories
autoload :DirectoryIndexes, "middleman-core/extensions/directory_indexes" autoload :DirectoryIndexes, "middleman-core/extensions/directory_indexes"
# Lorem provides a handful of helpful prototyping methods to generate # Lorem provides a handful of helpful prototyping methods to generate
# words, paragraphs, fake images, names and email addresses. # words, paragraphs, fake images, names and email addresses.
autoload :Lorem, "middleman-core/extensions/lorem" autoload :Lorem, "middleman-core/extensions/lorem"
# AutomaticImageSizes inspects the images used in your dynamic templates
# and automatically adds width and height attributes to their HTML
# elements.
autoload :AutomaticImageSizes, "middleman-core/extensions/automatic_image_sizes"
# AssetHost allows you to setup multiple domains to host your static
# assets. Calls to asset paths in dynamic templates will then rotate
# through each of the asset servers to better spread the load.
autoload :AssetHost, "middleman-core/extensions/asset_host"
end end
module Extensions module Extensions
class << self class << self
def registered def registered
@_registered ||= {} @_registered ||= {}
@ -117,7 +127,7 @@ module Middleman
end end
registered[name.to_sym] = if !passed_version_check registered[name.to_sym] = if !passed_version_check
"== #{name} failed version check. Requested #{version}, got #{Middleman::Core::VERSION}" "== #{name} failed version check. Requested #{version}, got #{Middleman::VERSION}"
elsif block_given? elsif block_given?
block block
elsif namespace elsif namespace
@ -141,7 +151,7 @@ module Middleman
end end
# Where to look in gems for extensions to auto-register # Where to look in gems for extensions to auto-register
EXTENSION_FILE = File.join("lib", "middleman_extension.rb") EXTENSION_FILE = File.join("lib", "middleman_extension.rb") unless const_defined?(:EXTENSION_FILE)
class << self class << self
@ -175,7 +185,7 @@ module Middleman
extensions = rubygems_latest_specs.select do |spec| extensions = rubygems_latest_specs.select do |spec|
spec_has_file?(spec, EXTENSION_FILE) spec_has_file?(spec, EXTENSION_FILE)
end end
extensions.each do |spec| extensions.each do |spec|
require spec.name require spec.name
end end
@ -222,11 +232,15 @@ module Middleman
# @param [Hash] options to pass to Rack::Server.new # @param [Hash] options to pass to Rack::Server.new
# @return [Rack::Server] # @return [Rack::Server]
def start_server(options={}) def start_server(options={})
require "webrick"
opts = { opts = {
:Port => options[:port] || 4567, :Port => options[:port] || 4567,
:Host => options[:host] || "0.0.0.0", :Host => options[:host] || "0.0.0.0",
:AccessLog => [] :AccessLog => []
} }
opts[:Logger] = WEBrick::Log::new("/dev/null", 7) if !options[:logging]
app_class = options[:app] ||= ::Middleman.server.inst app_class = options[:app] ||= ::Middleman.server.inst
opts[:app] = app_class opts[:app] = app_class
@ -235,6 +249,7 @@ module Middleman
# require "thin" # require "thin"
# ::Thin::Logging.silent = !options[:logging] # ::Thin::Logging.silent = !options[:logging]
# opts[:server] = 'thin' # opts[:server] = 'thin'
opts[:server] = 'webrick'
server = ::Rack::Server.new(opts) server = ::Rack::Server.new(opts)
server.start server.start

View file

@ -198,7 +198,7 @@ class Middleman::Base
# Automatically loaded extensions # Automatically loaded extensions
# @return [Array<Symbol>] # @return [Array<Symbol>]
set :default_extensions, [:lorem] set :default_extensions, [ :lorem ]
# Default layout name # Default layout name
# @return [String, Symbold] # @return [String, Symbold]
@ -242,6 +242,10 @@ class Middleman::Base
Middleman::Extensions::DirectoryIndexes } Middleman::Extensions::DirectoryIndexes }
Middleman::Extensions.register(:lorem) { Middleman::Extensions.register(:lorem) {
Middleman::Extensions::Lorem } Middleman::Extensions::Lorem }
Middleman::Extensions.register(:automatic_image_sizes) {
Middleman::Extensions::AutomaticImageSizes }
Middleman::Extensions.register(:asset_host) {
Middleman::Extensions::AssetHost }
# Backwards-compatibility with old request.path signature # Backwards-compatibility with old request.path signature
attr :request attr :request
@ -258,7 +262,7 @@ class Middleman::Base
# @return [void] # @return [void]
def current_path=(path) def current_path=(path)
@_current_path = path @_current_path = path
@request = Thor::CoreExt::HashWithIndifferentAccess.new({ :path => path }) @request = ::Thor::CoreExt::HashWithIndifferentAccess.new({ :path => path })
end end
# Initialize the Middleman project # Initialize the Middleman project

View file

@ -11,7 +11,7 @@ module Middleman::Cli
desc "version", "Show version" desc "version", "Show version"
def version def version
require 'middleman-core/version' require 'middleman-core/version'
say "Middleman #{Middleman::Core::VERSION}" say "Middleman #{Middleman::VERSION}"
end end
# Override the Thor help method to find help for subtasks # Override the Thor help method to find help for subtasks

View file

@ -4,11 +4,11 @@ module Middleman::Extensions
def registered(app) def registered(app)
app.set :asset_host, false app.set :asset_host, false
app.compass_config do |config| # app.compass_config do |config|
if asset_host.is_a?(Proc) # if asset_host.is_a?(Proc)
config.asset_host(&asset_host) # config.asset_host(&asset_host)
end # end
end # end
app.send :include, InstanceMethods app.send :include, InstanceMethods
end end

View file

@ -1,3 +1,3 @@
source :rubygems source :rubygems
gem "middleman", "~><%= Middleman::Core::VERSION %>" gem "middleman", "~><%= Middleman::VERSION %>"

View file

@ -1,7 +1,13 @@
# Using for version parsing
require "rubygems"
module Middleman module Middleman
module Core # Current Version
# Current Version # @return [String]
# @return [String] VERSION = "3.0.0.alpha.7" unless const_defined?(:VERSION)
VERSION = "3.0.0.alpha.6"
end # Parsed version for RubyGems
# @private
# @return [String]
GEM_VERSION = ::Gem::Version.create(VERSION) unless const_defined?(:GEM_VERSION)
end end

View file

@ -4,7 +4,7 @@ require "middleman-core/version"
Gem::Specification.new do |s| Gem::Specification.new do |s|
s.name = "middleman-core" s.name = "middleman-core"
s.version = Middleman::Core::VERSION s.version = Middleman::VERSION
s.platform = Gem::Platform::RUBY s.platform = Gem::Platform::RUBY
s.license = "MIT" s.license = "MIT"
s.authors = ["Thomas Reynolds"] s.authors = ["Thomas Reynolds"]
@ -18,11 +18,16 @@ Gem::Specification.new do |s|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) } s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
s.require_paths = ["lib"] s.require_paths = ["lib"]
# Thin
# s.add_dependency("thin", ["~> 1.3.1"])
# Core # Core
s.add_dependency("rack", ["~> 1.3.5"]) s.add_dependency("rack", ["~> 1.3.5"])
s.add_dependency("rack-test", ["~> 0.6.1"])
s.add_dependency("tilt", ["~> 1.3.1"]) s.add_dependency("tilt", ["~> 1.3.1"])
# Builder
s.add_dependency("rack-test", ["~> 0.6.1"])
# CLI # CLI
s.add_dependency("thor", ["~> 0.14.0"]) s.add_dependency("thor", ["~> 0.14.0"])

View file

@ -1,3 +0,0 @@
source :rubygems
gemspec :name => "middleman-more"

View file

@ -1,17 +1,5 @@
require 'bundler' # coding:utf-8
Bundler::GemHelper.install_tasks :name => ENV["NAME"] || "middleman" RAKE_ROOT = __FILE__
require 'cucumber/rake/task' require 'rubygems'
require File.expand_path(File.dirname(__FILE__) + '/../gem_rake_helper')
Cucumber::Rake::Task.new(:cucumber, 'Run features that should pass') do |t|
t.cucumber_opts = "--color --tags ~@wip --strict --format #{ENV['CUCUMBER_FORMAT'] || 'pretty'}"
end
require 'rake/clean'
task :test => ["cucumber"]
desc "Build HTML documentation"
task :doc do
sh 'bundle exec yard'
end

View file

@ -4,9 +4,4 @@ Feature: Alternate between multiple asset hosts
Scenario: Rendering css with the feature enabled Scenario: Rendering css with the feature enabled
Given the Server is running at "asset-host-app" Given the Server is running at "asset-host-app"
When I go to "/stylesheets/asset_host.css" When I go to "/stylesheets/asset_host.css"
Then I should see "http://assets"
Scenario: Rendering html with the feature enabled
Given the Server is running at "asset-host-app"
When I go to "/asset_host.html"
Then I should see "http://assets" Then I should see "http://assets"

View file

@ -3,24 +3,24 @@ Feature: Generate mtime-based query string for busting browser caches
Scenario: Rendering css with the feature disabled Scenario: Rendering css with the feature disabled
Given "cache_buster" feature is "disabled" Given "cache_buster" feature is "disabled"
And the Server is running at "test-app" And the Server is running at "cache-buster-app"
When I go to "/stylesheets/relative_assets.css" When I go to "/stylesheets/relative_assets.css"
Then I should not see "?" Then I should not see "?"
Scenario: Rendering html with the feature disabled Scenario: Rendering html with the feature disabled
Given "cache_buster" feature is "disabled" Given "cache_buster" feature is "disabled"
And the Server is running at "test-app" And the Server is running at "cache-buster-app"
When I go to "/cache-buster.html" When I go to "/cache-buster.html"
Then I should not see "?" Then I should not see "?"
Scenario: Rendering css with the feature enabled Scenario: Rendering css with the feature enabled
Given "cache_buster" feature is "enabled" Given "cache_buster" feature is "enabled"
And the Server is running at "test-app" And the Server is running at "cache-buster-app"
When I go to "/stylesheets/relative_assets.css" When I go to "/stylesheets/relative_assets.css"
Then I should see "?" Then I should see "?"
Scenario: Rendering html with the feature enabled Scenario: Rendering html with the feature enabled
Given "cache_buster" feature is "enabled" Given "cache_buster" feature is "enabled"
And the Server is running at "test-app" And the Server is running at "cache-buster-app"
When I go to "/cache-buster.html" When I go to "/cache-buster.html"
Then I should see "?" Then I should see "?"

View file

@ -2,16 +2,16 @@ Feature: Support coffee-script
In order to offer an alternative when writing Javascript In order to offer an alternative when writing Javascript
Scenario: Rendering coffee script Scenario: Rendering coffee script
Given the Server is running at "test-app" Given the Server is running at "coffeescript-app"
When I go to "/javascripts/coffee_test.js" When I go to "/javascripts/coffee_test.js"
Then I should see "Array.prototype.slice" Then I should see "Array.prototype.slice"
Scenario: Rendering coffee-script with :coffeescript haml-filter Scenario: Rendering coffee-script with :coffeescript haml-filter
Given the Server is running at "test-app" Given the Server is running at "coffeescript-app"
When I go to "/inline-coffeescript.html" When I go to "/inline-coffeescript.html"
Then I should see "Array.prototype.slice" Then I should see "Array.prototype.slice"
Scenario: Rendering broken coffee Scenario: Rendering broken coffee
Given the Server is running at "test-app" Given the Server is running at "coffeescript-app"
When I go to "/javascripts/broken-coffee.js" When I go to "/javascripts/broken-coffee.js"
Then I should see "Error" Then I should see "Error"

View file

@ -1,9 +1,4 @@
Feature: Support content_for and yield_content helpers Feature: Support content_for and yield_content helpers
Scenario: content_for works as expected in erb
Given the Server is running at "content-for-app"
When I go to "/content_for_erb.html"
Then I should see "In Layout: I am the yielded content erb"
Scenario: content_for works as expected in haml Scenario: content_for works as expected in haml
Given the Server is running at "content-for-app" Given the Server is running at "content-for-app"

View file

@ -2,11 +2,11 @@ Feature: Support SCSS Syntax
In order to offer an alternative when writing Sass In order to offer an alternative when writing Sass
Scenario: Rendering scss Scenario: Rendering scss
Given the Server is running at "test-app" Given the Server is running at "scss-app"
When I go to "/stylesheets/site_scss.css" When I go to "/stylesheets/site_scss.css"
Then I should see "html" Then I should see "html"
Scenario: Rendering scss Scenario: Rendering scss
Given the Server is running at "test-app" Given the Server is running at "scss-app"
When I go to "/stylesheets/layout.css" When I go to "/stylesheets/layout.css"
Then I should see "html" Then I should see "html"

View file

@ -2,6 +2,6 @@ Feature: Support slim templating language
In order to offer an alternative to Haml In order to offer an alternative to Haml
Scenario: Rendering Slim Scenario: Rendering Slim
Given the Server is running at "test-app" Given the Server is running at "slim-app"
When I go to "/slim.html" When I go to "/slim.html"
Then I should see "<h1>Welcome to Slim</h1>" Then I should see "<h1>Welcome to Slim</h1>"

View file

@ -1,7 +1,7 @@
Feature: Sprockets Feature: Sprockets
Scenario: Sprockets JS require Scenario: Sprockets JS require
Given the Server is running at "test-app" Given the Server is running at "sprockets-app2"
When I go to "/javascripts/sprockets_base.js" When I go to "/javascripts/sprockets_base.js"
Then I should see "sprockets_sub_function" Then I should see "sprockets_sub_function"
@ -16,23 +16,23 @@ Feature: Sprockets
Then I should see "helloWorld" Then I should see "helloWorld"
Scenario: Sprockets JS should have access to yaml data Scenario: Sprockets JS should have access to yaml data
Given the Server is running at "test-app" Given the Server is running at "sprockets-app2"
When I go to "/javascripts/multiple_engines.js" When I go to "/javascripts/multiple_engines.js"
Then I should see "Hello One" Then I should see "Hello One"
Scenario: Multiple engine files should build correctly Scenario: Multiple engine files should build correctly
Given a successfully built app at "test-app" Given a successfully built app at "sprockets-app2"
When I cd to "build" When I cd to "build"
Then a file named "javascripts/multiple_engines.js" should exist Then a file named "javascripts/multiple_engines.js" should exist
And the file "javascripts/multiple_engines.js" should contain "Hello One" And the file "javascripts/multiple_engines.js" should contain "Hello One"
Scenario: Sprockets CSS require //require Scenario: Sprockets CSS require //require
Given the Server is running at "test-app" Given the Server is running at "sprockets-app2"
When I go to "/stylesheets/sprockets_base1.css" When I go to "/stylesheets/sprockets_base1.css"
Then I should see "hello" Then I should see "hello"
Scenario: Sprockets CSS require @import Scenario: Sprockets CSS require @import
Given the Server is running at "test-app" Given the Server is running at "sprockets-app2"
When I go to "/stylesheets/sprockets_base2.css" When I go to "/stylesheets/sprockets_base2.css"
Then I should see "hello" Then I should see "hello"

View file

@ -0,0 +1,7 @@
PROJECT_ROOT_PATH = File.dirname(File.dirname(File.dirname(__FILE__)))
core_root = File.expand_path("../../../../middleman-core/lib/middleman-core", __FILE__)
require core_root
require File.join(core_root, "step_definitions")
require File.join(PROJECT_ROOT_PATH, 'lib', 'middleman-more')

View file

@ -1 +0,0 @@
= image_tag "blank.gif"

View file

@ -0,0 +1,2 @@
<%= stylesheet_link_tag "site.css" %>
<%= javascript_include_tag "empty-with-include.js" %>

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 B

View file

@ -0,0 +1 @@
@import "compass/reset"

View file

@ -0,0 +1 @@
require "coffee-filter"

View file

@ -0,0 +1,3 @@
:coffeescript
race = (winner, runners...) ->
print winner, runners

View file

@ -0,0 +1,3 @@
function test() {
hello
}

View file

@ -0,0 +1,3 @@
# Splats:
race = (winner, runners...) ->
print winner, runners

View file

@ -1,5 +1,6 @@
require "slim"
with_layout :content_for do with_layout :content_for do
page "/content_for_erb.html" page "/content_for_haml.html"
# page "/content_for_haml.html" page "/content_for_slim.html"
# page "/content_for_slim.html"
end end

View file

@ -1,5 +0,0 @@
<% content_for :from_template do %>
I am the yielded content erb
<% end %>
I am in the template

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 B

View file

@ -0,0 +1,2 @@
html
test: value

View file

@ -0,0 +1 @@
@import "compass/reset";

View file

@ -0,0 +1 @@
require "slim"

View file

@ -0,0 +1,7 @@
doctype 5
html lang='en'
head
meta charset="utf-8"
body
h1 Welcome to Slim

View file

@ -0,0 +1,4 @@
-
title: "One"
-
title: "Two"

View file

@ -0,0 +1,4 @@
[
{ "title": "One" },
{ "title": "Two" }
]

View file

@ -0,0 +1 @@
alert "Hello <%= data.test[0].title %>"

View file

@ -0,0 +1,5 @@
//= require "sprockets_sub"
function base() {
}

View file

@ -0,0 +1,3 @@
function sprockets_sub_function() {
}

View file

@ -0,0 +1 @@
//= require "sprockets_sub"

View file

@ -0,0 +1 @@
@import "sprockets_sub";

View file

@ -0,0 +1 @@
hello { world: "hi"; }

View file

@ -2,6 +2,8 @@
libdir = File.expand_path(File.dirname(__FILE__)) libdir = File.expand_path(File.dirname(__FILE__))
$LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir) $LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
require "middleman-core"
# Top-level Middleman object # Top-level Middleman object
module Middleman module Middleman
@ -11,15 +13,18 @@ module Middleman
autoload :Sass, "middleman-more/renderers/sass" autoload :Sass, "middleman-more/renderers/sass"
autoload :Markdown, "middleman-more/renderers/markdown" autoload :Markdown, "middleman-more/renderers/markdown"
autoload :Liquid, "middleman-more/renderers/liquid" autoload :Liquid, "middleman-more/renderers/liquid"
autoload :Slim, "middleman-more/renderers/slim"
end end
module Extensions module CoreExtensions
# Compass framework for Sass # Compass framework for Sass
autoload :Compass, "middleman-more/core_extensions/compass" autoload :Compass, "middleman-more/core_extensions/compass"
# Sprockets 2 # Sprockets 2
autoload :Sprockets, "middleman-more/core_extensions/sprockets" autoload :Sprockets, "middleman-more/core_extensions/sprockets"
end
module Extensions
# RelativeAssets allow any asset path in dynamic templates to be either # RelativeAssets allow any asset path in dynamic templates to be either
# relative to the root of the project or use an absolute URL. # relative to the root of the project or use an absolute URL.
autoload :RelativeAssets, "middleman-more/extensions/relative_assets" autoload :RelativeAssets, "middleman-more/extensions/relative_assets"
@ -44,4 +49,26 @@ module Middleman
# MinifyJavascript uses the YUI compressor to shrink JS files # MinifyJavascript uses the YUI compressor to shrink JS files
autoload :MinifyJavascript, "middleman-more/extensions/minify_javascript" autoload :MinifyJavascript, "middleman-more/extensions/minify_javascript"
end end
require "coffee_script"
Base.register Middleman::Renderers::Haml
Base.register Middleman::Renderers::Sass
Base.register Middleman::Renderers::Markdown
Base.register Middleman::Renderers::Liquid
Base.register Middleman::Renderers::Slim
# Compass framework
Base.register Middleman::CoreExtensions::Compass
# Sprockets asset handling
Base.register Middleman::CoreExtensions::Sprockets
Extensions.register(:cache_buster) {
::Middleman::Extensions::CacheBuster }
Extensions.register(:minify_css) {
::Middleman::Extensions::MinifyCss }
Extensions.register(:minify_javascript) {
::Middleman::Extensions::MinifyJavascript }
Extensions.register(:relative_assets) {
::Middleman::Extensions::RelativeAssets }
end end

View file

@ -0,0 +1,15 @@
module Middleman::Renderers::Slim
class << self
def registered(app)
# Slim is not included in the default gems,
# but we'll support it if available.
begin
require "slim"
Slim::Engine.set_default_options(:buffer => '@_out_buf', :generator => Temple::Generators::StringBuffer) if defined?(Slim)
rescue LoadError
end
end
alias :included :registered
end
end

View file

@ -1,39 +0,0 @@
require "coffee_script"
app.register Middleman::Renderers::Haml
app.register Middleman::Renderers::Sass
app.register Middleman::Renderers::Markdown
app.register Middleman::Renderers::Liquid
set :default_extensions, [
:lorem
]
# Compass framework
register Middleman::CoreExtensions::Compass
# Sprockets asset handling
register Middleman::CoreExtensions::Sprockets
# Activate built-in helpers
register Middleman::CoreExtensions::DefaultHelpers
Middleman::Extensions.register(:asset_host) {
Middleman::Extensions::AssetHost }
Middleman::Extensions.register(:automatic_image_sizes) {
Middleman::Extensions::AutomaticImageSizes }
Middleman::Extensions.register(:cache_buster) {
Middleman::Extensions::CacheBuster }
Middleman::Extensions.register(:lorem) {
Middleman::Extensions::Lorem }
Middleman::Extensions.register(:minify_css) {
Middleman::Extensions::MinifyCss }
Middleman::Extensions.register(:minify_javascript) {
Middleman::Extensions::MinifyJavascript }
Middleman::Extensions.register(:relative_assets) {
Middleman::Extensions::RelativeAssets }

View file

@ -1,7 +0,0 @@
module Middleman
module More
# Current Version
# @return [String]
VERSION = "3.0.0.alpha.6"
end
end

View file

@ -1,10 +1,10 @@
# -*- encoding: utf-8 -*- # -*- encoding: utf-8 -*-
$:.push File.expand_path("../lib", __FILE__) $:.push File.expand_path("../lib", __FILE__)
require "middleman-more/version" require File.expand_path("../../middleman-core/lib/middleman-core/version.rb", __FILE__)
Gem::Specification.new do |s| Gem::Specification.new do |s|
s.name = "middleman-more" s.name = "middleman-more"
s.version = Middleman::More::VERSION s.version = Middleman::VERSION
s.platform = Gem::Platform::RUBY s.platform = Gem::Platform::RUBY
s.license = "MIT" s.license = "MIT"
s.authors = ["Thomas Reynolds"] s.authors = ["Thomas Reynolds"]
@ -18,30 +18,15 @@ Gem::Specification.new do |s|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) } s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
s.require_paths = ["lib"] s.require_paths = ["lib"]
s.add_dependency("middleman-core") s.add_dependency("middleman-core", Middleman::VERSION)
s.add_dependency("thin", ["~> 1.3.1"])
s.add_dependency("i18n", ["~> 0.6.0"])
s.add_dependency("uglifier", ["~> 1.2.0"]) s.add_dependency("uglifier", ["~> 1.2.0"])
s.add_dependency("haml", ["~> 3.1.0"]) s.add_dependency("haml", ["~> 3.1.0"])
s.add_dependency("sass", ["~> 3.1.7"]) s.add_dependency("sass", ["~> 3.1.7"])
s.add_dependency("compass", ["~> 0.11.3"]) s.add_dependency("compass", ["~> 0.11.3"])
s.add_dependency("coffee-script", ["~> 2.2.0"]) s.add_dependency("coffee-script", ["~> 2.2.0"])
s.add_dependency("execjs", ["~> 1.2.7"]) s.add_dependency("execjs", ["~> 1.2.7"])
s.add_dependency("sprockets", ["~> 2.1.0"])
s.add_dependency("sprockets-sass", ["~> 0.6.0"]) s.add_dependency("sprockets-sass", ["~> 0.6.0"])
s.add_dependency("redcarpet", ["~> 2.0.0"]) s.add_dependency("redcarpet", ["~> 2.0.0"])
# Development and test
s.add_development_dependency("slim")
s.add_development_dependency("sinatra")
s.add_development_dependency("coffee-filter", ["~> 0.1.1"])
s.add_development_dependency("liquid", ["~> 2.2"])
s.add_development_dependency("cucumber", ["~> 1.1.0"])
s.add_development_dependency("aruba", ["~> 0.4.11"])
s.add_development_dependency("rake", ["~> 0.9.2"])
s.add_development_dependency("rspec", ["~> 2.7"])
s.add_development_dependency("rdoc", ["~> 3.9"])
s.add_development_dependency("yard")
s.add_development_dependency("jquery-rails")
s.add_development_dependency("bootstrap-rails", ["0.0.5"])
end end

View file

@ -4,7 +4,7 @@ require "middleman-core/version"
Gem::Specification.new do |s| Gem::Specification.new do |s|
s.name = "middleman" s.name = "middleman"
s.version = Middleman::Core::VERSION s.version = Middleman::VERSION
s.platform = "x86-mingw32" s.platform = "x86-mingw32"
s.license = "MIT" s.license = "MIT"
s.authors = ["Thomas Reynolds"] s.authors = ["Thomas Reynolds"]

View file

@ -0,0 +1,24 @@
# -*- encoding: utf-8 -*-
$:.push File.expand_path("../lib", __FILE__)
require File.expand_path("../../middleman-core/lib/middleman-core/version.rb", __FILE__)
Gem::Specification.new do |s|
s.name = "middleman"
s.version = Middleman::VERSION
s.platform = Gem::Platform::RUBY
s.license = "MIT"
s.authors = ["Thomas Reynolds"]
s.email = ["me@tdreyno.com"]
s.homepage = "http://middlemanapp.com"
s.summary = "Hand-crafted frontend development"
s.description = "A static site generator based on Sinatra. Providing dozens of templating languages (Haml, Sass, Compass, Slim, CoffeeScript, and more). Makes minification, compression, cache busting, Yaml data (and more) an easy part of your development cycle."
s.files = `git ls-files`.split("\n")
s.test_files = `git ls-files -- {fixtures,features}/*`.split("\n")
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
s.require_paths = ["lib"]
s.add_dependency("middleman-core", Middleman::VERSION)
s.add_dependency("middleman-more", Middleman::VERSION)
end