pass specs again

This commit is contained in:
tdreyno 2009-11-30 11:32:02 -08:00
parent 9033f0b55a
commit 6172790a79
537 changed files with 13118 additions and 2972 deletions

View file

@ -1,6 +1,6 @@
bundle_path "lib/middleman/vendor/gems"
bin_path "lib/middleman/vendor/bin"
disable_rubygems
# disable_rubygems
# disable_system_gems
gem "shotgun"
@ -11,7 +11,7 @@ gem "sinatra-content-for"
gem "rack-test"
gem "yui-compressor"
gem "haml"
gem "compass"
gem "compass", "0.10.0.pre1"
gem "json_pure"
gem "smusher"
gem "compass-slickmap"

View file

@ -1 +1 @@
0.12.0
0.12.0.pre

View file

@ -0,0 +1,8 @@
Feature: Generator
In order to generate static assets for client
Scenario: Copying template files
Given generated directory at "generator-test"
Then template files should exist at "generator-test"
And empty directories should exist at "generator-test"
And cleanup at "generator-test"

View file

@ -1,2 +1,3 @@
ENV["MM_DIR"] = File.join(File.dirname(File.dirname(File.dirname(__FILE__))), "spec", "fixtures", "sample")
require File.join(File.dirname(File.dirname(File.dirname(__FILE__))), 'lib', 'middleman')
require "rack/test"

View file

@ -0,0 +1,24 @@
require 'fileutils'
Then /^template files should exist at "([^\"]*)"$/ do |dirname|
target = File.join(File.dirname(File.dirname(File.dirname(__FILE__))), "spec", "fixtures", dirname)
template_glob = File.join(File.dirname(File.dirname(File.dirname(__FILE__))), "lib", "middleman", "template", "*/**/*")
Dir[template_glob].each do |f|
next if File.directory?(f)
File.exists?("#{target}/#{f.split('template/')[1]}").should be_true
end
end
Then /^empty directories should exist at "([^\"]*)"$/ do |dirname|
target = File.join(File.dirname(File.dirname(File.dirname(__FILE__))), "spec", "fixtures", dirname)
%w(views/stylesheets public/stylesheets public/javascripts public/images).each do |d|
File.exists?("#{target}/#{d}").should be_true
end
end
Then /^cleanup at "([^\"]*)"$/ do |dirname|
target = File.join(File.dirname(File.dirname(File.dirname(__FILE__))), "spec", "fixtures", dirname)
FileUtils.rm_rf(target)
end

View file

@ -1,10 +1,15 @@
Given /^"([^\"]*)" feature is "([^\"]*)"$/ do |feature, state|
enable_or_disable = (state == "enabled") ? :enable : :disable
Middleman::Base.set :root, File.join(File.dirname(File.dirname(File.dirname(__FILE__))), "spec", "fixtures", "sample")
Middleman::Base.send(enable_or_disable, feature.to_sym)
@browser = Rack::Test::Session.new(Rack::MockSession.new(Middleman::Base.new))
end
Given /^generated directory at "([^\"]*)"$/ do |dirname|
target = File.join(File.dirname(File.dirname(File.dirname(__FILE__))), "spec", "fixtures", dirname)
init_cmd = File.join(File.dirname(File.dirname(File.dirname(__FILE__))), "bin", "mm-init")
`cd #{File.dirname(target)} && #{init_cmd} #{File.basename(target)}`
end
When /^I go to "([^\"]*)"$/ do |url|
@browser.get(url)
end

View file

@ -9,7 +9,7 @@ end
module Middleman
class Base < Sinatra::Base
set :app_file, __FILE__
set :root, Dir.pwd
set :root, ENV["MM_DIR"] || Dir.pwd
set :reload, false
set :logging, false
set :environment, ENV['MM_ENV'] || :development
@ -18,21 +18,23 @@ module Middleman
set :js_dir, "javascripts"
set :css_dir, "stylesheets"
set :images_dir, "images"
set :fonts_dir, "fonts"
set :build_dir, "build"
set :http_prefix, nil
use Rack::ConditionalGet if environment == :development
helpers Sinatra::ContentFor
@@features = []
set :features, []
def self.enable(*opts)
@@features << opts
set :features, (self.features << opts).flatten
super
end
def self.disable(*opts)
@@features -= opts
current = self.features
current -= opts.flatten
set :features, current
super
end
@ -67,14 +69,14 @@ module Middleman
include StaticRender
def self.page(url, options={}, &block)
get(url) do
request.layout = @@layout if (@@layout ||= nil)
request.layout = options[:layout] if options[:layout]
layout = @@layout
layout = options[:layout] if !options[:layout].nil?
get(url) do
if block_given?
yield
else
process_request
process_request(layout)
end
end
end
@ -91,15 +93,20 @@ module Middleman
process_request
end
def self.enabled?(name)
name = (name.to_s << "?").to_sym
self.respond_to?(name) && self.send(name)
end
private
def process_request
def process_request(layout = :layout)
# Normalize the path and add index if we're looking at a directory
path = request.path
path << options.index_file if path.match(%r{/$})
path.gsub!(%r{^/}, '')
# If the enabled renderers succeed, return the content, mime-type and an HTTP 200
if content = render_path(path, (request.layout || :layout))
if content = render_path(path, layout)
content_type media_type(File.extname(path)), :charset => 'utf-8'
status 200
content
@ -116,13 +123,13 @@ require "middleman/sass"
require "middleman/helpers"
require "middleman/rack/static"
require "middleman/rack/sprockets"
require "middleman/rack/minify_javascript"
require "middleman/rack/minify_css"
require "middleman/rack/downstream"
class Middleman::Base
helpers Middleman::Helpers
use Middleman::Rack::Static
use Middleman::Rack::Sprockets
# Features disabled by default
disable :slickmap
disable :cache_buster
@ -139,17 +146,23 @@ class Middleman::Base
configure :build do
end
def self.new(*args, &bk)
# Check for and evaluate local configuration
local_config = File.join(self.root, "init.rb")
if File.exists? local_config
puts "== Reading: Local config" if logging?
class_eval File.read(local_config)
Middleman::Base.class_eval File.read(local_config)
set :app_file, File.expand_path(local_config)
end
use Middleman::Rack::Static
use Middleman::Rack::Sprockets
use Middleman::Rack::MinifyJavascript
use Middleman::Rack::MinifyCSS
use Middleman::Rack::Downstream
def self.new(*args, &bk)
# loop over enabled feature
@@features.flatten.each do |feature_name|
features.flatten.each do |feature_name|
next unless send(:"#{feature_name}?")
feature_path = "features/#{feature_name}"

View file

@ -1,18 +0,0 @@
module Middleman
module Minified
module Sass
include ::Haml::Filters::Base
def render(text)
result = ::Sass::Engine.new(text, ::Sass::Plugin.engine_options).render
if Middleman::Base.respond_to?(:minify_css?) && Middleman::Base.minify_css?
compressor = YUI::CssCompressor.new
compressor.compress(result)
else
result
end
end
end
end
end

View file

@ -0,0 +1,17 @@
module Middleman
module Rack
class Downstream
def initialize(app, options={})
@app = app
end
def call(env)
if env["DOWNSTREAM"]
env["DOWNSTREAM"]
else
@app.call(env)
end
end
end
end
end

View file

@ -0,0 +1,27 @@
begin
require "yui/compressor"
rescue LoadError
puts "YUI-Compressor not available. Install it with: gem install yui-compressor"
end
module Middleman
module Rack
class MinifyCSS
def initialize(app, options={})
@app = app
end
def call(env)
if env["DOWNSTREAM"] && env["PATH_INFO"].match(/\.css$/) && Middleman::Base.enabled?(:minify_css)
compressor = ::YUI::CssCompressor.new
source = env["DOWNSTREAM"][2].is_a?(::Rack::File) ? File.read(env["DOWNSTREAM"][2].path) : env["DOWNSTREAM"][2]
env["DOWNSTREAM"][2] = compressor.compress(source)
env["DOWNSTREAM"][1]["Content-Length"] = ::Rack::Utils.bytesize(env["DOWNSTREAM"][2]).to_s
end
@app.call(env)
end
end
end
end

View file

@ -0,0 +1,29 @@
begin
require "yui/compressor"
rescue LoadError
puts "YUI-Compressor not available. Install it with: gem install yui-compressor"
end
module Middleman
module Rack
class MinifyJavascript
def initialize(app, options={})
@app = app
end
def call(env)
if env["DOWNSTREAM"] && env["PATH_INFO"].match(/\.js$/) && Middleman::Base.enabled?(:minify_javascript)
compressor = ::YUI::JavaScriptCompressor.new(:munge => true)
source = env["DOWNSTREAM"][2].is_a?(::Rack::File) ? File.read(env["DOWNSTREAM"][2].path) : env["DOWNSTREAM"][2]
env["DOWNSTREAM"][2] = compressor.compress(source)
env["DOWNSTREAM"][1]["Content-Length"] = ::Rack::Utils.bytesize(env["DOWNSTREAM"][2]).to_s
end
@app.call(env)
end
end
end
end
# Middleman::Base.supported_formats << "js"

View file

@ -6,12 +6,6 @@ rescue LoadError
puts "Sprockets not available. Install it with: gem install sprockets"
end
begin
require "yui/compressor"
rescue LoadError
puts "YUI-Compressor not available. Install it with: gem install yui-compressor"
end
module Middleman
module Rack
class Sprockets
@ -21,33 +15,28 @@ module Middleman
def call(env)
path = env["PATH_INFO"]
source = File.join(Middleman::Base.views, path)
if path.match(/\.js$/)
if File.exists?(source)
source_pub = File.join(Middleman::Base.views, path)
source_view = File.join(Middleman::Base.views, path)
source = "public" if File.exists?(source_pub)
source = "views" if File.exists?(source_view)
if env["DOWNSTREAM"] && path.match(/\.js$/) && source
source_file = env["DOWNSTREAM"][2].is_a?(::Rack::File) ? env["DOWNSTREAM"][2].path : env["DOWNSTREAM"][2]
secretary = ::Sprockets::Secretary.new( :root => Middleman::Base.root,
:source_files => [ File.join("views", path) ],
:source_files => [ source_file ],
:load_path => [ File.join("public", Middleman::Base.js_dir),
File.join("views", Middleman::Base.js_dir) ])
result = secretary.concatenation.to_s
else
result = File.read(File.join(Middleman::Base.public, path))
env["DOWNSTREAM"][2] = secretary.concatenation.to_s
env["DOWNSTREAM"][1]["Content-Length"] = ::Rack::Utils.bytesize(env["DOWNSTREAM"][2]).to_s
end
if Middleman::Base.respond_to?(:minify_javascript?) && Middleman::Base.minify_javascript?
compressor = ::YUI::JavaScriptCompressor.new(:munge => true)
result = compressor.compress(result)
end
[200, { "Content-Type" => "text/javascript" }, [result]]
else
@app.call(env)
end
end
end
end
end
Middleman::Base.supported_formats << "js"

View file

@ -3,26 +3,22 @@ module Middleman
class Static
def initialize(app, options={})
@app = app
root = Middleman::Base.public
@file_server = ::Rack::File.new(root)
end
def templatize_js?(path)
path.match(/\.js$/) && Middleman::Base.respond_to?(:minify_javascript?) && Middleman::Base.minify_javascript?
end
def call(env)
path = env["PATH_INFO"]
file_path = File.join(Middleman::Base.public, path)
public_file_path = File.join(Middleman::Base.public, env["PATH_INFO"])
view_file_path = File.join(Middleman::Base.views, env["PATH_INFO"])
if File.exists?(public_file_path) && !File.directory?(public_file_path)
file_server = ::Rack::File.new(Middleman::Base.public)
env["DOWNSTREAM"] = file_server.call(env)
elsif File.exists?(view_file_path) && !File.directory?(view_file_path)
file_server = ::Rack::File.new(Middleman::Base.views)
env["DOWNSTREAM"] = file_server.call(env)
end
if templatize_js?(path)
@app.call(env)
elsif path.include?("favicon.ico") || (File.exists?(file_path) && !File.directory?(file_path))
@file_server.call(env)
else
@app.call(env)
end
end
end
end
end

View file

@ -23,7 +23,7 @@ module Middleman
css_filename = File.join(location_of_sass_file, request.path_info)
result = sass(path.to_sym, ::Compass.sass_engine_options.merge({ :css_filename => css_filename }))
if options.respond_to?(:minify_css?) && options.minify_css?
if options.enabled?(:minify_css?)
YUI::CssCompressor.new.compress(result)
else
result
@ -84,7 +84,9 @@ class Middleman::Base
::Compass.configuration do |config|
config.project_path = self.root
config.sass_dir = File.join(File.basename(self.views), self.css_dir)
config.output_style = :nested
config.output_style = self.enabled?(:minify_css) ? :compressed : :nested
config.line_comments = false
config.fonts_dir = File.join(File.basename(self.public), self.fonts_dir)
config.css_dir = File.join(File.basename(self.public), self.css_dir)
config.images_dir = File.join(File.basename(self.public), self.images_dir)
config.http_images_path = self.http_images_path rescue File.join(self.http_prefix || "/", self.images_dir)
@ -102,5 +104,6 @@ class Middleman::Base
end
::Compass.configure_sass_plugin!
Sass::Plugin.options.update(:line_comments => false)
end
end

View file

@ -2,7 +2,7 @@
%html{ :xmlns => "http://www.w3.org/1999/xhtml", "xml:lang" => "en", :lang => "en" }
%head
%meta{ :content => "text/html; charset=utf-8", "http-equiv" => "Content-Type" }
// Comment in layout
/ Comment in layout
= stylesheet_link_tag "site.css"
:javascript
// Comment in javascript

View file

@ -1,5 +1,5 @@
@import compass.sass
@import blueprint/screen.sass
@import blueprint.sass
!font_color = #2a2a2a
!link_color = #0388a6

View file

@ -1,3 +1,3 @@
#!/Users/tdreyno/homebrew/Cellar/ruby/1.9.1-p243/bin/ruby
require File.join(File.dirname(__FILE__), "../gems/environment")
load File.join(File.dirname(__FILE__), "../gems/gems/compass-0.8.17/bin/compass")
load File.join(File.dirname(__FILE__), "../gems/gems/compass-0.10.0.pre1/bin/compass")

Binary file not shown.

Binary file not shown.

View file

@ -6,53 +6,111 @@ module Bundler
ENV["PATH"] = "#{dir}/../bin:#{ENV["PATH"]}"
ENV["RUBYOPT"] = "-r#{file} #{ENV["RUBYOPT"]}"
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/httpclient-2.1.5.2/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/httpclient-2.1.5.2/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/extlib-0.9.13/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/extlib-0.9.13/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/highline-1.5.1/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/highline-1.5.1/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/rake-0.8.7/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/rake-0.8.7/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/diff-lcs-1.1.2/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/diff-lcs-1.1.2/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/templater-1.0.0/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/templater-1.0.0/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/json-1.2.0/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/json-1.2.0/ext/json/ext")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/json-1.2.0/ext")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/json-1.2.0/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/haml-2.2.14/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/haml-2.2.14/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/extlib-0.9.13/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/extlib-0.9.13/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/configuration-1.1.0/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/configuration-1.1.0/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/compass-0.8.17/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/compass-0.8.17/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/yui-compressor-0.9.1/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/yui-compressor-0.9.1/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/compass-slickmap-0.2.1/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/compass-slickmap-0.2.1/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/smusher-0.4.2/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/smusher-0.4.2/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/json_pure-1.2.0/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/json_pure-1.2.0/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/launchy-0.3.3/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/launchy-0.3.3/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/rack-1.0.1/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/rack-1.0.1/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/rack-test-0.5.2/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/rack-test-0.5.2/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/httpclient-2.1.5.2/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/httpclient-2.1.5.2/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/rake-0.8.7/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/rake-0.8.7/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/sprockets-1.0.2/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/sprockets-1.0.2/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/templater-1.0.0/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/templater-1.0.0/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/rack-1.0.1/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/rack-1.0.1/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/rack-test-0.5.3/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/rack-test-0.5.3/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/configuration-1.1.0/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/configuration-1.1.0/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/launchy-0.3.3/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/launchy-0.3.3/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/shotgun-0.4/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/shotgun-0.4/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/sinatra-0.9.4/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/sinatra-0.9.4/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/smusher-0.4.2/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/smusher-0.4.2/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/yui-compressor-0.9.1/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/yui-compressor-0.9.1/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/sinatra-content-for-0.2/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/sinatra-content-for-0.2/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/haml-2.2.14/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/haml-2.2.14/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/compass-0.10.0.pre1/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/compass-0.10.0.pre1/lib")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/compass-slickmap-0.2.1/bin")
$LOAD_PATH.unshift File.expand_path("#{dir}/gems/compass-slickmap-0.2.1/lib")
@gemfile = "#{dir}/../../../../Gemfile"
require "rubygems"
@bundled_specs = {}
@bundled_specs["extlib"] = eval(File.read("#{dir}/specifications/extlib-0.9.13.gemspec"))
@bundled_specs["extlib"].loaded_from = "#{dir}/specifications/extlib-0.9.13.gemspec"
@bundled_specs["highline"] = eval(File.read("#{dir}/specifications/highline-1.5.1.gemspec"))
@bundled_specs["highline"].loaded_from = "#{dir}/specifications/highline-1.5.1.gemspec"
@bundled_specs["diff-lcs"] = eval(File.read("#{dir}/specifications/diff-lcs-1.1.2.gemspec"))
@bundled_specs["diff-lcs"].loaded_from = "#{dir}/specifications/diff-lcs-1.1.2.gemspec"
@bundled_specs["templater"] = eval(File.read("#{dir}/specifications/templater-1.0.0.gemspec"))
@bundled_specs["templater"].loaded_from = "#{dir}/specifications/templater-1.0.0.gemspec"
@bundled_specs["json"] = eval(File.read("#{dir}/specifications/json-1.2.0.gemspec"))
@bundled_specs["json"].loaded_from = "#{dir}/specifications/json-1.2.0.gemspec"
@bundled_specs["json_pure"] = eval(File.read("#{dir}/specifications/json_pure-1.2.0.gemspec"))
@bundled_specs["json_pure"].loaded_from = "#{dir}/specifications/json_pure-1.2.0.gemspec"
@bundled_specs["httpclient"] = eval(File.read("#{dir}/specifications/httpclient-2.1.5.2.gemspec"))
@bundled_specs["httpclient"].loaded_from = "#{dir}/specifications/httpclient-2.1.5.2.gemspec"
@bundled_specs["rake"] = eval(File.read("#{dir}/specifications/rake-0.8.7.gemspec"))
@bundled_specs["rake"].loaded_from = "#{dir}/specifications/rake-0.8.7.gemspec"
@bundled_specs["sprockets"] = eval(File.read("#{dir}/specifications/sprockets-1.0.2.gemspec"))
@bundled_specs["sprockets"].loaded_from = "#{dir}/specifications/sprockets-1.0.2.gemspec"
@bundled_specs["rack"] = eval(File.read("#{dir}/specifications/rack-1.0.1.gemspec"))
@bundled_specs["rack"].loaded_from = "#{dir}/specifications/rack-1.0.1.gemspec"
@bundled_specs["rack-test"] = eval(File.read("#{dir}/specifications/rack-test-0.5.3.gemspec"))
@bundled_specs["rack-test"].loaded_from = "#{dir}/specifications/rack-test-0.5.3.gemspec"
@bundled_specs["configuration"] = eval(File.read("#{dir}/specifications/configuration-1.1.0.gemspec"))
@bundled_specs["configuration"].loaded_from = "#{dir}/specifications/configuration-1.1.0.gemspec"
@bundled_specs["launchy"] = eval(File.read("#{dir}/specifications/launchy-0.3.3.gemspec"))
@bundled_specs["launchy"].loaded_from = "#{dir}/specifications/launchy-0.3.3.gemspec"
@bundled_specs["shotgun"] = eval(File.read("#{dir}/specifications/shotgun-0.4.gemspec"))
@bundled_specs["shotgun"].loaded_from = "#{dir}/specifications/shotgun-0.4.gemspec"
@bundled_specs["sinatra"] = eval(File.read("#{dir}/specifications/sinatra-0.9.4.gemspec"))
@bundled_specs["sinatra"].loaded_from = "#{dir}/specifications/sinatra-0.9.4.gemspec"
@bundled_specs["smusher"] = eval(File.read("#{dir}/specifications/smusher-0.4.2.gemspec"))
@bundled_specs["smusher"].loaded_from = "#{dir}/specifications/smusher-0.4.2.gemspec"
@bundled_specs["yui-compressor"] = eval(File.read("#{dir}/specifications/yui-compressor-0.9.1.gemspec"))
@bundled_specs["yui-compressor"].loaded_from = "#{dir}/specifications/yui-compressor-0.9.1.gemspec"
@bundled_specs["sinatra-content-for"] = eval(File.read("#{dir}/specifications/sinatra-content-for-0.2.gemspec"))
@bundled_specs["sinatra-content-for"].loaded_from = "#{dir}/specifications/sinatra-content-for-0.2.gemspec"
@bundled_specs["haml"] = eval(File.read("#{dir}/specifications/haml-2.2.14.gemspec"))
@bundled_specs["haml"].loaded_from = "#{dir}/specifications/haml-2.2.14.gemspec"
@bundled_specs["compass"] = eval(File.read("#{dir}/specifications/compass-0.10.0.pre1.gemspec"))
@bundled_specs["compass"].loaded_from = "#{dir}/specifications/compass-0.10.0.pre1.gemspec"
@bundled_specs["compass-slickmap"] = eval(File.read("#{dir}/specifications/compass-slickmap-0.2.1.gemspec"))
@bundled_specs["compass-slickmap"].loaded_from = "#{dir}/specifications/compass-slickmap-0.2.1.gemspec"
def self.add_specs_to_loaded_specs
Gem.loaded_specs.merge! @bundled_specs
end
def self.add_specs_to_index
@bundled_specs.each do |name, spec|
Gem.source_index.add_spec spec
end
end
add_specs_to_loaded_specs
add_specs_to_index
def self.require_env(env = nil)
context = Class.new do
@ -109,36 +167,11 @@ module Bundler
end
end
$" << "rubygems.rb"
module Kernel
def gem(*)
# Silently ignore calls to gem, since, in theory, everything
# is activated correctly already.
end
end
# Define all the Gem errors for gems that reference them.
module Gem
def self.ruby ; "/Users/tdreyno/homebrew/Cellar/ruby/1.9.1-p243/bin/ruby" ; end
class LoadError < ::LoadError; end
class Exception < RuntimeError; end
class CommandLineError < Exception; end
class DependencyError < Exception; end
class DependencyRemovalException < Exception; end
class GemNotInHomeException < Exception ; end
class DocumentError < Exception; end
class EndOfYAMLException < Exception; end
class FilePermissionError < Exception; end
class FormatException < Exception; end
class GemNotFoundException < Exception; end
class InstallError < Exception; end
class InvalidSpecificationException < Exception; end
class OperationNotSupportedError < Exception; end
class RemoteError < Exception; end
class RemoteInstallationCancelled < Exception; end
class RemoteInstallationSkipped < Exception; end
class RemoteSourceException < Exception; end
class VerificationError < Exception; end
class SystemExitException < SystemExit; end
@loaded_stacks = Hash.new { |h,k| h[k] = [] }
def source_index.refresh!
super
Bundler.add_specs_to_index
end
end

View file

@ -1,6 +1,171 @@
COMPASS CHANGELOG
=================
0.10.0.pre1 (November 29, 2009)
--------------------------------
Deprecated in this release:
* The usless blueprint "modules" folder will be removed. Please update your
blueprint imports by removing the modules folder. Deprecation warnings will be
emitted if you use the old imports.
* Blueprint mixins that used to accept a "body selector" argument, are now
deprecated, instead you should pass `true` to them and mix them into
the selector of your choice.
* If you are using the `+opacity` or `+inline-block` mixins, you may need to update your imports.
* In your configuration file, setting `http_images_path` to `:relative` is
deprecated in favor of setting `relative_assets` to `true`
* The YUI framework has been extracted to a plugin.
If you use it, please follow the [installation instructions](http://github.com/chriseppstein/yui-compass-plugin)
Command-Line:
* The compass command-line tool has been re-written to allow be easier to
use and be more flexible. The old command line is still supported at
this time. "compass help" will get you started on using the new
command line syntax.
* Allow specification of a height for the grid image
* For the truly hardcore compass users, you may now create a
compass project using "compass create my_project --bare"
and you'll have a completely bare project created for you with no
sass files provided for you.
* Get stats on your compass project with "compass stats". You'll
need to install the "css_parser" ruby gem to get stats on your
css files.
Configuration:
* The entire configuration infrastructure has been re-written to make it
easier to support the various sources of configuration data (project type,
config file, command line, and hard coded defaults)
* Whether to generate relative links to assets is now controlled by a
separate boolean configuration flag called `relative_assets` in the
configuration file and `--relative-assets` on the command line.
Setting `http_images_path` to `:relative` is deprecated.
* You may now configure the http locations for your project by simply setting
`http_path` for the top level path of the project. You
may also set `http_images_dir`, `http_stylesheets_dir`, and
`http_javascripts_dir` relative to the `http_path` instead of
setting the absolute `http_XXX_path` counterparts.
* You may now configure the fonts directory for your project (fonts_dir).
By default, for standalone projects, it is the "fonts" subdirectory of
your css directory. Rails projects will default to "public/fonts".
Compass Core:
* A new helper function `stylesheet_url(path)` can now be used to refer
to assets that are relative to the css directory.
* Compass sprite mixins are now more flexible and feature rich.
* Fixed the append_selector function to allow comma-delimited selectors
for both arguments instead of just the first
* There is no longer any outline on unstyled links in the :active and :focused states.
* IE6 bug fixes for sticky-footer
* New CSS3 Compatibility Mixins. You can import them all with `@import compass/css3.sass`
* `+opacity(amount)` where amount should be between 0 and 1, where 0 is transparent and 1 is opaque.
* `+opaque` and `+transparent` mixins for convenience. Built on top of the opacity mixin.
* `+border-radius(amount)` as well as the following convenience mixins:
* `+border-top-left-radius(amount)`
* `+border-top-right-radius(amount)`
* `+border-top-right-radius(amount)`,
* `+border-bottom-left-radius(amount)`
* `+border-bottom-right-radius(amount)`
* `+border-top-radius(amount)`
* `+border-right-radius(amount)`
* `+border-left-radius(amount)`
* `+border-bottom-radius(amount)`
* `+box-shadow(!horiz_offset, !vert_offset, !blur, !color)`
* `+box-sizing(!sizing_mode)`
* Column support via the following mixins:
* `+column-count`
* `+column-gap`
* `+column-width`
* `+column-rule-width`
* `+column-rule-style`
* `+column-rule-color`
* `+column-rule`
* `+background-clip(clip)` where clip can be `padding-box` or `border-box`
* `+background-origin(origin)` where origin can be `padding-box`, `border-box`, or `content-box`
* `+background-size(size)` where size is a width and height. E.g. "50% 75%"
* `+font-face` should be mixed into the top level of your document.
Usage Example: `+font-face("this name", font-files("this.woff", "woff", "this.otf", "opentype"), "fonts/this.eot", "thisname")`
* Simple Background Gradient Support:
* `+gradient` - Generic background gradient mixin
* `+radial-gradient` - Radial gradient mixin
* `+linear-gradient` - Linear gradient mixin
* `+h-gradient` - Horizontal linear gradient mixin
* `+v-gradient` - Vertical linear gradient mixin
* `+text-shadow` - Create a text shadow effect.
* Transforms Support:
* `+transform`
* `+scale`
* `+rotate`
* `+translate`
* `+skew`
* Transition Support:
* `+transition-property`
* `+transition-duration`
* `+transition-timing-function`
* `+transition-delay`
* `+transition`
* The import for `+inline-block` has moved from compass/utilities/general/inline_block
to compass/css3/inline_block
* The import for `+opacity` has moved from compass/utilities/general/opacity
to compass/css3/opacity
* Note: If you are using the `+opacity` or `+inline-block` mixins,
you may need to update your imports.
Blueprint:
* Make the primary blueprint mixins easier to use by allowing them to be nested when passing true as the first argument.
The old approach of passing a selector as the first argument is now deprecated in favor of a simple flag to indicate nesting or not.
YUI:
* YUI was upgraded to 2.7.0
* Yahoo has deprecated the YUI CSS framework, as such YUI has been extracted to a plugin.
If you use it, please install it with: `sudo gem install compass-yui`
Extensions:
* Extensions can now be installed locally by unpacking them into a project's
"extensions" directory. Rails projects use "vendor/plugins/compass/extenstions".
* Extensions can deliver html to projects if they like. The html can be in
haml and will be transformed to html and can contain inline, compass-enabled
sass.
* All files can be processed using ERB before being copied into the user's
project.
* Compass extensions can now add support for other application frameworks.
These extensions can help compass understand the project structure of that
framework as well as provide runtime integration for ruby-based apps.
Contact me if you plan to do this -- the first couple times may be a little
rough.
* Compass extensions can now add new command line commands. Contact me if you
plan to do this -- the first couple times may be a little rough.
* Extensions can now provide help documentation just after a project is
created and on demand when the user uses the command line help system.
This can be done via the manifest file or by adding a USAGE.markdown file
at the top level of the framework template.
Miscellaneous:
* The compass configuration object is no longer a singleton, this makes it
possible for other ruby software to manage multiple compass projects at a
time.
* Compass no longer requires rubygems in order to work, this is a ruby
best-practice.
* All sass provided by compass now uses css-style property syntax.
* The command line tool is now tested using the cucumber testing framework.
Many thanks to the following Contributors:
* Brandon Mathis - CSS3 (+opacity, +border-radius) and sprites
* Eric Meyer - CSS3 (+box-shadow, +columns, +box-sizing)
* Jacques Crocker - Merb Compatibility fixes
* Gabriel Mansour - Fixes to +unstyled-link
* John Debs - IE6 Fixes for +sticky-footer
* Brian Johnson - Upgraded to YUI 2.7.0
* Beau Smith - fixing my dyslexia.
0.8.17 (September 24, 2009)
---------------------------

View file

@ -3,8 +3,10 @@ A [Sass][sass]-based CSS Meta-Framework that allows you to mix and match any of
- [Compass Core][compass_core_website] - [Wiki Documentation][compass_core_wiki]
- [Blueprint][blueprint_website] - [Wiki Documentation][bleuprint_wiki]
- [YUI][yui_website] - [Wiki Documentation][yui_wiki]
- [960][ninesixty_website] - [Wiki Documentation][ninesixty_wiki]
- [Susy][susy_website] - [Wiki Documentation][susy_wiki]
- [YUI][yui_website] - [Wiki Documentation][yui_wiki]
- New frameworks and extensions are [tracked on the wiki][plugins_wiki] as they are created.
- Other frameworks can be added relatively easily. Create your own!
## Compass Provides
@ -13,6 +15,13 @@ A [Sass][sass]-based CSS Meta-Framework that allows you to mix and match any of
2. Simple integration with [Ruby-on-Rails][ruby_on_rails_wiki], [Merb][merb_wiki], [StaticMatic][static_matic_wiki], and even [non-ruby application servers][command_line_wiki].
3. Loads of Sass mixins to make building your website a snap.
## Quick Start
$ (sudo) gem install compass
$ compass create my_compass_project --using blueprint
$ cd my_compass_project
$ compass watch
## More Information
Please see the [wiki][wiki]
@ -25,13 +34,14 @@ Copyright (c) 2008-2009 Christopher M. Eppstein<br>
All Rights Reserved.<br>
Released under a [slightly modified MIT License][license].
[sass]: http://haml.hamptoncatlin.com/docs/rdoc/classes/Sass.html "Syntactically Awesome StyleSheets"
[sass]: http://sass-lang.com/ "Syntactically Awesome StyleSheets"
[compass_core_website]: http://github.com/chriseppstein/compass/tree/master/frameworks/compass
[compass_core_wiki]: http://github.com/chriseppstein/compass/wikis/compass-core-documentation
[blueprint_website]: http://blueprintcss.org/
[bleuprint_wiki]: http://github.com/chriseppstein/compass/wikis/blueprint-documentation
[yui_website]: http://developer.yahoo.com/yui/grids/
[yui_wiki]: http://github.com/chriseppstein/compass/wikis/yui-documentation
[plugins_wiki]: http://github.com/chriseppstein/compass/wikis/compass-plugins
[ninesixty_website]: http://960.gs/
[ninesixty_wiki]: http://github.com/chriseppstein/compass/wikis/960gs-documentation
[command_line_wiki]: http://wiki.github.com/chriseppstein/compass/command-line-tool
@ -39,6 +49,8 @@ Released under a [slightly modified MIT License][license].
[ruby_on_rails_wiki]: http://wiki.github.com/chriseppstein/compass/ruby-on-rails-integration
[merb_wiki]: http://wiki.github.com/chriseppstein/compass/merb-integration
[static_matic_wiki]: http://wiki.github.com/chriseppstein/compass/staticmatic-integration
[chris_eppstein]: http://acts-as-architect.blogspot.com
[chris_eppstein]: http://chriseppstein.github.com
[caring.com]: http://www.caring.com/ "Senior Care Resources"
[license]: http://github.com/chriseppstein/compass/tree/master/LICENSE.markdown
[susy_website]: http://www.oddbird.net/susy/
[susy_wiki]: http://github.com/chriseppstein/compass/wikis/susy-documentation

View file

@ -2,7 +2,8 @@ if ENV['RUN_CODE_RUN']
# We need to checkout edge haml for the run>code>run test environment.
if File.directory?("haml")
Dir.chdir("haml") do
sh "git", "pull"
sh "git", "fetch"
sh "git", "reset", "--hard", "origin/stable"
end
else
sh "git", "clone", "git://github.com/nex3/haml.git"
@ -12,7 +13,9 @@ end
require 'rubygems'
require 'rake'
require 'lib/compass'
$:.unshift File.join(File.dirname(__FILE__), 'lib')
require 'compass'
require 'rcov/rcovtask'
# ----- Default: Testing ------
@ -23,6 +26,7 @@ require 'fileutils'
Rake::TestTask.new :run_tests do |t|
t.libs << 'lib'
t.libs << 'test'
t.libs << 'haml/lib' if ENV["RUN_CODE_RUN"]
test_files = FileList['test/**/*_test.rb']
test_files.exclude('test/rails/*', 'test/haml/*')
@ -45,7 +49,7 @@ begin
gemspec.description = "Compass is a Sass-based Stylesheet Framework that streamlines the creation and maintainance of CSS."
gemspec.authors = ["Chris Eppstein"]
gemspec.has_rdoc = false
gemspec.add_dependency('haml', '>= 2.2.0')
gemspec.add_dependency('haml', '>= 2.2.14')
gemspec.files = []
gemspec.files << "CHANGELOG.markdown"
gemspec.files << "README.markdown"
@ -58,12 +62,13 @@ begin
gemspec.files += Dir.glob("examples/**/*.*")
gemspec.files -= Dir.glob("examples/**/*.css")
gemspec.files -= Dir.glob("examples/**/*.html")
gemspec.files += Dir.glob("frameworks/**/*.*")
gemspec.files -= Dir.glob("examples/*/extensions/**")
gemspec.files += Dir.glob("lib/**/*")
gemspec.files += Dir.glob("test/**/*.*")
gemspec.files -= Dir.glob("test/fixtures/stylesheets/*/saved/**/*.*")
gemspec.test_files = Dir.glob("test/**/*.*")
gemspec.test_files -= Dir.glob("test/fixtures/stylesheets/*/saved/**/*.*")
gemspec.test_files += Dir.glob("features/**/*.*")
end
rescue LoadError
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
@ -89,6 +94,8 @@ end
task :release => :commit_revision
task :gem => :build
desc "Compile Examples into HTML and CSS"
task :examples do
linked_haml = "tests/haml"
@ -105,6 +112,10 @@ task :examples do
next unless File.directory?(example)
puts "\nCompiling #{example}"
puts "=" * "Compiling #{example}".length
Dir.chdir example do
load "bootstrap.rb" if File.exists?("bootstrap.rb")
Compass::Exec::SwitchUI.new(["--force"]).run!
end
# compile any haml templates to html
FileList["#{example}/**/*.haml"].each do |haml_file|
basename = haml_file[0..-6]
@ -114,9 +125,6 @@ task :examples do
output.write(engine.render)
output.close
end
Dir.chdir example do
Compass::Exec::Compass.new(["--force"]).run!
end
end
end
@ -125,3 +133,34 @@ namespace :git do
sh "git", "clean", "-fdx"
end
end
require 'cucumber/rake/task'
namespace :rcov do
Cucumber::Rake::Task.new(:cucumber) do |t|
t.rcov = true
t.rcov_opts = %w{--exclude osx\/objc,gems\/,spec\/,features\/ --aggregate coverage.data}
t.rcov_opts << %[-o "coverage"]
end
Rcov::RcovTask.new(:units) do |rcov|
rcov.libs << 'lib'
rcov.libs << 'haml/lib' if ENV["RUN_CODE_RUN"]
test_files = FileList['test/**/*_test.rb']
test_files.exclude('test/rails/*', 'test/haml/*')
rcov.pattern = test_files
rcov.output_dir = 'coverage'
rcov.verbose = true
rcov.rcov_opts = %w{--exclude osx\/objc,gems\/,spec\/,features\/ --aggregate coverage.data}
rcov.rcov_opts << %[-o "coverage" --sort coverage]
end
desc "Run both specs and features to generate aggregated coverage"
task :all do |t|
rm "coverage.data" if File.exist?("coverage.data")
Rake::Task["rcov:units"].invoke
Rake::Task["rcov:cucumber"].invoke
end
end

View file

@ -0,0 +1,5 @@
---
:patch: 0
:major: 0
:minor: 10
:build: pre1

View file

@ -0,0 +1,26 @@
#!/usr/bin/env ruby
# The compass command line utility
# This allows compass to run easily from a git checkout without install.
def fallback_load_path(path)
retried = false
begin
yield
rescue LoadError
unless retried
$: << path
retried = true
retry
end
raise
end
end
fallback_load_path(File.join(File.dirname(__FILE__), '..', 'lib')) do
require 'compass'
require 'compass/exec'
end
command_line_class = Compass::Exec::Helpers.select_appropriate_command_line_ui(ARGV)
exit command_line_class.new(ARGV).run!

View file

@ -32,7 +32,7 @@
%a{ :href => "parts/grid.html" }
Grid
%td
%a{ :href => "../../frameworks/blueprint/stylesheets/blueprint/modules/_grid.sass" }
%a{ :href => "../../frameworks/blueprint/stylesheets/blueprint/_grid.sass" }
grid.sass
%td
Tests classes provided by the grid module.
@ -41,7 +41,7 @@
%a{ :href => "parts/elements.html" }
Typography
%td
%a{ :href => "../../frameworks/blueprint/stylesheets/blueprint/modules/_typography.sass" }
%a{ :href => "../../frameworks/blueprint/stylesheets/blueprint/_typography.sass" }
typography.sass
%td
Tests HTML elements which gets set in the typography module.
@ -50,7 +50,7 @@
%a{ :href => "parts/forms.html" }
Forms
%td
%a{ :href => "../../frameworks/blueprint/stylesheets/blueprint/modules/_form.sass" }
%a{ :href => "../../frameworks/blueprint/stylesheets/blueprint/_form.sass" }
form.sass
%td
Tests classes and default look provided by the form module.

View file

@ -184,6 +184,8 @@
%input#q.text{ :type => "text", :name => "q", :value => "Field with class .text" }
.span-2.last
%input.button{ :type => "submit", :value => "submit" }
/ WTF This doesn't render correctly without some space.
&nbsp;
%hr
%p
%a{ :href => "http://validator.w3.org/check?uri=referer" }

View file

@ -1,5 +1,5 @@
@import blueprint.sass
@import blueprint/modules/scaffolding.sass
@import blueprint/scaffolding.sass
@import compass/reset.sass
+blueprint

View file

@ -31,13 +31,13 @@
%a{ :href => "plugins/fancy_type.html" }
Fancy Type
%td
%a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/modules/_grid.sass" }
%a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/_grid.sass" }
grid.sass
,
%a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/modules/_typography.sass" }
%a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/_typography.sass" }
typography.sass
,
%a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/modules/_fancy_type.sass" }
%a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/_fancy_type.sass" }
fancy_type.sass
%td
A simple sample page, with common elements and fancy type.
@ -46,7 +46,7 @@
%a{ :href => "plugins/buttons.html" }
Buttons
%td
%a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/modules/_buttons.sass" }
%a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/_buttons.sass" }
buttons.sass
%td
A simple page, showing links and buttons styled using the button plugin.
@ -55,7 +55,7 @@
%a{ :href => "plugins/link_icons.html" }
Link Icons
%td
%a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/modules/_link_icons.sass" }
%a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/_link_icons.sass" }
link_icons.sass
%td
A simple page, showing links icons.
@ -64,7 +64,7 @@
%a{ :href => "plugins/rtl.html" }
RTL
%td
%a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/modules/_rtl.sass" }
%a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/_rtl.sass" }
rtl.sass
%td
A simple page, showing a right-to-left grid layout.

View file

@ -1,5 +1,5 @@
@import compass/utilities/general/float.sass
@import blueprint/modules/buttons.sass
@import blueprint/buttons.sass
//
Use the following HTML code to place the buttons on your site:
@ -23,7 +23,7 @@ a.button
+anchor-button("left")
// All the button color mixins take 4 optional arguments:
// font color, background color, border color, border highlight color
// the first three default to constants set in blueprint/modules/buttons.sass
// the first three default to constants set in blueprint/buttons.sass
// the last one defaults to a shade lighter than the border color.
+button-colors
+button-hover-colors

View file

@ -1,4 +1,4 @@
@import blueprint/modules/link_icons.sass
@import blueprint/link_icons.sass
// This turns link icons on for all links. You can change the scoping selector from
// body to something more specific if you prefer.

View file

@ -1,7 +1,7 @@
@import blueprint.sass
@import blueprint/modules/fancy_type.sass
@import blueprint/modules/scaffolding.sass
@import blueprint/modules/rtl.sass
@import blueprint/fancy_type.sass
@import blueprint/scaffolding.sass
@import blueprint/rtl.sass
@import compass/reset.sass

View file

@ -1,6 +1,6 @@
@import blueprint.sass
@import blueprint/modules/fancy_type.sass
@import blueprint/modules/scaffolding.sass
@import blueprint/fancy_type.sass
@import blueprint/scaffolding.sass
@import compass/reset.sass

View file

@ -0,0 +1,4 @@
@import blueprint.sass
body.bp
+blueprint-ie(true)

View file

@ -0,0 +1,4 @@
@import blueprint.sass
body.bp
+blueprint-print(true)

View file

@ -1,4 +1,5 @@
@import blueprint.sass
@import compass/reset.sass
+blueprint("body.bp")
body.bp
+blueprint(true)

View file

@ -37,7 +37,7 @@
%hr.space
#main
%p
%img#test{ :src => "test.jpg", :alt => "test" }
%img#test.left{ :src => "test.jpg", :alt => "test" }
Lorem ipsum dolor sit amet,
%em
consectetuer adipiscing elit

View file

@ -1,15 +1,14 @@
@import blueprint.sass
@import blueprint/modules/fancy_type.sass
@import blueprint/modules/scaffolding.sass
@import blueprint/modules/liquid.sass
@import blueprint/fancy_type.sass
@import blueprint/scaffolding.sass
@import blueprint/liquid.sass
@import compass/reset.sass
.container
+container
+blueprint-typography("body.blueprint")
body.blueprint
+blueprint-typography(true)
+blueprint-scaffolding-body
hr
+colruler

View file

@ -1,11 +1,10 @@
@import blueprint.sass
@import blueprint/modules/fancy_type.sass
@import blueprint/modules/scaffolding.sass
@import blueprint/fancy_type.sass
@import blueprint/scaffolding.sass
@import compass/reset.sass
+blueprint-typography("body.blueprint")
body.blueprint
+blueprint-typography(true)
+blueprint-scaffolding-body
.container
+container

View file

@ -0,0 +1,3 @@
require File.join(File.dirname(__FILE__), '..', 'downloader')
install_from_github('chriseppstein', 'yui-compass-plugin', 'yui')

View file

@ -0,0 +1,70 @@
=yui-base
body
:margin 10px
h1
:font-size 138.5%
h2
:font-size 123.1%
h3
:font-size 108%
h1, h2, h3
:margin 1em 0
h1,h2, h3, h4, h5, h6, strong, dt
:font-weight bold
optgroup
:font-weight normal
abbr, acronym
:border-bottom 1px dotted #000
:cursor help
em
:font-style italic
del
:text-decoration line-through
blockquote, ul, ol, dl
:margin 1em
ol,ul,dl
:margin-left 2em
ol li
:list-style decimal outside
ul li
:list-style disc outside
dl dd
:margin-left 1em
th, td
:border 1px solid #000
:padding .5em
th
:font-weight bold
:text-align center
caption
:margin-bottom .5em
:text-align center
sup
:vertical-align super
sub
:vertical-align sub
p, fieldset, table, pre
:margin-bottom 1em
button, input[type="checkbox"], input[type="radio"], input[type="reset"], input[type="submit"]
padding: 1px

View file

@ -28,6 +28,13 @@
:*font-size small
:*font x-small
select,
input,
button,
textarea,
button
:font 99% arial,helvetica,clean,sans-serif
table
:font-size inherit
:font 100%

View file

@ -18,6 +18,7 @@
+yui-document("fluid")
#doc4
+yui-document(974px)
/* Section: Preset Template Rules (.yui-t[1-6])
.yui-t1
+yui-two-column-left-template(160px)
.yui-t2
@ -30,22 +31,31 @@
+yui-two-column-right-template(240px)
.yui-t6
+yui-two-column-right-template(300px)
.yui-t7
+yui-one-column-template
=yui-grids-footer
=yui-group-clearing
zoom: 1
&:after
content: "."
display: block
height: 0
clear: both
visibility: hidden
=yui-grids-body
+clearfix
=yui-grids-init(!footer = "#ft", !body = "#bd")
=yui-grids-init(!header = "#hd", !footer = "#ft", !body = "#bd")
/* Section: General Rules
body
:text-align center
@if !header
#{!header}
+yui-group-clearing
@if !footer
#{!footer}
+yui-grids-footer
+yui-group-clearing
@if !body
#{!body}
+yui-grids-body
+yui-group-clearing
=em-size(!style, !px_size, !base_font_size = !yui_default_base_font_size)
:#{!style}= 1em * !px_size / !base_font_size
@ -54,8 +64,8 @@
+em-size(!style, !px_size, !base_font_size)
+em-size("*"+!style, !px_size * 39 / 40, !base_font_size)
// All documents must have these styles. Setting a min-width is optional, but recommended. To omit it, pass false as the min_width value.
=yui-document-base(!min_width = 750px)
// All documents must have these styles
=yui-document-base(!min_width = false)
:margin auto
:text-align left
@if !min_width
@ -66,14 +76,12 @@
:_position static
=yui-main-block
:position static
:float none
:width auto
// Creates a fixed width document container
// Pass "fluid" for the width to create a document that grows with the width of the browser.
=yui-document(!width, !min_width = 750px, !base_font_size = !yui_default_base_font_size)
=yui-document(!width, !min_width = false, !base_font_size = !yui_default_base_font_size)
+yui-document-base(!min_width)
@if !width == "fluid"
:margin auto 10px
@ -81,86 +89,164 @@
@else
+em-size-hacked("width", !width, !base_font_size)
=yui-two-column-left-template(!column_width, !main_selector = "#yui-main", !block_selector = ".yui-b", !document_width = 750px, !min_width = 750px, !base_font_size = !yui_default_base_font_size)
=yui-two-column-left-template(!column_width, !main_selector = "#yui-main", !block_selector = ".yui-b", !document_width = 750px, !min_width = false, !base_font_size = !yui_default_base_font_size)
+yui-document(!document_width, !min_width, !base_font_size)
#{!main_selector}
:width 100%
:float right
+em-size("margin-left", -!column_width - 10px, !base_font_size)
#{!block_selector}
+yui-main-block
+em-size-hacked("margin-left", !column_width, !base_font_size)
#{!block_selector}
+yui-block-base
:float left
+em-size-hacked("width", !column_width, !base_font_size)
=yui-two-column-right-template(!column_width, !main_selector = "#yui-main", !block_selector = ".yui-b", !document_width = 750px, !min_width = 750px, !base_font_size = !yui_default_base_font_size)
+yui-document(!document_width, !min_width, !base_font_size)
#{!main_selector}
:width 100%
:float left
+em-size("margin-right", -!column_width - 10px, !base_font_size)
:float right
:margin-left -25em
#{!block_selector}
+yui-main-block
+em-size-hacked("margin-right", !column_width, !base_font_size)
+em-size("margin-left", !column_width + 13px, !base_font_size)
// t3 is 15px for IE for some reason - seems like this should be some formula based on the column width and not a fixed number - need to do more research
@if !column_width > 180px
+em-size("*margin-left", (!column_width + 15px) * 39 / 40, !base_font_size)
@else
+em-size("*margin-left", (!column_width + 14px) * 39 / 40, !base_font_size)
=yui-two-column-right-template(!column_width, !main_selector = "#yui-main", !block_selector = ".yui-b", !document_width = 750px, !min_width = false, !base_font_size = !yui_default_base_font_size)
+yui-document(!document_width, !min_width, !base_font_size)
#{!block_selector}
+yui-block-base
:float right
+em-size-hacked("width", !column_width, !base_font_size)
=yui-one-column-template(!main_selector = "#yui-main", !block_selector = ".yui-b", !document_width = 750px, !min_width = 750px, !base_font_size = !yui_default_base_font_size)
+yui-document(!document_width, !min_width, !base_font_size)
#{!main_selector}
:width 100%
:float left
:margin-right -25em
#{!block_selector}
+yui-main-block
+em-size("margin-right", !column_width + 13px, !base_font_size)
// t5 is 15px for IE for some reason - seems like this should be some formula based on the column width and not a fixed number - need to do more research
@if !column_width > 180px
+em-size("*margin-right", (!column_width + 15px) * 39 / 40, !base_font_size)
@else
+em-size("*margin-right", (!column_width + 14px) * 39 / 40, !base_font_size)
=yui-one-column-template(!main_selector = "#yui-main", !block_selector = ".yui-b", !document_width = 750px, !min_width = false, !base_font_size = !yui_default_base_font_size)
+yui-document(!document_width, !min_width, !base_font_size)
#{!main_selector}
#{!block_selector}
+yui-main-block
:display block
:margin 0 0 1em 0
#{!block_selector}
+yui-block-base
=yui-custom-template(!main_selector = "#yui-main", !block_selector = ".yui-b")
#{!block_selector}
+yui-block-base
#{!main_selector}
:width 100%
#{!block_selector}
+yui-main-block
#{!block_selector}
+yui-block-base
=yui-grid-divisions(!unit = ".yui-u", !g_50_50 = ".yui-g", !g_33_33_33 = ".yui-gb", !g_67_33 = ".yui-gc", !g_33_67 = ".yui-gd", !g_75_25 = ".yui-ge", !g_25_75 = ".yui-gf")
/* Section: Grids and Nesting Grids
/* from #yui-main, .yui-g .yui-u .yui-g
#{nest(!g_50_50, !unit, !g_50_50)}
width: 100%
/* Children generally take half the available space
#{nest(!g_33_33_33, !unit)},
#{nest(!g_50_50, !g_33_33_33, !unit)},
#{nest(!g_67_33, !unit)},
#{nest(!g_67_33, !g_50_50)},
#{nest(!g_33_67, !unit)},
#{nest(!g_33_33_33, !g_50_50)},
#{nest(!g_33_33_33, !g_33_33_33)},
#{nest(!g_33_33_33, !g_67_33)},
#{nest(!g_33_33_33, !g_33_67)},
#{nest(!g_33_33_33, !g_75_25)},
#{nest(!g_33_33_33, !g_25_75)},
#{nest(!g_33_33_33, !unit)}
#{nest(!g_67_33, !unit)},
#{nest(!g_67_33, !g_50_50)},
#{nest(!g_33_67, !unit)}
float: left
margin-left: 2%
width: 32%
#{!g_33_33_33}
#{!g_33_33_33},
#{!g_67_33}
#{!unit}
*margin-left: 1.8%
_margin-left: 4%
#{nest(!g_50_50, !g_33_33_33, !unit)}
_margin-left: .8%
#{nest(!g_33_33_33, !unit)}
/* Float units (and sub grids) to the right
#{nest(!g_50_50, !unit)},
#{nest(!g_50_50, !g_50_50)},
#{nest(!g_50_50, !g_33_33_33)},
#{nest(!g_50_50, !g_67_33)},
#{nest(!g_50_50, !g_33_67)},
#{nest(!g_50_50, !g_75_25)},
#{nest(!g_50_50, !g_25_75)},
#{nest(!g_67_33, !unit)},
#{nest(!g_33_67, !g_50_50)},
#{nest(!g_50_50, !g_67_33, !unit)},
#{nest(!g_75_25, !unit)},
#{nest(!g_75_25, !g_50_50)},
#{nest(!g_25_75, !g_50_50)},
#{nest(!g_25_75, !unit)}
float: right
#{nest(!g_33_33_33, "div.first")}
margin-left: 0
/* Float units (and sub grids) to the left
#{!g_50_50},
#{!g_33_33_33},
#{!g_67_33},
#{!g_33_67},
#{!g_75_25},
#{!g_25_75},
#{nest(!g_50_50, !g_67_33)},
#{nest(!g_50_50, !g_75_25)},
#{nest(!g_67_33, "div.first")}
div.first
float: left
#{!g_50_50}
#{!unit},
#{!g_50_50},
#{!g_33_33_33},
#{!g_67_33},
#{!g_33_67},
#{!g_75_25},
#{!g_25_75}
width: 49.1%
#{nest(!g_33_33_33, !unit)},
#{nest(!g_50_50, !g_33_33_33, !unit)},
#{nest(!g_33_33_33, !g_50_50)},
#{nest(!g_33_33_33, !g_33_33_33)},
#{nest(!g_33_33_33, !g_67_33)},
#{nest(!g_33_33_33, !g_33_67)},
#{nest(!g_33_33_33, !g_75_25)},
#{nest(!g_33_33_33, !g_25_75)},
#{nest(!g_67_33, !unit)},
#{nest(!g_67_33, !g_50_50)},
#{nest(!g_33_67, !unit)}
width: 32%
margin-left: 1.99%
/* Give IE some extra breathing room for 1/3-based rounding issues
#{nest(!g_33_33_33, !unit)}
*margin-left: 1.9%
*width: 31.9%
#{nest(!g_50_50, !g_33_33_33)},
#{!g_33_33_33},
#{!g_67_33},
#{!g_33_67}
div.first
margin-left: 0
/* Section: Deep Nesting
#{!g_50_50},
#{!g_33_33_33},
#{!g_67_33},
#{!g_33_67},
#{!g_75_25},
#{!g_25_75}
#{!g_50_50}
#{!unit}
width: 49%
*width: 48.1%
*margin-left: 0
#{nest(!g_50_50, !g_50_50, !unit)}
width: 48.1%
#{!g_50_50},
#{!g_33_33_33}
#{!g_33_33_33}
@ -169,12 +255,32 @@
*width: 32%
_width: 31.7%
#{nest(!g_50_50, !g_67_33, "div.first")},
#{nest(!g_67_33, "div.first")},
#{nest(!g_33_67, !g_50_50)},
#{nest(!g_33_67, !unit)}
width: 66%
#{nest(!g_33_33_33, !g_50_50, "div.first")}
*margin-right: 4%
_margin-right: 1.3%
#{!g_33_33_33}
#{!g_67_33},
#{!g_33_67}
div.first
*margin-right: 0
#{!g_33_33_33}
#{!g_33_33_33},
#{!g_67_33}
#{!unit}
*margin-left: 1.8%
_margin-left: 4%
#{nest(!g_50_50, !g_33_33_33, !unit)}
_margin-left: 1.0%
#{nest(!g_33_33_33, !g_33_67, !unit)}
*width: 66%
_width: 61.2%
@ -203,52 +309,6 @@
#{!unit}
margin: 0
#{nest(!g_50_50, !unit)},
#{nest(!g_50_50, !g_50_50)},
#{nest(!g_50_50, !g_33_33_33)},
#{nest(!g_50_50, !g_67_33)},
#{nest(!g_50_50, !g_33_67)},
#{nest(!g_50_50, !g_75_25)},
#{nest(!g_50_50, !g_25_75)},
#{nest(!g_67_33, !unit)},
#{nest(!g_33_67, !g_50_50)},
#{nest(!g_50_50, !g_67_33, !unit)},
#{nest(!g_75_25, !unit)},
#{nest(!g_75_25, !g_50_50)},
#{nest(!g_25_75, !g_50_50)},
#{nest(!g_25_75, !unit)}
float: right
#{nest(!g_50_50, !g_67_33)},
#{nest(!g_50_50, !g_75_25)},
#{!g_50_50},
#{!g_67_33},
#{nest(!g_67_33, "div.first")},
#{!g_33_67},
#{!g_75_25},
#{!g_25_75}
div.first
float: left
#{!g_50_50},
#{!g_33_33_33},
#{!g_67_33},
#{!g_33_67},
#{!g_75_25},
#{!g_25_75}
#{!g_50_50}
#{!unit}
width: 49%
*width: 48.1%
*margin-left: 0
#{nest(!g_50_50, !g_50_50, "div.first")}
*margin: 0
#{nest(!g_33_33_33, !g_50_50, "div.first")}
*margin-right: 4%
_margin-right: 1.3%
#{nest(!g_33_33_33, !g_33_33_33, !unit)}
_margin-left: .7%
@ -264,29 +324,6 @@
*width: 48.1%
*margin-left: 0
#{!g_50_50}
#{!unit},
#{!g_50_50},
#{!g_33_33_33},
#{!g_67_33},
#{!g_33_67},
#{!g_75_25},
#{!g_25_75}
width: 49.1%
#{nest(!g_50_50, !g_33_33_33)},
#{!g_33_33_33},
#{!g_67_33},
#{!g_33_67}
div.first
margin-left: 0
#{nest(!g_50_50, !g_67_33, "div.first")},
#{nest(!g_67_33, "div.first")},
#{nest(!g_33_67, !g_50_50)},
#{nest(!g_33_67, !unit)}
width: 66%
#{!g_33_67},
#{nest(!g_33_33_33, !g_33_67)}
div.first
@ -300,6 +337,11 @@
#{nest(!g_25_75, "div.first")}
width: 24%
#{nest(!g_75_25, "div.first")},
#{nest(!g_25_75, !g_50_50)},
#{nest(!g_25_75, !unit)}
width: 74.2%
#{!g_33_33_33}
#{!g_75_25},
#{!g_25_75}
@ -312,30 +354,32 @@
div.first
float: left
#{nest(!g_75_25, "div.first")},
#{nest(!g_25_75, !g_50_50)},
#{nest(!g_25_75, !unit)}
width: 74.2%
/* Width Accommodation for Nested Contexts
#{!g_33_33_33}
#{nest(!g_75_25, !unit)},
#{nest(!g_25_75, "div.first")}
*width: 24%
_width: 20%
/* Width Accommodation for Nested Contexts
#{!g_33_33_33}
#{nest(!g_75_25, "div.first")},
#{nest(!g_25_75, !unit)}
*width: 73.5%
_width: 65.5%
/* Patch for GD within GE
#{nest(!g_75_25, "div.first", !g_33_67, !unit)}
width: 65%
#{nest(!g_75_25, "div.first", !g_33_67, "div.first")}
width: 32%
/* @group Clearing
#{!g_50_50},
#{!g_33_33_33},
#{!g_67_33},
#{!g_33_67},
#{!g_75_25},
#{!g_25_75}
+clearfix
#{nest(!g_33_33_33, !unit)}
float: left
+yui-group-clearing

Some files were not shown because too many files have changed in this diff Show more