From 5bc36855bc53e23a905e64e7ae0665088b815138 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 9 Jan 2011 22:16:57 -0800 Subject: [PATCH 001/223] fix typo --- doc-src/content/index.haml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc-src/content/index.haml b/doc-src/content/index.haml index acd834f3..365aa750 100644 --- a/doc-src/content/index.haml +++ b/doc-src/content/index.haml @@ -62,10 +62,10 @@ layout: homepage %li %a(href="http://green.cals.cornell.edu/") %img(src="/images/sites/cornell.jpg") - %span.title Corenell University - CALS + %span.title Cornell University - CALS %span.url http://green.cals.cornell.edu %li %a(href="http://busyconf.com/") %img(src="/images/sites/busyconf.jpg") %span.title BusyConf - %span.url http://busyconf.com \ No newline at end of file + %span.url http://busyconf.com From cb7ac80330117ff8407815a9ba6604946b0bd040 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 9 Jan 2011 22:18:05 -0800 Subject: [PATCH 002/223] New Download page for compass docs --- doc-src/assets/javascripts/download.js | 79 +++++++++++++++++++ doc-src/content/download.haml | 48 +++++++++++ .../stylesheets/partials/_download.scss | 8 ++ doc-src/content/stylesheets/screen.scss | 1 + doc-src/layouts/partials/main-navigation.haml | 6 +- doc-src/lib/default.rb | 4 + lib/compass/commands/print_version.rb | 17 ++-- 7 files changed, 154 insertions(+), 9 deletions(-) create mode 100644 doc-src/assets/javascripts/download.js create mode 100644 doc-src/content/download.haml create mode 100644 doc-src/content/stylesheets/partials/_download.scss diff --git a/doc-src/assets/javascripts/download.js b/doc-src/assets/javascripts/download.js new file mode 100644 index 00000000..8ad3b756 --- /dev/null +++ b/doc-src/assets/javascripts/download.js @@ -0,0 +1,79 @@ +function showInstallCommand() { + var cmd = $("#existence").val(); + var commands = []; + var notes = []; + var project_name = "<myproject>"; + var can_be_bare = true; + commands.push("$ gem install compass"); + if (cmd == "init") { + commands.push("$ cd " + project_name); + project_name = "."; + } + if ($("#app-type").val() == "rails") { + if (cmd == "create") { + commands.push("$ rails new " + project_name); + } + cmd = "init rails"; + can_be_bare = false; + } else if ($("#app-type").val() == "other") { + if (cmd == "init") { + cmd = "create"; + } + } else if ($("#app-type").val() == "stand-alone") { + if (cmd == "init") { + cmd = "install"; + can_be_bare = false; + } + } + var framework = $("#framework").val(); + var create_command; + if (cmd == "install") { + create_command = "$ compass install " + framework + " " + project_name; + } else { + create_command = "$ compass " + cmd + " " + project_name; + } + if (framework != "compass" && framework != "bare" && cmd != "install") { + create_command = create_command + " --using " + framework; + } else if (framework == "bare") { + if (can_be_bare) { + create_command = create_command + " --bare"; + } else { + notes.push("

You cannot create a bare project in this configuration. Feel free to remove any stylesheets that you don't want.

"); + } + } + if ($("#syntax").val() == "sass") { + create_command = create_command + " --syntax sass"; + } + if ($("#options").val() == "customized") { + create_command = create_command + " --sass-dir <sassdir> --css-dir <cssdir> --javascripts-dir <jsdir> --images-dir <imgsdir>"; + } + commands.push(create_command); + var instructions = "
" + commands.join("\n") + "
"; + if (instructions.match(/</)) { + notes.push("

Note: Values indicated by <> are placeholders. Change them to suit your needs."); + } + $("#steps").html(instructions + notes.join("")); +} + +function attachMadlibBehaviors() { + $("#app-type").change(function(event) { + var val = $(event.target).val(); + if (val == "other") { + $("#options").val("customized"); + $(".madlib").addClass("customizable"); + } else if (val == "rails") { + $("#options").val("default"); + $(".madlib").removeClass("customizable"); + } else { + $(".madlib").addClass("customizable"); + } + }); + $("#existence, #app-type, #framework, #syntax, #options").change(showInstallCommand); +} + +function setupMadlib() { + attachMadlibBehaviors(); + showInstallCommand(); +} + +$(setupMadlib); diff --git a/doc-src/content/download.haml b/doc-src/content/download.haml new file mode 100644 index 00000000..97424f2b --- /dev/null +++ b/doc-src/content/download.haml @@ -0,0 +1,48 @@ +--- +title: Download | Compass Documentation +crumb: Download +body_id: download +--- +- content_for :javascripts do + %script(src="/javascripts/download.js") +%p + Compass runs on any computer that has + ruby installed. + +%h2 Tell us about your project and we'll help you get it set up: +%blockquote.madlib.customizable< + I would like to set up my + %select#existence + %option{:value => "create"} new + %option{:value => "init"} existing + %select#app-type + %option{:value => "stand-alone"} compass + %option{:value => "rails"} rails + %option{:value => "other"} other + project + with + %select#framework + %option{:value => "compass"} compass's + %option{:value => "blueprint"} blueprint's + %option{:value => "bare"} no + starter stylesheets. + %br + I prefer the + %select#syntax + %option{:value => "scss"} CSS based (SCSS) + %option{:value => "sass"} Indent based (Sass) + syntax + = succeed "." do + and would like to + %select#options + %option{:value => "default"} use compass's recommended + %option{:value => "customized"} customize my project's + directory structure +%h4 Thanks. Now run the following steps in your terminal: +#steps + Loading... +%p.note Note: $ is a placeholder for your terminal's prompt. You don't type it. +%h4 Then follow the instructions that compass provides in the output. + +%h2 Or you can buy a GUI for Compass from Handlino. + diff --git a/doc-src/content/stylesheets/partials/_download.scss b/doc-src/content/stylesheets/partials/_download.scss new file mode 100644 index 00000000..ddc823ac --- /dev/null +++ b/doc-src/content/stylesheets/partials/_download.scss @@ -0,0 +1,8 @@ +body#download { + #steps, p.madlib, p.note, h4 { margin-top: 1em; } + p.note { font-size: smaller; font-style: italic; } + p.warning { color: #c00; } + .customization { display: none; } + .customizable .customization { display: inline; } + blockquote { border-left: 2px solid #ccc; text-indent: 0; padding-left: 0.5em; } +} \ No newline at end of file diff --git a/doc-src/content/stylesheets/screen.scss b/doc-src/content/stylesheets/screen.scss index 7c7777ca..cbbbe5ed 100644 --- a/doc-src/content/stylesheets/screen.scss +++ b/doc-src/content/stylesheets/screen.scss @@ -16,6 +16,7 @@ @import "partials/main"; @import "partials/code"; @import "partials/example"; +@import "partials/download"; @import "syntax/syntax-theme"; diff --git a/doc-src/layouts/partials/main-navigation.haml b/doc-src/layouts/partials/main-navigation.haml index 15d33110..038d17be 100644 --- a/doc-src/layouts/partials/main-navigation.haml +++ b/doc-src/layouts/partials/main-navigation.haml @@ -9,6 +9,8 @@ %li %a{:href => "/reference/compass/", :rel => "documentation"} Reference %li - %a{:href => "/help", :rel=> "help"} Help + %a{:href => "/help/", :rel=> "help"} Help %li - %a{:href => "/get-involved", :rel=> "get-involved"} Get Involved + %a{:href => "/get-involved/", :rel=> "get-involved"} Get Involved + %li + %a{:href => "/download/", :rel=> "download"} Download diff --git a/doc-src/lib/default.rb b/doc-src/lib/default.rb index 46b98745..a2a5c782 100644 --- a/doc-src/lib/default.rb +++ b/doc-src/lib/default.rb @@ -132,3 +132,7 @@ def compass_version "#{v[:major]}.#{v[:minor]}#{"."+v[:state] if v[:state]}.#{v[:build]}" end +def long_compass_version + require 'compass/commands' + Compass::Commands::PrintVersion.long_output_string +end \ No newline at end of file diff --git a/lib/compass/commands/print_version.rb b/lib/compass/commands/print_version.rb index bc6fa059..0fa8da3a 100644 --- a/lib/compass/commands/print_version.rb +++ b/lib/compass/commands/print_version.rb @@ -54,6 +54,15 @@ Options: parser.parse! parser.options end + def long_output_string + lines = [] + lines << "Compass #{::Compass.version[:string]}" + lines << "Copyright (c) 2008-#{Time.now.year} Chris Eppstein" + lines << "Released under the MIT License." + lines << "Compass is charityware." + lines << "Please make a tax deductable donation for a worthy cause: http://umdf.org/compass" + lines.join("\n") + end end attr_accessor :options @@ -79,13 +88,7 @@ Options: elsif options[:quiet] puts ::Compass.version[:string] else - lines = [] - lines << "Compass #{::Compass.version[:string]}" - lines << "Copyright (c) 2008-#{Time.now.year} Chris Eppstein" - lines << "Released under the MIT License." - lines << "Compass is charityware." - lines << "Please make a tax deductable donation: http://umdf.org/compass" - puts lines.join("\n") + puts self.class.long_output_string end end end From de99dddebfc48bbfef7734e6a910c16d7ccac161 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 9 Jan 2011 22:59:23 -0800 Subject: [PATCH 003/223] Version bump for release --- VERSION.yml | 4 ++-- doc-src/content/CHANGELOG.markdown | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/VERSION.yml b/VERSION.yml index a5fe2d1b..5cf0a54e 100644 --- a/VERSION.yml +++ b/VERSION.yml @@ -1,5 +1,5 @@ --- :major: 0 :minor: 11 -:state: alpha -:build: 4 +:state: beta +:build: 0 diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 19f04ecb..ae80c8c7 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -7,15 +7,17 @@ layout: default COMPASS CHANGELOG ================= -Upgrading compass is really easy. +Upgrading compass is pretty easy. Don't let all these details [scare you...](/help/tutorials/upgrading/im-scared/) The Documentation for the [latest stable release](http://compass-style.org/docs/): The Documentation for the [latest preview release](http://beta.compass-style.org/) -0.11.alpha.5 (future) ---------------------- +0.11.beta.0 (01/09/2011) +------------------------ + +Compass v0.11 is now feature complete. Future changes to this release will be doc improvements, bug fixes, performance tuning, and addressing user feedback. * Added optional support for IE8 with $legacy-support-for-ie8 which defaults to true. * Updated the opacity and filter-gradient mixins to make IE's hacky DirectX filters @@ -37,7 +39,6 @@ The Documentation for the [latest preview release](http://beta.compass-style.org and `select` form fields, so compass no longer defaults to using `!important` in those cases. If you were relying on this behavior, you may need to adjust your stylesheets accordingly. - 0.11.alpha.4 (12/08/2010) ------------------------- From ceeb11ec9ad21cc12ccdda612db0fa39290ba74f Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 10 Jan 2011 08:15:18 -0800 Subject: [PATCH 004/223] Guide the new users to some follow up docs. --- doc-src/content/download.haml | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/doc-src/content/download.haml b/doc-src/content/download.haml index 97424f2b..4365c331 100644 --- a/doc-src/content/download.haml +++ b/doc-src/content/download.haml @@ -32,17 +32,25 @@ body_id: download %option{:value => "scss"} CSS based (SCSS) %option{:value => "sass"} Indent based (Sass) syntax - = succeed "." do - and would like to - %select#options - %option{:value => "default"} use compass's recommended - %option{:value => "customized"} customize my project's - directory structure + and would like to + %select#options + %option{:value => "default"} use compass's recommended + %option{:value => "customized"} customize my project's + directory structure. %h4 Thanks. Now run the following steps in your terminal: #steps Loading... %p.note Note: $ is a placeholder for your terminal's prompt. You don't type it. %h4 Then follow the instructions that compass provides in the output. -%h2 Or you can buy a GUI for Compass from Handlino. +%h4 Or you can buy a GUI for Compass from Handlino. + +%h2 Next Steps +%ul + %li + %a(href="http://sass-lang.com" target="_blank") Learn about Sass + %li + %a(href="/help/tutorials/") Read our tutorials + %li + %a(href="/reference/compass/") Study the reference documentation From b9be4702fd83737d0013271bf913dbb2be74d048 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 10 Jan 2011 09:26:34 -0800 Subject: [PATCH 005/223] made the stretching example be less lame. --- .../compass/layout/stretching/markup.haml | 45 ++++++++++++------- .../compass/layout/stretching/stylesheet.sass | 19 ++++---- 2 files changed, 40 insertions(+), 24 deletions(-) diff --git a/doc-src/content/examples/compass/layout/stretching/markup.haml b/doc-src/content/examples/compass/layout/stretching/markup.haml index 24a9dbba..2bb89b98 100644 --- a/doc-src/content/examples/compass/layout/stretching/markup.haml +++ b/doc-src/content/examples/compass/layout/stretching/markup.haml @@ -1,17 +1,30 @@ .example - Click on the the following links to make them stretch. - Click here to dismiss it. - #stretch-container - %ul - %li - %a#stretch-full(href="#stretch-full") - This element is fully stretched. - %li - %a#stretch-offset(href="#stretch-offset") - This element is stretched with a 1em offset on each side. - %li - %a#stretch-x(href="#stretch-x") - This element is stretched horizontally. - %li - %a#stretch-y(href="#stretch-y") - This element is stretched vertically. + %ul + %li.stretch-container + #stretch-full + This element is fully stretched. + %li.stretch-container + #stretch-offset + This element is stretched with a 1em offset on each side. + %li.stretch-container + #stretch-x + This + %br + element + %br + is + %br + stretched + %br + horizontally. + %li.stretch-container + #stretch-y + This + %br + element + %br + is + %br + stretched + %br + vertically. diff --git a/doc-src/content/examples/compass/layout/stretching/stylesheet.sass b/doc-src/content/examples/compass/layout/stretching/stylesheet.sass index b3ba1412..63894268 100644 --- a/doc-src/content/examples/compass/layout/stretching/stylesheet.sass +++ b/doc-src/content/examples/compass/layout/stretching/stylesheet.sass @@ -1,29 +1,32 @@ @import "compass/layout/stretching" +@import "compass/utilities" @import "compass/css3" -#stretch-container +.stretch-container border: 1px solid #999 - min-width: 200px - min-height: 200px + width: 200px + height: 200px position: relative + +inline-block .stretched $stretch-color: #4C6B99 border: 3px solid $stretch-color +border-radius(8px) display: block background-color: darken($stretch-color, 30%) + color: white text-align: center vertical-align: middle - padding: 2em 0 -#stretch-full:target + padding: 0.5em +#stretch-full @extend .stretched +stretch -#stretch-offset:target +#stretch-offset @extend .stretched +stretch(1em, 1em, 1em, 1em) -#stretch-x:target +#stretch-x @extend .stretched +stretch-x -#stretch-y:target +#stretch-y @extend .stretched +stretch-y From 8519a66a024ee98f979549f1d0cbe2a5f049739b Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 10 Jan 2011 10:04:46 -0800 Subject: [PATCH 006/223] Update sass dependency --- Gemfile | 2 +- doc-src/Gemfile.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index 47aa9a44..8c38d51f 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,7 @@ gem "rails", "~>3.0.0.rc" gem "compass-validator", "3.0.0" gem "css_parser", "~> 1.0.1" gem "sass" -gem "haml", "~> 3.1.alpha" +gem "haml", ">= 3.1.alpha.214" gem "rcov" gem "rubyzip" gem "livereload" diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index ac01405d..7656febe 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,7 +8,7 @@ GIT PATH remote: .. specs: - compass (0.11.alpha.4.d67a43a) + compass (0.11.beta.0.b9be470) chunky_png (~> 0.10.3) sass (>= 3.1.0.alpha.50) From a095eb6abf63697f265242d0a5cd9be1a502d6bc Mon Sep 17 00:00:00 2001 From: Pedro Sampaio Date: Tue, 11 Jan 2011 14:14:40 +0000 Subject: [PATCH 007/223] adding --skip-overrides argument to the compass sprite command --- lib/compass/commands/sprite.rb | 6 ++++- lib/compass/sprites.rb | 41 +++++++++++++++++++--------------- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/lib/compass/commands/sprite.rb b/lib/compass/commands/sprite.rb index 545cf19e..2e7a4481 100644 --- a/lib/compass/commands/sprite.rb +++ b/lib/compass/commands/sprite.rb @@ -8,6 +8,9 @@ module Compass opts.on("-f SPRITE_FILE") do |output_file| self.options[:output_file] = output_file end + opts.on("--skip-overrides", "Skip the generation of sprite overrides") do |skip_overrides| + self.options[:skip_overrides] = skip_overrides + end opts.banner = %Q{ Usage: compass sprite [options] "images/path/to/sprites/*.png" @@ -41,7 +44,8 @@ module Compass image_names = sprite_images.map{|i| File.basename(i, '.png')} sprites.path, sprites.name = Compass::Sprites.path_and_name(relative_uri) options[:output_file] ||= File.join(Compass.configuration.sass_path, "sprites", "_#{sprites.name}.#{Compass.configuration.preferred_syntax}") - contents = sprites.content_for_images(relative_uri, sprites.name, image_names) + options[:skip_overrides] ||= false + contents = sprites.content_for_images(relative_uri, sprites.name, image_names, options[:skip_overrides]) if options[:output_file][-4..-1] != "scss" contents = Sass::Engine.new(contents, Compass.sass_engine_options.merge(:syntax => :scss)).to_tree.to_sass end diff --git a/lib/compass/sprites.rb b/lib/compass/sprites.rb index 707d9bdb..70428fbb 100644 --- a/lib/compass/sprites.rb +++ b/lib/compass/sprites.rb @@ -35,7 +35,7 @@ module Compass end end - def content_for_images(uri, name, images) + def content_for_images(uri, name, images, skip_overrides = false) <<-SCSS @import "compass/utilities/sprites/base"; @@ -47,22 +47,7 @@ $#{name}-position: 0% !default; $#{name}-spacing: 0 !default; $#{name}-repeat: no-repeat !default; -// These variables control the generated sprite output -// You can override them selectively before you import this file. -#{images.map do |sprite_name| -<<-SCSS -$#{name}-#{sprite_name}-position: $#{name}-position !default; -$#{name}-#{sprite_name}-spacing: $#{name}-spacing !default; -$#{name}-#{sprite_name}-repeat: $#{name}-repeat !default; -SCSS -end.join} - -$#{name}-sprites: sprite-map("#{uri}", -#{images.map do |sprite_name| -%Q{ $#{sprite_name}-position: $#{name}-#{sprite_name}-position, - $#{sprite_name}-spacing: $#{name}-#{sprite_name}-spacing, - $#{sprite_name}-repeat: $#{name}-#{sprite_name}-repeat} -end.join(",\n")}); +#{skip_overrides ? "$#{name}-sprites: sprite-map(\"#{uri}\");" : generate_overrides(uri, name, images) } // All sprites should extend this class // The #{name}-sprite mixin will do so for you. @@ -118,5 +103,25 @@ SCSS "" end + def generate_overrides(uri, name,images) + content = <<-TXT +// These variables control the generated sprite output +// You can override them selectively before you import this file. + TXT + images.map do |sprite_name| + content += <<-SCSS +$#{name}-#{sprite_name}-position: $#{name}-position !default; +$#{name}-#{sprite_name}-spacing: $#{name}-spacing !default; +$#{name}-#{sprite_name}-repeat: $#{name}-repeat !default; + SCSS + end.join + content += "\n$#{name}-sprites: sprite-map(\"#{uri}\",\n" + content += images.map do |sprite_name| +%Q{ $#{sprite_name}-position: $#{name}-#{sprite_name}-position, + $#{sprite_name}-spacing: $#{name}-#{sprite_name}-spacing, + $#{sprite_name}-repeat: $#{name}-#{sprite_name}-repeat} + end.join(",\n") + content += ");" + end end -end \ No newline at end of file +end From 72435363cd78b9863d2f8887730b02fbeee4fff6 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 14 Jan 2011 18:05:59 -0800 Subject: [PATCH 008/223] Link to John's article on the terminal --- doc-src/content/download.haml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc-src/content/download.haml b/doc-src/content/download.haml index 4365c331..f1c178f5 100644 --- a/doc-src/content/download.haml +++ b/doc-src/content/download.haml @@ -38,6 +38,10 @@ body_id: download %option{:value => "customized"} customize my project's directory structure. %h4 Thanks. Now run the following steps in your terminal: + +%p.note + Terminal newbies, read the Designer’s Guide to the OSX Command Prompt first! + #steps Loading... %p.note Note: $ is a placeholder for your terminal's prompt. You don't type it. From 665241f8cd27bb9e72d2c9453883d18367559394 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 14 Jan 2011 18:06:18 -0800 Subject: [PATCH 009/223] don't call the syntax highlighter twice --- doc-src/layouts/partials/analytics.haml | 3 --- 1 file changed, 3 deletions(-) diff --git a/doc-src/layouts/partials/analytics.haml b/doc-src/layouts/partials/analytics.haml index 9fc3765f..fee2992b 100644 --- a/doc-src/layouts/partials/analytics.haml +++ b/doc-src/layouts/partials/analytics.haml @@ -16,6 +16,3 @@ (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s); }()); - \ No newline at end of file From 0ecdfc46314f1195a2a36048b92b77d5e47f3027 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 16 Jan 2011 15:04:36 -0800 Subject: [PATCH 010/223] make a note about --skip-overrides in the changelog --- doc-src/content/CHANGELOG.markdown | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index ae80c8c7..567b9b46 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -14,6 +14,13 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/ The Documentation for the [latest preview release](http://beta.compass-style.org/) +0.11.beta.1 (UNRELEASED) +------------------------ +* Add an option `--skip-overrides` to the sprite + subcommand. When provided, the default variables for overriding the sprite + behavior are not created. Instead, you would change the call to + `sprite-map()` to customize your sprite map. + 0.11.beta.0 (01/09/2011) ------------------------ From 042972003fa14c7c026cf4015dc760185e4a1b57 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 17 Jan 2011 06:40:10 -0800 Subject: [PATCH 011/223] handle some slightly older versions of sass --- .../sass_extensions/monkey_patches/browser_support.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/compass/sass_extensions/monkey_patches/browser_support.rb b/lib/compass/sass_extensions/monkey_patches/browser_support.rb index c1b55e58..6dfa63d8 100644 --- a/lib/compass/sass_extensions/monkey_patches/browser_support.rb +++ b/lib/compass/sass_extensions/monkey_patches/browser_support.rb @@ -65,7 +65,13 @@ module Sass::Script class Funcall < Node include HasSimpleCrossBrowserFunctionSupport - alias sass_to_literal to_literal + if method_defined? :to_literal + alias sass_to_literal to_literal + else + def sass_to_literal + Script::String.new("#{name}(#{args.join(', ')})") + end + end def to_literal(args) if has_aspect?(args) From e384dee5da6b1b7816a46a2289d90c5b0c860494 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 17 Jan 2011 11:47:59 -0800 Subject: [PATCH 012/223] Update gemspec to work around sass regression. --- Gemfile | 4 +- Gemfile.lock | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+), 2 deletions(-) create mode 100644 Gemfile.lock diff --git a/Gemfile b/Gemfile index 8c38d51f..7eb71521 100644 --- a/Gemfile +++ b/Gemfile @@ -6,8 +6,8 @@ gem "rspec", "~>2.0.0" gem "rails", "~>3.0.0.rc" gem "compass-validator", "3.0.0" gem "css_parser", "~> 1.0.1" -gem "sass" -gem "haml", ">= 3.1.alpha.214" +gem "sass", "= 3.1.0.alpha.214" +gem "haml", "~> 3.1.0.alpha" gem "rcov" gem "rubyzip" gem "livereload" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 00000000..886c0239 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,131 @@ +PATH + remote: . + specs: + compass (0.11.beta.0.0429720) + chunky_png (~> 0.10.3) + sass (>= 3.1.0.alpha.50) + +GEM + remote: http://rubygems.org/ + specs: + abstract (1.0.0) + actionmailer (3.0.3) + actionpack (= 3.0.3) + mail (~> 2.2.9) + actionpack (3.0.3) + activemodel (= 3.0.3) + activesupport (= 3.0.3) + builder (~> 2.1.2) + erubis (~> 2.6.6) + i18n (~> 0.4) + rack (~> 1.2.1) + rack-mount (~> 0.6.13) + rack-test (~> 0.5.6) + tzinfo (~> 0.3.23) + activemodel (3.0.3) + activesupport (= 3.0.3) + builder (~> 2.1.2) + i18n (~> 0.4) + activerecord (3.0.3) + activemodel (= 3.0.3) + activesupport (= 3.0.3) + arel (~> 2.0.2) + tzinfo (~> 0.3.23) + activeresource (3.0.3) + activemodel (= 3.0.3) + activesupport (= 3.0.3) + activesupport (3.0.3) + addressable (2.2.2) + arel (2.0.6) + builder (2.1.2) + chunky_png (0.10.5) + compass-validator (3.0.0) + css_parser (1.0.1) + cucumber (0.9.4) + builder (~> 2.1.2) + diff-lcs (~> 1.1.2) + gherkin (~> 2.2.9) + json (~> 1.4.6) + term-ansicolor (~> 1.0.5) + diff-lcs (1.1.2) + em-dir-watcher (0.9.4) + em-websocket (0.1.4) + addressable (>= 2.1.1) + eventmachine (>= 0.12.9) + erubis (2.6.6) + abstract (>= 1.0.0) + eventmachine (0.12.10) + gherkin (2.2.9) + json (~> 1.4.6) + term-ansicolor (~> 1.0.5) + haml (3.1.0.alpha.36) + i18n (0.5.0) + json (1.4.6) + livereload (1.4) + em-dir-watcher (>= 0.1) + em-websocket (>= 0.1.2) + ruby-json (>= 1.1.2) + mail (2.2.12) + activesupport (>= 2.3.6) + i18n (>= 0.4.0) + mime-types (~> 1.16) + treetop (~> 1.4.8) + mime-types (1.16) + polyglot (0.3.1) + rack (1.2.1) + rack-mount (0.6.13) + rack (>= 1.0.0) + rack-test (0.5.6) + rack (>= 1.0) + rails (3.0.3) + actionmailer (= 3.0.3) + actionpack (= 3.0.3) + activerecord (= 3.0.3) + activeresource (= 3.0.3) + activesupport (= 3.0.3) + bundler (~> 1.0) + railties (= 3.0.3) + railties (3.0.3) + actionpack (= 3.0.3) + activesupport (= 3.0.3) + rake (>= 0.8.7) + thor (~> 0.14.4) + rake (0.8.7) + rcov (0.9.9) + rspec (2.0.1) + rspec-core (~> 2.0.1) + rspec-expectations (~> 2.0.1) + rspec-mocks (~> 2.0.1) + rspec-core (2.0.1) + rspec-expectations (2.0.1) + diff-lcs (>= 1.1.2) + rspec-mocks (2.0.1) + rspec-core (~> 2.0.1) + rspec-expectations (~> 2.0.1) + ruby-json (1.1.2) + ruby-prof (0.9.2) + rubyzip (0.9.4) + sass (3.1.0.alpha.214) + term-ansicolor (1.0.5) + thor (0.14.6) + treetop (1.4.9) + polyglot (>= 0.3.1) + tzinfo (0.3.23) + +PLATFORMS + ruby + +DEPENDENCIES + chunky_png (~> 0.10.1) + compass! + compass-validator (= 3.0.0) + css_parser (~> 1.0.1) + cucumber (~> 0.9.2) + haml (~> 3.1.0.alpha) + livereload + rails (~> 3.0.0.rc) + rcov + rspec (~> 2.0.0) + ruby-prof + rubyzip + sass (= 3.1.0.alpha.214) From bf52c764706e79d6af6f1bb3699b1ea47150d0b3 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 17 Jan 2011 11:54:58 -0800 Subject: [PATCH 013/223] Rename the sprite-position mixin in compass/utilities/sprites/base to sprite-background-position in order to avoid a naming conflict with the older sprite-image module. --- doc-src/content/CHANGELOG.markdown | 3 +++ .../compass/stylesheets/compass/utilities/sprites/_base.scss | 4 ++-- lib/compass/sprites.rb | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 567b9b46..0cfa6243 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -20,6 +20,9 @@ The Documentation for the [latest preview release](http://beta.compass-style.org subcommand. When provided, the default variables for overriding the sprite behavior are not created. Instead, you would change the call to `sprite-map()` to customize your sprite map. +* Rename the `sprite-position` mixin in the new `sprite/base` module to + `sprite-background-position` in order avoid a naming conflict with the old + sprite module. 0.11.beta.0 (01/09/2011) ------------------------ diff --git a/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss b/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss index bc749162..650431c5 100644 --- a/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss +++ b/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss @@ -8,7 +8,7 @@ // Set the background position of the given sprite `$map` to display the // sprite of the given `$sprite` name. You can move the image relative to its // natural position by passing `$offset-x` and `$offset-y`. -@mixin sprite-position($map, $sprite, $offset-x: 0, $offset-y: 0) { +@mixin sprite-background-position($map, $sprite, $offset-x: 0, $offset-y: 0) { background-position: sprite-position($map, $sprite, $offset-x, $offset-y); } @@ -18,7 +18,7 @@ // // background: $map no-repeat; @mixin sprite($map, $sprite, $dimensions: false, $offset-x: 0, $offset-y: 0) { - @include sprite-position($map, $sprite, $offset-x, $offset-y); + @include sprite-background-position($map, $sprite, $offset-x, $offset-y); @if $dimensions { @include sprite-dimensions($map, $sprite); } diff --git a/lib/compass/sprites.rb b/lib/compass/sprites.rb index 70428fbb..c3ac2d55 100644 --- a/lib/compass/sprites.rb +++ b/lib/compass/sprites.rb @@ -63,7 +63,7 @@ $#{name}-repeat: no-repeat !default; // Move the background position to display the sprite. @mixin #{name}-sprite-position($name, $offset-x: 0, $offset-y: 0) { - @include sprite-position($#{name}-sprites, $name, $offset-x, $offset-y) + @include sprite-background-position($#{name}-sprites, $name, $offset-x, $offset-y) } // Extends the sprite base class and set the background position for the desired sprite. From c161b8ba3aa555d66369762db40c4080e08106ed Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 17 Jan 2011 11:57:06 -0800 Subject: [PATCH 014/223] Bump version for release --- VERSION.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.yml b/VERSION.yml index 5cf0a54e..750eb4b2 100644 --- a/VERSION.yml +++ b/VERSION.yml @@ -2,4 +2,4 @@ :major: 0 :minor: 11 :state: beta -:build: 0 +:build: 1 From e935d512e7d1d672450d3f8986902e3ebfecbfde Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 17 Jan 2011 13:59:21 -0800 Subject: [PATCH 015/223] Update changelog with date. --- doc-src/Gemfile.lock | 2 +- doc-src/content/CHANGELOG.markdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index 7656febe..73b2d4aa 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,7 +8,7 @@ GIT PATH remote: .. specs: - compass (0.11.beta.0.b9be470) + compass (0.11.beta.1.c161b8b) chunky_png (~> 0.10.3) sass (>= 3.1.0.alpha.50) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 0cfa6243..f620c1ac 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -14,7 +14,7 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/ The Documentation for the [latest preview release](http://beta.compass-style.org/) -0.11.beta.1 (UNRELEASED) +0.11.beta.1 (01/17/2011) ------------------------ * Add an option `--skip-overrides` to the sprite subcommand. When provided, the default variables for overriding the sprite From 7343e80b7db300ed8ecfdc8672e38b784cee2980 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Thu, 20 Jan 2011 17:10:35 -0500 Subject: [PATCH 016/223] bumped chunky_png to 0.12.0 and updated specs accordingly --- Gemfile | 2 +- compass.gemspec | 2 +- spec/sprites_spec.rb | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Gemfile b/Gemfile index 7eb71521..a4b99326 100644 --- a/Gemfile +++ b/Gemfile @@ -11,7 +11,7 @@ gem "haml", "~> 3.1.0.alpha" gem "rcov" gem "rubyzip" gem "livereload" -gem "chunky_png", "~> 0.10.1" +gem "chunky_png", "~> 0.12.0" gem "ruby-prof" unless RUBY_PLATFORM == "java" diff --git a/compass.gemspec b/compass.gemspec index 9e7f1127..fc8bf65b 100644 --- a/compass.gemspec +++ b/compass.gemspec @@ -17,7 +17,7 @@ Gem::Specification.new do |gemspec| gemspec.summary = %q{A Real Stylesheet Framework} gemspec.add_dependency 'sass', '>= 3.1.0.alpha.50' - gemspec.add_dependency 'chunky_png', '~> 0.10.3' + gemspec.add_dependency 'chunky_png', '~> 0.12.0' gemspec.files = %w(README.markdown LICENSE.markdown VERSION.yml Rakefile) gemspec.files += Dir.glob("bin/*") diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index ee26a915..c619e9f5 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -62,7 +62,7 @@ describe Compass::Sprites do } CSS image_size('squares-*.png').should == [20, 30] - image_md5('squares-*.png').should == 'e8cd71d546aae6951ea44cb01af35820' + image_md5('squares-*.png').should == 'fcc93d7b279c2ad6898fbca49cbd01e1' end it "should generate sprite classes with dimensions" do @@ -285,7 +285,7 @@ describe Compass::Sprites do } CSS image_size('squares-*.png').should == [20, 30] - image_md5('squares-*.png').should == 'b61700e6d402d9df5f3820b73479f371' + image_md5('squares-*.png').should == '652b67f5e9092520d6f26caae7e18012' end it "should use position adjustments in mixins" do @@ -323,7 +323,7 @@ describe Compass::Sprites do } CSS image_size('squares-*.png').should == [20, 30] - image_md5('squares-*.png').should == 'b61700e6d402d9df5f3820b73479f371' + image_md5('squares-*.png').should == '652b67f5e9092520d6f26caae7e18012' end it "should repeat the image" do @@ -346,7 +346,7 @@ describe Compass::Sprites do } CSS image_size('squares-*.png').should == [20, 30] - image_md5('squares-*.png').should == '0187306f3858136feee87d3017e7f307' + image_md5('squares-*.png').should == '94abae8440f1b58617f52920b70aaed2' end it "should allow the position of a sprite to be specified in absolute pixels" do @@ -370,7 +370,7 @@ describe Compass::Sprites do } CSS image_size('squares-*.png').should == [30, 30] - image_md5('squares-*.png').should == '262766d3e342f72b052f5708da6a1bf3' + image_md5('squares-*.png').should == '2fb19ef9c83018c93c6f147af3a56cb2' end it "should provide a nice errors for lemonade's old users" do From 13ecaa2da67b0cf6f317ff061930288e008ce4cf Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Thu, 20 Jan 2011 14:17:32 -0800 Subject: [PATCH 017/223] bump sass dependency --- Gemfile | 2 +- compass.gemspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index a4b99326..5a4d1042 100644 --- a/Gemfile +++ b/Gemfile @@ -6,7 +6,7 @@ gem "rspec", "~>2.0.0" gem "rails", "~>3.0.0.rc" gem "compass-validator", "3.0.0" gem "css_parser", "~> 1.0.1" -gem "sass", "= 3.1.0.alpha.214" +gem "sass", ">= 3.1.0.alpha.218" gem "haml", "~> 3.1.0.alpha" gem "rcov" gem "rubyzip" diff --git a/compass.gemspec b/compass.gemspec index fc8bf65b..481db7a2 100644 --- a/compass.gemspec +++ b/compass.gemspec @@ -16,7 +16,7 @@ Gem::Specification.new do |gemspec| gemspec.rubygems_version = "1.3.5" gemspec.summary = %q{A Real Stylesheet Framework} - gemspec.add_dependency 'sass', '>= 3.1.0.alpha.50' + gemspec.add_dependency 'sass', '>= 3.1.0.alpha.218' gemspec.add_dependency 'chunky_png', '~> 0.12.0' gemspec.files = %w(README.markdown LICENSE.markdown VERSION.yml Rakefile) From 58740fc039d16bd7a27f282ed83037c6cc33642f Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Wed, 26 Jan 2011 09:49:12 -0800 Subject: [PATCH 018/223] Correctly convert scss files to css names in the installatio instructions. --- lib/compass/app_integration/rails/installer.rb | 2 +- lib/compass/installers/manifest_installer.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/compass/app_integration/rails/installer.rb b/lib/compass/app_integration/rails/installer.rb index 536d6975..e4f3db92 100644 --- a/lib/compass/app_integration/rails/installer.rb +++ b/lib/compass/app_integration/rails/installer.rb @@ -163,7 +163,7 @@ NEXTSTEPS manifest.each_stylesheet do |stylesheet| # Skip partials. next if File.basename(stylesheet.from)[0..0] == "_" - ss_line = "<%= stylesheet_link_tag '#{stylesheet_prefix}#{stylesheet.to.sub(/\.sass$/,'.css')}'" + ss_line = "<%= stylesheet_link_tag '#{stylesheet_prefix}#{stylesheet.to.sub(/\.s[ac]ss$/,'.css')}'" if stylesheet.options[:media] ss_line += ", :media => '#{stylesheet.options[:media]}'" end diff --git a/lib/compass/installers/manifest_installer.rb b/lib/compass/installers/manifest_installer.rb index 04e1d909..48a10705 100644 --- a/lib/compass/installers/manifest_installer.rb +++ b/lib/compass/installers/manifest_installer.rb @@ -48,7 +48,7 @@ module Compass media = if stylesheet.options[:media] %Q{ media="#{stylesheet.options[:media]}"} end - ss_line = %Q{ } + ss_line = %Q{ } if stylesheet.options[:condition] ss_line = " " end From 0fd9c08664b0c7a4cfd6dc2cb850e1050fc064fa Mon Sep 17 00:00:00 2001 From: Paul Irish Date: Tue, 1 Feb 2011 22:24:22 -0800 Subject: [PATCH 019/223] Android 2.2 compat for @font-face declarations via a MQ redeclaration of the @ff --- .../compass/stylesheets/compass/css3/_font-face.scss | 10 +++++++++- test/fixtures/stylesheets/compass/css/fonts.css | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/frameworks/compass/stylesheets/compass/css3/_font-face.scss b/frameworks/compass/stylesheets/compass/css3/_font-face.scss index f0a58788..c8274cf4 100644 --- a/frameworks/compass/stylesheets/compass/css3/_font-face.scss +++ b/frameworks/compass/stylesheets/compass/css3/_font-face.scss @@ -14,9 +14,17 @@ } @font-face { font-family: quote($name); - @if $eot { src: font-url($eot); } + @if $eot { + src: font-url($eot); } src: local("☺"), $font-files; } + @media screen and (max-device-width: 480px) { + @font-face { + font-family: quote($name); + src: $font-files; + } + } + } // EXAMPLE diff --git a/test/fixtures/stylesheets/compass/css/fonts.css b/test/fixtures/stylesheets/compass/css/fonts.css index 01d9dcbf..8a2196ab 100644 --- a/test/fixtures/stylesheets/compass/css/fonts.css +++ b/test/fixtures/stylesheets/compass/css/fonts.css @@ -2,3 +2,8 @@ @font-face { font-family: "font1"; src: local("☺"), url('/tmp/fonts/font1.woff') format('woff'); } + +@media screen and (max-device-width: 480px) { + @font-face { + font-family: "font1"; + src: url('/tmp/fonts/font1.woff') format('woff'); } } From a597a10e7e410b1fd6186643b31d2c01adf9777e Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Tue, 1 Feb 2011 23:02:34 -0800 Subject: [PATCH 020/223] update failing test due to slightly different css output --- .../blueprint/css/single-imports/reset-utilities.css | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/test/fixtures/stylesheets/blueprint/css/single-imports/reset-utilities.css b/test/fixtures/stylesheets/blueprint/css/single-imports/reset-utilities.css index fb762a7c..a1dc9f8a 100644 --- a/test/fixtures/stylesheets/blueprint/css/single-imports/reset-utilities.css +++ b/test/fixtures/stylesheets/blueprint/css/single-imports/reset-utilities.css @@ -3,13 +3,7 @@ html { padding: 0; border: 0; } -.bp-reset-element, body, h1, h2, h3, h4, h5, h6, article, aside, dialog, figure, footer, header, hgroup, nav, section, blockquote, q, th, td, caption, table, body.testing h1, body.testing h2, body.testing h3, body.testing h4, body.testing h5, body.testing h6, body.testing article, body.testing aside, body.testing dialog, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing nav, body.testing section, body.testing blockquote, body.testing q, body.testing th, body.testing td, body.testing caption, body.testing table, -div, span, object, iframe, p, -pre, a, abbr, acronym, address, -code, del, dfn, em, img, -dl, dt, dd, ol, ul, li, fieldset, -form, label, legend, -caption, tbody, tfoot, thead, tr { +.bp-reset-element, body, h1, h2, h3, h4, h5, h6, article, aside, dialog, figure, footer, header, hgroup, nav, section, blockquote, q, th, td, caption, table, body.testing h1, body.testing h2, body.testing h3, body.testing h4, body.testing h5, body.testing h6, body.testing article, body.testing aside, body.testing dialog, body.testing figure, body.testing footer, body.testing header, body.testing hgroup, body.testing nav, body.testing section, body.testing blockquote, body.testing q, body.testing th, body.testing td, body.testing caption, body.testing table, div, span, object, iframe, p, pre, a, abbr, acronym, address, code, del, dfn, em, img, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr { margin: 0; padding: 0; border: 0; From 6f1ea8a651b8ed9c247bbdcc451eb5b65a8d907c Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Tue, 1 Feb 2011 23:03:12 -0800 Subject: [PATCH 021/223] Update font-face docs --- doc-src/content/CHANGELOG.markdown | 6 ++++++ .../stylesheets/compass/css3/_font-face.scss | 14 ++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index f620c1ac..57215217 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -14,6 +14,12 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/ The Documentation for the [latest preview release](http://beta.compass-style.org/) +0.11.beta.2 (02/01/2011) +------------------------ +* Updated the font-face mixin so it works in Android 2.2. + Credit: [Paul Irish](http://paulirish.com/). +* The deprecated & unused arguments to the font-face mixin have been removed. + 0.11.beta.1 (01/17/2011) ------------------------ * Add an option `--skip-overrides` to the sprite diff --git a/frameworks/compass/stylesheets/compass/css3/_font-face.scss b/frameworks/compass/stylesheets/compass/css3/_font-face.scss index c8274cf4..445dff16 100644 --- a/frameworks/compass/stylesheets/compass/css3/_font-face.scss +++ b/frameworks/compass/stylesheets/compass/css3/_font-face.scss @@ -7,15 +7,17 @@ // * $font-files is required using font-files('relative/location', 'format'). // for best results use this order: woff, opentype/truetype, svg // * $eot is required by IE, and is a relative location of the eot file. +// * For android 2.2 Compatiblity, please ensure that your web page has +// a meta viewport tag. +// * To support iOS < 4.2, an SVG file must be provided +// +// If you need to generate other formats check out the Font Squirrel +// [font generator](http://www.fontsquirrel.com/fontface/generator) -@mixin font-face($name, $font-files, $eot: false, $postscript: false, $style: false) { - @if $postscript or $style { - @warn "The $postscript and $style variables have been deprecated in favor of the Paul Irish smiley bulletproof technique."; - } +@mixin font-face($name, $font-files, $eot: false) { @font-face { font-family: quote($name); - @if $eot { - src: font-url($eot); } + @if $eot { src: font-url($eot); } src: local("☺"), $font-files; } @media screen and (max-device-width: 480px) { From 5ccdbd6490b176ee9b7ccb122b885edf8f57450a Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Tue, 1 Feb 2011 23:03:38 -0800 Subject: [PATCH 022/223] update gem dependencies --- Gemfile.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 886c0239..911673de 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,9 +1,9 @@ PATH remote: . specs: - compass (0.11.beta.0.0429720) - chunky_png (~> 0.10.3) - sass (>= 3.1.0.alpha.50) + compass (0.11.beta.1.0fd9c08) + chunky_png (~> 0.12.0) + sass (>= 3.1.0.alpha.218) GEM remote: http://rubygems.org/ @@ -38,7 +38,7 @@ GEM addressable (2.2.2) arel (2.0.6) builder (2.1.2) - chunky_png (0.10.5) + chunky_png (0.12.0) compass-validator (3.0.0) css_parser (1.0.1) cucumber (0.9.4) @@ -105,7 +105,7 @@ GEM ruby-json (1.1.2) ruby-prof (0.9.2) rubyzip (0.9.4) - sass (3.1.0.alpha.214) + sass (3.1.0.alpha.221) term-ansicolor (1.0.5) thor (0.14.6) treetop (1.4.9) @@ -116,7 +116,7 @@ PLATFORMS ruby DEPENDENCIES - chunky_png (~> 0.10.1) + chunky_png (~> 0.12.0) compass! compass-validator (= 3.0.0) css_parser (~> 1.0.1) @@ -128,4 +128,4 @@ DEPENDENCIES rspec (~> 2.0.0) ruby-prof rubyzip - sass (= 3.1.0.alpha.214) + sass (>= 3.1.0.alpha.218) From 303453d9a638184ba3dd2414d60a6272e4f545fd Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Tue, 1 Feb 2011 23:03:54 -0800 Subject: [PATCH 023/223] Version bump --- VERSION.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.yml b/VERSION.yml index 750eb4b2..669feaac 100644 --- a/VERSION.yml +++ b/VERSION.yml @@ -2,4 +2,4 @@ :major: 0 :minor: 11 :state: beta -:build: 1 +:build: 2 From 0dc38bc2bb43a56918b16258b7364bb16ead2683 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Thu, 17 Feb 2011 16:04:43 -0800 Subject: [PATCH 024/223] update gemfile --- doc-src/Gemfile.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index 73b2d4aa..275334af 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,15 +8,15 @@ GIT PATH remote: .. specs: - compass (0.11.beta.1.c161b8b) - chunky_png (~> 0.10.3) - sass (>= 3.1.0.alpha.50) + compass (0.11.beta.2.303453d) + chunky_png (~> 0.12.0) + sass (>= 3.1.0.alpha.218) GEM remote: http://rubygems.org/ specs: activesupport (3.0.1) - chunky_png (0.10.5) + chunky_png (0.12.0) coderay (0.9.5) compass-susy-plugin (0.8.1) compass (>= 0.10.0) @@ -34,7 +34,7 @@ GEM rake (0.8.7) rdiscount (1.6.5) ruby-prof (0.9.2) - sass (3.1.0.alpha.214) + sass (3.1.0.alpha.221) serve (1.0.0) activesupport (~> 3.0.1) i18n (~> 0.4.1) From 53e975100b4529052e38cc48e4c91684e8cda058 Mon Sep 17 00:00:00 2001 From: Eric Meyer Date: Thu, 17 Feb 2011 18:14:40 -0700 Subject: [PATCH 025/223] added vertical-rhythm and docs, moved lists, links and text, all into new typography module --- Gemfile.lock | 2 +- doc-src/Gemfile.lock | 2 +- doc-src/content/CHANGELOG.markdown | 2 +- .../help/tutorials/upgrading/antares.markdown | 18 ++- .../content/reference/compass/typography.haml | 18 +++ .../{utilities => typography}/links.haml | 4 +- .../links/hover_link.haml | 4 +- .../links/link_colors.haml | 4 +- .../links/unstyled_link.haml | 4 +- .../{utilities => typography}/lists.haml | 4 +- .../lists/bullets.haml | 4 +- .../lists/horizontal_list.haml | 4 +- .../lists/inline-block-list.haml | 4 +- .../lists/inline_list.haml | 4 +- .../{utilities => typography}/text.haml | 4 +- .../text/ellipsis.haml | 4 +- .../text/nowrap.haml | 4 +- .../text/replacement.haml | 4 +- .../compass/typography/vertical_rhythm.haml | 20 +++ examples/compass/src/utilities.scss | 2 +- .../stylesheets/blueprint/_typography.scss | 2 +- .../stylesheets/blueprint/_utilities.scss | 2 +- frameworks/compass/stylesheets/_compass.scss | 1 + .../stylesheets/compass/_typography.scss | 4 + .../stylesheets/compass/_utilities.scss | 3 - .../{utilities => typography}/_links.scss | 0 .../{utilities => typography}/_lists.scss | 0 .../{utilities => typography}/_text.scss | 0 .../compass/typography/_vertical_rhythm.scss | 124 ++++++++++++++++++ .../links/_hover-link.scss | 0 .../links/_link-colors.scss | 0 .../links/_unstyled-link.scss | 0 .../lists/_bullets.scss | 0 .../lists/_horizontal-list.scss | 0 .../lists/_inline-block-list.scss | 0 .../lists/_inline-list.scss | 0 .../text/_ellipsis.scss | 0 .../text/_nowrap.scss | 0 .../text/_replacement.scss | 0 .../compass/templates/ellipsis/ellipsis.sass | 2 +- .../compass/css/vertical_rhythm.css | 42 ++++++ .../stylesheets/compass/sass/lists.scss | 2 +- .../compass/sass/vertical_rhythm.scss | 14 ++ 43 files changed, 274 insertions(+), 38 deletions(-) create mode 100644 doc-src/content/reference/compass/typography.haml rename doc-src/content/reference/compass/{utilities => typography}/links.haml (80%) rename doc-src/content/reference/compass/{utilities => typography}/links/hover_link.haml (74%) rename doc-src/content/reference/compass/{utilities => typography}/links/link_colors.haml (74%) rename doc-src/content/reference/compass/{utilities => typography}/links/unstyled_link.haml (79%) rename doc-src/content/reference/compass/{utilities => typography}/lists.haml (76%) rename doc-src/content/reference/compass/{utilities => typography}/lists/bullets.haml (73%) rename doc-src/content/reference/compass/{utilities => typography}/lists/horizontal_list.haml (90%) rename doc-src/content/reference/compass/{utilities => typography}/lists/inline-block-list.haml (90%) rename doc-src/content/reference/compass/{utilities => typography}/lists/inline_list.haml (73%) rename doc-src/content/reference/compass/{utilities => typography}/text.haml (80%) rename doc-src/content/reference/compass/{utilities => typography}/text/ellipsis.haml (85%) rename doc-src/content/reference/compass/{utilities => typography}/text/nowrap.haml (82%) rename doc-src/content/reference/compass/{utilities => typography}/text/replacement.haml (73%) create mode 100644 doc-src/content/reference/compass/typography/vertical_rhythm.haml create mode 100644 frameworks/compass/stylesheets/compass/_typography.scss rename frameworks/compass/stylesheets/compass/{utilities => typography}/_links.scss (100%) rename frameworks/compass/stylesheets/compass/{utilities => typography}/_lists.scss (100%) rename frameworks/compass/stylesheets/compass/{utilities => typography}/_text.scss (100%) create mode 100644 frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss rename frameworks/compass/stylesheets/compass/{utilities => typography}/links/_hover-link.scss (100%) rename frameworks/compass/stylesheets/compass/{utilities => typography}/links/_link-colors.scss (100%) rename frameworks/compass/stylesheets/compass/{utilities => typography}/links/_unstyled-link.scss (100%) rename frameworks/compass/stylesheets/compass/{utilities => typography}/lists/_bullets.scss (100%) rename frameworks/compass/stylesheets/compass/{utilities => typography}/lists/_horizontal-list.scss (100%) rename frameworks/compass/stylesheets/compass/{utilities => typography}/lists/_inline-block-list.scss (100%) rename frameworks/compass/stylesheets/compass/{utilities => typography}/lists/_inline-list.scss (100%) rename frameworks/compass/stylesheets/compass/{utilities => typography}/text/_ellipsis.scss (100%) rename frameworks/compass/stylesheets/compass/{utilities => typography}/text/_nowrap.scss (100%) rename frameworks/compass/stylesheets/compass/{utilities => typography}/text/_replacement.scss (100%) create mode 100644 test/fixtures/stylesheets/compass/css/vertical_rhythm.css create mode 100644 test/fixtures/stylesheets/compass/sass/vertical_rhythm.scss diff --git a/Gemfile.lock b/Gemfile.lock index 911673de..d8e63bb8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.1.0fd9c08) + compass (0.11.beta.2.0dc38bc) chunky_png (~> 0.12.0) sass (>= 3.1.0.alpha.218) diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index 275334af..a6b35b27 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,7 +8,7 @@ GIT PATH remote: .. specs: - compass (0.11.beta.2.303453d) + compass (0.11.beta.2.0dc38bc) chunky_png (~> 0.12.0) sass (>= 3.1.0.alpha.218) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 57215217..97612f75 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -1063,6 +1063,6 @@ Almost definitely. Please let me know if you encounter any problems and I'll get [der-rich]: http://github.com/der-rich [adamstac]: http://github.com/adamstac [ttilley]: http://github.com/ttilley -[inline-block-list]: http://compass-style.org/reference/compass/utilities/lists/inline-block-list/ +[inline-block-list]: http://compass-style.org/reference/compass/typography/lists/inline-block-list/ [html5-reset]: http://compass-style.org/reference/compass/reset/utilities/#mixin-reset-html5 [blueprint_10_change]: https://github.com/chriseppstein/compass/compare/a05e1ee7c0a1e4c0f0595a8bb812daa47872e476...864780969d872a93b1fd3b4f39f29dd9f0c3fe75 diff --git a/doc-src/content/help/tutorials/upgrading/antares.markdown b/doc-src/content/help/tutorials/upgrading/antares.markdown index 08ab46c1..6d9deb7a 100644 --- a/doc-src/content/help/tutorials/upgrading/antares.markdown +++ b/doc-src/content/help/tutorials/upgrading/antares.markdown @@ -76,6 +76,22 @@ Or for sass files: =linear-gradient($color-stops, $start: top, $image: false) +background-image($image, linear-gradient($start, $color-stops)) + +## Typography Module + +With the addition of vertical-rhythms to the compass core, we have created a new +[typography module][typography_module], and moved several items that were formerly +listed as "utilities" into it. The moved modules are "links", "lists" and "text". +These will all remain part of the basic compass include, but if you were including +them individually in your stylesheets, you will need to adjust the include paths +as follows: + +* "compass/utilities/links" becomes "compass/typography/links" +* "compass/utilities/lists" becomes "compass/typography/lists" +* "compass/utilities/text" becomes "compass/typography/text" + + [new_transform]: /reference/compass/css3/transform/ [old_transform]: /reference/compass/css3/transform-legacy/ -[image_stylesheet]: /reference/compass/css3/images/ \ No newline at end of file +[image_stylesheet]: /reference/compass/css3/images/ +[typography_module]: /reference/compass/typography/ \ No newline at end of file diff --git a/doc-src/content/reference/compass/typography.haml b/doc-src/content/reference/compass/typography.haml new file mode 100644 index 00000000..edae96af --- /dev/null +++ b/doc-src/content/reference/compass/typography.haml @@ -0,0 +1,18 @@ +--- +title: Compass Typography +crumb: Typography +framework: compass +sidebar: true +stylesheet: compass/_typography.scss +classnames: + - reference + - core + - typography +meta_description: Provides basic mixins for common typography patterns. +layout: core +nav_stylesheet: compass/_typography.scss +--- +- render 'reference' do + %p + The Compass Typography module provides some basic mixins + for common text styling patterns. diff --git a/doc-src/content/reference/compass/utilities/links.haml b/doc-src/content/reference/compass/typography/links.haml similarity index 80% rename from doc-src/content/reference/compass/utilities/links.haml rename to doc-src/content/reference/compass/typography/links.haml index f313b231..e5807e46 100644 --- a/doc-src/content/reference/compass/utilities/links.haml +++ b/doc-src/content/reference/compass/typography/links.haml @@ -2,14 +2,14 @@ title: Compass Links crumb: Links framework: compass -stylesheet: compass/utilities/_links.scss +stylesheet: compass/typography/_links.scss sidebar: true layout: core meta_description: Tools for styling anchor links. classnames: - reference - core - - utilities + - typography --- - render 'reference' do %p diff --git a/doc-src/content/reference/compass/utilities/links/hover_link.haml b/doc-src/content/reference/compass/typography/links/hover_link.haml similarity index 74% rename from doc-src/content/reference/compass/utilities/links/hover_link.haml rename to doc-src/content/reference/compass/typography/links/hover_link.haml index 74b73599..3971e39b 100644 --- a/doc-src/content/reference/compass/utilities/links/hover_link.haml +++ b/doc-src/content/reference/compass/typography/links/hover_link.haml @@ -2,12 +2,12 @@ title: Compass Hover Link crumb: Hover Link framework: compass -stylesheet: compass/utilities/links/_hover-link.scss +stylesheet: compass/typography/links/_hover-link.scss layout: core meta_description: Underline a link when you hover over it. classnames: - reference - core - - utilities + - typography --- = render 'reference' diff --git a/doc-src/content/reference/compass/utilities/links/link_colors.haml b/doc-src/content/reference/compass/typography/links/link_colors.haml similarity index 74% rename from doc-src/content/reference/compass/utilities/links/link_colors.haml rename to doc-src/content/reference/compass/typography/links/link_colors.haml index e8f90281..183626b7 100644 --- a/doc-src/content/reference/compass/utilities/links/link_colors.haml +++ b/doc-src/content/reference/compass/typography/links/link_colors.haml @@ -2,12 +2,12 @@ title: Compass Link Colors crumb: Link Colors framework: compass -stylesheet: compass/utilities/links/_link-colors.scss +stylesheet: compass/typography/links/_link-colors.scss layout: core meta_description: Easy assignment of colors to link states. classnames: - reference - core - - utilities + - typography --- = render 'reference' diff --git a/doc-src/content/reference/compass/utilities/links/unstyled_link.haml b/doc-src/content/reference/compass/typography/links/unstyled_link.haml similarity index 79% rename from doc-src/content/reference/compass/utilities/links/unstyled_link.haml rename to doc-src/content/reference/compass/typography/links/unstyled_link.haml index 54a4bcd9..79824d5c 100644 --- a/doc-src/content/reference/compass/utilities/links/unstyled_link.haml +++ b/doc-src/content/reference/compass/typography/links/unstyled_link.haml @@ -2,13 +2,13 @@ title: Compass Unstyled Link crumb: Unstyled Link framework: compass -stylesheet: compass/utilities/links/_unstyled-link.scss +stylesheet: compass/typography/links/_unstyled-link.scss layout: core meta_description: Make a link appear like regular text. classnames: - reference - core - - utilities + - typography --- - render 'reference' do %p diff --git a/doc-src/content/reference/compass/utilities/lists.haml b/doc-src/content/reference/compass/typography/lists.haml similarity index 76% rename from doc-src/content/reference/compass/utilities/lists.haml rename to doc-src/content/reference/compass/typography/lists.haml index fbe1c735..0d48b807 100644 --- a/doc-src/content/reference/compass/utilities/lists.haml +++ b/doc-src/content/reference/compass/typography/lists.haml @@ -2,13 +2,13 @@ title: Compass Lists crumb: Lists framework: compass -stylesheet: compass/utilities/_lists.scss +stylesheet: compass/typography/_lists.scss sidebar: true layout: core meta_description: Tools for styling lists. classnames: - reference - core - - utilities + - typography --- = render 'reference' diff --git a/doc-src/content/reference/compass/utilities/lists/bullets.haml b/doc-src/content/reference/compass/typography/lists/bullets.haml similarity index 73% rename from doc-src/content/reference/compass/utilities/lists/bullets.haml rename to doc-src/content/reference/compass/typography/lists/bullets.haml index 3f9c19fb..9f6e7405 100644 --- a/doc-src/content/reference/compass/utilities/lists/bullets.haml +++ b/doc-src/content/reference/compass/typography/lists/bullets.haml @@ -2,12 +2,12 @@ title: Compass Bullets crumb: Bullets framework: compass -stylesheet: compass/utilities/lists/_bullets.scss +stylesheet: compass/typography/lists/_bullets.scss layout: core meta_description: Mixins for managing list bullets. classnames: - reference - core - - utilities + - typography --- = render 'reference' diff --git a/doc-src/content/reference/compass/utilities/lists/horizontal_list.haml b/doc-src/content/reference/compass/typography/lists/horizontal_list.haml similarity index 90% rename from doc-src/content/reference/compass/utilities/lists/horizontal_list.haml rename to doc-src/content/reference/compass/typography/lists/horizontal_list.haml index 68735199..e4909a03 100644 --- a/doc-src/content/reference/compass/utilities/lists/horizontal_list.haml +++ b/doc-src/content/reference/compass/typography/lists/horizontal_list.haml @@ -2,13 +2,13 @@ title: Compass Horizontal List crumb: Horizontal List framework: compass -stylesheet: compass/utilities/lists/_horizontal-list.scss +stylesheet: compass/typography/lists/_horizontal-list.scss layout: core meta_description: Float a list so it appears horizontally. classnames: - reference - core - - utilities + - typography --- - render 'reference' do :markdown diff --git a/doc-src/content/reference/compass/utilities/lists/inline-block-list.haml b/doc-src/content/reference/compass/typography/lists/inline-block-list.haml similarity index 90% rename from doc-src/content/reference/compass/utilities/lists/inline-block-list.haml rename to doc-src/content/reference/compass/typography/lists/inline-block-list.haml index 2ce51b92..c5b8d520 100644 --- a/doc-src/content/reference/compass/utilities/lists/inline-block-list.haml +++ b/doc-src/content/reference/compass/typography/lists/inline-block-list.haml @@ -2,13 +2,13 @@ title: Compass Inline-Block List crumb: Inline-Block List framework: compass -stylesheet: compass/utilities/lists/_inline-block-list.scss +stylesheet: compass/typography/lists/_inline-block-list.scss layout: core meta_description: set list-elements to inline-block so they appear horizontally while retaining their structure. classnames: - reference - core - - utilities + - typography --- - render 'reference' do :markdown diff --git a/doc-src/content/reference/compass/utilities/lists/inline_list.haml b/doc-src/content/reference/compass/typography/lists/inline_list.haml similarity index 73% rename from doc-src/content/reference/compass/utilities/lists/inline_list.haml rename to doc-src/content/reference/compass/typography/lists/inline_list.haml index c63e5951..5b0df24f 100644 --- a/doc-src/content/reference/compass/utilities/lists/inline_list.haml +++ b/doc-src/content/reference/compass/typography/lists/inline_list.haml @@ -2,12 +2,12 @@ title: Compass Inline List crumb: Inline List framework: compass -stylesheet: compass/utilities/lists/_inline-list.scss +stylesheet: compass/typography/lists/_inline-list.scss layout: core meta_description: Style a list as inline text. classnames: - reference - core - - utilities + - typography --- = render 'reference' diff --git a/doc-src/content/reference/compass/utilities/text.haml b/doc-src/content/reference/compass/typography/text.haml similarity index 80% rename from doc-src/content/reference/compass/utilities/text.haml rename to doc-src/content/reference/compass/typography/text.haml index 2c8e918d..a2c9c2b4 100644 --- a/doc-src/content/reference/compass/utilities/text.haml +++ b/doc-src/content/reference/compass/typography/text.haml @@ -2,14 +2,14 @@ title: Compass Text crumb: Text framework: compass -stylesheet: compass/utilities/_text.scss +stylesheet: compass/typography/_text.scss layout: core sidebar: true meta_description: Style helpers for your text. classnames: - reference - core - - utilities + - typography --- - render 'reference' do %p diff --git a/doc-src/content/reference/compass/utilities/text/ellipsis.haml b/doc-src/content/reference/compass/typography/text/ellipsis.haml similarity index 85% rename from doc-src/content/reference/compass/utilities/text/ellipsis.haml rename to doc-src/content/reference/compass/typography/text/ellipsis.haml index 3ce24d74..c55bd53a 100644 --- a/doc-src/content/reference/compass/utilities/text/ellipsis.haml +++ b/doc-src/content/reference/compass/typography/text/ellipsis.haml @@ -2,13 +2,13 @@ title: Truncating Text with Ellipses crumb: Ellipsis framework: compass -stylesheet: compass/utilities/text/_ellipsis.scss +stylesheet: compass/typography/text/_ellipsis.scss layout: core meta_description: Text truncation with ellipsis. classnames: - reference - core - - utilities + - typography --- - render 'reference' do :markdown diff --git a/doc-src/content/reference/compass/utilities/text/nowrap.haml b/doc-src/content/reference/compass/typography/text/nowrap.haml similarity index 82% rename from doc-src/content/reference/compass/utilities/text/nowrap.haml rename to doc-src/content/reference/compass/typography/text/nowrap.haml index ed7be511..e945d99f 100644 --- a/doc-src/content/reference/compass/utilities/text/nowrap.haml +++ b/doc-src/content/reference/compass/typography/text/nowrap.haml @@ -2,13 +2,13 @@ title: Compass No Wrap crumb: No Wrap framework: compass -stylesheet: compass/utilities/text/_nowrap.scss +stylesheet: compass/typography/text/_nowrap.scss layout: core meta_description: Remembering whether or not there's a hyphen in white-space is too hard. classnames: - reference - core - - utilities + - typography --- - render 'reference' do %p diff --git a/doc-src/content/reference/compass/utilities/text/replacement.haml b/doc-src/content/reference/compass/typography/text/replacement.haml similarity index 73% rename from doc-src/content/reference/compass/utilities/text/replacement.haml rename to doc-src/content/reference/compass/typography/text/replacement.haml index 239e0986..70712a9f 100644 --- a/doc-src/content/reference/compass/utilities/text/replacement.haml +++ b/doc-src/content/reference/compass/typography/text/replacement.haml @@ -2,12 +2,12 @@ title: Compass Text Replacement crumb: Text Replacement framework: compass -stylesheet: compass/utilities/text/_replacement.scss +stylesheet: compass/typography/text/_replacement.scss layout: core meta_description: Replace text with images. classnames: - reference - core - - utilities + - typography --- = render 'reference' \ No newline at end of file diff --git a/doc-src/content/reference/compass/typography/vertical_rhythm.haml b/doc-src/content/reference/compass/typography/vertical_rhythm.haml new file mode 100644 index 00000000..01a595fa --- /dev/null +++ b/doc-src/content/reference/compass/typography/vertical_rhythm.haml @@ -0,0 +1,20 @@ +--- +title: Vertical Rhythm +crumb: Vertical Rhythm +framework: compass +stylesheet: compass/typography/_vertical_rhythm.scss +layout: core +meta_description: Create and maintain a vertical rhythm for your type. +classnames: + - reference + - core + - typography +--- +- render 'reference' do + :markdown + Create a vertical rhythm for your site by setting the `$base-font-size` and + `$base-line-height` variables and then including the `establish-baseline` + mixin at the root of your document. + + Manage the vertical rhythm using the other vertical-rhythm mixins to adjust + font and line-height values, extra vertical whitespace, borders, etc. diff --git a/examples/compass/src/utilities.scss b/examples/compass/src/utilities.scss index 069c067b..22ae3401 100644 --- a/examples/compass/src/utilities.scss +++ b/examples/compass/src/utilities.scss @@ -3,7 +3,7 @@ @import "yui/modules/base"; @import "blueprint/grid"; @import "blueprint/scaffolding"; -@import "compass/utilities/text/ellipsis"; +@import "compass/typography/text/ellipsis"; html { @include yui-base; } diff --git a/frameworks/blueprint/stylesheets/blueprint/_typography.scss b/frameworks/blueprint/stylesheets/blueprint/_typography.scss index 173da561..b2bc7be4 100644 --- a/frameworks/blueprint/stylesheets/blueprint/_typography.scss +++ b/frameworks/blueprint/stylesheets/blueprint/_typography.scss @@ -1,5 +1,5 @@ @import "colors"; -@import "compass/utilities/links/link-colors"; +@import "compass/typography/links/link-colors"; @import "compass/utilities/general/float"; $blueprint-font-family: "Helvetica Neue", Arial, Helvetica, sans-serif !default; diff --git a/frameworks/blueprint/stylesheets/blueprint/_utilities.scss b/frameworks/blueprint/stylesheets/blueprint/_utilities.scss index 12b89870..68e2b3de 100644 --- a/frameworks/blueprint/stylesheets/blueprint/_utilities.scss +++ b/frameworks/blueprint/stylesheets/blueprint/_utilities.scss @@ -1,4 +1,4 @@ -@import "compass/utilities/text/nowrap"; +@import "compass/typography/text/nowrap"; @import "compass/utilities/general/clearfix"; // Most of these utility classes are not "semantic". If you use them, diff --git a/frameworks/compass/stylesheets/_compass.scss b/frameworks/compass/stylesheets/_compass.scss index c3eeb8ac..9b741c0f 100644 --- a/frameworks/compass/stylesheets/_compass.scss +++ b/frameworks/compass/stylesheets/_compass.scss @@ -1,2 +1,3 @@ @import "compass/utilities"; +@import "compass/typography"; @import "compass/css3"; diff --git a/frameworks/compass/stylesheets/compass/_typography.scss b/frameworks/compass/stylesheets/compass/_typography.scss new file mode 100644 index 00000000..4d9cb5d5 --- /dev/null +++ b/frameworks/compass/stylesheets/compass/_typography.scss @@ -0,0 +1,4 @@ +@import "typography/links"; +@import "typography/lists"; +@import "typography/text"; +@import "typography/vertical_rhythm"; diff --git a/frameworks/compass/stylesheets/compass/_utilities.scss b/frameworks/compass/stylesheets/compass/_utilities.scss index fcb735ca..a67eb35e 100644 --- a/frameworks/compass/stylesheets/compass/_utilities.scss +++ b/frameworks/compass/stylesheets/compass/_utilities.scss @@ -1,6 +1,3 @@ @import "utilities/general"; -@import "utilities/links"; -@import "utilities/lists"; @import "utilities/sprites"; @import "utilities/tables"; -@import "utilities/text"; diff --git a/frameworks/compass/stylesheets/compass/utilities/_links.scss b/frameworks/compass/stylesheets/compass/typography/_links.scss similarity index 100% rename from frameworks/compass/stylesheets/compass/utilities/_links.scss rename to frameworks/compass/stylesheets/compass/typography/_links.scss diff --git a/frameworks/compass/stylesheets/compass/utilities/_lists.scss b/frameworks/compass/stylesheets/compass/typography/_lists.scss similarity index 100% rename from frameworks/compass/stylesheets/compass/utilities/_lists.scss rename to frameworks/compass/stylesheets/compass/typography/_lists.scss diff --git a/frameworks/compass/stylesheets/compass/utilities/_text.scss b/frameworks/compass/stylesheets/compass/typography/_text.scss similarity index 100% rename from frameworks/compass/stylesheets/compass/utilities/_text.scss rename to frameworks/compass/stylesheets/compass/typography/_text.scss diff --git a/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss b/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss new file mode 100644 index 00000000..af66dcbc --- /dev/null +++ b/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss @@ -0,0 +1,124 @@ +// The base font size +$base-font-size: 16px !default; + +// The base line height is the basic unit of line hightness. +$base-line-height: 24px !default; + +// set the default border style for rhythm borders +$default-rhythm-border-style: solid !default; + +// The IE font ratio is a fact of life. Deal with it. +$ie-font-ratio: 16px / 100%; + +// The basic unit of font rhythm +$base-rhythm-unit: $base-line-height / $base-font-size * 1em; + +// The leader is the amount of whitespace in a line. +// It might be useful in your calculations +$base-leader: ($base-line-height - $base-font-size) * 1em / $base-font-size; + +// The half-leader is the amount of whitespace above and below a line. +// It might be useful in your calculations +$base-half-leader: $base-leader / 2; + +// Establishes a font baseline for the given font-size in pixels +@mixin establish-baseline($font-size: $base-font-size) { + body { + font-size: $font-size / $ie-font-ratio; + @include adjust-leading-to(1, $font-size); + } + html>body { + font-size: $font-size; + } +} + +// Show a background image that can be used to debug your alignments. +@mixin debug-vertical-alignment($img: 'underline.png') { + background: url($img); +} + +// Adjust a block to have a different font size and leading to maintain the rhythm. +// $lines is a number that is how many times the baseline rhythm this +// font size should use up. Does not have to be an integer, but it defaults +// to the smallest integer that is large enough to fit the font. +// Use $from_size to adjust from a non-base font-size. +@mixin adjust-font-size-to($to-size, $lines: ceil($to-size / $base-line-height), $from-size: $base-font-size) { + font-size: 1em * $to-size / $from-size; + @include adjust-leading-to($lines, $to-size); +} + +@mixin adjust-leading-to($lines, $font-size: $base-font-size) { + line-height: 1em * $lines * $base-line-height / $font-size; +} + +// Apply leading whitespace +@mixin leader($lines: 1, $font-size: $base-font-size, $property: margin) { + #{$property}-top: 1em * $lines * $base-line-height / $font-size; +} + +@mixin padding-leader($lines: 1, $font-size: $base-font-size) { + @include leader($lines, $font-size, padding); +} + +@mixin margin-leader($lines: 1, $font-size: $base-font-size) { + @include leader($lines, $font-size, margin); +} + +// Apply trailing whitespace +@mixin trailer($lines: 1, $font-size: $base-font-size, $property: margin) { + #{$property}-bottom: 1em * $lines * $base-line-height / $font-size; +} + +@mixin padding-trailer($lines: 1, $font-size: $base-font-size) { + @include trailer($lines, $font-size, padding); +} + +@mixin margin-trailer($lines: 1, $font-size: $base-font-size) { + @include trailer($lines, $font-size, margin); +} + +// Whitespace application shortcut +// Apply top margin/padding + bottom padding/margin +@mixin rhythm($leader: 0, $padding-leader: 0, $padding-trailer: 0, $trailer: 0, $font-size: $base-font-size) { + @include leader($leader, $font-size); + @include padding-leader($padding-leader, $font-size); + @include padding-trailer($padding-trailer, $font-size); + @include trailer($trailer, $font-size); +} + +// Apply a border width to any side without destroying the vertical rhythm +@mixin apply-side-rhythm-border($side, $width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { + border-#{$side}: { + style: $border-style; + width: 1em * $width / $font-size; + }; + padding-#{$side}: 1em / $font-size * ($lines * $base-line-height - $width); +} + +// Aplly rhythm borders equally to all sides +@mixin rhythm-borders($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { + border: { + style: $border-style; + width: 1em * $width / $font-size; }; + padding: 1em / $font-size * ($lines * $base-line-height - $width); +} + +// Apply a leading rhythm border +@mixin leading-border($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { + @include apply-side-rhythm-border(top, $width, $lines, $font-size, $border-style); +} + +// Apply a trailing rhythm border +@mixin trailing-border($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { + @include apply-side-rhythm-border(bottom, $width, $lines, $font-size, $border-style); +} + +// Apply both leading and trailing rhythm borders +@mixin horizontal-borders($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { + @include leading-border($width, $lines, $font-size, $border-style); + @include trailing-border($width, $lines, $font-size, $border-style); +} + +@mixin h-borders($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { + @include horizontal-borders($width, $lines, $font-size, $border-style); +} diff --git a/frameworks/compass/stylesheets/compass/utilities/links/_hover-link.scss b/frameworks/compass/stylesheets/compass/typography/links/_hover-link.scss similarity index 100% rename from frameworks/compass/stylesheets/compass/utilities/links/_hover-link.scss rename to frameworks/compass/stylesheets/compass/typography/links/_hover-link.scss diff --git a/frameworks/compass/stylesheets/compass/utilities/links/_link-colors.scss b/frameworks/compass/stylesheets/compass/typography/links/_link-colors.scss similarity index 100% rename from frameworks/compass/stylesheets/compass/utilities/links/_link-colors.scss rename to frameworks/compass/stylesheets/compass/typography/links/_link-colors.scss diff --git a/frameworks/compass/stylesheets/compass/utilities/links/_unstyled-link.scss b/frameworks/compass/stylesheets/compass/typography/links/_unstyled-link.scss similarity index 100% rename from frameworks/compass/stylesheets/compass/utilities/links/_unstyled-link.scss rename to frameworks/compass/stylesheets/compass/typography/links/_unstyled-link.scss diff --git a/frameworks/compass/stylesheets/compass/utilities/lists/_bullets.scss b/frameworks/compass/stylesheets/compass/typography/lists/_bullets.scss similarity index 100% rename from frameworks/compass/stylesheets/compass/utilities/lists/_bullets.scss rename to frameworks/compass/stylesheets/compass/typography/lists/_bullets.scss diff --git a/frameworks/compass/stylesheets/compass/utilities/lists/_horizontal-list.scss b/frameworks/compass/stylesheets/compass/typography/lists/_horizontal-list.scss similarity index 100% rename from frameworks/compass/stylesheets/compass/utilities/lists/_horizontal-list.scss rename to frameworks/compass/stylesheets/compass/typography/lists/_horizontal-list.scss diff --git a/frameworks/compass/stylesheets/compass/utilities/lists/_inline-block-list.scss b/frameworks/compass/stylesheets/compass/typography/lists/_inline-block-list.scss similarity index 100% rename from frameworks/compass/stylesheets/compass/utilities/lists/_inline-block-list.scss rename to frameworks/compass/stylesheets/compass/typography/lists/_inline-block-list.scss diff --git a/frameworks/compass/stylesheets/compass/utilities/lists/_inline-list.scss b/frameworks/compass/stylesheets/compass/typography/lists/_inline-list.scss similarity index 100% rename from frameworks/compass/stylesheets/compass/utilities/lists/_inline-list.scss rename to frameworks/compass/stylesheets/compass/typography/lists/_inline-list.scss diff --git a/frameworks/compass/stylesheets/compass/utilities/text/_ellipsis.scss b/frameworks/compass/stylesheets/compass/typography/text/_ellipsis.scss similarity index 100% rename from frameworks/compass/stylesheets/compass/utilities/text/_ellipsis.scss rename to frameworks/compass/stylesheets/compass/typography/text/_ellipsis.scss diff --git a/frameworks/compass/stylesheets/compass/utilities/text/_nowrap.scss b/frameworks/compass/stylesheets/compass/typography/text/_nowrap.scss similarity index 100% rename from frameworks/compass/stylesheets/compass/utilities/text/_nowrap.scss rename to frameworks/compass/stylesheets/compass/typography/text/_nowrap.scss diff --git a/frameworks/compass/stylesheets/compass/utilities/text/_replacement.scss b/frameworks/compass/stylesheets/compass/typography/text/_replacement.scss similarity index 100% rename from frameworks/compass/stylesheets/compass/utilities/text/_replacement.scss rename to frameworks/compass/stylesheets/compass/typography/text/_replacement.scss diff --git a/frameworks/compass/templates/ellipsis/ellipsis.sass b/frameworks/compass/templates/ellipsis/ellipsis.sass index 6285df65..55837ca9 100644 --- a/frameworks/compass/templates/ellipsis/ellipsis.sass +++ b/frameworks/compass/templates/ellipsis/ellipsis.sass @@ -1,7 +1,7 @@ // Since you've installed the xml file, you should set // $use-mozilla-ellipsis-binding to true before importing. $use-mozilla-ellipsis-binding: true -@import compass/utilities/text/ellipsis +@import compass/typography/text/ellipsis // You can delete this sass file if you want, it's just an example of how to use the ellipsis mixin. // By default, ellipsis text is no-wrap. Pass false as the first argument if you don't want that. diff --git a/test/fixtures/stylesheets/compass/css/vertical_rhythm.css b/test/fixtures/stylesheets/compass/css/vertical_rhythm.css new file mode 100644 index 00000000..ddf7c2ec --- /dev/null +++ b/test/fixtures/stylesheets/compass/css/vertical_rhythm.css @@ -0,0 +1,42 @@ +body { + font-size: 87.5%; + line-height: 1.143em; } + +html > body { + font-size: 14px; } + +.small { + font-size: 0.857em; + line-height: 1.333em; } + +.padded { + margin-top: 1.143em; + padding-top: 1.143em; + padding-bottom: 1.143em; + margin-bottom: 1.143em; } + +.small-padded { + font-size: 0.857em; + line-height: 1.333em; + margin-top: 1.333em; + padding-top: 1.333em; + padding-bottom: 1.333em; + margin-bottom: 1.333em; } + +.borders { + border-top-style: solid; + border-top-width: 0.071em; + padding-top: 1.071em; + border-bottom-style: solid; + border-bottom-width: 0.071em; + padding-bottom: 1.071em; } + +.large-borders { + font-size: 1.714em; + line-height: 2em; + border-top-style: solid; + border-top-width: 0.25em; + padding-top: 0.417em; + border-bottom-style: solid; + border-bottom-width: 0.25em; + padding-bottom: 0.417em; } diff --git a/test/fixtures/stylesheets/compass/sass/lists.scss b/test/fixtures/stylesheets/compass/sass/lists.scss index 395e879a..d2ef36f3 100644 --- a/test/fixtures/stylesheets/compass/sass/lists.scss +++ b/test/fixtures/stylesheets/compass/sass/lists.scss @@ -1,4 +1,4 @@ -@import "compass/utilities/lists"; +@import "compass/typography/lists"; ul.horizontal { @include horizontal-list; } ul.wide-horizontal { @include horizontal-list(10px); } diff --git a/test/fixtures/stylesheets/compass/sass/vertical_rhythm.scss b/test/fixtures/stylesheets/compass/sass/vertical_rhythm.scss new file mode 100644 index 00000000..09b6b224 --- /dev/null +++ b/test/fixtures/stylesheets/compass/sass/vertical_rhythm.scss @@ -0,0 +1,14 @@ +@import "compass/typography/vertical_rhythm"; + +$base-font-size: 14px; +$base-line-height: 16px; + +@include establish-baseline; + +.small { @include adjust-font-size-to(12px,1); } + +.padded { @include rhythm(1,1,1,1); } +.small-padded { @include adjust-font-size-to(12px,1); @include rhythm(1,1,1,1,12px); } + +.borders { @include h-borders(1px,1); } +.large-borders { @include adjust-font-size-to(24px,3); @include h-borders(6px,1,24px); } \ No newline at end of file From 9a22e05949fb24c8da9ffc6246371ecbbb3698eb Mon Sep 17 00:00:00 2001 From: Eric Meyer Date: Thu, 17 Feb 2011 18:33:51 -0700 Subject: [PATCH 026/223] old imports still work, but deprecated --- frameworks/compass/stylesheets/compass/_utilities.scss | 5 +++++ .../compass/stylesheets/compass/utilities/_links.scss | 5 +++++ .../compass/stylesheets/compass/utilities/_lists.scss | 6 ++++++ frameworks/compass/stylesheets/compass/utilities/_text.scss | 5 +++++ .../stylesheets/compass/utilities/links/_hover-link.scss | 3 +++ .../stylesheets/compass/utilities/links/_link-colors.scss | 3 +++ .../stylesheets/compass/utilities/links/_unstyled-link.scss | 3 +++ .../stylesheets/compass/utilities/lists/_bullets.scss | 3 +++ .../compass/utilities/lists/_horizontal-list.scss | 3 +++ .../compass/utilities/lists/_inline-block-list.scss | 3 +++ .../stylesheets/compass/utilities/lists/_inline-list.scss | 3 +++ .../stylesheets/compass/utilities/text/_ellipsis.scss | 3 +++ .../compass/stylesheets/compass/utilities/text/_nowrap.scss | 3 +++ .../stylesheets/compass/utilities/text/_replacement.scss | 3 +++ 14 files changed, 51 insertions(+) create mode 100644 frameworks/compass/stylesheets/compass/utilities/_links.scss create mode 100644 frameworks/compass/stylesheets/compass/utilities/_lists.scss create mode 100644 frameworks/compass/stylesheets/compass/utilities/_text.scss create mode 100644 frameworks/compass/stylesheets/compass/utilities/links/_hover-link.scss create mode 100644 frameworks/compass/stylesheets/compass/utilities/links/_link-colors.scss create mode 100644 frameworks/compass/stylesheets/compass/utilities/links/_unstyled-link.scss create mode 100644 frameworks/compass/stylesheets/compass/utilities/lists/_bullets.scss create mode 100644 frameworks/compass/stylesheets/compass/utilities/lists/_horizontal-list.scss create mode 100644 frameworks/compass/stylesheets/compass/utilities/lists/_inline-block-list.scss create mode 100644 frameworks/compass/stylesheets/compass/utilities/lists/_inline-list.scss create mode 100644 frameworks/compass/stylesheets/compass/utilities/text/_ellipsis.scss create mode 100644 frameworks/compass/stylesheets/compass/utilities/text/_nowrap.scss create mode 100644 frameworks/compass/stylesheets/compass/utilities/text/_replacement.scss diff --git a/frameworks/compass/stylesheets/compass/_utilities.scss b/frameworks/compass/stylesheets/compass/_utilities.scss index a67eb35e..103b14c4 100644 --- a/frameworks/compass/stylesheets/compass/_utilities.scss +++ b/frameworks/compass/stylesheets/compass/_utilities.scss @@ -1,3 +1,8 @@ @import "utilities/general"; @import "utilities/sprites"; @import "utilities/tables"; + +// deprecated +@import "typography/links"; +@import "typography/lists"; +@import "typography/text"; diff --git a/frameworks/compass/stylesheets/compass/utilities/_links.scss b/frameworks/compass/stylesheets/compass/utilities/_links.scss new file mode 100644 index 00000000..e0e32512 --- /dev/null +++ b/frameworks/compass/stylesheets/compass/utilities/_links.scss @@ -0,0 +1,5 @@ +@warn "This import is deprecated. Use 'compass/typography/links' instead."; + +@import "../typography/links/hover-link"; +@import "../typography/links/link-colors"; +@import "../typography/links/unstyled-link"; diff --git a/frameworks/compass/stylesheets/compass/utilities/_lists.scss b/frameworks/compass/stylesheets/compass/utilities/_lists.scss new file mode 100644 index 00000000..4833ee1e --- /dev/null +++ b/frameworks/compass/stylesheets/compass/utilities/_lists.scss @@ -0,0 +1,6 @@ +@warn "This import is deprecated. Use 'compass/typography/lists' instead."; + +@import "../typography/lists/horizontal-list"; +@import "../typography/lists/inline-list"; +@import "../typography/lists/inline-block-list"; +@import "../typography/lists/bullets"; diff --git a/frameworks/compass/stylesheets/compass/utilities/_text.scss b/frameworks/compass/stylesheets/compass/utilities/_text.scss new file mode 100644 index 00000000..bb73c25d --- /dev/null +++ b/frameworks/compass/stylesheets/compass/utilities/_text.scss @@ -0,0 +1,5 @@ +@warn "This import is deprecated. Use 'compass/typography/text' instead."; + +@import "../typography/text/ellipsis"; +@import "../typography/text/nowrap"; +@import "../typography/text/replacement"; diff --git a/frameworks/compass/stylesheets/compass/utilities/links/_hover-link.scss b/frameworks/compass/stylesheets/compass/utilities/links/_hover-link.scss new file mode 100644 index 00000000..843459fa --- /dev/null +++ b/frameworks/compass/stylesheets/compass/utilities/links/_hover-link.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/links/hover-link' instead."; + +@import "../../typography/links/hover-link"; diff --git a/frameworks/compass/stylesheets/compass/utilities/links/_link-colors.scss b/frameworks/compass/stylesheets/compass/utilities/links/_link-colors.scss new file mode 100644 index 00000000..fac94387 --- /dev/null +++ b/frameworks/compass/stylesheets/compass/utilities/links/_link-colors.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/links/link-colors' instead."; + +@import "../../typography/links/link-colors"; diff --git a/frameworks/compass/stylesheets/compass/utilities/links/_unstyled-link.scss b/frameworks/compass/stylesheets/compass/utilities/links/_unstyled-link.scss new file mode 100644 index 00000000..1c48f468 --- /dev/null +++ b/frameworks/compass/stylesheets/compass/utilities/links/_unstyled-link.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/links/unstyled-link' instead."; + +@import "../../typography/links/unstyled-link"; diff --git a/frameworks/compass/stylesheets/compass/utilities/lists/_bullets.scss b/frameworks/compass/stylesheets/compass/utilities/lists/_bullets.scss new file mode 100644 index 00000000..796e1cd0 --- /dev/null +++ b/frameworks/compass/stylesheets/compass/utilities/lists/_bullets.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/lists/bullets' instead."; + +@import "../../typography/lists/bullets"; diff --git a/frameworks/compass/stylesheets/compass/utilities/lists/_horizontal-list.scss b/frameworks/compass/stylesheets/compass/utilities/lists/_horizontal-list.scss new file mode 100644 index 00000000..38ae85cc --- /dev/null +++ b/frameworks/compass/stylesheets/compass/utilities/lists/_horizontal-list.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/lists/horizontal-list' instead."; + +@import "../../typography/lists/horizontal-list"; diff --git a/frameworks/compass/stylesheets/compass/utilities/lists/_inline-block-list.scss b/frameworks/compass/stylesheets/compass/utilities/lists/_inline-block-list.scss new file mode 100644 index 00000000..f669c85d --- /dev/null +++ b/frameworks/compass/stylesheets/compass/utilities/lists/_inline-block-list.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/lists/inline-block-list' instead."; + +@import "../../typography/lists/inline-block-link"; diff --git a/frameworks/compass/stylesheets/compass/utilities/lists/_inline-list.scss b/frameworks/compass/stylesheets/compass/utilities/lists/_inline-list.scss new file mode 100644 index 00000000..fb1dfeb9 --- /dev/null +++ b/frameworks/compass/stylesheets/compass/utilities/lists/_inline-list.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/lists/inline-list' instead."; + +@import "../../typography/lists/inline-list"; diff --git a/frameworks/compass/stylesheets/compass/utilities/text/_ellipsis.scss b/frameworks/compass/stylesheets/compass/utilities/text/_ellipsis.scss new file mode 100644 index 00000000..b1727547 --- /dev/null +++ b/frameworks/compass/stylesheets/compass/utilities/text/_ellipsis.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/text/ellipsis' instead."; + +@import "../../typography/text/ellipsis"; diff --git a/frameworks/compass/stylesheets/compass/utilities/text/_nowrap.scss b/frameworks/compass/stylesheets/compass/utilities/text/_nowrap.scss new file mode 100644 index 00000000..ca4a22f9 --- /dev/null +++ b/frameworks/compass/stylesheets/compass/utilities/text/_nowrap.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/text/nowrap' instead."; + +@import "../../typography/text/nowrap"; diff --git a/frameworks/compass/stylesheets/compass/utilities/text/_replacement.scss b/frameworks/compass/stylesheets/compass/utilities/text/_replacement.scss new file mode 100644 index 00000000..809c6a8b --- /dev/null +++ b/frameworks/compass/stylesheets/compass/utilities/text/_replacement.scss @@ -0,0 +1,3 @@ +@warn "This import is deprecated. Use 'compass/typography/text/replacement' instead."; + +@import "../../typography/text/replacement"; From 9fd7ac6e52f59c02b09e7f098576afe083b278f3 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 18 Feb 2011 09:48:04 -0800 Subject: [PATCH 027/223] Update the docs readme to be accurate for recent changes. --- doc-src/README.markdown | 36 +++++++++++++----------------------- 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/doc-src/README.markdown b/doc-src/README.markdown index 3d94feeb..c367c6b5 100644 --- a/doc-src/README.markdown +++ b/doc-src/README.markdown @@ -49,7 +49,7 @@ If you are adding an asset (E.g. image, css, javascript) place the file(s) in th Running the following command will generate a new example: - bundle exec thor generate:example blueprint/grid/simple/ + ./bin/thor generate:example blueprint/grid/simple/ An example consists of three files: @@ -74,7 +74,7 @@ After adding the example and adjusting the metadata, go to the reference page an Generate a reference file for a stylesheet: - bundle exec thor generate:reference ../frameworks/compass/stylesheets/_compass.sass + ./bin/thor generate:reference ../frameworks/compass/stylesheets/_compass.sass The item metadata (at the top of the file) provides some details about what stylesheet is being documented. For instance, here is the metadata for the blueprint color module item: @@ -143,15 +143,7 @@ Go to your fork of Compass on github. Your compass fork will be available on htt $ git clone git@github.com:**yourusername**/compass.git -### 3. Switch to the docs branch - -To work on the docs, you need to do a checkout of the docs branch - - $ git checkout docs - -(A list branches can be accessed through `git branch` with no arguments) - -### 4. Don't forget: bundler! +### 3. Don't forget: bundler! If you haven't yet done so, install bundler: @@ -160,30 +152,28 @@ If you haven't yet done so, install bundler: Bundle the gems for this application: $ cd doc-src - $ bundle install + $ bundle install --binstubs -### 6. Compile the docs +### 4. Compile the docs -To compile (and auto recompile) and preview the site in your browser: (make sure you run nanoc3/aco from the doc-src directory) +To compile (and auto recompile) and preview the site in your browser: (make sure you run nanoc3 aco from the doc-src directory) $ cd doc-src - $ export RUBYLIB="../lib" - $ bundle exec nanoc3 aco + $ ./bin/nanoc3 aco -Then open `http://localhost:3000/docs/` in your web browser. +Then open `http://localhost:3000/index.html` in your web browser. aco stands for autocompiler; the site will recompile every time you request a new page. -If you find `bundle exec nanoc3 aco` to be sluggish, try this alternative workflow: +If you find `./bin/nanoc3 aco` to be sluggish, try this alternative workflow: $ cd doc-src - $ export RUBYLIB="../lib" - $ bundle exec serve 3000 .. & - $ bundle exec rake watch + $ ./bin/serve 3000 output & + $ ./bin/rake watch It is recommended that you read the 5 minute [tutorial](http://nanoc.stoneship.org/tutorial/) on Nanoc. -### 7. Commit your changes to your Fork +### 5. Commit your changes to your Fork git commit -a git push @@ -202,4 +192,4 @@ Then get the new changes with fetch: And merge them with your local docs branch: - git merge chris/docs \ No newline at end of file + git merge chris \ No newline at end of file From 214243073541fc8f90236b8af114fb3af0551b55 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Thu, 17 Feb 2011 02:30:11 -0500 Subject: [PATCH 028/223] Callbacks for the following events: * sprite_saved * sprite_generated * stylesheet_saved * stylesheet_error From the compass configuration file you can attach code to run when the event occurs like so: on_stylesheet_error do |filename, message| # do something end --- .../configuration-reference.markdown | 45 +++++++++-- lib/compass.rb | 2 + lib/compass/compiler.rb | 6 +- lib/compass/configuration.rb | 2 +- lib/compass/configuration/callbacks.rb | 25 ++++++ lib/compass/configuration/inheritance.rb | 6 +- .../sass_extensions/functions/sprites.rb | 11 ++- spec/sprites_spec.rb | 79 ++++++++++++------- test/compass_test.rb | 30 +++++-- 9 files changed, 160 insertions(+), 46 deletions(-) create mode 100644 lib/compass/configuration/callbacks.rb diff --git a/doc-src/content/help/tutorials/configuration-reference.markdown b/doc-src/content/help/tutorials/configuration-reference.markdown index 8bf0d11b..0f6475e9 100644 --- a/doc-src/content/help/tutorials/configuration-reference.markdown +++ b/doc-src/content/help/tutorials/configuration-reference.markdown @@ -217,13 +217,13 @@ later on. approach. - - disable_warnings - Boolean + + disable_warnings + Boolean Set this to true to silence deprecation warnings. - - + + sass_options Hash @@ -330,4 +330,37 @@ more than once. Example: end This code will be called if the file is added, updated, or removed. Be sure to check for existence -to avoid crashing the watcher in the case where the file has been removed. \ No newline at end of file +to avoid crashing the watcher in the case where the file has been removed. + +## Callbacks + +**`on_sprite_saved`** -- Pass this function a block of code that gets executed after a sprite is saved to disk. The block will be passed the filename. Can be invoked more then once. Example: + + on_sprite_saved do |filename| + post_process(filename) if File.exists?(filename) + end + +**`on_sprite_generated`** -- Pass this function a block of code that gets executed after a sprite is generated but before its saved to disk. The block will be passed an instance of `ChunkyPNG::Image`. Can be invoked more then once. Example: + + on_sprite_generated do |sprite_data| + sprite_data.metadata['Caption'] = "This Image is © My Company 2011" + end + +**`on_stylesheet_saved`** -- Pass this function a block of code that gets executed after a stylesheet is processed. The block will be passed the filename. Can be invoked more then once. Example: + + on_stylesheet_saved do |filename| + Growl.notify { + self.message "#{filename} updated!" + self.icon = '/path/to/success.jpg' + } + end + +**`on_stylesheet_error`** -- Pass this function a block of code that gets executed if a stylesheet has an error while processing. The block will be passed the filename and the error message. Can be invoked more then once. Example: + + on_stylesheet_error do |filename, message| + Growl.notify { + self.message = "#{filename}: #{message}" + self.icon = '/path/to/fail.jpg' + sticky! + } + end \ No newline at end of file diff --git a/lib/compass.rb b/lib/compass.rb index 2f0b7ec7..5ce7268d 100644 --- a/lib/compass.rb +++ b/lib/compass.rb @@ -5,6 +5,8 @@ end require "compass/#{lib}" end +require 'sass/callbacks' + module Compass def base_directory File.expand_path(File.join(File.dirname(__FILE__), '..')) diff --git a/lib/compass/compiler.rb b/lib/compass/compiler.rb index b259dfce..bccb6489 100644 --- a/lib/compass/compiler.rb +++ b/lib/compass/compiler.rb @@ -119,6 +119,7 @@ module Compass end duration = additional_options[:time] ? "(#{(css_content.__duration * 1000).round / 1000.0}s)" : "" write_file(css_filename, css_content, options.merge(:force => true, :extra => duration)) + Compass.configuration.send(:run_stylesheet_saved, File.basename(css_filename)) #run callback end def should_compile?(sass_filename, css_filename) @@ -136,7 +137,10 @@ module Compass # formatted to display in the browser (in development mode) # if there's an error. def handle_exception(sass_filename, css_filename, e) - logger.record :error, basename(sass_filename), "(Line #{e.sass_line}: #{e.message})" + formatted_error = "(Line #{e.sass_line}: #{e.message})" + file = basename(sass_filename) + logger.record :error, file, formatted_error + Compass.configuration.send(:run_styesheet_error, file, formatted_error) #run callback write_file css_filename, error_contents(e, sass_filename), options.merge(:force => true) end diff --git a/lib/compass/configuration.rb b/lib/compass/configuration.rb index c51e9a88..f094570b 100644 --- a/lib/compass/configuration.rb +++ b/lib/compass/configuration.rb @@ -43,6 +43,6 @@ module Compass end end -['adapters', 'comments', 'defaults', 'helpers', 'inheritance', 'serialization', 'paths', 'data'].each do |lib| +['adapters', 'callbacks', 'comments', 'defaults', 'helpers', 'inheritance', 'serialization', 'paths', 'data'].each do |lib| require "compass/configuration/#{lib}" end diff --git a/lib/compass/configuration/callbacks.rb b/lib/compass/configuration/callbacks.rb new file mode 100644 index 00000000..2f034ee9 --- /dev/null +++ b/lib/compass/configuration/callbacks.rb @@ -0,0 +1,25 @@ +module Compass + module Configuration + module CallbackMethods + extend ::Sass::Callbacks + + # on_sprite_generated + # yields the filename + # usage: on_sprite_save {|filename| do_somethign(filename) } + define_callback :sprite_saved + # on_sprite_generated + # yields 'ChunkyPNG::Image' + # usage: on_sprite_generated {|sprite_data| do_something(sprite_data) } + define_callback :sprite_generated + + define_callback :stylesheet_saved + define_callback :stylesheet_error + + end + + class Callbacks + extend CallbackMethods + end + + end +end \ No newline at end of file diff --git a/lib/compass/configuration/inheritance.rb b/lib/compass/configuration/inheritance.rb index b44954ca..24de6b4d 100644 --- a/lib/compass/configuration/inheritance.rb +++ b/lib/compass/configuration/inheritance.rb @@ -141,9 +141,11 @@ module Compass end end - def method_missing(meth) + def method_missing(meth, *args, &block) if inherited_data - inherited_data.send(meth) + inherited_data.send(meth, *args, &block) + elsif Callbacks.respond_to?(meth, true) + Callbacks.send(meth, *args, &block) else raise NoMethodError, meth.to_s end diff --git a/lib/compass/sass_extensions/functions/sprites.rb b/lib/compass/sass_extensions/functions/sprites.rb index 7df04e20..45343df9 100644 --- a/lib/compass/sass_extensions/functions/sprites.rb +++ b/lib/compass/sass_extensions/functions/sprites.rb @@ -2,7 +2,7 @@ require 'digest/md5' module Compass::SassExtensions::Functions::Sprites ZERO = Sass::Script::Number::new(0) - + # Provides a consistent interface for getting a variable in ruby # from a keyword argument hash that accounts for underscores/dash equivalence # and allows the caller to pass a symbol instead of a string. @@ -124,6 +124,7 @@ module Compass::SassExtensions::Functions::Sprites def generate if generation_required? save!(construct_sprite) + Compass.configuration.send(:run_sprite_generated, construct_sprite) end end @@ -155,7 +156,7 @@ module Compass::SassExtensions::Functions::Sprites end end end - output_png + output_png end # The on-the-disk filename of the sprite @@ -180,7 +181,9 @@ module Compass::SassExtensions::Functions::Sprites # saves the sprite for later retrieval def save!(output_png) - output_png.save filename + saved = output_png.save filename + Compass.configuration.send(:run_sprite_saved, filename) + saved end # All the full-path filenames involved in this sprite @@ -285,7 +288,7 @@ module Compass::SassExtensions::Functions::Sprites end end Sass::Script::Functions.declare :sprite_file, [:map, :sprite] - + # Returns a url to the sprite image. def sprite_url(map) unless map.is_a?(SpriteMap) diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index c619e9f5..9f2b2f12 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -3,7 +3,7 @@ require "compass/sprites" require 'digest/md5' describe Compass::Sprites do - + before :each do @images_src_path = File.join(File.dirname(__FILE__), 'test_project', 'public', 'images') @images_tmp_path = File.join(File.dirname(__FILE__), 'test_project', 'public', 'images-tmp') @@ -29,7 +29,7 @@ describe Compass::Sprites do md5.update IO.read(map_location(file)) md5.hexdigest end - + def render(scss) scss = %Q(@import "compass"; #{scss}) options = Compass.sass_engine_options @@ -40,9 +40,34 @@ describe Compass::Sprites do # reformat to fit result of heredoc: " #{css.gsub('@charset "UTF-8";', '').gsub(/\n/, "\n ").strip}\n" end - - # DEFAULT USAGE: + #Callbacks + describe 'callbacks' do + it "should fire on_sprite_saved" do + saved = false + path = nil + Compass.configuration.on_sprite_saved {|filepath| path = filepath; saved = true } + render <<-SCSS + @import "squares/*.png"; + @include all-squares-sprites; + SCSS + saved.should eq true + path.should be_kind_of String + end + it "should fire on_sprite_generated" do + saved = false + sprite_data = nil + Compass.configuration.on_sprite_generated {|data| sprite_data = data; saved = true } + render <<-SCSS + @import "squares/*.png"; + @include all-squares-sprites; + SCSS + sprite_data.should be_kind_of ChunkyPNG::Image + saved.should eq true + end + end + + # DEFAULT USAGE: it "should generate sprite classes" do css = render <<-SCSS @import "squares/*.png"; @@ -90,15 +115,15 @@ describe Compass::Sprites do CSS image_size('squares-*.png').should == [20, 30] end - + it "should provide sprite mixin" do css = render <<-SCSS @import "squares/*.png"; - + .cubicle { @include squares-sprite("ten-by-ten"); } - + .large-cube { @include squares-sprite("twenty-by-twenty", true); } @@ -120,9 +145,9 @@ describe Compass::Sprites do CSS image_size('squares-*.png').should == [20, 30] end - + # CUSTOMIZATIONS: - + it "should be possible to change the base class" do css = render <<-SCSS $squares-sprite-base-class: ".circles"; @@ -135,7 +160,7 @@ describe Compass::Sprites do CSS image_size('squares-*.png').should == [20, 30] end - + it "should calculate the spacing between images but not before first image" do css = render <<-SCSS $squares-ten-by-ten-spacing: 33px; @@ -157,7 +182,7 @@ describe Compass::Sprites do CSS image_size('squares-*.png').should == [20, 63] end - + it "should calculate the spacing between images" do css = render <<-SCSS $squares-twenty-by-twenty-spacing: 33px; @@ -179,7 +204,7 @@ describe Compass::Sprites do CSS image_size('squares-*.png').should == [20, 63] end - + it "should calculate the maximum spacing between images" do css = render <<-SCSS $squares-ten-by-ten-spacing: 44px; @@ -202,7 +227,7 @@ describe Compass::Sprites do CSS image_size('squares-*.png').should == [20, 74] end - + it "should calculate the maximum spacing between images in reversed order" do css = render <<-SCSS $squares-ten-by-ten-spacing: 33px; @@ -225,7 +250,7 @@ describe Compass::Sprites do CSS image_size('squares-*.png').should == [20, 74] end - + it "should calculate the default spacing between images" do css = render <<-SCSS $squares-spacing: 22px; @@ -247,22 +272,22 @@ describe Compass::Sprites do CSS image_size('squares-*.png').should == [20, 52] end - + it "should use position adjustments in functions" do css = render <<-SCSS $squares: sprite-map("squares/*.png", $position: 100%); .squares-sprite { background: $squares no-repeat; } - + .adjusted-percentage { background-position: sprite-position($squares, ten-by-ten, 100%); } - + .adjusted-px-1 { background-position: sprite-position($squares, ten-by-ten, 4px); } - + .adjusted-px-2 { background-position: sprite-position($squares, twenty-by-twenty, -3px, 2px); } @@ -287,20 +312,20 @@ describe Compass::Sprites do image_size('squares-*.png').should == [20, 30] image_md5('squares-*.png').should == '652b67f5e9092520d6f26caae7e18012' end - + it "should use position adjustments in mixins" do css = render <<-SCSS $squares-position: 100%; @import "squares/*.png"; - + .adjusted-percentage { @include squares-sprite("ten-by-ten", $offset-x: 100%); } - + .adjusted-px-1 { @include squares-sprite("ten-by-ten", $offset-x: 4px); } - + .adjusted-px-2 { @include squares-sprite("twenty-by-twenty", $offset-x: -3px, $offset-y: 2px); } @@ -325,7 +350,7 @@ describe Compass::Sprites do image_size('squares-*.png').should == [20, 30] image_md5('squares-*.png').should == '652b67f5e9092520d6f26caae7e18012' end - + it "should repeat the image" do css = render <<-SCSS $squares-repeat: repeat; @@ -372,7 +397,7 @@ describe Compass::Sprites do image_size('squares-*.png').should == [30, 30] image_md5('squares-*.png').should == '2fb19ef9c83018c93c6f147af3a56cb2' end - + it "should provide a nice errors for lemonade's old users" do proc do render <<-SCSS @@ -393,7 +418,7 @@ describe Compass::Sprites do proc do render <<-SCSS @import "squares/*.png"; - + .squares { background: sprite-position("squares/twenty-by-twenty.png") no-repeat; } @@ -401,7 +426,7 @@ describe Compass::Sprites do end.should raise_error Sass::SyntaxError, %q(The first argument to sprite-position() must be a sprite map. See http://beta.compass-style.org/help/tutorials/spriting/ for more information.) end - + it "should work even if @import is missing" do actual_css = render <<-SCSS .squares { @@ -414,5 +439,5 @@ describe Compass::Sprites do } CSS end - + end \ No newline at end of file diff --git a/test/compass_test.rb b/test/compass_test.rb index f86f94c3..ed3b8581 100644 --- a/test/compass_test.rb +++ b/test/compass_test.rb @@ -20,6 +20,26 @@ class CompassTest < Test::Unit::TestCase end end + def test_on_stylesheet_saved_callback + saved = false + filepath = nil + Compass.configuration.on_stylesheet_saved {|filepath| path = filepath; saved = true } + within_project(:blueprint) { } #requires a block but we don't need to pass anything - sdavis + assert saved, "Stylesheet callback didn't get called" + assert filepath.is_a?(String), "Path is not a string" + end + + # no project with errors exists to test aginst - leep of FAITH! + # *chriseppstein flogs himself* + # def test_on_stylesheet_error_callback + # error = false + # file = nil + # Compass.configuration.on_stylesheet_error {|filename, message| file = filename; error = true } + # within_project(:error) { } #requires a block but we don't need to pass anything - sdavis + # assert error, "Project did not throw a compile error" + # assert file.is_a?(String), "Filename was not a string" + # end + def test_empty_project # With no sass files, we should have no css files. within_project(:empty) do |proj| @@ -114,10 +134,10 @@ private end yield Compass.configuration rescue - save_output(project_name) + save_output(project_name) raise end - + def each_css_file(dir, &block) Dir.glob("#{dir}/**/*.css").each(&block) end @@ -145,15 +165,15 @@ private def tempfile_path(project_name) File.join(project_path(project_name), "tmp") end - + def template_path(project_name) File.join(project_path(project_name), "sass") end - + def result_path(project_name) File.join(project_path(project_name), "css") end - + def save_path(project_name) File.join(project_path(project_name), "saved") end From 2fe1c17ac4c8adeb12ce6d9cb5c91e51dad2b91e Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 20 Feb 2011 10:16:11 -0800 Subject: [PATCH 029/223] Don't rely on global callbacks --- .../configuration-reference.markdown | 4 +- .../step_definitions/command_line_steps.rb | 2 +- lib/compass/compiler.rb | 4 +- lib/compass/configuration.rb | 2 +- lib/compass/configuration/callbacks.rb | 25 --- lib/compass/configuration/data.rb | 10 ++ lib/compass/configuration/file_data.rb | 43 ++++++ lib/compass/configuration/helpers.rb | 4 +- lib/compass/configuration/inheritance.rb | 2 - lib/compass/configuration/serialization.rb | 145 ++++++++---------- .../sass_extensions/functions/sprites.rb | 7 +- spec/sprites_spec.rb | 3 +- test/compass_test.rb | 16 +- 13 files changed, 139 insertions(+), 128 deletions(-) delete mode 100644 lib/compass/configuration/callbacks.rb create mode 100644 lib/compass/configuration/file_data.rb diff --git a/doc-src/content/help/tutorials/configuration-reference.markdown b/doc-src/content/help/tutorials/configuration-reference.markdown index 0f6475e9..101a0fe4 100644 --- a/doc-src/content/help/tutorials/configuration-reference.markdown +++ b/doc-src/content/help/tutorials/configuration-reference.markdown @@ -350,7 +350,7 @@ to avoid crashing the watcher in the case where the file has been removed. on_stylesheet_saved do |filename| Growl.notify { - self.message "#{filename} updated!" + self.message "#{File.basename(filename)} updated!" self.icon = '/path/to/success.jpg' } end @@ -359,7 +359,7 @@ to avoid crashing the watcher in the case where the file has been removed. on_stylesheet_error do |filename, message| Growl.notify { - self.message = "#{filename}: #{message}" + self.message = "#{File.basename(filename)}: #{message}" self.icon = '/path/to/fail.jpg' sticky! } diff --git a/features/step_definitions/command_line_steps.rb b/features/step_definitions/command_line_steps.rb index 26bd9bd1..5127af25 100644 --- a/features/step_definitions/command_line_steps.rb +++ b/features/step_definitions/command_line_steps.rb @@ -193,7 +193,7 @@ end Then /^the following configuration properties are set in ([^ ]+):$/ do |config_file, table| - config = Compass::Configuration::Data.new_from_file(config_file) + config = Compass::Configuration::FileData.new_from_file(config_file) table.hashes.each do |hash| config.send(hash['property']).should == hash['value'] end diff --git a/lib/compass/compiler.rb b/lib/compass/compiler.rb index bccb6489..086e1d3b 100644 --- a/lib/compass/compiler.rb +++ b/lib/compass/compiler.rb @@ -119,7 +119,7 @@ module Compass end duration = additional_options[:time] ? "(#{(css_content.__duration * 1000).round / 1000.0}s)" : "" write_file(css_filename, css_content, options.merge(:force => true, :extra => duration)) - Compass.configuration.send(:run_stylesheet_saved, File.basename(css_filename)) #run callback + Compass.configuration.run_callback(:stylesheet_saved, css_filename) end def should_compile?(sass_filename, css_filename) @@ -140,7 +140,7 @@ module Compass formatted_error = "(Line #{e.sass_line}: #{e.message})" file = basename(sass_filename) logger.record :error, file, formatted_error - Compass.configuration.send(:run_styesheet_error, file, formatted_error) #run callback + Compass.configuration.run_callback(:styesheet_error, sass_filename, formatted_error) write_file css_filename, error_contents(e, sass_filename), options.merge(:force => true) end diff --git a/lib/compass/configuration.rb b/lib/compass/configuration.rb index f094570b..3fa3e9ef 100644 --- a/lib/compass/configuration.rb +++ b/lib/compass/configuration.rb @@ -43,6 +43,6 @@ module Compass end end -['adapters', 'callbacks', 'comments', 'defaults', 'helpers', 'inheritance', 'serialization', 'paths', 'data'].each do |lib| +['adapters', 'comments', 'defaults', 'helpers', 'inheritance', 'serialization', 'paths', 'data', 'file_data'].each do |lib| require "compass/configuration/#{lib}" end diff --git a/lib/compass/configuration/callbacks.rb b/lib/compass/configuration/callbacks.rb deleted file mode 100644 index 2f034ee9..00000000 --- a/lib/compass/configuration/callbacks.rb +++ /dev/null @@ -1,25 +0,0 @@ -module Compass - module Configuration - module CallbackMethods - extend ::Sass::Callbacks - - # on_sprite_generated - # yields the filename - # usage: on_sprite_save {|filename| do_somethign(filename) } - define_callback :sprite_saved - # on_sprite_generated - # yields 'ChunkyPNG::Image' - # usage: on_sprite_generated {|sprite_data| do_something(sprite_data) } - define_callback :sprite_generated - - define_callback :stylesheet_saved - define_callback :stylesheet_error - - end - - class Callbacks - extend CallbackMethods - end - - end -end \ No newline at end of file diff --git a/lib/compass/configuration/data.rb b/lib/compass/configuration/data.rb index 91dec02a..2dcfdca0 100644 --- a/lib/compass/configuration/data.rb +++ b/lib/compass/configuration/data.rb @@ -135,6 +135,16 @@ module Compass relative_assets || http_images_path == :relative end + def run_callback(event, *args) + begin + send(:"run_#{event}", *args) + rescue NoMethodError => e + unless e.message =~ /run_#{event}/ + raise + end + end + end + private def assert_valid_keys!(attr_hash) diff --git a/lib/compass/configuration/file_data.rb b/lib/compass/configuration/file_data.rb new file mode 100644 index 00000000..af628752 --- /dev/null +++ b/lib/compass/configuration/file_data.rb @@ -0,0 +1,43 @@ +module Compass + module Configuration + class FileData < Data + extend Sass::Callbacks + + # on_sprite_generated + # yields the filename + # usage: on_sprite_save {|filename| do_somethign(filename) } + define_callback :sprite_saved + + # on_sprite_generated + # yields 'ChunkyPNG::Image' + # usage: on_sprite_generated {|sprite_data| do_something(sprite_data) } + define_callback :sprite_generated + + # on_stylesheet_saved + # yields the filename + # usage: on_stylesheet_saved {|filename| do_something(filename) } + define_callback :stylesheet_saved + + # on_stylesheet_error + # yields the filename & message + # usage: on_stylesheet_error {|filename, message| do_something(filename, message) } + define_callback :stylesheet_error + + def self.new_from_file(config_file, defaults = nil) + data = new(config_file) + data.with_defaults(defaults) do + data._parse(config_file) + end + data + end + + def self.new_from_string(contents, filename, defaults = nil) + data = new(filename) + data.with_defaults(defaults) do + data.parse_string(contents, filename) + end + data + end + end + end +end diff --git a/lib/compass/configuration/helpers.rb b/lib/compass/configuration/helpers.rb index 2f037d8a..00afa6e7 100644 --- a/lib/compass/configuration/helpers.rb +++ b/lib/compass/configuration/helpers.rb @@ -34,11 +34,11 @@ module Compass config elsif config.respond_to?(:read) filename ||= config.to_s if config.is_a?(Pathname) - Compass::Configuration::Data.new_from_string(config.read, filename, defaults) + Compass::Configuration::FileData.new_from_string(config.read, filename, defaults) elsif config.is_a?(Hash) Compass::Configuration::Data.new(filename, config) elsif config.is_a?(String) - Compass::Configuration::Data.new_from_file(config, defaults) + Compass::Configuration::FileData.new_from_file(config, defaults) elsif config.is_a?(Symbol) Compass::AppIntegration.lookup(config).configuration else diff --git a/lib/compass/configuration/inheritance.rb b/lib/compass/configuration/inheritance.rb index 24de6b4d..da12b5bc 100644 --- a/lib/compass/configuration/inheritance.rb +++ b/lib/compass/configuration/inheritance.rb @@ -144,8 +144,6 @@ module Compass def method_missing(meth, *args, &block) if inherited_data inherited_data.send(meth, *args, &block) - elsif Callbacks.respond_to?(meth, true) - Callbacks.send(meth, *args, &block) else raise NoMethodError, meth.to_s end diff --git a/lib/compass/configuration/serialization.rb b/lib/compass/configuration/serialization.rb index afdf4fc5..3e7fcc80 100644 --- a/lib/compass/configuration/serialization.rb +++ b/lib/compass/configuration/serialization.rb @@ -2,100 +2,75 @@ module Compass module Configuration # The serialization module manages reading and writing the configuration file(s). module Serialization - def self.included(base) - base.send(:include, InstanceMethods) - base.extend ClassMethods + def parse(config_file) + raise Compass::Error, "Compass.configuration.parse(filename) has been removed. Please call Compass.add_project_configuration(filename) instead." end - module ClassMethods - def new_from_file(config_file, defaults = nil) - data = Data.new(config_file) - data.with_defaults(defaults) do - data._parse(config_file) - end - data + # parses a configuration file which is a ruby script + def _parse(config_file) + unless File.readable?(config_file) + raise Compass::Error, "Configuration file, #{config_file}, not found or not readable." end - - def new_from_string(contents, filename, defaults = nil) - data = Data.new(filename) - data.with_defaults(defaults) do - data.parse_string(contents, filename) - end - data + open(config_file) do |f| + parse_string(f.read, config_file) end end - module InstanceMethods - def parse(config_file) - raise Compass::Error, "Compass.configuration.parse(filename) has been removed. Please call Compass.add_project_configuration(filename) instead." + def parse_string(contents, filename) + bind = binding + eval(contents, bind, filename) + ATTRIBUTES.each do |prop| + value = eval(prop.to_s, bind) rescue nil + value = value.to_s if value.is_a?(Pathname) + self.send("#{prop}=", value) unless value.nil? end - - # parses a configuration file which is a ruby script - def _parse(config_file) - unless File.readable?(config_file) - raise Compass::Error, "Configuration file, #{config_file}, not found or not readable." - end - open(config_file) do |f| - parse_string(f.read, config_file) - end + if @added_import_paths + self.additional_import_paths ||= [] + self.additional_import_paths += @added_import_paths end - - def parse_string(contents, filename) - bind = binding - eval(contents, bind, filename) - ATTRIBUTES.each do |prop| - value = eval(prop.to_s, bind) rescue nil - value = value.to_s if value.is_a?(Pathname) - self.send("#{prop}=", value) unless value.nil? - end - if @added_import_paths - self.additional_import_paths ||= [] - self.additional_import_paths += @added_import_paths - end - issue_deprecation_warnings - end - - def serialize - contents = "" - (required_libraries || []).each do |lib| - contents << %Q{require '#{lib}'\n} - end - (loaded_frameworks || []).each do |lib| - contents << %Q{load '#{lib}'\n} - end - (framework_path || []).each do |lib| - contents << %Q{discover '#{lib}'\n} - end - contents << "# Require any additional compass plugins here.\n" - contents << "\n" if (required_libraries || []).any? - ATTRIBUTES.each do |prop| - value = send("#{prop}_without_default") - if value.is_a?(Proc) - $stderr.puts "WARNING: #{prop} is code and cannot be written to a file. You'll need to copy it yourself." - end - if respond_to?("comment_for_#{prop}") - contents << send("comment_for_#{prop}") - end - if block_given? && (to_emit = yield(prop, value)) - contents << to_emit - else - contents << serialize_property(prop, value) unless value.nil? - end - end - contents - end - - def serialize_property(prop, value) - %Q(#{prop} = #{value.inspect}\n) - end - - def issue_deprecation_warnings - if http_images_path == :relative - $stderr.puts "DEPRECATION WARNING: Please set relative_assets = true to enable relative paths." - end - end - + issue_deprecation_warnings end + + def serialize + contents = "" + (required_libraries || []).each do |lib| + contents << %Q{require '#{lib}'\n} + end + (loaded_frameworks || []).each do |lib| + contents << %Q{load '#{lib}'\n} + end + (framework_path || []).each do |lib| + contents << %Q{discover '#{lib}'\n} + end + contents << "# Require any additional compass plugins here.\n" + contents << "\n" if (required_libraries || []).any? + ATTRIBUTES.each do |prop| + value = send("#{prop}_without_default") + if value.is_a?(Proc) + $stderr.puts "WARNING: #{prop} is code and cannot be written to a file. You'll need to copy it yourself." + end + if respond_to?("comment_for_#{prop}") + contents << send("comment_for_#{prop}") + end + if block_given? && (to_emit = yield(prop, value)) + contents << to_emit + else + contents << serialize_property(prop, value) unless value.nil? + end + end + contents + end + + def serialize_property(prop, value) + %Q(#{prop} = #{value.inspect}\n) + end + + def issue_deprecation_warnings + if http_images_path == :relative + $stderr.puts "DEPRECATION WARNING: Please set relative_assets = true to enable relative paths." + end + end + end end end diff --git a/lib/compass/sass_extensions/functions/sprites.rb b/lib/compass/sass_extensions/functions/sprites.rb index 45343df9..d4a2fb8b 100644 --- a/lib/compass/sass_extensions/functions/sprites.rb +++ b/lib/compass/sass_extensions/functions/sprites.rb @@ -123,8 +123,9 @@ module Compass::SassExtensions::Functions::Sprites # Generate a sprite image if necessary def generate if generation_required? - save!(construct_sprite) - Compass.configuration.send(:run_sprite_generated, construct_sprite) + sprite_data = construct_sprite + save!(sprite_data) + Compass.configuration.run_callback(:sprite_generated, sprite_data) end end @@ -182,7 +183,7 @@ module Compass::SassExtensions::Functions::Sprites # saves the sprite for later retrieval def save!(output_png) saved = output_png.save filename - Compass.configuration.send(:run_sprite_saved, filename) + Compass.configuration.run_callback(:sprite_saved, filename) saved end diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index 9f2b2f12..94349518 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -8,7 +8,8 @@ describe Compass::Sprites do @images_src_path = File.join(File.dirname(__FILE__), 'test_project', 'public', 'images') @images_tmp_path = File.join(File.dirname(__FILE__), 'test_project', 'public', 'images-tmp') FileUtils.cp_r @images_src_path, @images_tmp_path - Compass.configuration.images_path = @images_tmp_path + file = StringIO.new("images_path = #{@images_tmp_path.inspect}\n") + Compass.add_configuration(file, "sprite_config") Compass.configure_sass_plugin! end diff --git a/test/compass_test.rb b/test/compass_test.rb index ed3b8581..4e1bad00 100644 --- a/test/compass_test.rb +++ b/test/compass_test.rb @@ -23,8 +23,11 @@ class CompassTest < Test::Unit::TestCase def test_on_stylesheet_saved_callback saved = false filepath = nil - Compass.configuration.on_stylesheet_saved {|filepath| path = filepath; saved = true } - within_project(:blueprint) { } #requires a block but we don't need to pass anything - sdavis + config = nil + before_compile = Proc.new do |config| + config.on_stylesheet_saved {|filepath| path = filepath; saved = true } + end + within_project(:blueprint, before_compile) assert saved, "Stylesheet callback didn't get called" assert filepath.is_a?(String), "Path is not a string" end @@ -122,17 +125,22 @@ private end end - def within_project(project_name) + def within_project(project_name, config_block = nil) @current_project = project_name Compass.add_configuration(configuration_file(project_name)) if File.exists?(configuration_file(project_name)) Compass.configuration.project_path = project_path(project_name) Compass.configuration.environment = :production args = Compass.configuration.to_compiler_arguments(:logger => Compass::NullLogger.new) + + if config_block + config_block.call(Compass.configuration) + end + if Compass.configuration.sass_path && File.exists?(Compass.configuration.sass_path) compiler = Compass::Compiler.new *args compiler.run end - yield Compass.configuration + yield Compass.configuration if block_given? rescue save_output(project_name) raise From a83b62fbc3d79ad2a436dbefc82e44d5bb174fa3 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 20 Feb 2011 10:25:13 -0800 Subject: [PATCH 030/223] Update changelog --- doc-src/content/CHANGELOG.markdown | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 97612f75..b6804b43 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -14,6 +14,18 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/ The Documentation for the [latest preview release](http://beta.compass-style.org/) +0.11.beta.3 (UNRELEASED) +------------------------ +* There is a new typography module: Vertical Rhythm. + This makes it easier to align the typography of your page to a common rhythm. +* Some text-based mixins have been moved from utilities to the new + typography module. The old imports are deprecated now. + Affected modules: utilities/links, utilities/lists, and utilities/text and + their sub-modules. +* You can now register callbacks for compilation events so that you can take + custom actions when they occur. For instance, you might want to notify + Growl when a stylesheet compilation error occurs. + 0.11.beta.2 (02/01/2011) ------------------------ * Updated the font-face mixin so it works in Android 2.2. From 8a8ef87e48461042c2283a793e4d98306ac150e1 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 20 Feb 2011 10:38:00 -0800 Subject: [PATCH 031/223] Fix a ruby 1.9.2 bug --- test/compass_test.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/compass_test.rb b/test/compass_test.rb index 4e1bad00..02920954 100644 --- a/test/compass_test.rb +++ b/test/compass_test.rb @@ -22,14 +22,14 @@ class CompassTest < Test::Unit::TestCase def test_on_stylesheet_saved_callback saved = false - filepath = nil + path = nil config = nil before_compile = Proc.new do |config| config.on_stylesheet_saved {|filepath| path = filepath; saved = true } end within_project(:blueprint, before_compile) assert saved, "Stylesheet callback didn't get called" - assert filepath.is_a?(String), "Path is not a string" + assert path.is_a?(String), "Path is not a string. Got: #{path.class.name}" end # no project with errors exists to test aginst - leep of FAITH! From 9b0967eb474c791ff5be7b0510cfdb5a01db6c46 Mon Sep 17 00:00:00 2001 From: Adam Stacoviak Date: Tue, 11 Jan 2011 18:31:36 -0600 Subject: [PATCH 032/223] Add reset-float mixin to reset the cross browser float mixins. --- .../compass/utilities/general/_float.scss | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/frameworks/compass/stylesheets/compass/utilities/general/_float.scss b/frameworks/compass/stylesheets/compass/utilities/general/_float.scss index c0e2ddbf..914f184d 100644 --- a/frameworks/compass/stylesheets/compass/utilities/general/_float.scss +++ b/frameworks/compass/stylesheets/compass/utilities/general/_float.scss @@ -13,3 +13,18 @@ @mixin float($side: left) { display: inline; float: unquote($side); } + +// Resets floated elements back to their default of `float: none` and defaults +// to `display: block` unless you pass `inline` as an argument +// +// Usage Example: +// +// body.homepage +// #footer li +// +float-left +// body.signup +// #footer li +// +reset-float +@mixin reset-float($display: block) { + float: none; + display: $display; } \ No newline at end of file From beda56a2c8262fd9aea0524f64d1fa700bfdcbc2 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 21 Feb 2011 09:11:10 -0800 Subject: [PATCH 033/223] note the reset-float mixin in the changelog --- doc-src/content/CHANGELOG.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index b6804b43..d691ba22 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -25,6 +25,7 @@ The Documentation for the [latest preview release](http://beta.compass-style.org * You can now register callbacks for compilation events so that you can take custom actions when they occur. For instance, you might want to notify Growl when a stylesheet compilation error occurs. +* A new mixin `reset-float` is available in the [float module](/reference/compass/utilities/general/float/#mixin-reset-float) that makes it easier to reset the floats introduced from that module. 0.11.beta.2 (02/01/2011) ------------------------ From f1587b6bf1fbe7d68eb499639ab05bef1f9cb49a Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 21 Feb 2011 09:35:26 -0800 Subject: [PATCH 034/223] pass compilation sass events through to compass when using the sass plugin to compile. --- lib/compass/configuration/helpers.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/compass/configuration/helpers.rb b/lib/compass/configuration/helpers.rb index 00afa6e7..37fc478a 100644 --- a/lib/compass/configuration/helpers.rb +++ b/lib/compass/configuration/helpers.rb @@ -65,6 +65,12 @@ module Compass Sass::Plugin.add_template_location sass_dir, css_dir end end + Sass::Plugin.on_updating_stylesheet do |sass_file, css_file| + Compass.configuration.run_callback(:stylesheet_saved, css_file) + end + Sass::Plugin.on_compilation_error do |e, filename, css| + Compass.configuration.run_callback(:stylesheet_error, filename, e.message) + end end def sass_engine_options From 802bc71c05ff140f8edaa6c431d11c1414c69508 Mon Sep 17 00:00:00 2001 From: Eric Meyer Date: Mon, 21 Feb 2011 12:31:34 -0700 Subject: [PATCH 035/223] Eric Meyers css reset v2.0 --- doc-src/content/CHANGELOG.markdown | 1 + .../stylesheets/compass/reset/_utilities.scss | 63 ++++++++++--------- 2 files changed, 36 insertions(+), 28 deletions(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index d691ba22..579e3600 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -26,6 +26,7 @@ The Documentation for the [latest preview release](http://beta.compass-style.org custom actions when they occur. For instance, you might want to notify Growl when a stylesheet compilation error occurs. * A new mixin `reset-float` is available in the [float module](/reference/compass/utilities/general/float/#mixin-reset-float) that makes it easier to reset the floats introduced from that module. +* Reset mixins have been updated based on [Eric Meyer's CSS Reset v2.0](http://meyerweb.com/eric/tools/css/reset/index.html). HTML5 support is included by default. 0.11.beta.2 (02/01/2011) ------------------------ diff --git a/frameworks/compass/stylesheets/compass/reset/_utilities.scss b/frameworks/compass/stylesheets/compass/reset/_utilities.scss index 268e0f9f..4ae36990 100644 --- a/frameworks/compass/stylesheets/compass/reset/_utilities.scss +++ b/frameworks/compass/stylesheets/compass/reset/_utilities.scss @@ -1,17 +1,21 @@ -// Based on [Eric Meyer's reset](http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/) +// Based on [Eric Meyer's reset 2.0](http://meyerweb.com/eric/tools/css/reset/index.html) // Global reset rules. // For more specific resets, use the reset mixins provided below -// -// *Please Note*: tables still need `cellspacing="0"` in the markup. + @mixin global-reset { html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, - del, dfn, em, font, img, ins, kbd, q, s, samp, + del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, + b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, - table, caption, tbody, tfoot, thead, tr, th, td { + table, caption, tbody, tfoot, thead, tr, th, td, + article, aside, canvas, details, embed, + figure, figcaption, footer, header, hgroup, + menu, nav, output, ruby, section, summary, + time, mark, audio, video { @include reset-box-model; @include reset-font; } body { @@ -25,17 +29,26 @@ q, blockquote { @include reset-quotation; } a img { - @include reset-image-anchor-border; } } + @include reset-image-anchor-border; } + @include reset-html5; } // Reset all elements within some selector scope. To reset the selector itself, // mixin the appropriate reset mixin for that element type as well. This could be // useful if you want to style a part of your page in a dramatically different way. -// -// *Please Note*: tables still need `cellspacing="0"` in the markup. @mixin nested-reset { - div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, - pre, a, abbr, acronym, address, code, del, dfn, em, img, - dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr { + div, span, applet, object, iframe, + h1, h2, h3, h4, h5, h6, p, blockquote, pre, + a, abbr, acronym, address, big, cite, code, + del, dfn, em, img, ins, kbd, q, s, samp, + small, strike, strong, sub, sup, tt, var, + b, u, i, center, + dl, dt, dd, ol, ul, li, + fieldset, form, label, legend, + table, caption, tbody, tfoot, thead, tr, th, td, + article, aside, canvas, details, embed, + figure, figcaption, footer, header, hgroup, + menu, nav, output, ruby, section, summary, + time, mark, audio, video { @include reset-box-model; @include reset-font; } table { @@ -51,16 +64,12 @@ @mixin reset-box-model { margin: 0; padding: 0; - border: 0; - outline: 0; } + border: 0; } // Reset the font and vertical alignment. @mixin reset-font { - font: { - weight: inherit; - style: inherit; - size: 100%; - family: inherit; }; + font-size: 100%; + font: inherit; vertical-align: baseline; } // Resets the outline when focus. @@ -70,9 +79,7 @@ // Reset a body element. @mixin reset-body { - line-height: 1; - color: black; - background: white; } + line-height: 1; } // Reset the list style of an element. @mixin reset-list-style { @@ -80,9 +87,8 @@ // Reset a table @mixin reset-table { - border-collapse: separate; - border-spacing: 0; - vertical-align: middle; } + border-collapse: collapse; + border-spacing: 0; } // Reset a table cell (`th`, `td`) @mixin reset-table-cell { @@ -92,9 +98,10 @@ // Reset a quotation (`q`, `blockquote`) @mixin reset-quotation { - quotes: "" ""; + quotes: none; &:before, &:after { - content: ""; } } + content: ""; + content: none; } } // Resets the border. @mixin reset-image-anchor-border { @@ -105,8 +112,8 @@ // so they are rendered correctly in browsers that don't recognize them // and reset in browsers that have default styles for them. @mixin reset-html5 { - article, aside, canvas, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary { - @include reset-box-model; + article, aside, details, figcaption, figure, + footer, header, hgroup, menu, nav, section { display: block; } } // Resets the display of inline and block elements to their default display From 620c9fe1abbff3c8f919a4f5b930149a0c73d69f Mon Sep 17 00:00:00 2001 From: Aaron Russell Date: Sat, 29 Jan 2011 18:00:09 +0000 Subject: [PATCH 036/223] Added utilities/color/contrast module. Added contrasted mixin and get_contrast_yiq function. --- frameworks/compass/stylesheets/compass/_utilities.scss | 1 + .../compass/stylesheets/compass/utilities/_color.scss | 1 + .../stylesheets/compass/utilities/color/_contrast.scss | 8 ++++++++ lib/compass/sass_extensions/functions/colors.rb | 7 +++++++ test/sass_extensions_test.rb | 5 +++++ 5 files changed, 22 insertions(+) create mode 100644 frameworks/compass/stylesheets/compass/utilities/_color.scss create mode 100644 frameworks/compass/stylesheets/compass/utilities/color/_contrast.scss diff --git a/frameworks/compass/stylesheets/compass/_utilities.scss b/frameworks/compass/stylesheets/compass/_utilities.scss index 103b14c4..53a02445 100644 --- a/frameworks/compass/stylesheets/compass/_utilities.scss +++ b/frameworks/compass/stylesheets/compass/_utilities.scss @@ -1,3 +1,4 @@ +@import "utilities/color"; @import "utilities/general"; @import "utilities/sprites"; @import "utilities/tables"; diff --git a/frameworks/compass/stylesheets/compass/utilities/_color.scss b/frameworks/compass/stylesheets/compass/utilities/_color.scss new file mode 100644 index 00000000..0cc7fd16 --- /dev/null +++ b/frameworks/compass/stylesheets/compass/utilities/_color.scss @@ -0,0 +1 @@ +@import "color/contrast"; \ No newline at end of file diff --git a/frameworks/compass/stylesheets/compass/utilities/color/_contrast.scss b/frameworks/compass/stylesheets/compass/utilities/color/_contrast.scss new file mode 100644 index 00000000..80102df0 --- /dev/null +++ b/frameworks/compass/stylesheets/compass/utilities/color/_contrast.scss @@ -0,0 +1,8 @@ +$contrasted-default-dark: #000; +$contrasted-default-light: #fff; + +// Sets the specified background color and calculates a dark or light contrasted text color. +@mixin contrasted($bg, $dark:$contrasted-default-dark, $light:$contrasted-default-light){ + background-color: $bg; + color: get_contrast_yiq($bg, $dark, $light); +} \ No newline at end of file diff --git a/lib/compass/sass_extensions/functions/colors.rb b/lib/compass/sass_extensions/functions/colors.rb index 70be6162..5e89d613 100644 --- a/lib/compass/sass_extensions/functions/colors.rb +++ b/lib/compass/sass_extensions/functions/colors.rb @@ -40,6 +40,13 @@ module Compass::SassExtensions::Functions::Colors alphastr = alpha.to_s(16).rjust(2, '0') Sass::Script::String.new("##{alphastr}#{color.send(:hex_str)[1..-1]}".upcase) end + + # Calculates the contrast of a color using the YIQ algorithm + # Returns one of either a dark or light color based on the YIQ + def get_contrast_yiq(color, dark = Sass::Script::Color.new([0,0,0]), light = Sass::Script::Color.new([255,255,255])) + yiq = ( (color.red*299) + (color.green*587) + (color.blue*114) ) / 1000; + yiq >= 128 ? dark : light + end private def scale_color_value(value, amount) diff --git a/test/sass_extensions_test.rb b/test/sass_extensions_test.rb index cbd75f8a..8bff5054 100644 --- a/test/sass_extensions_test.rb +++ b/test/sass_extensions_test.rb @@ -88,6 +88,11 @@ class SassExtensionsTest < Test::Unit::TestCase assert_equal "true", evaluate("blank(' ')") assert_equal "true", evaluate("blank(-compass-space-list(' '))") end + + def test_get_contrast + assert_equal "white", evaluate("get_contrast_yiq(#000)") + assert_equal "black", evaluate("get_contrast_yiq(#fff)") + end protected def evaluate(value) From 902450a2449ab7d9bc6c358a8d4438d24b511931 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 21 Feb 2011 12:48:19 -0800 Subject: [PATCH 037/223] Use a sass-based function instead of a ruby-based function for contrast calculations --- .../compass/utilities/color/_contrast.scss | 30 +++++++++++++++---- .../sass_extensions/functions/colors.rb | 7 ----- .../stylesheets/compass/css/utilities.css | 13 ++++++++ .../stylesheets/compass/sass/utilities.scss | 5 ++++ test/sass_extensions_test.rb | 5 ---- 5 files changed, 43 insertions(+), 17 deletions(-) diff --git a/frameworks/compass/stylesheets/compass/utilities/color/_contrast.scss b/frameworks/compass/stylesheets/compass/utilities/color/_contrast.scss index 80102df0..fc73905e 100644 --- a/frameworks/compass/stylesheets/compass/utilities/color/_contrast.scss +++ b/frameworks/compass/stylesheets/compass/utilities/color/_contrast.scss @@ -1,8 +1,28 @@ -$contrasted-default-dark: #000; -$contrasted-default-light: #fff; +$contrasted-dark-default: #000 !default; +$contrasted-light-default: #fff !default; +$contrasted-lightness-threshold: 30% !default; + +// Returns the `$light` color when the `$color` is dark +// and the `$dark` color when the `$color` is light. +// The `$threshold` is a percent between `0%` and `100%` and it determines +// when the lightness of `$color` changes from "dark" to "light". +@function contrast-color( + $color, + $dark: $contrasted-dark-default, + $light: $contrasted-light-default, + $threshold: $contrasted-lightness-threshold +) { + @return if(lightness($color) < $threshold, $light, $dark) +} // Sets the specified background color and calculates a dark or light contrasted text color. -@mixin contrasted($bg, $dark:$contrasted-default-dark, $light:$contrasted-default-light){ - background-color: $bg; - color: get_contrast_yiq($bg, $dark, $light); +// The arguments are passed through to the [contrast-color function](#function-contrast-color). +@mixin contrasted( + $background-color, + $dark: $contrasted-dark-default, + $light: $contrasted-light-default, + $threshold: $contrasted-lightness-threshold +) { + background-color: $background-color; + color: contrast-color($background-color, $dark, $light, $threshold); } \ No newline at end of file diff --git a/lib/compass/sass_extensions/functions/colors.rb b/lib/compass/sass_extensions/functions/colors.rb index 5e89d613..999012ce 100644 --- a/lib/compass/sass_extensions/functions/colors.rb +++ b/lib/compass/sass_extensions/functions/colors.rb @@ -41,13 +41,6 @@ module Compass::SassExtensions::Functions::Colors Sass::Script::String.new("##{alphastr}#{color.send(:hex_str)[1..-1]}".upcase) end - # Calculates the contrast of a color using the YIQ algorithm - # Returns one of either a dark or light color based on the YIQ - def get_contrast_yiq(color, dark = Sass::Script::Color.new([0,0,0]), light = Sass::Script::Color.new([255,255,255])) - yiq = ( (color.red*299) + (color.green*587) + (color.blue*114) ) / 1000; - yiq >= 128 ? dark : light - end - private def scale_color_value(value, amount) if amount > 0 diff --git a/test/fixtures/stylesheets/compass/css/utilities.css b/test/fixtures/stylesheets/compass/css/utilities.css index 38544f92..aef752a4 100644 --- a/test/fixtures/stylesheets/compass/css/utilities.css +++ b/test/fixtures/stylesheets/compass/css/utilities.css @@ -11,3 +11,16 @@ clear: both; overflow: hidden; visibility: hidden; } + +p.light { + background-color: #b0201e; + color: black; } +p.dark { + background-color: #5f1210; + color: white; } +p.light-with-args { + background-color: #b0201e; + color: green; } +p.dark-with-args { + background-color: #5f1210; + color: blue; } diff --git a/test/fixtures/stylesheets/compass/sass/utilities.scss b/test/fixtures/stylesheets/compass/sass/utilities.scss index 1565ed53..7daac2f6 100644 --- a/test/fixtures/stylesheets/compass/sass/utilities.scss +++ b/test/fixtures/stylesheets/compass/sass/utilities.scss @@ -7,3 +7,8 @@ .pie-clearfix { @include pie-clearfix; } + +p.light { @include contrasted(#B0201E); } +p.dark { @include contrasted(#5F1210); } +p.light-with-args { @include contrasted(#B0201E, green, blue); } +p.dark-with-args { @include contrasted(#5F1210, green, blue); } diff --git a/test/sass_extensions_test.rb b/test/sass_extensions_test.rb index 8bff5054..cbd75f8a 100644 --- a/test/sass_extensions_test.rb +++ b/test/sass_extensions_test.rb @@ -88,11 +88,6 @@ class SassExtensionsTest < Test::Unit::TestCase assert_equal "true", evaluate("blank(' ')") assert_equal "true", evaluate("blank(-compass-space-list(' '))") end - - def test_get_contrast - assert_equal "white", evaluate("get_contrast_yiq(#000)") - assert_equal "black", evaluate("get_contrast_yiq(#fff)") - end protected def evaluate(value) From 2b29dd0bbcf92997669fe04907433cea11276d18 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 21 Feb 2011 12:49:09 -0800 Subject: [PATCH 038/223] Docs for the new contrast module. --- .../examples/compass/utilities/contrast.haml | 8 ++++++++ .../compass/utilities/contrast/markup.haml | 3 +++ .../compass/utilities/contrast/stylesheet.sass | 11 +++++++++++ .../reference/compass/utilities/color.haml | 16 ++++++++++++++++ .../compass/utilities/color/contrast.haml | 13 +++++++++++++ 5 files changed, 51 insertions(+) create mode 100644 doc-src/content/examples/compass/utilities/contrast.haml create mode 100644 doc-src/content/examples/compass/utilities/contrast/markup.haml create mode 100644 doc-src/content/examples/compass/utilities/contrast/stylesheet.sass create mode 100644 doc-src/content/reference/compass/utilities/color.haml create mode 100644 doc-src/content/reference/compass/utilities/color/contrast.haml diff --git a/doc-src/content/examples/compass/utilities/contrast.haml b/doc-src/content/examples/compass/utilities/contrast.haml new file mode 100644 index 00000000..eca3504a --- /dev/null +++ b/doc-src/content/examples/compass/utilities/contrast.haml @@ -0,0 +1,8 @@ +--- +title: Compass Contrast Color Example +description: Make text readable +framework: compass +stylesheet: compass/utilities/color/_contrast.scss +example: true +--- += render "partials/example" diff --git a/doc-src/content/examples/compass/utilities/contrast/markup.haml b/doc-src/content/examples/compass/utilities/contrast/markup.haml new file mode 100644 index 00000000..c5184b33 --- /dev/null +++ b/doc-src/content/examples/compass/utilities/contrast/markup.haml @@ -0,0 +1,3 @@ +.example + %p.dark This is a paragraph with a dark background and light text. + %p.light This is a paragraph with a light background and dark text. diff --git a/doc-src/content/examples/compass/utilities/contrast/stylesheet.sass b/doc-src/content/examples/compass/utilities/contrast/stylesheet.sass new file mode 100644 index 00000000..2e8c9416 --- /dev/null +++ b/doc-src/content/examples/compass/utilities/contrast/stylesheet.sass @@ -0,0 +1,11 @@ +$contrasted-dark-default: #333 +$contrasted-light-default: #e7e7e7 + +@import "compass/utilities/color/contrast" + +.example + p.dark + +contrasted(#5F1210) + p.light + +contrasted(#C82523) + diff --git a/doc-src/content/reference/compass/utilities/color.haml b/doc-src/content/reference/compass/utilities/color.haml new file mode 100644 index 00000000..c0fb5803 --- /dev/null +++ b/doc-src/content/reference/compass/utilities/color.haml @@ -0,0 +1,16 @@ +--- +title: Compass Color +crumb: Color +framework: compass +stylesheet: compass/utilities/_color.scss +layout: core +sidebar: true +meta_description: Utilities for working with colors. +classnames: + - reference + - core + - utilities +--- +- render 'reference' do + %p + Utilities for working with colors. diff --git a/doc-src/content/reference/compass/utilities/color/contrast.haml b/doc-src/content/reference/compass/utilities/color/contrast.haml new file mode 100644 index 00000000..327d5b6d --- /dev/null +++ b/doc-src/content/reference/compass/utilities/color/contrast.haml @@ -0,0 +1,13 @@ +--- +title: Compass Color Contrast +crumb: Color Contrast +framework: compass +stylesheet: compass/utilities/color/_contrast.scss +layout: core +meta_description: Contrast foreground with background colors. +classnames: + - reference + - core + - utilities +--- += render 'reference' From 5524745b937525ed354de7aeaed922e72978ee58 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 21 Feb 2011 13:00:57 -0800 Subject: [PATCH 039/223] changelog entry for the color contrast module. --- doc-src/content/CHANGELOG.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 579e3600..cae0fe4c 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -27,6 +27,7 @@ The Documentation for the [latest preview release](http://beta.compass-style.org Growl when a stylesheet compilation error occurs. * A new mixin `reset-float` is available in the [float module](/reference/compass/utilities/general/float/#mixin-reset-float) that makes it easier to reset the floats introduced from that module. * Reset mixins have been updated based on [Eric Meyer's CSS Reset v2.0](http://meyerweb.com/eric/tools/css/reset/index.html). HTML5 support is included by default. +* A new module has been added to create readable text against an arbitrary background color based on the lightness of the background: [compass/utilities/color/contrast](/reference/compass/utilities/color/contrast/). 0.11.beta.2 (02/01/2011) ------------------------ From 3ee95174ebe2f987024cc1406eef592413837532 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 21 Feb 2011 13:03:19 -0800 Subject: [PATCH 040/223] Fix copy/paste error. Closes GH-279. --- frameworks/compass/templates/pie/manifest.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/compass/templates/pie/manifest.rb b/frameworks/compass/templates/pie/manifest.rb index 1348c079..a4e9de03 100644 --- a/frameworks/compass/templates/pie/manifest.rb +++ b/frameworks/compass/templates/pie/manifest.rb @@ -1,4 +1,4 @@ -description "Plugin for cross-browser ellipsis truncated text." +description "Integration with http://css3pie.com/" file 'PIE.htc', :like => :css stylesheet 'pie.scss', :erb => true From 0944d85ade28594d9e279948fafffd620f6ccdcf Mon Sep 17 00:00:00 2001 From: Chad Ostrowski Date: Thu, 3 Feb 2011 08:09:47 -0500 Subject: [PATCH 041/223] 'delimited-list' now generalizes 'comma-delimited-list' --- .../compass/typography/lists/_inline-list.scss | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/frameworks/compass/stylesheets/compass/typography/lists/_inline-list.scss b/frameworks/compass/stylesheets/compass/typography/lists/_inline-list.scss index 29bc74fc..1b5fef6e 100644 --- a/frameworks/compass/stylesheets/compass/typography/lists/_inline-list.scss +++ b/frameworks/compass/stylesheets/compass/typography/lists/_inline-list.scss @@ -9,8 +9,10 @@ } } -// makes an inline list that is comma delimited. -// Please make note of the browser support issues before using this mixin. +// makes an inline list delimited with the passed string. +// Defaults to making a comma-separated list. +// +// Please make note of the browser support issues before using this mixin: // // use of `content` and `:after` is not fully supported in all browsers. // See quirksmode for the [support matrix](http://www.quirksmode.org/css/contents.html#t15) @@ -21,10 +23,10 @@ // IE8 ignores rules that are included on the same line as :last-child // see http://www.richardscarrott.co.uk/posts/view/ie8-last-child-bug for details -@mixin comma-delimited-list { +@mixin delimited-list($separator: ", ") { @include inline-list; li { - &:after { content: ", "; } + &:after { content: $separator; } &:last-child { &:after { content: ""; } } @@ -33,3 +35,9 @@ } } } + +// See [delimited-list](#mixin-delimited-list) +// @deprecated +@mixin comma-delimited-list { + @include delimited-list +} From 15e9eef9c0b4470d44ddd6f7f8b5a60452f5f7e5 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 21 Feb 2011 16:45:27 -0800 Subject: [PATCH 042/223] deprecate the comma-delimted-list mixin in favor of the more general delimited-list mixin. --- .../stylesheets/compass/typography/lists/_inline-list.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frameworks/compass/stylesheets/compass/typography/lists/_inline-list.scss b/frameworks/compass/stylesheets/compass/typography/lists/_inline-list.scss index 1b5fef6e..caff6fd6 100644 --- a/frameworks/compass/stylesheets/compass/typography/lists/_inline-list.scss +++ b/frameworks/compass/stylesheets/compass/typography/lists/_inline-list.scss @@ -39,5 +39,6 @@ // See [delimited-list](#mixin-delimited-list) // @deprecated @mixin comma-delimited-list { - @include delimited-list + @warn "comma-delimited-list is deprecated. Please use delimited-list instead."; + @include delimited-list; } From 2147240c1dd41aa503d98537d0f3fa7364d92100 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 21 Feb 2011 16:46:07 -0800 Subject: [PATCH 043/223] Changelog entry for delimited-list --- doc-src/content/CHANGELOG.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index cae0fe4c..cea382cd 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -28,6 +28,9 @@ The Documentation for the [latest preview release](http://beta.compass-style.org * A new mixin `reset-float` is available in the [float module](/reference/compass/utilities/general/float/#mixin-reset-float) that makes it easier to reset the floats introduced from that module. * Reset mixins have been updated based on [Eric Meyer's CSS Reset v2.0](http://meyerweb.com/eric/tools/css/reset/index.html). HTML5 support is included by default. * A new module has been added to create readable text against an arbitrary background color based on the lightness of the background: [compass/utilities/color/contrast](/reference/compass/utilities/color/contrast/). +* The comma-delimited-list has been renamed to delimited-list and + generalized to accept a delimiter which defaults to a comma. + The old function continues to exist, but is deprecated. 0.11.beta.2 (02/01/2011) ------------------------ From 65cf2f9812dde391a491c76c3bb8849d36abee4f Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 21 Feb 2011 16:47:20 -0800 Subject: [PATCH 044/223] Remove deprecated use of comma-delimited-list --- examples/compass/src/utilities.scss | 2 +- test/fixtures/stylesheets/compass/sass/lists.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/compass/src/utilities.scss b/examples/compass/src/utilities.scss index 22ae3401..b3461431 100644 --- a/examples/compass/src/utilities.scss +++ b/examples/compass/src/utilities.scss @@ -55,7 +55,7 @@ h2 { ul.inline { @include inline-list; } ul.comma-delimited { - @include comma-delimited-list; } + @include delimited-list; } ol.pretty { @include pretty-bullets("blue_arrow.gif", 5px, 7px, 18px); } } diff --git a/test/fixtures/stylesheets/compass/sass/lists.scss b/test/fixtures/stylesheets/compass/sass/lists.scss index d2ef36f3..3eea1fde 100644 --- a/test/fixtures/stylesheets/compass/sass/lists.scss +++ b/test/fixtures/stylesheets/compass/sass/lists.scss @@ -7,6 +7,6 @@ ul.no-padding { @include horizontal-list(false); } ul.inline-block { @include inline-block-list; } ul.wide-inline-block { @include inline-block-list(10px); } ul.inline { @include inline-list; } -ul.comma { @include comma-delimited-list; } +ul.comma { @include delimited-list; } ul.no-bullets { @include no-bullets; } ul.pretty { @include pretty-bullets("4x6.png"); } \ No newline at end of file From d9fdb0d0c7897bd3ffd1e9df4357ca1eb2fde64f Mon Sep 17 00:00:00 2001 From: Zee Agency Date: Mon, 14 Feb 2011 14:37:22 +0100 Subject: [PATCH 045/223] Add css3 appearance mixin --- frameworks/compass/stylesheets/compass/_css3.scss | 1 + .../stylesheets/compass/css3/_appearance.scss | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 frameworks/compass/stylesheets/compass/css3/_appearance.scss diff --git a/frameworks/compass/stylesheets/compass/_css3.scss b/frameworks/compass/stylesheets/compass/_css3.scss index 41f0447f..3ca84aa0 100644 --- a/frameworks/compass/stylesheets/compass/_css3.scss +++ b/frameworks/compass/stylesheets/compass/_css3.scss @@ -14,3 +14,4 @@ @import "css3/font-face"; @import "css3/transform"; @import "css3/transition"; +@import "css3/appearance"; \ No newline at end of file diff --git a/frameworks/compass/stylesheets/compass/css3/_appearance.scss b/frameworks/compass/stylesheets/compass/css3/_appearance.scss new file mode 100644 index 00000000..128fe4d9 --- /dev/null +++ b/frameworks/compass/stylesheets/compass/css3/_appearance.scss @@ -0,0 +1,13 @@ +@import "shared"; + +// Change the appearance for Mozilla, Webkit and the future +// +// @param $ap +// [ none | normal | icon | window | button | menu | field ] + +@mixin appearance($ap) { + $ap: unquote($ap); + @include experimental(appearance, $ap, + -moz, -webkit, not -o, not -ms, not -khtml, official + ); +} From 3269cbf743e07a574cf6d746dbb3bced1d49add7 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 21 Feb 2011 18:02:13 -0800 Subject: [PATCH 046/223] Added docs for the new appearance mixin. --- doc-src/content/CHANGELOG.markdown | 1 + .../reference/compass/css3/appearance.haml | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 doc-src/content/reference/compass/css3/appearance.haml diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index cea382cd..77b360e7 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -31,6 +31,7 @@ The Documentation for the [latest preview release](http://beta.compass-style.org * The comma-delimited-list has been renamed to delimited-list and generalized to accept a delimiter which defaults to a comma. The old function continues to exist, but is deprecated. +* A new CSS3 mixin for [appearance](/reference/compass/css3/appearance/) was added. 0.11.beta.2 (02/01/2011) ------------------------ diff --git a/doc-src/content/reference/compass/css3/appearance.haml b/doc-src/content/reference/compass/css3/appearance.haml new file mode 100644 index 00000000..2eb66b0f --- /dev/null +++ b/doc-src/content/reference/compass/css3/appearance.haml @@ -0,0 +1,16 @@ +--- +title: Compass Appearance +crumb: Appearance +framework: compass +stylesheet: compass/css3/_appearance.scss +meta_description: Specify the CSS3 appearance property. +layout: core +classnames: + - reference + - core + - css3 +--- +- render 'reference' do + :markdown + Provides a mixin for `appearance`. + See the CSS3 specification: [appearance](http://www.w3.org/TR/css3-ui/#appearance). From c5949beca3eeec7ec0df6358f2497311255af567 Mon Sep 17 00:00:00 2001 From: Eric Meyer Date: Mon, 21 Feb 2011 23:22:55 -0700 Subject: [PATCH 047/223] bring back (deprecated) legacy reset and legacy docs --- doc-src/Gemfile.lock | 2 +- doc-src/content/CHANGELOG.markdown | 1 + .../reference/compass/reset-legacy.haml | 27 ++++ .../reset-legacy/utilities-legacy.haml | 22 +++ doc-src/content/reference/compass/reset.haml | 2 +- .../stylesheets/compass/_reset-legacy.scss | 3 + .../compass/reset/_utilities-legacy.scss | 135 ++++++++++++++++++ .../stylesheets/compass/reset/_utilities.scss | 1 - 8 files changed, 190 insertions(+), 3 deletions(-) create mode 100644 doc-src/content/reference/compass/reset-legacy.haml create mode 100644 doc-src/content/reference/compass/reset-legacy/utilities-legacy.haml create mode 100644 frameworks/compass/stylesheets/compass/_reset-legacy.scss create mode 100644 frameworks/compass/stylesheets/compass/reset/_utilities-legacy.scss diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index a6b35b27..41698cae 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,7 +8,7 @@ GIT PATH remote: .. specs: - compass (0.11.beta.2.0dc38bc) + compass (0.11.beta.2.65cf2f9) chunky_png (~> 0.12.0) sass (>= 3.1.0.alpha.218) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index cea382cd..23e0a792 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -27,6 +27,7 @@ The Documentation for the [latest preview release](http://beta.compass-style.org Growl when a stylesheet compilation error occurs. * A new mixin `reset-float` is available in the [float module](/reference/compass/utilities/general/float/#mixin-reset-float) that makes it easier to reset the floats introduced from that module. * Reset mixins have been updated based on [Eric Meyer's CSS Reset v2.0](http://meyerweb.com/eric/tools/css/reset/index.html). HTML5 support is included by default. + For the legacy projects, you can adjust your imports to reference the the [legacy reset](/reference/compass/reset/) or [legacy reset utilities](/reference/compass/reset/utilities/). * A new module has been added to create readable text against an arbitrary background color based on the lightness of the background: [compass/utilities/color/contrast](/reference/compass/utilities/color/contrast/). * The comma-delimited-list has been renamed to delimited-list and generalized to accept a delimiter which defaults to a comma. diff --git a/doc-src/content/reference/compass/reset-legacy.haml b/doc-src/content/reference/compass/reset-legacy.haml new file mode 100644 index 00000000..9f18b1af --- /dev/null +++ b/doc-src/content/reference/compass/reset-legacy.haml @@ -0,0 +1,27 @@ +--- +title: Compass Reset (legacy) +crumb: Reset (legacy) +framework: compass +stylesheet: compass/_reset-legacy.scss +layout: core +sidebar: true +deprecated: true +classnames: + - reference + - core + - reset +meta_description: Adds a CSS Reset into your stylesheet. +--- +- render 'reference' do + %p.warning + This import is deprecated. Please import + reset instead. + + :markdown + This module applies the [global reset](/reference/compass/reset/utilities-legacy/#mixin-global-reset) + to your stylesheet by simply importing it. + + **Note:** This module will place styles into your stylesheet by importing it. This + is not the standard behavior of a compass module but it optimizes the common use case. + If you want to control the reset, please use the mixins defined in the [reset + utilities module](/reference/compass/reset/utilities-legacy/) diff --git a/doc-src/content/reference/compass/reset-legacy/utilities-legacy.haml b/doc-src/content/reference/compass/reset-legacy/utilities-legacy.haml new file mode 100644 index 00000000..bf052936 --- /dev/null +++ b/doc-src/content/reference/compass/reset-legacy/utilities-legacy.haml @@ -0,0 +1,22 @@ +--- +title: Compass Reset Utilities (legacy) +crumb: Reset Utilities (legacy) +framework: compass +stylesheet: compass/reset/_utilities-legacy.scss +layout: core +deprecated: true +meta_description: Mixins for resetting elements. +classnames: + - reference + - core + - utilities +--- +- render 'reference' do + %p.warning + This import is deprecated. Please import + reset utilities instead. + + :markdown + These utilities are used to reset your document. The easiest way to use them + is to simply `@import "compass/reset"` which will import this module and apply + the appropriate mixins for you. diff --git a/doc-src/content/reference/compass/reset.haml b/doc-src/content/reference/compass/reset.haml index 5001a7d1..21f67fc5 100644 --- a/doc-src/content/reference/compass/reset.haml +++ b/doc-src/content/reference/compass/reset.haml @@ -19,4 +19,4 @@ meta_description: Adds a CSS Reset into your stylesheet. **Note:** This module will place styles into your stylesheet by importing it. This is not the standard behavior of a compass module but it optimizes the common use case. If you want to control the reset, please use the mixins defined in the [reset - utilities module](/reference/compass/reset/utilities/) + utilities module](/reference/compass/reset/utilities/) diff --git a/frameworks/compass/stylesheets/compass/_reset-legacy.scss b/frameworks/compass/stylesheets/compass/_reset-legacy.scss new file mode 100644 index 00000000..f11f07ac --- /dev/null +++ b/frameworks/compass/stylesheets/compass/_reset-legacy.scss @@ -0,0 +1,3 @@ +@import "reset/utilities-legacy"; + +@include global-reset; diff --git a/frameworks/compass/stylesheets/compass/reset/_utilities-legacy.scss b/frameworks/compass/stylesheets/compass/reset/_utilities-legacy.scss new file mode 100644 index 00000000..268e0f9f --- /dev/null +++ b/frameworks/compass/stylesheets/compass/reset/_utilities-legacy.scss @@ -0,0 +1,135 @@ +// Based on [Eric Meyer's reset](http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/) +// Global reset rules. +// For more specific resets, use the reset mixins provided below +// +// *Please Note*: tables still need `cellspacing="0"` in the markup. +@mixin global-reset { + html, body, div, span, applet, object, iframe, + h1, h2, h3, h4, h5, h6, p, blockquote, pre, + a, abbr, acronym, address, big, cite, code, + del, dfn, em, font, img, ins, kbd, q, s, samp, + small, strike, strong, sub, sup, tt, var, + dl, dt, dd, ol, ul, li, + fieldset, form, label, legend, + table, caption, tbody, tfoot, thead, tr, th, td { + @include reset-box-model; + @include reset-font; } + body { + @include reset-body; } + ol, ul { + @include reset-list-style; } + table { + @include reset-table; } + caption, th, td { + @include reset-table-cell; } + q, blockquote { + @include reset-quotation; } + a img { + @include reset-image-anchor-border; } } + +// Reset all elements within some selector scope. To reset the selector itself, +// mixin the appropriate reset mixin for that element type as well. This could be +// useful if you want to style a part of your page in a dramatically different way. +// +// *Please Note*: tables still need `cellspacing="0"` in the markup. +@mixin nested-reset { + div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, + pre, a, abbr, acronym, address, code, del, dfn, em, img, + dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr { + @include reset-box-model; + @include reset-font; } + table { + @include reset-table; } + caption, th, td { + @include reset-table-cell; } + q, blockquote { + @include reset-quotation; } + a img { + @include reset-image-anchor-border; } } + +// Reset the box model measurements. +@mixin reset-box-model { + margin: 0; + padding: 0; + border: 0; + outline: 0; } + +// Reset the font and vertical alignment. +@mixin reset-font { + font: { + weight: inherit; + style: inherit; + size: 100%; + family: inherit; }; + vertical-align: baseline; } + +// Resets the outline when focus. +// For accessibility you need to apply some styling in its place. +@mixin reset-focus { + outline: 0; } + +// Reset a body element. +@mixin reset-body { + line-height: 1; + color: black; + background: white; } + +// Reset the list style of an element. +@mixin reset-list-style { + list-style: none; } + +// Reset a table +@mixin reset-table { + border-collapse: separate; + border-spacing: 0; + vertical-align: middle; } + +// Reset a table cell (`th`, `td`) +@mixin reset-table-cell { + text-align: left; + font-weight: normal; + vertical-align: middle; } + +// Reset a quotation (`q`, `blockquote`) +@mixin reset-quotation { + quotes: "" ""; + &:before, &:after { + content: ""; } } + +// Resets the border. +@mixin reset-image-anchor-border { + border: none; } + +// Unrecognized elements are displayed inline. +// This reset provides a basic reset for html5 elements +// so they are rendered correctly in browsers that don't recognize them +// and reset in browsers that have default styles for them. +@mixin reset-html5 { + article, aside, canvas, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary { + @include reset-box-model; + display: block; } } + +// Resets the display of inline and block elements to their default display +// according to their tag type. Elements that have a default display that varies across +// versions of html or browser are not handled here, but this covers the 90% use case. +// Usage Example: +// +// // Turn off the display for both of these classes +// .unregistered-only, .registered-only +// display: none +// // Now turn only one of them back on depending on some other context. +// body.registered +// +reset-display(".registered-only") +// body.unregistered +// +reset-display(".unregistered-only") +@mixin reset-display($selector: "", $important: false) { + #{append-selector(elements-of-type("inline"), $selector)} { + @if $important { + display: inline !important; } + @else { + display: inline; } } + #{append-selector(elements-of-type("block"), $selector)} { + @if $important { + display: block !important; } + @else { + display: block; } } } diff --git a/frameworks/compass/stylesheets/compass/reset/_utilities.scss b/frameworks/compass/stylesheets/compass/reset/_utilities.scss index 4ae36990..cd593cfa 100644 --- a/frameworks/compass/stylesheets/compass/reset/_utilities.scss +++ b/frameworks/compass/stylesheets/compass/reset/_utilities.scss @@ -1,7 +1,6 @@ // Based on [Eric Meyer's reset 2.0](http://meyerweb.com/eric/tools/css/reset/index.html) // Global reset rules. // For more specific resets, use the reset mixins provided below - @mixin global-reset { html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, From fb61e543893992aa684618f60398cbe756a1737a Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Tue, 22 Feb 2011 20:42:01 -0500 Subject: [PATCH 048/223] abractated core sprite functions to a base class --- Gemfile.lock | 2 +- .../sass_extensions/functions/sprites.rb | 107 +--------------- lib/compass/sass_extensions/sprites/base.rb | 117 ++++++++++++++++++ 3 files changed, 120 insertions(+), 106 deletions(-) create mode 100644 lib/compass/sass_extensions/sprites/base.rb diff --git a/Gemfile.lock b/Gemfile.lock index d8e63bb8..b2c857cf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.2.0dc38bc) + compass (0.11.beta.2.c521908) chunky_png (~> 0.12.0) sass (>= 3.1.0.alpha.218) diff --git a/lib/compass/sass_extensions/functions/sprites.rb b/lib/compass/sass_extensions/functions/sprites.rb index d4a2fb8b..a7d598c5 100644 --- a/lib/compass/sass_extensions/functions/sprites.rb +++ b/lib/compass/sass_extensions/functions/sprites.rb @@ -1,5 +1,5 @@ require 'digest/md5' - +require 'compass/sass_extensions/sprites/base' module Compass::SassExtensions::Functions::Sprites ZERO = Sass::Script::Number::new(0) @@ -12,45 +12,7 @@ module Compass::SassExtensions::Functions::Sprites end end - class SpriteMap < Sass::Script::Literal - - # Changing this string will invalidate all previously generated sprite images. - # We should do so only when the packing algorithm changes - SPRITE_VERSION = "1" - - attr_accessor :image_names, :path, :name, :options - attr_accessor :images, :width, :height - - def self.from_uri(uri, context, kwargs) - path, name = Compass::Sprites.path_and_name(uri.value) - sprites = Compass::Sprites.discover_sprites(uri.value).map do |sprite| - sprite.gsub(Compass.configuration.images_path+"/", "") - end - new(sprites, path, name, context, kwargs) - end - - def initialize(image_names, path, name, context, options) - @image_names, @path, @name, @options = image_names, path, name, options - @images = nil - @width = nil - @height = nil - @evaluation_context = context - validate! - compute_image_metadata! - end - - def sprite_names - image_names.map{|f| Compass::Sprites.sprite_name(f) } - end - - def validate! - for sprite_name in sprite_names - unless sprite_name =~ /\A#{Sass::SCSS::RX::IDENT}\Z/ - raise Sass::SyntaxError, "#{sprite_name} must be a legal css identifier" - end - end - end - + class SpriteMap < Compass::SassExtensions::Sprites::Base # Calculates the overal image dimensions # collects image sizes and input parameters for each sprite def compute_image_metadata! @@ -120,19 +82,6 @@ module Compass::SassExtensions::Functions::Sprites [width, height] end - # Generate a sprite image if necessary - def generate - if generation_required? - sprite_data = construct_sprite - save!(sprite_data) - Compass.configuration.run_callback(:sprite_generated, sprite_data) - end - end - - def generation_required? - !File.exists?(filename) || outdated? - end - def require_png_library! begin require 'oily_png' @@ -160,11 +109,6 @@ module Compass::SassExtensions::Functions::Sprites output_png end - # The on-the-disk filename of the sprite - def filename - File.join(Compass.configuration.images_path, "#{path}-#{uniqueness_hash}.png") - end - def uniqueness_hash @uniqueness_hash ||= begin sum = Digest::MD5.new @@ -180,53 +124,6 @@ module Compass::SassExtensions::Functions::Sprites @uniqueness_hash end - # saves the sprite for later retrieval - def save!(output_png) - saved = output_png.save filename - Compass.configuration.run_callback(:sprite_saved, filename) - saved - end - - # All the full-path filenames involved in this sprite - def image_filenames - image_names.map do |image_name| - File.join(Compass.configuration.images_path, image_name) - end - end - - # Checks whether this sprite is outdated - def outdated? - last_update = self.mtime - image_filenames.each do |image| - return true if File.mtime(image) > last_update - end - false - end - - def mtime - File.mtime(filename) - end - - def inspect - to_s - end - - def to_s(options = self.options) - sprite_url(self).value - end - - def respond_to?(meth) - super || @evaluation_context.respond_to?(meth) - end - - def method_missing(meth, *args, &block) - if @evaluation_context.respond_to?(meth) - @evaluation_context.send(meth, *args, &block) - else - super - end - end - end # Creates a SpriteMap object. A sprite map, when used in a property is the same diff --git a/lib/compass/sass_extensions/sprites/base.rb b/lib/compass/sass_extensions/sprites/base.rb new file mode 100644 index 00000000..4d24fea7 --- /dev/null +++ b/lib/compass/sass_extensions/sprites/base.rb @@ -0,0 +1,117 @@ +module Compass + module SassExtensions + module Sprites + class Base < Sass::Script::Literal + # Changing this string will invalidate all previously generated sprite images. + # We should do so only when the packing algorithm changes + SPRITE_VERSION = "1" + + attr_accessor :image_names, :path, :name, :options + attr_accessor :images, :width, :height + + def self.from_uri(uri, context, kwargs) + path, name = Compass::Sprites.path_and_name(uri.value) + sprites = Compass::Sprites.discover_sprites(uri.value).map do |sprite| + sprite.gsub(Compass.configuration.images_path+"/", "") + end + new(sprites, path, name, context, kwargs) + end + + def initialize(image_names, path, name, context, options) + @image_names, @path, @name, @options = image_names, path, name, options + @images = nil + @width = nil + @height = nil + @evaluation_context = context + validate! + compute_image_metadata! + end + + def sprite_names + image_names.map{|f| Compass::Sprites.sprite_name(f) } + end + + def validate! + for sprite_name in sprite_names + unless sprite_name =~ /\A#{Sass::SCSS::RX::IDENT}\Z/ + raise Sass::SyntaxError, "#{sprite_name} must be a legal css identifier" + end + end + end + + # The on-the-disk filename of the sprite + def filename + File.join(Compass.configuration.images_path, "#{path}-#{uniqueness_hash}.png") + end + + # Calculates the overal image dimensions + # collects image sizes and input parameters for each sprite + def compute_image_metadata! + end + + # Generate a sprite image if necessary + def generate + if generation_required? + sprite_data = construct_sprite + save!(sprite_data) + Compass.configuration.run_callback(:sprite_generated, sprite_data) + end + end + + def generation_required? + !File.exists?(filename) || outdated? + end + + def uniqueness_hash + @uniqueness_hash ||= begin + sum = Digest::MD5.new + sum << SPRITE_VERSION + sum << path + images.each do |image| + [:relative_file, :height, :width, :repeat, :spacing, :position, :digest].each do |attr| + sum << image[attr].to_s + end + end + sum.hexdigest[0...10] + end + @uniqueness_hash + end + + # saves the sprite for later retrieval + def save!(output_png) + saved = output_png.save filename + Compass.configuration.run_callback(:sprite_saved, filename) + saved + end + + # All the full-path filenames involved in this sprite + def image_filenames + image_names.map do |image_name| + File.join(Compass.configuration.images_path, image_name) + end + end + + def inspect + to_s + end + + def to_s(options = self.options) + sprite_url(self).value + end + + def respond_to?(meth) + super || @evaluation_context.respond_to?(meth) + end + + def method_missing(meth, *args, &block) + if @evaluation_context.respond_to?(meth) + @evaluation_context.send(meth, *args, &block) + else + super + end + end + + end + end + end +end From 3feca48f51fa3a0c6fd1bd239f43364eb24a939f Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Tue, 22 Feb 2011 20:43:38 -0500 Subject: [PATCH 049/223] duplicate function --- Gemfile.lock | 2 +- lib/compass/sass_extensions/functions/sprites.rb | 16 ---------------- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index b2c857cf..69b4f195 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.2.c521908) + compass (0.11.beta.2.fb61e54) chunky_png (~> 0.12.0) sass (>= 3.1.0.alpha.218) diff --git a/lib/compass/sass_extensions/functions/sprites.rb b/lib/compass/sass_extensions/functions/sprites.rb index a7d598c5..5b8c9492 100644 --- a/lib/compass/sass_extensions/functions/sprites.rb +++ b/lib/compass/sass_extensions/functions/sprites.rb @@ -108,22 +108,6 @@ module Compass::SassExtensions::Functions::Sprites end output_png end - - def uniqueness_hash - @uniqueness_hash ||= begin - sum = Digest::MD5.new - sum << SPRITE_VERSION - sum << path - images.each do |image| - [:relative_file, :height, :width, :repeat, :spacing, :position, :digest].each do |attr| - sum << image[attr].to_s - end - end - sum.hexdigest[0...10] - end - @uniqueness_hash - end - end # Creates a SpriteMap object. A sprite map, when used in a property is the same From f3957daef7ef81d16f7f0d3a9cc5b3260ec2b88a Mon Sep 17 00:00:00 2001 From: John Bintz Date: Tue, 22 Feb 2011 21:24:29 -0500 Subject: [PATCH 050/223] start factoring out sprite images --- .../sass_extensions/functions/sprites.rb | 78 ++++++------------- spec/spec_helper.rb | 14 ++++ 2 files changed, 37 insertions(+), 55 deletions(-) diff --git a/lib/compass/sass_extensions/functions/sprites.rb b/lib/compass/sass_extensions/functions/sprites.rb index d4a2fb8b..8bbd4816 100644 --- a/lib/compass/sass_extensions/functions/sprites.rb +++ b/lib/compass/sass_extensions/functions/sprites.rb @@ -1,4 +1,5 @@ require 'digest/md5' +require 'compass/sass_extensions/sprites/image' module Compass::SassExtensions::Functions::Sprites ZERO = Sass::Script::Number::new(0) @@ -54,65 +55,32 @@ module Compass::SassExtensions::Functions::Sprites # Calculates the overal image dimensions # collects image sizes and input parameters for each sprite def compute_image_metadata! - @images = [] @width = 0 - image_names.each do |relative_file| - file = File.join(Compass.configuration.images_path, relative_file) - width, height = Compass::SassExtensions::Functions::ImageSize::ImageProperties.new(file).size - sprite_name = Compass::Sprites.sprite_name(relative_file) - position = position_for(sprite_name) - offset = (position.unitless? || position.unit_str == "px") ? position.value : 0 - @images << { - :name => sprite_name, - :file => file, - :relative_file => relative_file, - :height => height, - :width => width, - :repeat => repeat_for(sprite_name), - :spacing => spacing_for(sprite_name), - :position => position, - :digest => Digest::MD5.file(file).hexdigest - } - @width = [@width, width + offset].max + + @images = image_names.collect do |relative_file| + image = Compass::SassExtensions::Sprites::Image.new(relative_file, options) + @width = [ @width, image.width + image.offset ].max + image end + @images.each_with_index do |image, index| if index == 0 - image[:top] = 0 + image.top = 0 else last_image = @images[index-1] - image[:top] = last_image[:top] + last_image[:height] + [image[:spacing], last_image[:spacing]].max + image.top = last_image.top + last_image.height + [image.spacing, last_image.spacing].max end - if image[:position].unit_str == "%" - image[:left] = (@width - image[:width]) * (image[:position].value / 100) + if image.position.unit_str == "%" + image.left = (@width - image.width) * (image.position.value / 100) else - image[:left] = image[:position].value + image.left = image.position.value end end - @height = @images.last[:top] + @images.last[:height] - end - - def position_for(name) - options.get_var("#{name}-position") || options.get_var("position") || Sass::Script::Number.new(0, ["px"]) - end - - def repeat_for(name) - if (var = options.get_var("#{name}-repeat")) - var.value - elsif (var = options.get_var("repeat")) - var.value - else - "no-repeat" - end - end - - def spacing_for(name) - (options.get_var("#{name}-spacing") || - options.get_var("spacing") || - ZERO).value + @height = @images.last.top + @images.last.height end def image_for(name) - @images.detect{|img| img[:name] == name} + @images.detect { |img| img.name == name} end # Calculate the size of the sprite @@ -146,14 +114,14 @@ module Compass::SassExtensions::Functions::Sprites require_png_library! output_png = ChunkyPNG::Image.new(width, height, ChunkyPNG::Color::TRANSPARENT) images.each do |image| - input_png = ChunkyPNG::Image.from_file(image[:file]) - if image[:repeat] == "no-repeat" - output_png.replace input_png, image[:left], image[:top] + input_png = ChunkyPNG::Image.from_file(image.file) + if image.repeat == "no-repeat" + output_png.replace input_png, image.left, image.top else - x = image[:left] - (image[:left] / image[:width]).ceil * image[:width] + x = image.left - (image.left / image.width).ceil * image.width while x < width do - output_png.replace input_png, x, image[:top] - x += image[:width] + output_png.replace input_png, x, image.top + x += image.width end end end @@ -172,7 +140,7 @@ module Compass::SassExtensions::Functions::Sprites sum << path images.each do |image| [:relative_file, :height, :width, :repeat, :spacing, :position, :digest].each do |attr| - sum << image[attr].to_s + sum << image.send(attr).to_s end end sum.hexdigest[0...10] @@ -335,10 +303,10 @@ module Compass::SassExtensions::Functions::Sprites if offset_x.unit_str == "%" x = offset_x # CE: Shouldn't this be a percentage of the total width? else - x = offset_x.value - image[:left] + x = offset_x.value - image.left x = Sass::Script::Number.new(x, x == 0 ? [] : ["px"]) end - y = offset_y.value - image[:top] + y = offset_y.value - image.top y = Sass::Script::Number.new(y, y == 0 ? [] : ["px"]) Sass::Script::List.new([x, y],:space) end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 0db4b936..4877c67b 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -5,3 +5,17 @@ require 'rubygems' require 'compass' require 'rspec' require 'rspec/autorun' + +module CompassGlobalInclude + class << self + def included(klass) + klass.instance_eval do + let(:images_src_path) { File.join(File.dirname(__FILE__), 'test_project', 'public', 'images') } + end + end + end +end + +RSpec.configure do |config| + config.include(CompassGlobalInclude) +end From 994cf534af0f5b3c72b95e28d91d7a3bd0e30965 Mon Sep 17 00:00:00 2001 From: John Bintz Date: Tue, 22 Feb 2011 21:29:47 -0500 Subject: [PATCH 051/223] merge --- lib/compass/sass_extensions/sprites/base.rb | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/compass/sass_extensions/sprites/base.rb b/lib/compass/sass_extensions/sprites/base.rb index 4d24fea7..0fe768d7 100644 --- a/lib/compass/sass_extensions/sprites/base.rb +++ b/lib/compass/sass_extensions/sprites/base.rb @@ -8,7 +8,7 @@ module Compass attr_accessor :image_names, :path, :name, :options attr_accessor :images, :width, :height - + def self.from_uri(uri, context, kwargs) path, name = Compass::Sprites.path_and_name(uri.value) sprites = Compass::Sprites.discover_sprites(uri.value).map do |sprite| @@ -26,7 +26,7 @@ module Compass validate! compute_image_metadata! end - + def sprite_names image_names.map{|f| Compass::Sprites.sprite_name(f) } end @@ -38,7 +38,7 @@ module Compass end end end - + # The on-the-disk filename of the sprite def filename File.join(Compass.configuration.images_path, "#{path}-#{uniqueness_hash}.png") @@ -48,7 +48,7 @@ module Compass # collects image sizes and input parameters for each sprite def compute_image_metadata! end - + # Generate a sprite image if necessary def generate if generation_required? @@ -61,7 +61,7 @@ module Compass def generation_required? !File.exists?(filename) || outdated? end - + def uniqueness_hash @uniqueness_hash ||= begin sum = Digest::MD5.new @@ -69,14 +69,14 @@ module Compass sum << path images.each do |image| [:relative_file, :height, :width, :repeat, :spacing, :position, :digest].each do |attr| - sum << image[attr].to_s + sum << image.send(attr).to_s end end sum.hexdigest[0...10] end @uniqueness_hash end - + # saves the sprite for later retrieval def save!(output_png) saved = output_png.save filename @@ -90,7 +90,7 @@ module Compass File.join(Compass.configuration.images_path, image_name) end end - + def inspect to_s end @@ -98,7 +98,7 @@ module Compass def to_s(options = self.options) sprite_url(self).value end - + def respond_to?(meth) super || @evaluation_context.respond_to?(meth) end @@ -110,7 +110,7 @@ module Compass super end end - + end end end From 995a20cd3691950eee1af5c7b0d430dc749e4c44 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Tue, 22 Feb 2011 21:32:48 -0500 Subject: [PATCH 052/223] fixed relative path call --- Gemfile.lock | 2 +- lib/compass/sass_extensions/functions/sprites.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 69b4f195..360e7d17 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.2.fb61e54) + compass (0.11.beta.2.994cf53) chunky_png (~> 0.12.0) sass (>= 3.1.0.alpha.218) diff --git a/lib/compass/sass_extensions/functions/sprites.rb b/lib/compass/sass_extensions/functions/sprites.rb index 728de131..9730f5d9 100644 --- a/lib/compass/sass_extensions/functions/sprites.rb +++ b/lib/compass/sass_extensions/functions/sprites.rb @@ -133,7 +133,7 @@ module Compass::SassExtensions::Functions::Sprites missing_sprite!("sprite-file") end if image = map.image_for(sprite.value) - Sass::Script::String.new(image[:relative_file]) + Sass::Script::String.new(image.relative_file) else missing_image!(map, sprite) end From 153582fe68b72a0c45eb0f49fc289dcf959c3187 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Tue, 22 Feb 2011 21:47:08 -0500 Subject: [PATCH 053/223] refactoring sprite class --- Gemfile.lock | 2 +- .../sass_extensions/functions/sprites.rb | 32 ++++++++----------- lib/compass/sass_extensions/sprites/base.rb | 5 +++ lib/compass/sass_extensions/sprites/image.rb | 1 + 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 360e7d17..642873a1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.2.994cf53) + compass (0.11.beta.2.995a20c) chunky_png (~> 0.12.0) sass (>= 3.1.0.alpha.218) diff --git a/lib/compass/sass_extensions/functions/sprites.rb b/lib/compass/sass_extensions/functions/sprites.rb index 9730f5d9..3ff566d6 100644 --- a/lib/compass/sass_extensions/functions/sprites.rb +++ b/lib/compass/sass_extensions/functions/sprites.rb @@ -19,38 +19,32 @@ module Compass::SassExtensions::Functions::Sprites # collects image sizes and input parameters for each sprite def compute_image_metadata! @width = 0 - + init_images + compute_image_positions! + @height = @images.last.top + @images.last.height + end + + def init_images @images = image_names.collect do |relative_file| image = Compass::SassExtensions::Sprites::Image.new(relative_file, options) @width = [ @width, image.width + image.offset ].max image end - + end + + def compute_image_positions! @images.each_with_index do |image, index| - if index == 0 - image.top = 0 - else - last_image = @images[index-1] - image.top = last_image.top + last_image.height + [image.spacing, last_image.spacing].max - end - if image.position.unit_str == "%" - image.left = (@width - image.width) * (image.position.value / 100) - else - image.left = image.position.value - end + image.left = image.position.unit_str == "%" ? (@width - image.width) * (image.position.value / 100) : image.position.value + next if index == 0 + last_image = @images[index-1] + image.top = last_image.top + last_image.height + [image.spacing, last_image.spacing].max end - @height = @images.last.top + @images.last.height end def image_for(name) @images.detect { |img| img.name == name} end - # Calculate the size of the sprite - def size - [width, height] - end - def require_png_library! begin require 'oily_png' diff --git a/lib/compass/sass_extensions/sprites/base.rb b/lib/compass/sass_extensions/sprites/base.rb index 0fe768d7..f5f7080f 100644 --- a/lib/compass/sass_extensions/sprites/base.rb +++ b/lib/compass/sass_extensions/sprites/base.rb @@ -27,6 +27,11 @@ module Compass compute_image_metadata! end + # Calculate the size of the sprite + def size + [width, height] + end + def sprite_names image_names.map{|f| Compass::Sprites.sprite_name(f) } end diff --git a/lib/compass/sass_extensions/sprites/image.rb b/lib/compass/sass_extensions/sprites/image.rb index 2683d4aa..f90861e6 100644 --- a/lib/compass/sass_extensions/sprites/image.rb +++ b/lib/compass/sass_extensions/sprites/image.rb @@ -9,6 +9,7 @@ module Compass def initialize(relative_file, options) @relative_file, @options = relative_file, options + @left = @top = 0 end def file From 132621c230f76192d3605b5e1b5ae0d58bff57bc Mon Sep 17 00:00:00 2001 From: Eric Meyer Date: Tue, 22 Feb 2011 23:11:26 -0700 Subject: [PATCH 054/223] fixed tests related to reset --- Gemfile.lock | 2 +- .../stylesheets/blueprint/css/screen.css | 32 +++++++++++-------- .../stylesheets/compass/css/lists.css | 6 ---- .../stylesheets/compass/css/reset.css | 32 +++++++++++-------- 4 files changed, 37 insertions(+), 35 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index d8e63bb8..b2c857cf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.2.0dc38bc) + compass (0.11.beta.2.c521908) chunky_png (~> 0.12.0) sass (>= 3.1.0.alpha.218) diff --git a/test/fixtures/stylesheets/blueprint/css/screen.css b/test/fixtures/stylesheets/blueprint/css/screen.css index db7e3410..fc0e522e 100644 --- a/test/fixtures/stylesheets/blueprint/css/screen.css +++ b/test/fixtures/stylesheets/blueprint/css/screen.css @@ -1,33 +1,32 @@ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, -del, dfn, em, font, img, ins, kbd, q, s, samp, +del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, +b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td { +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { margin: 0; padding: 0; border: 0; - outline: 0; - font-weight: inherit; - font-style: inherit; font-size: 100%; - font-family: inherit; + font: inherit; vertical-align: baseline; } body { - line-height: 1; - color: black; - background: white; } + line-height: 1; } ol, ul { list-style: none; } table { - border-collapse: separate; - border-spacing: 0; - vertical-align: middle; } + border-collapse: collapse; + border-spacing: 0; } caption, th, td { text-align: left; @@ -35,13 +34,18 @@ caption, th, td { vertical-align: middle; } q, blockquote { - quotes: "" ""; } + quotes: none; } q:before, q:after, blockquote:before, blockquote:after { - content: ""; } + content: ""; + content: none; } a img { border: none; } +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; } + body { line-height: 1.5; font-family: "Helvetica Neue", Arial, Helvetica, sans-serif; diff --git a/test/fixtures/stylesheets/compass/css/lists.css b/test/fixtures/stylesheets/compass/css/lists.css index c31c4732..8e7b1a58 100644 --- a/test/fixtures/stylesheets/compass/css/lists.css +++ b/test/fixtures/stylesheets/compass/css/lists.css @@ -2,7 +2,6 @@ ul.horizontal { margin: 0; padding: 0; border: 0; - outline: 0; overflow: hidden; *zoom: 1; } ul.horizontal li { @@ -25,7 +24,6 @@ ul.wide-horizontal { margin: 0; padding: 0; border: 0; - outline: 0; overflow: hidden; *zoom: 1; } ul.wide-horizontal li { @@ -48,7 +46,6 @@ ul.right-horizontal { margin: 0; padding: 0; border: 0; - outline: 0; overflow: hidden; *zoom: 1; } ul.right-horizontal li { @@ -71,7 +68,6 @@ ul.no-padding { margin: 0; padding: 0; border: 0; - outline: 0; overflow: hidden; *zoom: 1; } ul.no-padding li { @@ -86,7 +82,6 @@ ul.inline-block { margin: 0; padding: 0; border: 0; - outline: 0; overflow: hidden; *zoom: 1; } ul.inline-block li { @@ -106,7 +101,6 @@ ul.wide-inline-block { margin: 0; padding: 0; border: 0; - outline: 0; overflow: hidden; *zoom: 1; } ul.wide-inline-block li { diff --git a/test/fixtures/stylesheets/compass/css/reset.css b/test/fixtures/stylesheets/compass/css/reset.css index e73cc28b..1455b31b 100644 --- a/test/fixtures/stylesheets/compass/css/reset.css +++ b/test/fixtures/stylesheets/compass/css/reset.css @@ -1,33 +1,32 @@ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, -del, dfn, em, font, img, ins, kbd, q, s, samp, +del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, +b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, -table, caption, tbody, tfoot, thead, tr, th, td { +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { margin: 0; padding: 0; border: 0; - outline: 0; - font-weight: inherit; - font-style: inherit; font-size: 100%; - font-family: inherit; + font: inherit; vertical-align: baseline; } body { - line-height: 1; - color: black; - background: white; } + line-height: 1; } ol, ul { list-style: none; } table { - border-collapse: separate; - border-spacing: 0; - vertical-align: middle; } + border-collapse: collapse; + border-spacing: 0; } caption, th, td { text-align: left; @@ -35,13 +34,18 @@ caption, th, td { vertical-align: middle; } q, blockquote { - quotes: "" ""; } + quotes: none; } q:before, q:after, blockquote:before, blockquote:after { - content: ""; } + content: ""; + content: none; } a img { border: none; } +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; } + .unregistered-only, .registered-only { display: none; } From 72775683030f1929409bac54f6ce91b934ace366 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Thu, 24 Feb 2011 00:08:35 -0500 Subject: [PATCH 055/223] added test for left and top --- Gemfile.lock | 2 +- spec/compass/sass_extensions/sprites/image_spec.rb | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 642873a1..253f6ef0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.2.995a20c) + compass (0.11.beta.2.153582f) chunky_png (~> 0.12.0) sass (>= 3.1.0.alpha.218) diff --git a/spec/compass/sass_extensions/sprites/image_spec.rb b/spec/compass/sass_extensions/sprites/image_spec.rb index 27c75ac5..df62faab 100644 --- a/spec/compass/sass_extensions/sprites/image_spec.rb +++ b/spec/compass/sass_extensions/sprites/image_spec.rb @@ -22,6 +22,8 @@ describe Compass::SassExtensions::Sprites::Image do its(:width) { should == 10 } its(:height) { should == 10 } its(:digest) { should == digest } + its(:top) { should == 0 } + its(:left) { should == 0 } end let(:options) { From 03f4c23c04b83b218bc892d65f5155522b58c37a Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Thu, 24 Feb 2011 01:02:31 -0500 Subject: [PATCH 056/223] abstracted out engine for chunkypng --- Gemfile.lock | 2 +- .../sass_extensions/functions/sprites.rb | 58 +---- lib/compass/sass_extensions/sprites/base.rb | 229 ++++++++++-------- .../sprites/engines/chunky_png_engine.rb | 36 +++ 4 files changed, 171 insertions(+), 154 deletions(-) create mode 100644 lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb diff --git a/Gemfile.lock b/Gemfile.lock index 253f6ef0..c4f9afa6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.2.153582f) + compass (0.11.beta.2.1c71df3) chunky_png (~> 0.12.0) sass (>= 3.1.0.alpha.218) diff --git a/lib/compass/sass_extensions/functions/sprites.rb b/lib/compass/sass_extensions/functions/sprites.rb index 3ff566d6..71f64540 100644 --- a/lib/compass/sass_extensions/functions/sprites.rb +++ b/lib/compass/sass_extensions/functions/sprites.rb @@ -1,6 +1,7 @@ require 'digest/md5' require 'compass/sass_extensions/sprites/image' require 'compass/sass_extensions/sprites/base' +require 'compass/sass_extensions/sprites/engines/chunky_png_engine' module Compass::SassExtensions::Functions::Sprites ZERO = Sass::Script::Number::new(0) @@ -14,63 +15,8 @@ module Compass::SassExtensions::Functions::Sprites end end - class SpriteMap < Compass::SassExtensions::Sprites::Base - # Calculates the overal image dimensions - # collects image sizes and input parameters for each sprite - def compute_image_metadata! - @width = 0 - init_images - compute_image_positions! - @height = @images.last.top + @images.last.height - end - - def init_images - @images = image_names.collect do |relative_file| - image = Compass::SassExtensions::Sprites::Image.new(relative_file, options) - @width = [ @width, image.width + image.offset ].max - image - end - end - - def compute_image_positions! - @images.each_with_index do |image, index| - image.left = image.position.unit_str == "%" ? (@width - image.width) * (image.position.value / 100) : image.position.value - next if index == 0 - last_image = @images[index-1] - image.top = last_image.top + last_image.height + [image.spacing, last_image.spacing].max - end - end + class SpriteMap < Compass::SassExtensions::Sprites::ChunkyPngEngine - def image_for(name) - @images.detect { |img| img.name == name} - end - - def require_png_library! - begin - require 'oily_png' - rescue LoadError - require 'chunky_png' - end - end - - # Returns a PNG object - def construct_sprite - require_png_library! - output_png = ChunkyPNG::Image.new(width, height, ChunkyPNG::Color::TRANSPARENT) - images.each do |image| - input_png = ChunkyPNG::Image.from_file(image.file) - if image.repeat == "no-repeat" - output_png.replace input_png, image.left, image.top - else - x = image.left - (image.left / image.width).ceil * image.width - while x < width do - output_png.replace input_png, x, image.top - x += image.width - end - end - end - output_png - end end # Creates a SpriteMap object. A sprite map, when used in a property is the same diff --git a/lib/compass/sass_extensions/sprites/base.rb b/lib/compass/sass_extensions/sprites/base.rb index f5f7080f..70f7ee94 100644 --- a/lib/compass/sass_extensions/sprites/base.rb +++ b/lib/compass/sass_extensions/sprites/base.rb @@ -1,121 +1,156 @@ module Compass module SassExtensions module Sprites - class Base < Sass::Script::Literal - # Changing this string will invalidate all previously generated sprite images. - # We should do so only when the packing algorithm changes - SPRITE_VERSION = "1" - - attr_accessor :image_names, :path, :name, :options - attr_accessor :images, :width, :height - - def self.from_uri(uri, context, kwargs) - path, name = Compass::Sprites.path_and_name(uri.value) - sprites = Compass::Sprites.discover_sprites(uri.value).map do |sprite| - sprite.gsub(Compass.configuration.images_path+"/", "") + module Base + module ClassMethods + def from_uri(uri, context, kwargs) + path, name = Compass::Sprites.path_and_name(uri.value) + sprites = Compass::Sprites.discover_sprites(uri.value).map do |sprite| + sprite.gsub(Compass.configuration.images_path+"/", "") + end + new(sprites, path, name, context, kwargs) end - new(sprites, path, name, context, kwargs) end + #instance Methods + module InstanceMethods + + def self.included(base) + base.extend(ClassMethods) + end + + # Changing this string will invalidate all previously generated sprite images. + # We should do so only when the packing algorithm changes + SPRITE_VERSION = "1" - def initialize(image_names, path, name, context, options) - @image_names, @path, @name, @options = image_names, path, name, options - @images = nil - @width = nil - @height = nil - @evaluation_context = context - validate! - compute_image_metadata! - end + attr_accessor :image_names, :path, :name, :options + attr_accessor :images, :width, :height - # Calculate the size of the sprite - def size - [width, height] - end - def sprite_names - image_names.map{|f| Compass::Sprites.sprite_name(f) } - end + def initialize(image_names, path, name, context, options) + @image_names, @path, @name, @options = image_names, path, name, options + @images = nil + @width = nil + @height = nil + @evaluation_context = context + validate! + compute_image_metadata! + end - def validate! - for sprite_name in sprite_names - unless sprite_name =~ /\A#{Sass::SCSS::RX::IDENT}\Z/ - raise Sass::SyntaxError, "#{sprite_name} must be a legal css identifier" + # Calculate the size of the sprite + def size + [width, height] + end + + # Calculates the overal image dimensions + # collects image sizes and input parameters for each sprite + def compute_image_metadata! + @width = 0 + init_images + compute_image_positions! + @height = @images.last.top + @images.last.height + end + + def init_images + @images = image_names.collect do |relative_file| + image = Compass::SassExtensions::Sprites::Image.new(relative_file, options) + @width = [ @width, image.width + image.offset ].max + image end end - end - - # The on-the-disk filename of the sprite - def filename - File.join(Compass.configuration.images_path, "#{path}-#{uniqueness_hash}.png") - end - - # Calculates the overal image dimensions - # collects image sizes and input parameters for each sprite - def compute_image_metadata! - end - - # Generate a sprite image if necessary - def generate - if generation_required? - sprite_data = construct_sprite - save!(sprite_data) - Compass.configuration.run_callback(:sprite_generated, sprite_data) + # Calculates the overal image dimensions + # collects image sizes and input parameters for each sprite + def compute_image_positions! + @images.each_with_index do |image, index| + image.left = image.position.unit_str == "%" ? (@width - image.width) * (image.position.value / 100) : image.position.value + next if index == 0 + last_image = @images[index-1] + image.top = last_image.top + last_image.height + [image.spacing, last_image.spacing].max + end end - end - def generation_required? - !File.exists?(filename) || outdated? - end + def image_for(name) + @images.detect { |img| img.name == name} + end - def uniqueness_hash - @uniqueness_hash ||= begin - sum = Digest::MD5.new - sum << SPRITE_VERSION - sum << path - images.each do |image| - [:relative_file, :height, :width, :repeat, :spacing, :position, :digest].each do |attr| - sum << image.send(attr).to_s + def sprite_names + image_names.map{|f| Compass::Sprites.sprite_name(f) } + end + + def validate! + for sprite_name in sprite_names + unless sprite_name =~ /\A#{Sass::SCSS::RX::IDENT}\Z/ + raise Sass::SyntaxError, "#{sprite_name} must be a legal css identifier" end end - sum.hexdigest[0...10] end - @uniqueness_hash - end - # saves the sprite for later retrieval - def save!(output_png) - saved = output_png.save filename - Compass.configuration.run_callback(:sprite_saved, filename) - saved - end + # The on-the-disk filename of the sprite + def filename + File.join(Compass.configuration.images_path, "#{path}-#{uniqueness_hash}.png") + end - # All the full-path filenames involved in this sprite - def image_filenames - image_names.map do |image_name| - File.join(Compass.configuration.images_path, image_name) + # Generate a sprite image if necessary + def generate + if generation_required? + sprite_data = construct_sprite + save!(sprite_data) + Compass.configuration.run_callback(:sprite_generated, sprite_data) + end + end + + def generation_required? + !File.exists?(filename) || outdated? + end + + def uniqueness_hash + @uniqueness_hash ||= begin + sum = Digest::MD5.new + sum << SPRITE_VERSION + sum << path + images.each do |image| + [:relative_file, :height, :width, :repeat, :spacing, :position, :digest].each do |attr| + sum << image.send(attr).to_s + end + end + sum.hexdigest[0...10] + end + @uniqueness_hash + end + + # saves the sprite for later retrieval + def save!(output_png) + saved = output_png.save filename + Compass.configuration.run_callback(:sprite_saved, filename) + saved + end + + # All the full-path filenames involved in this sprite + def image_filenames + image_names.map do |image_name| + File.join(Compass.configuration.images_path, image_name) + end + end + + def inspect + to_s + end + + def to_s(options = self.options) + sprite_url(self).value + end + + def respond_to?(meth) + super || @evaluation_context.respond_to?(meth) + end + + def method_missing(meth, *args, &block) + if @evaluation_context.respond_to?(meth) + @evaluation_context.send(meth, *args, &block) + else + super + end end end - - def inspect - to_s - end - - def to_s(options = self.options) - sprite_url(self).value - end - - def respond_to?(meth) - super || @evaluation_context.respond_to?(meth) - end - - def method_missing(meth, *args, &block) - if @evaluation_context.respond_to?(meth) - @evaluation_context.send(meth, *args, &block) - else - super - end - end - end end end diff --git a/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb b/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb new file mode 100644 index 00000000..40db7adc --- /dev/null +++ b/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb @@ -0,0 +1,36 @@ +module Compass + module SassExtensions + module Sprites + class ChunkyPngEngine < Sass::Script::Literal + include Compass::SassExtensions::Sprites::Base::InstanceMethods + + def require_png_library! + begin + require 'oily_png' + rescue LoadError + require 'chunky_png' + end + end + + # Returns a PNG object + def construct_sprite + require_png_library! + output_png = ChunkyPNG::Image.new(width, height, ChunkyPNG::Color::TRANSPARENT) + images.each do |image| + input_png = ChunkyPNG::Image.from_file(image.file) + if image.repeat == "no-repeat" + output_png.replace input_png, image.left, image.top + else + x = image.left - (image.left / image.width).ceil * image.width + while x < width do + output_png.replace input_png, x, image.top + x += image.width + end + end + end + output_png + end + end + end + end +end \ No newline at end of file From bc13d6aed54ee5c3f1b5f9dc3bed335144bb388d Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Thu, 24 Feb 2011 03:08:28 -0500 Subject: [PATCH 057/223] rmagick changes --- Gemfile | 1 + Gemfile.lock | 2 +- .../sass_extensions/functions/sprites.rb | 6 +- lib/compass/sass_extensions/sprites/base.rb | 279 ++++++++++-------- .../sprites/engines/chunky_png_engine.rb | 14 +- .../sprites/engines/rmagick_engine.rb | 30 ++ 6 files changed, 194 insertions(+), 138 deletions(-) create mode 100644 lib/compass/sass_extensions/sprites/engines/rmagick_engine.rb diff --git a/Gemfile b/Gemfile index 5a4d1042..433f23ed 100644 --- a/Gemfile +++ b/Gemfile @@ -15,3 +15,4 @@ gem "chunky_png", "~> 0.12.0" gem "ruby-prof" unless RUBY_PLATFORM == "java" +#gem 'rmagick' \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index c4f9afa6..f078f652 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.2.1c71df3) + compass (0.11.beta.2.03f4c23) chunky_png (~> 0.12.0) sass (>= 3.1.0.alpha.218) diff --git a/lib/compass/sass_extensions/functions/sprites.rb b/lib/compass/sass_extensions/functions/sprites.rb index 71f64540..cdcd6df1 100644 --- a/lib/compass/sass_extensions/functions/sprites.rb +++ b/lib/compass/sass_extensions/functions/sprites.rb @@ -1,7 +1,5 @@ require 'digest/md5' -require 'compass/sass_extensions/sprites/image' require 'compass/sass_extensions/sprites/base' -require 'compass/sass_extensions/sprites/engines/chunky_png_engine' module Compass::SassExtensions::Functions::Sprites ZERO = Sass::Script::Number::new(0) @@ -15,8 +13,8 @@ module Compass::SassExtensions::Functions::Sprites end end - class SpriteMap < Compass::SassExtensions::Sprites::ChunkyPngEngine - + class SpriteMap < Compass::SassExtensions::Sprites::Base + end # Creates a SpriteMap object. A sprite map, when used in a property is the same diff --git a/lib/compass/sass_extensions/sprites/base.rb b/lib/compass/sass_extensions/sprites/base.rb index 70f7ee94..b94f27fc 100644 --- a/lib/compass/sass_extensions/sprites/base.rb +++ b/lib/compass/sass_extensions/sprites/base.rb @@ -1,154 +1,191 @@ +require 'compass/sass_extensions/sprites/image' module Compass module SassExtensions module Sprites - module Base - module ClassMethods - def from_uri(uri, context, kwargs) - path, name = Compass::Sprites.path_and_name(uri.value) - sprites = Compass::Sprites.discover_sprites(uri.value).map do |sprite| - sprite.gsub(Compass.configuration.images_path+"/", "") + class Base < Sass::Script::Literal + + def self.from_uri(uri, context, kwargs) + path, name = Compass::Sprites.path_and_name(uri.value) + sprites = Compass::Sprites.discover_sprites(uri.value).map do |sprite| + sprite.gsub(Compass.configuration.images_path+"/", "") + end + new(sprites, path, name, context, kwargs) + end + + + def require_engine! + begin + require 'rmagick' + require 'compass/sass_extensions/sprites/engines/rmagick_engine' + self.class.send(:include, ::Compass::SassExtensions::Sprites::RmagickEngine) + rescue LoadError + require 'compass/sass_extensions/sprites/engines/chunky_png_engine' + begin + require 'oily_png' + rescue LoadError + require 'chunky_png' end - new(sprites, path, name, context, kwargs) + self.class.send(:include, ::Compass::SassExtensions::Sprites::ChunkyPngEngine) end end - #instance Methods - module InstanceMethods - - def self.included(base) - base.extend(ClassMethods) + + # Changing this string will invalidate all previously generated sprite images. + # We should do so only when the packing algorithm changes + SPRITE_VERSION = "1" + + attr_accessor :image_names, :path, :name, :options + attr_accessor :images, :width, :height + + + def initialize(image_names, path, name, context, options) + require_engine! + @image_names, @path, @name, @options = image_names, path, name, options + @images = nil + @width = nil + @height = nil + @evaluation_context = context + validate! + compute_image_metadata! + end + + # Calculate the size of the sprite + def size + [width, height] + end + + # Calculates the overal image dimensions + # collects image sizes and input parameters for each sprite + def compute_image_metadata! + @width = 0 + init_images + compute_image_positions! + @height = @images.last.top + @images.last.height + end + + def init_images + @images = image_names.collect do |relative_file| + image = Compass::SassExtensions::Sprites::Image.new(relative_file, options) + @width = [ @width, image.width + image.offset ].max + image end - - # Changing this string will invalidate all previously generated sprite images. - # We should do so only when the packing algorithm changes - SPRITE_VERSION = "1" - - attr_accessor :image_names, :path, :name, :options - attr_accessor :images, :width, :height - - - def initialize(image_names, path, name, context, options) - @image_names, @path, @name, @options = image_names, path, name, options - @images = nil - @width = nil - @height = nil - @evaluation_context = context - validate! - compute_image_metadata! + end + # Calculates the overal image dimensions + # collects image sizes and input parameters for each sprite + def compute_image_positions! + @images.each_with_index do |image, index| + image.left = image.position.unit_str == "%" ? (@width - image.width) * (image.position.value / 100) : image.position.value + next if index == 0 + last_image = @images[index-1] + image.top = last_image.top + last_image.height + [image.spacing, last_image.spacing].max end + end - # Calculate the size of the sprite - def size - [width, height] - end - - # Calculates the overal image dimensions - # collects image sizes and input parameters for each sprite - def compute_image_metadata! - @width = 0 - init_images - compute_image_positions! - @height = @images.last.top + @images.last.height - end + def image_for(name) + @images.detect { |img| img.name == name} + end - def init_images - @images = image_names.collect do |relative_file| - image = Compass::SassExtensions::Sprites::Image.new(relative_file, options) - @width = [ @width, image.width + image.offset ].max - image - end - end - # Calculates the overal image dimensions - # collects image sizes and input parameters for each sprite - def compute_image_positions! - @images.each_with_index do |image, index| - image.left = image.position.unit_str == "%" ? (@width - image.width) * (image.position.value / 100) : image.position.value - next if index == 0 - last_image = @images[index-1] - image.top = last_image.top + last_image.height + [image.spacing, last_image.spacing].max + def sprite_names + image_names.map{|f| Compass::Sprites.sprite_name(f) } + end + + def validate! + for sprite_name in sprite_names + unless sprite_name =~ /\A#{Sass::SCSS::RX::IDENT}\Z/ + raise Sass::SyntaxError, "#{sprite_name} must be a legal css identifier" end end + end - def image_for(name) - @images.detect { |img| img.name == name} - end + # The on-the-disk filename of the sprite + def filename + File.join(Compass.configuration.images_path, "#{path}-#{uniqueness_hash}.png") + end - def sprite_names - image_names.map{|f| Compass::Sprites.sprite_name(f) } + # Generate a sprite image if necessary + def generate + if generation_required? + sprite_data = construct_sprite + save!(sprite_data) + Compass.configuration.run_callback(:sprite_generated, sprite_data) end + end - def validate! - for sprite_name in sprite_names - unless sprite_name =~ /\A#{Sass::SCSS::RX::IDENT}\Z/ - raise Sass::SyntaxError, "#{sprite_name} must be a legal css identifier" + def generation_required? + !File.exists?(filename) || outdated? + end + + def uniqueness_hash + @uniqueness_hash ||= begin + sum = Digest::MD5.new + sum << SPRITE_VERSION + sum << path + images.each do |image| + [:relative_file, :height, :width, :repeat, :spacing, :position, :digest].each do |attr| + sum << image.send(attr).to_s end end + sum.hexdigest[0...10] end + @uniqueness_hash + end - # The on-the-disk filename of the sprite - def filename - File.join(Compass.configuration.images_path, "#{path}-#{uniqueness_hash}.png") + # saves the sprite for later retrieval + def save!(output_png) + saved = output_png.save filename + Compass.configuration.run_callback(:sprite_saved, filename) + saved + end + + # All the full-path filenames involved in this sprite + def image_filenames + image_names.map do |image_name| + File.join(Compass.configuration.images_path, image_name) end + end - # Generate a sprite image if necessary - def generate - if generation_required? - sprite_data = construct_sprite - save!(sprite_data) - Compass.configuration.run_callback(:sprite_generated, sprite_data) - end + def save!(output_png) + saved = output_png.save filename + Compass.configuration.run_callback(:sprite_saved, filename) + saved + end + + # All the full-path filenames involved in this sprite + def image_filenames + image_names.map do |image_name| + File.join(Compass.configuration.images_path, image_name) end + end - def generation_required? - !File.exists?(filename) || outdated? + # Checks whether this sprite is outdated + def outdated? + last_update = self.mtime + image_filenames.each do |image| + return true if File.mtime(image) > last_update end + false + end - def uniqueness_hash - @uniqueness_hash ||= begin - sum = Digest::MD5.new - sum << SPRITE_VERSION - sum << path - images.each do |image| - [:relative_file, :height, :width, :repeat, :spacing, :position, :digest].each do |attr| - sum << image.send(attr).to_s - end - end - sum.hexdigest[0...10] - end - @uniqueness_hash - end + def mtime + File.mtime(filename) + end - # saves the sprite for later retrieval - def save!(output_png) - saved = output_png.save filename - Compass.configuration.run_callback(:sprite_saved, filename) - saved - end + def inspect + to_s + end - # All the full-path filenames involved in this sprite - def image_filenames - image_names.map do |image_name| - File.join(Compass.configuration.images_path, image_name) - end - end + def to_s(options = self.options) + sprite_url(self).value + end - def inspect - to_s - end + def respond_to?(meth) + super || @evaluation_context.respond_to?(meth) + end - def to_s(options = self.options) - sprite_url(self).value - end - - def respond_to?(meth) - super || @evaluation_context.respond_to?(meth) - end - - def method_missing(meth, *args, &block) - if @evaluation_context.respond_to?(meth) - @evaluation_context.send(meth, *args, &block) - else - super - end + def method_missing(meth, *args, &block) + if @evaluation_context.respond_to?(meth) + @evaluation_context.send(meth, *args, &block) + else + super end end end diff --git a/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb b/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb index 40db7adc..3997aee6 100644 --- a/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb +++ b/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb @@ -1,20 +1,10 @@ module Compass module SassExtensions module Sprites - class ChunkyPngEngine < Sass::Script::Literal - include Compass::SassExtensions::Sprites::Base::InstanceMethods - - def require_png_library! - begin - require 'oily_png' - rescue LoadError - require 'chunky_png' - end - end - + module ChunkyPngEngine # Returns a PNG object def construct_sprite - require_png_library! + #require_png_library! output_png = ChunkyPNG::Image.new(width, height, ChunkyPNG::Color::TRANSPARENT) images.each do |image| input_png = ChunkyPNG::Image.from_file(image.file) diff --git a/lib/compass/sass_extensions/sprites/engines/rmagick_engine.rb b/lib/compass/sass_extensions/sprites/engines/rmagick_engine.rb new file mode 100644 index 00000000..03085075 --- /dev/null +++ b/lib/compass/sass_extensions/sprites/engines/rmagick_engine.rb @@ -0,0 +1,30 @@ +module Compass + module SassExtensions + module Sprites + module RmagickEngine + class ::Magick::Image + alias :save :write + end + # Returns a PNG object + def construct_sprite + output_png = Magick::Image.new(width, height) + output_png.background_color = 'transparent' + output_png.format = 'PNG' + images.each do |image| + input_png = Magick::Image.read(image.file).first + if image.repeat == "no-repeat" + output_png.composite!(input_png, image.left, image.top, Magick::CopyCompositeOp) + else + x = image.left - (image.left / image.width).ceil * image.width + while x < width do + output_png.composite!(input_png, x, image.top, Magick::CopyCompositeOp) + x += image.width + end + end + end + output_png + end + end + end + end +end \ No newline at end of file From a4861298a7354c8f2cd08970fd7af21a27aa319c Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Thu, 24 Feb 2011 05:21:37 -0500 Subject: [PATCH 058/223] fixed rmagic --- lib/compass/sass_extensions/sprites/base.rb | 25 +++---------------- .../sprites/engines/rmagick_engine.rb | 19 +++++++++++--- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/lib/compass/sass_extensions/sprites/base.rb b/lib/compass/sass_extensions/sprites/base.rb index b94f27fc..b6e6db67 100644 --- a/lib/compass/sass_extensions/sprites/base.rb +++ b/lib/compass/sass_extensions/sprites/base.rb @@ -111,6 +111,7 @@ module Compass end def generation_required? + puts !File.exists?(filename) || outdated? !File.exists?(filename) || outdated? end @@ -129,7 +130,6 @@ module Compass @uniqueness_hash end - # saves the sprite for later retrieval def save!(output_png) saved = output_png.save filename Compass.configuration.run_callback(:sprite_saved, filename) @@ -138,31 +138,12 @@ module Compass # All the full-path filenames involved in this sprite def image_filenames - image_names.map do |image_name| - File.join(Compass.configuration.images_path, image_name) - end - end - - def save!(output_png) - saved = output_png.save filename - Compass.configuration.run_callback(:sprite_saved, filename) - saved - end - - # All the full-path filenames involved in this sprite - def image_filenames - image_names.map do |image_name| - File.join(Compass.configuration.images_path, image_name) - end + @images.map(&:file) end # Checks whether this sprite is outdated def outdated? - last_update = self.mtime - image_filenames.each do |image| - return true if File.mtime(image) > last_update - end - false + @images.map(&:mtime).any? { |mtime| mtime > self.mtime } end def mtime diff --git a/lib/compass/sass_extensions/sprites/engines/rmagick_engine.rb b/lib/compass/sass_extensions/sprites/engines/rmagick_engine.rb index 03085075..988d3b25 100644 --- a/lib/compass/sass_extensions/sprites/engines/rmagick_engine.rb +++ b/lib/compass/sass_extensions/sprites/engines/rmagick_engine.rb @@ -5,19 +5,30 @@ module Compass class ::Magick::Image alias :save :write end + + def composite_images(dest_image, src_image, x, y) + width = [src_image.columns + x, dest_image.columns].max + height = [src_image.rows + y, dest_image.rows].max + image = Magick::Image.new(width, height) {self.background_color = 'none'} + image.composite!(dest_image, 0, 0, Magick::CopyCompositeOp) + image.composite!(src_image, x, y, Magick::CopyCompositeOp) + image + end + # Returns a PNG object def construct_sprite output_png = Magick::Image.new(width, height) - output_png.background_color = 'transparent' - output_png.format = 'PNG' + output_png.background_color = 'none' + output_png.format = 'PNG24' images.each do |image| input_png = Magick::Image.read(image.file).first if image.repeat == "no-repeat" - output_png.composite!(input_png, image.left, image.top, Magick::CopyCompositeOp) + output_png = composite_images(output_png, input_png, image.left, image.top) else x = image.left - (image.left / image.width).ceil * image.width while x < width do - output_png.composite!(input_png, x, image.top, Magick::CopyCompositeOp) + output_png = composite_images(output_png, input_png, x, image.top) + #output_png.composite!(input_png, x, image.top, Magick::CopyCompositeOp) x += image.width end end From c0a0b638b1387d7ee484ffa4c6ae843f85573202 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Wed, 2 Mar 2011 13:55:25 -0500 Subject: [PATCH 059/223] tests are green and config option added --- Gemfile.lock | 2 +- lib/compass/configuration.rb | 3 +- lib/compass/configuration/defaults.rb | 5 +++ lib/compass/sass_extensions/sprites/base.rb | 24 ++++------- .../sprites/engines/chunky_png_engine.rb | 7 ++++ .../sprites/engines/rmagick_engine.rb | 41 ------------------- 6 files changed, 24 insertions(+), 58 deletions(-) delete mode 100644 lib/compass/sass_extensions/sprites/engines/rmagick_engine.rb diff --git a/Gemfile.lock b/Gemfile.lock index f078f652..f199dee7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.2.03f4c23) + compass (0.11.beta.2.a486129) chunky_png (~> 0.12.0) sass (>= 3.1.0.alpha.218) diff --git a/lib/compass/configuration.rb b/lib/compass/configuration.rb index 3fa3e9ef..c4e35336 100644 --- a/lib/compass/configuration.rb +++ b/lib/compass/configuration.rb @@ -37,7 +37,8 @@ module Compass :line_comments, :color_output, :preferred_syntax, - :disable_warnings + :disable_warnings, + :sprite_engine ].flatten end diff --git a/lib/compass/configuration/defaults.rb b/lib/compass/configuration/defaults.rb index db63bd3e..ec6ce392 100644 --- a/lib/compass/configuration/defaults.rb +++ b/lib/compass/configuration/defaults.rb @@ -128,6 +128,11 @@ module Compass def default_preferred_syntax :scss end + + def default_sprite_engine + :chunky_png + end + # helper functions def http_join(*segments) diff --git a/lib/compass/sass_extensions/sprites/base.rb b/lib/compass/sass_extensions/sprites/base.rb index b6e6db67..112db850 100644 --- a/lib/compass/sass_extensions/sprites/base.rb +++ b/lib/compass/sass_extensions/sprites/base.rb @@ -1,4 +1,5 @@ require 'compass/sass_extensions/sprites/image' +require 'compass/sass_extensions/sprites/engines/chunky_png_engine' module Compass module SassExtensions module Sprites @@ -12,21 +13,8 @@ module Compass new(sprites, path, name, context, kwargs) end - def require_engine! - begin - require 'rmagick' - require 'compass/sass_extensions/sprites/engines/rmagick_engine' - self.class.send(:include, ::Compass::SassExtensions::Sprites::RmagickEngine) - rescue LoadError - require 'compass/sass_extensions/sprites/engines/chunky_png_engine' - begin - require 'oily_png' - rescue LoadError - require 'chunky_png' - end - self.class.send(:include, ::Compass::SassExtensions::Sprites::ChunkyPngEngine) - end + self.class.send(:include, eval("::Compass::SassExtensions::Sprites::#{modulize}Engine")) end # Changing this string will invalidate all previously generated sprite images. @@ -111,7 +99,6 @@ module Compass end def generation_required? - puts !File.exists?(filename) || outdated? !File.exists?(filename) || outdated? end @@ -169,6 +156,13 @@ module Compass super end end + + private + + def modulize + @modulize ||= Compass::configuration.sprite_engine.to_s.scan(/([^_.]+)/).flatten.map {|chunk| "#{chunk[0].chr.upcase}#{chunk[1..-1]}" }.join + end + end end end diff --git a/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb b/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb index 3997aee6..f9a43e8a 100644 --- a/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb +++ b/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb @@ -1,7 +1,14 @@ +begin + require 'oily_png' +rescue LoadError + require 'chunky_png' +end + module Compass module SassExtensions module Sprites module ChunkyPngEngine + # Returns a PNG object def construct_sprite #require_png_library! diff --git a/lib/compass/sass_extensions/sprites/engines/rmagick_engine.rb b/lib/compass/sass_extensions/sprites/engines/rmagick_engine.rb deleted file mode 100644 index 988d3b25..00000000 --- a/lib/compass/sass_extensions/sprites/engines/rmagick_engine.rb +++ /dev/null @@ -1,41 +0,0 @@ -module Compass - module SassExtensions - module Sprites - module RmagickEngine - class ::Magick::Image - alias :save :write - end - - def composite_images(dest_image, src_image, x, y) - width = [src_image.columns + x, dest_image.columns].max - height = [src_image.rows + y, dest_image.rows].max - image = Magick::Image.new(width, height) {self.background_color = 'none'} - image.composite!(dest_image, 0, 0, Magick::CopyCompositeOp) - image.composite!(src_image, x, y, Magick::CopyCompositeOp) - image - end - - # Returns a PNG object - def construct_sprite - output_png = Magick::Image.new(width, height) - output_png.background_color = 'none' - output_png.format = 'PNG24' - images.each do |image| - input_png = Magick::Image.read(image.file).first - if image.repeat == "no-repeat" - output_png = composite_images(output_png, input_png, image.left, image.top) - else - x = image.left - (image.left / image.width).ceil * image.width - while x < width do - output_png = composite_images(output_png, input_png, x, image.top) - #output_png.composite!(input_png, x, image.top, Magick::CopyCompositeOp) - x += image.width - end - end - end - output_png - end - end - end - end -end \ No newline at end of file From 1d6e3166859b128b12ded9cd550f987a54067a7e Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Thu, 3 Mar 2011 01:15:22 -0500 Subject: [PATCH 060/223] removed unnedded class tests are green runs in 1.8.7 adm 1.9.2 --- Gemfile.lock | 2 +- Rakefile.compiled.rbc | 2974 +++++++++++++++++ .../sass_extensions/functions/sprites.rb | 18 +- lib/compass/version.rbc | 1259 +++++++ 4 files changed, 4241 insertions(+), 12 deletions(-) create mode 100644 Rakefile.compiled.rbc create mode 100644 lib/compass/version.rbc diff --git a/Gemfile.lock b/Gemfile.lock index f199dee7..a82f2df5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.2.a486129) + compass (0.11.beta.2.c0a0b63) chunky_png (~> 0.12.0) sass (>= 3.1.0.alpha.218) diff --git a/Rakefile.compiled.rbc b/Rakefile.compiled.rbc new file mode 100644 index 00000000..40d587ef --- /dev/null +++ b/Rakefile.compiled.rbc @@ -0,0 +1,2974 @@ +!RBIX +10937318184790222022 +x +M +1 +n +n +x +10 +__script__ +i +419 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +47 +49 +1 +1 +15 +45 +3 +4 +49 +5 +0 +15 +5 +7 +6 +64 +47 +49 +1 +1 +15 +5 +44 +43 +7 +79 +49 +8 +1 +13 +7 +9 +7 +10 +7 +11 +35 +2 +49 +12 +2 +15 +47 +49 +13 +1 +15 +5 +7 +14 +64 +47 +49 +1 +1 +15 +5 +7 +15 +64 +47 +49 +1 +1 +15 +5 +7 +16 +64 +47 +49 +1 +1 +15 +5 +7 +17 +64 +47 +49 +1 +1 +15 +45 +18 +19 +43 +20 +43 +21 +7 +11 +56 +22 +50 +23 +1 +15 +45 +20 +24 +43 +25 +7 +10 +56 +26 +50 +23 +1 +15 +45 +20 +27 +43 +21 +7 +10 +49 +28 +1 +7 +29 +7 +30 +64 +49 +31 +2 +15 +26 +93 +0 +15 +29 +231 +0 +5 +7 +32 +64 +47 +49 +1 +1 +15 +45 +33 +34 +43 +35 +43 +36 +13 +71 +23 +47 +9 +186 +47 +49 +37 +0 +13 +7 +38 +47 +49 +39 +1 +15 +8 +191 +7 +38 +49 +23 +1 +15 +45 +33 +40 +43 +35 +43 +36 +7 +41 +56 +42 +50 +23 +1 +15 +5 +44 +43 +7 +79 +49 +8 +1 +13 +7 +9 +7 +38 +49 +12 +2 +15 +47 +49 +13 +1 +30 +8 +265 +26 +93 +1 +15 +24 +13 +45 +43 +44 +12 +49 +45 +1 +10 +248 +8 +260 +15 +5 +7 +46 +64 +47 +49 +47 +1 +25 +8 +265 +15 +92 +1 +27 +34 +92 +0 +27 +15 +5 +7 +48 +64 +47 +49 +49 +1 +15 +5 +7 +50 +56 +51 +47 +50 +13 +1 +15 +5 +7 +50 +56 +52 +47 +50 +53 +1 +15 +5 +44 +43 +7 +79 +49 +8 +1 +13 +7 +54 +64 +7 +55 +64 +49 +12 +2 +15 +47 +49 +13 +1 +15 +5 +7 +56 +56 +57 +47 +50 +53 +1 +15 +26 +93 +2 +15 +29 +369 +0 +5 +7 +17 +64 +47 +49 +1 +1 +15 +5 +7 +58 +64 +47 +49 +1 +1 +15 +5 +7 +41 +56 +59 +47 +50 +53 +1 +30 +8 +413 +26 +93 +3 +15 +24 +13 +45 +43 +60 +12 +49 +45 +1 +10 +386 +8 +408 +15 +24 +19 +0 +15 +5 +7 +61 +20 +0 +47 +101 +62 +63 +2 +47 +49 +47 +1 +25 +8 +413 +15 +92 +3 +27 +34 +92 +2 +27 +15 +2 +11 +I +b +I +1 +I +0 +I +0 +n +p +63 +s +8 +rubygems +x +7 +require +s +7 +bundler +x +7 +Bundler +n +x +5 +setup +s +7 +compass +x +4 +Hash +x +16 +new_from_literal +x +7 +default +x +4 +test +x +8 +features +x +3 +[]= +x +4 +task +s +13 +rake/testtask +s +9 +fileutils +s +8 +cucumber +s +18 +cucumber/rake/task +x +8 +Cucumber +n +x +4 +Rake +x +4 +Task +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +17 +57 +19 +0 +15 +20 +0 +7 +0 +64 +13 +18 +2 +49 +1 +1 +15 +11 +I +5 +I +1 +I +1 +I +1 +n +p +2 +s +24 +features --format pretty +x +14 +cucumber_opts= +p +5 +I +0 +I +f +I +4 +I +10 +I +11 +x +35 +/Users/sdavis/Work/compass/Rakefile +p +1 +x +1 +t +x +3 +new +n +x +8 +TestTask +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +75 +57 +19 +0 +15 +20 +0 +49 +0 +0 +7 +1 +64 +49 +2 +1 +15 +20 +0 +49 +0 +0 +7 +3 +64 +49 +2 +1 +15 +45 +4 +5 +7 +6 +64 +49 +7 +1 +19 +1 +15 +20 +1 +7 +8 +64 +7 +9 +64 +49 +10 +2 +15 +20 +0 +20 +1 +13 +18 +2 +49 +11 +1 +15 +15 +20 +0 +2 +13 +18 +2 +49 +12 +1 +15 +11 +I +6 +I +2 +I +1 +I +1 +n +p +13 +x +4 +libs +s +3 +lib +x +2 +<< +s +4 +test +x +8 +FileList +n +s +17 +test/**/*_test.rb +x +2 +[] +s +12 +test/rails/* +s +11 +test/haml/* +x +7 +exclude +x +11 +test_files= +x +8 +verbose= +p +15 +I +0 +I +13 +I +4 +I +14 +I +10 +I +15 +I +1c +I +16 +I +28 +I +17 +I +34 +I +18 +I +40 +I +19 +I +4b +x +35 +/Users/sdavis/Work/compass/Rakefile +p +2 +x +1 +t +x +10 +test_files +n +x +2 +[] +x +11 +add_comment +s +177 +To run with an alternate version of Rails, make test/rails a symlink to that version. +To run with an alternate version of Haml & Sass, make test/haml a symlink to that version. + +x +4 +send +s +20 +rspec/core/rake_task +x +5 +RSpec +n +x +4 +Core +x +8 +RakeTask +x +8 +allocate +x +4 +spec +x +10 +initialize +n +x +4 +rcov +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +15 +57 +19 +0 +15 +20 +0 +2 +13 +18 +2 +49 +0 +1 +15 +11 +I +5 +I +1 +I +1 +I +1 +n +p +1 +x +5 +rcov= +p +5 +I +0 +I +25 +I +4 +I +26 +I +f +x +35 +/Users/sdavis/Work/compass/Rakefile +p +1 +x +4 +spec +x +9 +LoadError +n +x +3 +=== +s +69 +Rspec (or a dependency) is not available. Try running bundler install +x +4 +puts +s +34 +Compile Examples into HTML and CSS +x +4 +desc +x +8 +examples +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +135 +7 +0 +64 +19 +0 +15 +45 +1 +2 +20 +0 +49 +3 +1 +13 +9 +42 +15 +99 +43 +4 +7 +5 +49 +6 +1 +20 +0 +7 +7 +64 +81 +8 +49 +9 +1 +10 +41 +2 +8 +42 +3 +9 +73 +5 +7 +10 +64 +47 +49 +11 +1 +15 +99 +43 +4 +7 +5 +49 +6 +1 +20 +0 +7 +7 +64 +81 +8 +49 +12 +1 +8 +74 +1 +15 +5 +7 +13 +64 +47 +49 +14 +1 +15 +5 +7 +15 +64 +47 +49 +14 +1 +15 +5 +7 +16 +64 +47 +49 +14 +1 +15 +5 +7 +17 +64 +47 +49 +14 +1 +15 +5 +7 +18 +64 +47 +49 +14 +1 +15 +45 +19 +20 +7 +21 +64 +49 +6 +1 +56 +22 +50 +23 +0 +11 +I +5 +I +1 +I +0 +I +0 +I +-2 +p +24 +s +10 +tests/haml +x +4 +File +n +x +7 +exists? +x +7 +Globals +x +2 +$: +x +2 +[] +s +4 +/lib +x +1 ++ +x +8 +include? +s +21 +[ using linked Haml ] +x +4 +puts +x +7 +unshift +s +4 +haml +x +7 +require +s +4 +sass +s +8 +pathname +s +7 +compass +s +12 +compass/exec +x +8 +FileList +n +s +10 +examples/* +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +91 +57 +19 +0 +15 +45 +0 +1 +20 +0 +49 +2 +1 +9 +17 +1 +8 +19 +1 +11 +15 +5 +7 +3 +20 +0 +47 +101 +4 +63 +2 +47 +49 +5 +1 +15 +5 +7 +6 +64 +7 +7 +20 +0 +47 +101 +4 +63 +2 +49 +8 +0 +49 +9 +1 +47 +49 +5 +1 +15 +45 +10 +11 +20 +0 +56 +12 +50 +13 +1 +15 +45 +14 +15 +20 +0 +47 +101 +4 +7 +16 +63 +2 +49 +17 +1 +56 +18 +50 +19 +0 +11 +I +6 +I +1 +I +1 +I +1 +n +p +20 +x +4 +File +n +x +10 +directory? +s +11 + +Compiling +x +4 +to_s +x +4 +puts +s +1 += +s +10 +Compiling +x +6 +length +x +1 +* +x +3 +Dir +n +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +71 +45 +0 +1 +7 +2 +64 +49 +3 +1 +9 +21 +5 +7 +2 +64 +47 +49 +4 +1 +8 +22 +1 +15 +45 +5 +6 +43 +7 +43 +8 +13 +71 +9 +47 +9 +56 +47 +49 +10 +0 +13 +7 +11 +64 +7 +12 +64 +35 +2 +47 +49 +13 +1 +15 +8 +67 +7 +11 +64 +7 +12 +64 +35 +2 +49 +9 +1 +49 +14 +0 +11 +I +5 +I +0 +I +0 +I +0 +I +-2 +p +15 +x +4 +File +n +s +12 +bootstrap.rb +x +7 +exists? +x +4 +load +x +7 +Compass +n +x +4 +Exec +x +12 +SubCommandUI +x +3 +new +x +8 +allocate +s +7 +compile +s +7 +--force +x +10 +initialize +x +4 +run! +p +5 +I +0 +I +3f +I +17 +I +40 +I +47 +x +35 +/Users/sdavis/Work/compass/Rakefile +p +0 +x +5 +chdir +x +8 +FileList +n +s +10 +/**/*.haml +x +2 +[] +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +153 +57 +19 +0 +15 +20 +0 +44 +43 +0 +78 +7 +1 +49 +2 +2 +49 +3 +1 +19 +1 +15 +45 +4 +5 +43 +6 +13 +71 +2 +47 +9 +70 +47 +49 +7 +0 +13 +5 +20 +0 +47 +49 +8 +1 +49 +9 +0 +44 +43 +10 +79 +49 +11 +1 +13 +7 +12 +20 +0 +49 +13 +2 +15 +47 +49 +14 +2 +15 +8 +99 +5 +20 +0 +47 +49 +8 +1 +49 +9 +0 +44 +43 +10 +79 +49 +11 +1 +13 +7 +12 +20 +0 +49 +13 +2 +15 +49 +2 +2 +19 +2 +15 +5 +7 +15 +45 +16 +17 +20 +1 +49 +18 +1 +47 +101 +19 +63 +2 +47 +49 +20 +1 +15 +5 +20 +1 +7 +21 +64 +47 +49 +8 +2 +19 +3 +15 +20 +3 +20 +2 +49 +22 +0 +49 +23 +1 +15 +20 +3 +49 +24 +0 +11 +I +c +I +4 +I +1 +I +1 +n +p +25 +x +5 +Range +I +-6 +x +3 +new +x +2 +[] +x +4 +Haml +n +x +6 +Engine +x +8 +allocate +x +4 +open +x +4 +read +x +4 +Hash +x +16 +new_from_literal +x +8 +filename +x +3 +[]= +x +10 +initialize +s +10 + haml +x +4 +File +n +x +8 +basename +x +4 +to_s +x +4 +puts +s +1 +w +x +6 +render +x +5 +write +x +5 +close +p +15 +I +0 +I +43 +I +4 +I +44 +I +15 +I +45 +I +66 +I +46 +I +7b +I +47 +I +88 +I +48 +I +93 +I +49 +I +99 +x +35 +/Users/sdavis/Work/compass/Rakefile +p +4 +x +9 +haml_file +x +8 +basename +x +6 +engine +x +6 +output +x +4 +each +p +13 +I +0 +I +3a +I +4 +I +3b +I +14 +I +3c +I +23 +I +3d +I +3b +I +3e +I +46 +I +43 +I +5b +x +35 +/Users/sdavis/Work/compass/Rakefile +p +1 +x +7 +example +x +4 +each +p +23 +I +0 +I +30 +I +6 +I +31 +I +2c +I +32 +I +35 +I +33 +I +49 +I +31 +I +4b +I +35 +I +54 +I +36 +I +5d +I +37 +I +66 +I +38 +I +6f +I +39 +I +78 +I +3a +I +87 +x +35 +/Users/sdavis/Work/compass/Rakefile +p +1 +x +11 +linked_haml +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +19 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +56 +3 +47 +50 +4 +1 +11 +I +4 +I +0 +I +0 +I +0 +I +-2 +p +5 +s +32 +clean up the example directories +x +4 +desc +x +5 +clean +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +24 +5 +7 +0 +64 +47 +49 +1 +1 +15 +45 +2 +3 +7 +4 +64 +49 +5 +1 +56 +6 +50 +7 +0 +11 +I +3 +I +0 +I +0 +I +0 +I +-2 +p +8 +s +17 +Cleaning Examples +x +4 +puts +x +3 +Dir +n +s +19 +examples/*/clean.rb +x +4 +glob +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +12 +57 +19 +0 +15 +5 +20 +0 +47 +49 +0 +1 +11 +I +4 +I +1 +I +1 +I +1 +n +p +1 +x +4 +load +p +5 +I +0 +I +52 +I +4 +I +53 +I +c +x +35 +/Users/sdavis/Work/compass/Rakefile +p +1 +x +7 +cleaner +x +4 +each +p +5 +I +0 +I +51 +I +9 +I +52 +I +18 +x +35 +/Users/sdavis/Work/compass/Rakefile +p +0 +x +4 +task +p +5 +I +0 +I +4f +I +9 +I +50 +I +13 +x +35 +/Users/sdavis/Work/compass/Rakefile +p +0 +x +9 +namespace +s +16 +gemspec:generate +s +14 +examples:clean +x +3 +git +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +10 +5 +7 +0 +56 +1 +47 +50 +2 +1 +11 +I +4 +I +0 +I +0 +I +0 +I +-2 +p +3 +x +5 +clean +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +15 +5 +7 +0 +64 +7 +1 +64 +7 +2 +64 +47 +49 +3 +3 +11 +I +5 +I +0 +I +0 +I +0 +I +-2 +p +4 +s +3 +git +s +5 +clean +s +4 +-fdx +x +2 +sh +p +3 +I +0 +I +5c +I +f +x +35 +/Users/sdavis/Work/compass/Rakefile +p +0 +x +4 +task +p +3 +I +0 +I +5b +I +a +x +35 +/Users/sdavis/Work/compass/Rakefile +p +0 +s +13 +rcov/rcovtask +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +47 +45 +0 +1 +43 +2 +43 +3 +7 +4 +56 +5 +50 +6 +1 +15 +45 +7 +8 +43 +9 +7 +10 +56 +11 +50 +6 +1 +15 +5 +7 +12 +64 +47 +49 +13 +1 +15 +5 +7 +14 +56 +15 +47 +50 +16 +1 +11 +I +4 +I +0 +I +0 +I +0 +I +-2 +p +17 +x +8 +Cucumber +n +x +4 +Rake +x +4 +Task +x +8 +cucumber +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +51 +57 +19 +0 +15 +20 +0 +2 +13 +18 +2 +49 +0 +1 +15 +15 +20 +0 +7 +1 +64 +7 +2 +64 +7 +3 +64 +7 +4 +64 +35 +4 +13 +18 +2 +49 +5 +1 +15 +15 +20 +0 +49 +6 +0 +7 +7 +64 +49 +8 +1 +11 +I +7 +I +1 +I +1 +I +1 +n +p +9 +x +5 +rcov= +s +9 +--exclude +s +34 +osx\/objc,gems\/,spec\/,features\/ +s +11 +--aggregate +s +13 +coverage.data +x +10 +rcov_opts= +x +9 +rcov_opts +s +13 +-o "coverage" +x +2 +<< +p +9 +I +0 +I +65 +I +4 +I +66 +I +f +I +67 +I +27 +I +68 +I +33 +x +35 +/Users/sdavis/Work/compass/Rakefile +p +1 +x +1 +t +x +3 +new +x +4 +Rcov +n +x +8 +RcovTask +x +5 +units +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +112 +57 +19 +0 +15 +20 +0 +49 +0 +0 +7 +1 +64 +49 +2 +1 +15 +45 +3 +4 +7 +5 +64 +49 +6 +1 +19 +1 +15 +20 +1 +7 +7 +64 +7 +8 +64 +49 +9 +2 +15 +20 +0 +20 +1 +13 +18 +2 +49 +10 +1 +15 +15 +20 +0 +7 +11 +64 +13 +18 +2 +49 +12 +1 +15 +15 +20 +0 +2 +13 +18 +2 +49 +13 +1 +15 +15 +20 +0 +7 +14 +64 +7 +15 +64 +7 +16 +64 +7 +17 +64 +35 +4 +13 +18 +2 +49 +18 +1 +15 +15 +20 +0 +49 +19 +0 +7 +20 +64 +49 +2 +1 +11 +I +8 +I +2 +I +1 +I +1 +n +p +21 +x +4 +libs +s +3 +lib +x +2 +<< +x +8 +FileList +n +s +17 +test/**/*_test.rb +x +2 +[] +s +12 +test/rails/* +s +11 +test/haml/* +x +7 +exclude +x +8 +pattern= +s +8 +coverage +x +11 +output_dir= +x +8 +verbose= +s +9 +--exclude +s +34 +osx\/objc,gems\/,spec\/,features\/ +s +11 +--aggregate +s +13 +coverage.data +x +10 +rcov_opts= +x +9 +rcov_opts +s +29 +-o "coverage" --sort coverage +p +19 +I +0 +I +6b +I +4 +I +6c +I +10 +I +6d +I +1c +I +6e +I +28 +I +6f +I +34 +I +70 +I +41 +I +71 +I +4c +I +72 +I +64 +I +73 +I +70 +x +35 +/Users/sdavis/Work/compass/Rakefile +p +2 +x +4 +rcov +x +10 +test_files +s +59 +Run both specs and features to generate aggregated coverage +x +4 +desc +x +3 +all +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +57 +57 +19 +0 +15 +45 +0 +1 +7 +2 +64 +49 +3 +1 +9 +25 +5 +7 +2 +64 +47 +49 +4 +1 +8 +26 +1 +15 +45 +5 +6 +43 +7 +7 +8 +64 +49 +9 +1 +49 +10 +0 +15 +45 +5 +11 +43 +7 +7 +12 +64 +49 +9 +1 +49 +10 +0 +11 +I +4 +I +1 +I +1 +I +1 +n +p +13 +x +4 +File +n +s +13 +coverage.data +x +6 +exist? +x +2 +rm +x +4 +Rake +n +x +4 +Task +s +10 +rcov:units +x +2 +[] +x +6 +invoke +n +s +13 +rcov:cucumber +p +9 +I +0 +I +78 +I +4 +I +79 +I +1b +I +7a +I +2a +I +7b +I +39 +x +35 +/Users/sdavis/Work/compass/Rakefile +p +1 +x +1 +t +x +4 +task +p +9 +I +0 +I +65 +I +f +I +6b +I +1c +I +77 +I +25 +I +78 +I +2f +x +35 +/Users/sdavis/Work/compass/Rakefile +p +0 +n +s +9 +WARNING: +x +4 +to_s +p +61 +I +0 +I +1 +I +9 +I +2 +I +12 +I +3 +I +19 +I +4 +I +22 +I +8 +I +3c +I +a +I +45 +I +b +I +4e +I +c +I +57 +I +d +I +60 +I +f +I +6f +I +13 +I +7c +I +1b +I +8f +I +21 +I +9f +I +23 +I +c0 +I +25 +I +cf +I +29 +I +ec +I +2a +I +f9 +I +2b +I +10d +I +2e +I +116 +I +2f +I +120 +I +4e +I +12a +I +58 +I +142 +I +5a +I +14c +I +62 +I +15c +I +63 +I +165 +I +64 +I +176 +I +7e +I +183 +I +80 +I +184 +I +7e +I +187 +I +7f +I +1a3 +x +35 +/Users/sdavis/Work/compass/Rakefile +p +1 +x +1 +e diff --git a/lib/compass/sass_extensions/functions/sprites.rb b/lib/compass/sass_extensions/functions/sprites.rb index cdcd6df1..d51c3395 100644 --- a/lib/compass/sass_extensions/functions/sprites.rb +++ b/lib/compass/sass_extensions/functions/sprites.rb @@ -13,11 +13,7 @@ module Compass::SassExtensions::Functions::Sprites end end - class SpriteMap < Compass::SassExtensions::Sprites::Base - - end - - # Creates a SpriteMap object. A sprite map, when used in a property is the same + # Creates a Compass::SassExtensions::Sprites::Base object. A sprite map, when used in a property is the same # as calling sprite-url. So the following background properties are equivalent: # # $icons: sprite-map("icons/*.png"); @@ -28,7 +24,7 @@ module Compass::SassExtensions::Functions::Sprites # the first time it is converted to a url. Simply constructing it has no side-effects. def sprite_map(glob, kwargs = {}) kwargs.extend VariableReader - SpriteMap.from_uri(glob, self, kwargs) + Compass::SassExtensions::Sprites::Base.from_uri(glob, self, kwargs) end Sass::Script::Functions.declare :sprite_map, [:glob], :var_kwargs => true @@ -41,7 +37,7 @@ module Compass::SassExtensions::Functions::Sprites # # background: url('/images/icons.png?12345678') 0 -24px no-repeat; def sprite(map, sprite, offset_x = ZERO, offset_y = ZERO) - unless map.is_a?(SpriteMap) + unless map.is_a?(Compass::SassExtensions::Sprites::Base) missing_sprite!("sprite") end unless sprite.is_a?(Sass::Script::String) @@ -58,7 +54,7 @@ module Compass::SassExtensions::Functions::Sprites # Returns the name of a sprite map # The name is derived from the folder than contains the sprites. def sprite_map_name(map) - unless map.is_a?(SpriteMap) + unless map.is_a?(Compass::SassExtensions::Sprites::Base) missing_sprite!("sprite-map-name") end Sass::Script::String.new(map.name) @@ -67,7 +63,7 @@ module Compass::SassExtensions::Functions::Sprites # Returns the path to the original image file for the sprite with the given name def sprite_file(map, sprite) - unless map.is_a?(SpriteMap) + unless map.is_a?(Compass::SassExtensions::Sprites::Base) missing_sprite!("sprite-file") end if image = map.image_for(sprite.value) @@ -80,7 +76,7 @@ module Compass::SassExtensions::Functions::Sprites # Returns a url to the sprite image. def sprite_url(map) - unless map.is_a?(SpriteMap) + unless map.is_a?(Compass::SassExtensions::Sprites::Base) missing_sprite!("sprite-url") end map.generate @@ -110,7 +106,7 @@ module Compass::SassExtensions::Functions::Sprites # # background-position: 3px -36px; def sprite_position(map, sprite = nil, offset_x = ZERO, offset_y = ZERO) - unless map.is_a?(SpriteMap) + unless map.is_a?(Compass::SassExtensions::Sprites::Base) missing_sprite!("sprite-position") end unless sprite && sprite.is_a?(Sass::Script::String) diff --git a/lib/compass/version.rbc b/lib/compass/version.rbc new file mode 100644 index 00000000..025b2434 --- /dev/null +++ b/lib/compass/version.rbc @@ -0,0 +1,1259 @@ +!RBIX +10937318184790222022 +x +M +1 +n +n +x +10 +__script__ +i +28 +99 +7 +0 +65 +49 +1 +2 +13 +99 +12 +7 +2 +12 +7 +3 +12 +65 +12 +49 +4 +4 +15 +49 +2 +0 +15 +2 +11 +I +6 +I +0 +I +0 +I +0 +n +p +5 +x +7 +Compass +x +11 +open_module +x +15 +__module_init__ +M +1 +n +n +x +7 +Compass +i +50 +5 +66 +99 +7 +0 +65 +49 +1 +2 +13 +99 +12 +7 +2 +12 +7 +3 +12 +65 +12 +49 +4 +4 +15 +49 +2 +0 +15 +5 +45 +5 +6 +43 +0 +47 +49 +7 +1 +15 +99 +7 +8 +7 +9 +65 +5 +49 +4 +4 +11 +I +6 +I +0 +I +0 +I +0 +n +p +10 +x +7 +Version +x +11 +open_module +x +15 +__module_init__ +M +1 +n +n +x +7 +Version +i +76 +5 +66 +99 +7 +0 +7 +1 +65 +67 +49 +2 +0 +49 +3 +4 +15 +5 +48 +4 +15 +99 +7 +5 +7 +6 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +7 +7 +8 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +9 +7 +10 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +11 +7 +12 +65 +67 +49 +2 +0 +49 +3 +4 +11 +I +5 +I +0 +I +0 +I +0 +n +p +13 +x +7 +version +M +1 +n +n +x +7 +version +i +23 +5 +7 +0 +49 +1 +1 +9 +12 +7 +2 +8 +13 +1 +9 +19 +39 +0 +8 +22 +5 +48 +3 +11 +I +2 +I +0 +I +0 +I +0 +n +p +4 +x +8 +@version +x +31 +__instance_variable_defined_p__ +s +17 +instance-variable +x +12 +read_version +p +9 +I +-1 +I +9 +I +0 +I +a +I +f +I +b +I +13 +I +d +I +17 +x +49 +/Users/sdavis/Work/compass/lib/compass/version.rb +p +0 +x +17 +method_visibility +x +15 +add_defn_method +x +9 +protected +x +5 +scope +M +1 +n +n +x +5 +scope +i +25 +45 +0 +1 +45 +0 +2 +65 +49 +3 +0 +49 +4 +1 +7 +5 +64 +7 +5 +64 +20 +0 +49 +6 +4 +11 +I +6 +I +1 +I +1 +I +1 +n +p +7 +x +4 +File +n +n +x +11 +active_path +x +7 +dirname +s +2 +.. +x +4 +join +p +5 +I +-1 +I +13 +I +0 +I +14 +I +19 +x +49 +/Users/sdavis/Work/compass/lib/compass/version.rb +p +1 +x +4 +file +x +12 +read_version +M +1 +n +n +x +12 +read_version +i +262 +5 +7 +0 +64 +47 +49 +1 +1 +15 +45 +2 +3 +45 +4 +5 +5 +7 +6 +64 +47 +49 +7 +1 +49 +8 +1 +49 +9 +1 +38 +10 +15 +39 +10 +7 +11 +39 +10 +7 +12 +49 +13 +1 +13 +18 +3 +49 +14 +2 +15 +15 +39 +10 +7 +15 +39 +10 +7 +16 +49 +13 +1 +47 +101 +17 +7 +18 +39 +10 +7 +19 +49 +13 +1 +47 +101 +17 +63 +3 +13 +18 +3 +49 +14 +2 +15 +15 +39 +10 +7 +12 +49 +13 +1 +9 +122 +39 +10 +7 +15 +49 +13 +1 +7 +18 +39 +10 +7 +12 +49 +13 +1 +47 +101 +17 +63 +2 +49 +20 +1 +8 +123 +1 +15 +39 +10 +7 +21 +49 +13 +1 +9 +159 +39 +10 +7 +15 +49 +13 +1 +7 +18 +39 +10 +7 +21 +49 +13 +1 +47 +101 +17 +63 +2 +49 +20 +1 +8 +160 +1 +15 +39 +10 +7 +22 +49 +13 +1 +9 +196 +39 +10 +7 +15 +49 +13 +1 +7 +18 +39 +10 +7 +22 +49 +13 +1 +47 +101 +17 +63 +2 +49 +20 +1 +8 +197 +1 +15 +45 +23 +24 +7 +25 +64 +49 +13 +1 +10 +212 +2 +8 +213 +3 +13 +9 +222 +15 +5 +48 +26 +19 +0 +9 +257 +39 +10 +7 +15 +49 +13 +1 +7 +18 +20 +0 +44 +43 +27 +78 +4 +6 +49 +28 +2 +49 +13 +1 +47 +101 +17 +63 +2 +49 +20 +1 +8 +258 +1 +15 +39 +10 +11 +I +7 +I +1 +I +0 +I +0 +n +p +29 +s +4 +yaml +x +7 +require +x +4 +YAML +n +x +4 +File +n +s +11 +VERSION.yml +x +5 +scope +x +4 +read +x +4 +load +x +8 +@version +x +5 +teeny +x +5 +patch +x +2 +[] +x +3 +[]= +x +6 +string +x +5 +major +x +4 +to_s +s +1 +. +x +5 +minor +x +2 +<< +x +5 +state +x +5 +build +x +3 +ENV +n +s +8 +OFFICIAL +x +8 +revision +x +5 +Range +x +3 +new +p +25 +I +-1 +I +17 +I +0 +I +18 +I +9 +I +19 +I +20 +I +1a +I +33 +I +1b +I +57 +I +1c +I +7c +I +1d +I +a1 +I +1e +I +c6 +I +1f +I +e0 +I +20 +I +101 +I +1f +I +103 +I +22 +I +106 +x +49 +/Users/sdavis/Work/compass/lib/compass/version.rb +p +1 +x +1 +r +x +8 +revision +M +1 +n +n +x +8 +revision +i +4 +5 +48 +0 +11 +I +1 +I +0 +I +0 +I +0 +n +p +1 +x +17 +revision_from_git +p +5 +I +-1 +I +25 +I +0 +I +26 +I +4 +x +49 +/Users/sdavis/Work/compass/lib/compass/version.rb +p +0 +x +17 +revision_from_git +M +1 +n +n +x +17 +revision_from_git +i +97 +45 +0 +1 +5 +7 +2 +64 +47 +49 +3 +1 +49 +4 +1 +9 +95 +45 +0 +5 +5 +7 +2 +64 +47 +49 +3 +1 +49 +6 +1 +49 +7 +0 +19 +0 +15 +20 +0 +7 +8 +13 +70 +9 +56 +15 +44 +43 +9 +7 +10 +78 +49 +11 +2 +6 +8 +49 +12 +1 +9 +92 +45 +0 +13 +5 +7 +14 +4 +5 +78 +98 +15 +2 +47 +101 +16 +63 +2 +47 +49 +3 +1 +49 +6 +1 +49 +7 +0 +19 +0 +8 +93 +1 +8 +96 +1 +11 +I +6 +I +1 +I +0 +I +0 +n +p +17 +x +4 +File +n +s +9 +.git/HEAD +x +5 +scope +x +7 +exists? +n +x +4 +read +x +5 +strip +n +x +6 +Regexp +s +11 +^ref: (.*)$ +x +3 +new +x +2 +=~ +n +s +5 +.git/ +x +24 +regexp_last_match_result +x +4 +to_s +p +15 +I +-1 +I +29 +I +0 +I +2a +I +10 +I +2b +I +24 +I +2c +I +3d +I +2d +I +5c +I +2c +I +5f +I +2a +I +61 +x +49 +/Users/sdavis/Work/compass/lib/compass/version.rb +p +1 +x +3 +rev +p +13 +I +2 +I +9 +I +10 +I +11 +I +14 +I +13 +I +22 +I +17 +I +30 +I +25 +I +3e +I +29 +I +4c +x +49 +/Users/sdavis/Work/compass/lib/compass/version.rb +p +0 +x +13 +attach_method +x +7 +Compass +n +x +6 +extend +x +13 +const_missing +M +1 +n +n +x +13 +const_missing +i +22 +20 +0 +7 +0 +83 +1 +9 +18 +5 +48 +2 +7 +3 +49 +4 +1 +8 +21 +54 +89 +5 +11 +I +3 +I +1 +I +1 +I +1 +n +p +6 +x +7 +VERSION +x +2 +== +x +7 +version +x +6 +string +x +2 +[] +x +13 +const_missing +p +9 +I +-1 +I +33 +I +0 +I +35 +I +8 +I +36 +I +12 +I +38 +I +16 +x +49 +/Users/sdavis/Work/compass/lib/compass/version.rb +p +1 +x +5 +const +p +7 +I +2 +I +2 +I +1c +I +32 +I +27 +I +33 +I +32 +x +49 +/Users/sdavis/Work/compass/lib/compass/version.rb +p +0 +x +13 +attach_method +p +3 +I +0 +I +1 +I +1c +x +49 +/Users/sdavis/Work/compass/lib/compass/version.rb +p +0 From 267a5df6054d6437af3d126b524071a6e1e28f8a Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Thu, 3 Mar 2011 01:16:11 -0500 Subject: [PATCH 061/223] opps bitecode --- Rakefile.compiled.rbc | 2974 --------------------------------------- lib/compass/version.rbc | 1259 ----------------- 2 files changed, 4233 deletions(-) delete mode 100644 Rakefile.compiled.rbc delete mode 100644 lib/compass/version.rbc diff --git a/Rakefile.compiled.rbc b/Rakefile.compiled.rbc deleted file mode 100644 index 40d587ef..00000000 --- a/Rakefile.compiled.rbc +++ /dev/null @@ -1,2974 +0,0 @@ -!RBIX -10937318184790222022 -x -M -1 -n -n -x -10 -__script__ -i -419 -5 -7 -0 -64 -47 -49 -1 -1 -15 -5 -7 -2 -64 -47 -49 -1 -1 -15 -45 -3 -4 -49 -5 -0 -15 -5 -7 -6 -64 -47 -49 -1 -1 -15 -5 -44 -43 -7 -79 -49 -8 -1 -13 -7 -9 -7 -10 -7 -11 -35 -2 -49 -12 -2 -15 -47 -49 -13 -1 -15 -5 -7 -14 -64 -47 -49 -1 -1 -15 -5 -7 -15 -64 -47 -49 -1 -1 -15 -5 -7 -16 -64 -47 -49 -1 -1 -15 -5 -7 -17 -64 -47 -49 -1 -1 -15 -45 -18 -19 -43 -20 -43 -21 -7 -11 -56 -22 -50 -23 -1 -15 -45 -20 -24 -43 -25 -7 -10 -56 -26 -50 -23 -1 -15 -45 -20 -27 -43 -21 -7 -10 -49 -28 -1 -7 -29 -7 -30 -64 -49 -31 -2 -15 -26 -93 -0 -15 -29 -231 -0 -5 -7 -32 -64 -47 -49 -1 -1 -15 -45 -33 -34 -43 -35 -43 -36 -13 -71 -23 -47 -9 -186 -47 -49 -37 -0 -13 -7 -38 -47 -49 -39 -1 -15 -8 -191 -7 -38 -49 -23 -1 -15 -45 -33 -40 -43 -35 -43 -36 -7 -41 -56 -42 -50 -23 -1 -15 -5 -44 -43 -7 -79 -49 -8 -1 -13 -7 -9 -7 -38 -49 -12 -2 -15 -47 -49 -13 -1 -30 -8 -265 -26 -93 -1 -15 -24 -13 -45 -43 -44 -12 -49 -45 -1 -10 -248 -8 -260 -15 -5 -7 -46 -64 -47 -49 -47 -1 -25 -8 -265 -15 -92 -1 -27 -34 -92 -0 -27 -15 -5 -7 -48 -64 -47 -49 -49 -1 -15 -5 -7 -50 -56 -51 -47 -50 -13 -1 -15 -5 -7 -50 -56 -52 -47 -50 -53 -1 -15 -5 -44 -43 -7 -79 -49 -8 -1 -13 -7 -54 -64 -7 -55 -64 -49 -12 -2 -15 -47 -49 -13 -1 -15 -5 -7 -56 -56 -57 -47 -50 -53 -1 -15 -26 -93 -2 -15 -29 -369 -0 -5 -7 -17 -64 -47 -49 -1 -1 -15 -5 -7 -58 -64 -47 -49 -1 -1 -15 -5 -7 -41 -56 -59 -47 -50 -53 -1 -30 -8 -413 -26 -93 -3 -15 -24 -13 -45 -43 -60 -12 -49 -45 -1 -10 -386 -8 -408 -15 -24 -19 -0 -15 -5 -7 -61 -20 -0 -47 -101 -62 -63 -2 -47 -49 -47 -1 -25 -8 -413 -15 -92 -3 -27 -34 -92 -2 -27 -15 -2 -11 -I -b -I -1 -I -0 -I -0 -n -p -63 -s -8 -rubygems -x -7 -require -s -7 -bundler -x -7 -Bundler -n -x -5 -setup -s -7 -compass -x -4 -Hash -x -16 -new_from_literal -x -7 -default -x -4 -test -x -8 -features -x -3 -[]= -x -4 -task -s -13 -rake/testtask -s -9 -fileutils -s -8 -cucumber -s -18 -cucumber/rake/task -x -8 -Cucumber -n -x -4 -Rake -x -4 -Task -M -1 -p -2 -x -9 -for_block -t -n -x -9 -__block__ -i -17 -57 -19 -0 -15 -20 -0 -7 -0 -64 -13 -18 -2 -49 -1 -1 -15 -11 -I -5 -I -1 -I -1 -I -1 -n -p -2 -s -24 -features --format pretty -x -14 -cucumber_opts= -p -5 -I -0 -I -f -I -4 -I -10 -I -11 -x -35 -/Users/sdavis/Work/compass/Rakefile -p -1 -x -1 -t -x -3 -new -n -x -8 -TestTask -M -1 -p -2 -x -9 -for_block -t -n -x -9 -__block__ -i -75 -57 -19 -0 -15 -20 -0 -49 -0 -0 -7 -1 -64 -49 -2 -1 -15 -20 -0 -49 -0 -0 -7 -3 -64 -49 -2 -1 -15 -45 -4 -5 -7 -6 -64 -49 -7 -1 -19 -1 -15 -20 -1 -7 -8 -64 -7 -9 -64 -49 -10 -2 -15 -20 -0 -20 -1 -13 -18 -2 -49 -11 -1 -15 -15 -20 -0 -2 -13 -18 -2 -49 -12 -1 -15 -11 -I -6 -I -2 -I -1 -I -1 -n -p -13 -x -4 -libs -s -3 -lib -x -2 -<< -s -4 -test -x -8 -FileList -n -s -17 -test/**/*_test.rb -x -2 -[] -s -12 -test/rails/* -s -11 -test/haml/* -x -7 -exclude -x -11 -test_files= -x -8 -verbose= -p -15 -I -0 -I -13 -I -4 -I -14 -I -10 -I -15 -I -1c -I -16 -I -28 -I -17 -I -34 -I -18 -I -40 -I -19 -I -4b -x -35 -/Users/sdavis/Work/compass/Rakefile -p -2 -x -1 -t -x -10 -test_files -n -x -2 -[] -x -11 -add_comment -s -177 -To run with an alternate version of Rails, make test/rails a symlink to that version. -To run with an alternate version of Haml & Sass, make test/haml a symlink to that version. - -x -4 -send -s -20 -rspec/core/rake_task -x -5 -RSpec -n -x -4 -Core -x -8 -RakeTask -x -8 -allocate -x -4 -spec -x -10 -initialize -n -x -4 -rcov -M -1 -p -2 -x -9 -for_block -t -n -x -9 -__block__ -i -15 -57 -19 -0 -15 -20 -0 -2 -13 -18 -2 -49 -0 -1 -15 -11 -I -5 -I -1 -I -1 -I -1 -n -p -1 -x -5 -rcov= -p -5 -I -0 -I -25 -I -4 -I -26 -I -f -x -35 -/Users/sdavis/Work/compass/Rakefile -p -1 -x -4 -spec -x -9 -LoadError -n -x -3 -=== -s -69 -Rspec (or a dependency) is not available. Try running bundler install -x -4 -puts -s -34 -Compile Examples into HTML and CSS -x -4 -desc -x -8 -examples -M -1 -p -2 -x -9 -for_block -t -n -x -9 -__block__ -i -135 -7 -0 -64 -19 -0 -15 -45 -1 -2 -20 -0 -49 -3 -1 -13 -9 -42 -15 -99 -43 -4 -7 -5 -49 -6 -1 -20 -0 -7 -7 -64 -81 -8 -49 -9 -1 -10 -41 -2 -8 -42 -3 -9 -73 -5 -7 -10 -64 -47 -49 -11 -1 -15 -99 -43 -4 -7 -5 -49 -6 -1 -20 -0 -7 -7 -64 -81 -8 -49 -12 -1 -8 -74 -1 -15 -5 -7 -13 -64 -47 -49 -14 -1 -15 -5 -7 -15 -64 -47 -49 -14 -1 -15 -5 -7 -16 -64 -47 -49 -14 -1 -15 -5 -7 -17 -64 -47 -49 -14 -1 -15 -5 -7 -18 -64 -47 -49 -14 -1 -15 -45 -19 -20 -7 -21 -64 -49 -6 -1 -56 -22 -50 -23 -0 -11 -I -5 -I -1 -I -0 -I -0 -I --2 -p -24 -s -10 -tests/haml -x -4 -File -n -x -7 -exists? -x -7 -Globals -x -2 -$: -x -2 -[] -s -4 -/lib -x -1 -+ -x -8 -include? -s -21 -[ using linked Haml ] -x -4 -puts -x -7 -unshift -s -4 -haml -x -7 -require -s -4 -sass -s -8 -pathname -s -7 -compass -s -12 -compass/exec -x -8 -FileList -n -s -10 -examples/* -M -1 -p -2 -x -9 -for_block -t -n -x -9 -__block__ -i -91 -57 -19 -0 -15 -45 -0 -1 -20 -0 -49 -2 -1 -9 -17 -1 -8 -19 -1 -11 -15 -5 -7 -3 -20 -0 -47 -101 -4 -63 -2 -47 -49 -5 -1 -15 -5 -7 -6 -64 -7 -7 -20 -0 -47 -101 -4 -63 -2 -49 -8 -0 -49 -9 -1 -47 -49 -5 -1 -15 -45 -10 -11 -20 -0 -56 -12 -50 -13 -1 -15 -45 -14 -15 -20 -0 -47 -101 -4 -7 -16 -63 -2 -49 -17 -1 -56 -18 -50 -19 -0 -11 -I -6 -I -1 -I -1 -I -1 -n -p -20 -x -4 -File -n -x -10 -directory? -s -11 - -Compiling -x -4 -to_s -x -4 -puts -s -1 -= -s -10 -Compiling -x -6 -length -x -1 -* -x -3 -Dir -n -M -1 -p -2 -x -9 -for_block -t -n -x -9 -__block__ -i -71 -45 -0 -1 -7 -2 -64 -49 -3 -1 -9 -21 -5 -7 -2 -64 -47 -49 -4 -1 -8 -22 -1 -15 -45 -5 -6 -43 -7 -43 -8 -13 -71 -9 -47 -9 -56 -47 -49 -10 -0 -13 -7 -11 -64 -7 -12 -64 -35 -2 -47 -49 -13 -1 -15 -8 -67 -7 -11 -64 -7 -12 -64 -35 -2 -49 -9 -1 -49 -14 -0 -11 -I -5 -I -0 -I -0 -I -0 -I --2 -p -15 -x -4 -File -n -s -12 -bootstrap.rb -x -7 -exists? -x -4 -load -x -7 -Compass -n -x -4 -Exec -x -12 -SubCommandUI -x -3 -new -x -8 -allocate -s -7 -compile -s -7 ---force -x -10 -initialize -x -4 -run! -p -5 -I -0 -I -3f -I -17 -I -40 -I -47 -x -35 -/Users/sdavis/Work/compass/Rakefile -p -0 -x -5 -chdir -x -8 -FileList -n -s -10 -/**/*.haml -x -2 -[] -M -1 -p -2 -x -9 -for_block -t -n -x -9 -__block__ -i -153 -57 -19 -0 -15 -20 -0 -44 -43 -0 -78 -7 -1 -49 -2 -2 -49 -3 -1 -19 -1 -15 -45 -4 -5 -43 -6 -13 -71 -2 -47 -9 -70 -47 -49 -7 -0 -13 -5 -20 -0 -47 -49 -8 -1 -49 -9 -0 -44 -43 -10 -79 -49 -11 -1 -13 -7 -12 -20 -0 -49 -13 -2 -15 -47 -49 -14 -2 -15 -8 -99 -5 -20 -0 -47 -49 -8 -1 -49 -9 -0 -44 -43 -10 -79 -49 -11 -1 -13 -7 -12 -20 -0 -49 -13 -2 -15 -49 -2 -2 -19 -2 -15 -5 -7 -15 -45 -16 -17 -20 -1 -49 -18 -1 -47 -101 -19 -63 -2 -47 -49 -20 -1 -15 -5 -20 -1 -7 -21 -64 -47 -49 -8 -2 -19 -3 -15 -20 -3 -20 -2 -49 -22 -0 -49 -23 -1 -15 -20 -3 -49 -24 -0 -11 -I -c -I -4 -I -1 -I -1 -n -p -25 -x -5 -Range -I --6 -x -3 -new -x -2 -[] -x -4 -Haml -n -x -6 -Engine -x -8 -allocate -x -4 -open -x -4 -read -x -4 -Hash -x -16 -new_from_literal -x -8 -filename -x -3 -[]= -x -10 -initialize -s -10 - haml -x -4 -File -n -x -8 -basename -x -4 -to_s -x -4 -puts -s -1 -w -x -6 -render -x -5 -write -x -5 -close -p -15 -I -0 -I -43 -I -4 -I -44 -I -15 -I -45 -I -66 -I -46 -I -7b -I -47 -I -88 -I -48 -I -93 -I -49 -I -99 -x -35 -/Users/sdavis/Work/compass/Rakefile -p -4 -x -9 -haml_file -x -8 -basename -x -6 -engine -x -6 -output -x -4 -each -p -13 -I -0 -I -3a -I -4 -I -3b -I -14 -I -3c -I -23 -I -3d -I -3b -I -3e -I -46 -I -43 -I -5b -x -35 -/Users/sdavis/Work/compass/Rakefile -p -1 -x -7 -example -x -4 -each -p -23 -I -0 -I -30 -I -6 -I -31 -I -2c -I -32 -I -35 -I -33 -I -49 -I -31 -I -4b -I -35 -I -54 -I -36 -I -5d -I -37 -I -66 -I -38 -I -6f -I -39 -I -78 -I -3a -I -87 -x -35 -/Users/sdavis/Work/compass/Rakefile -p -1 -x -11 -linked_haml -M -1 -p -2 -x -9 -for_block -t -n -x -9 -__block__ -i -19 -5 -7 -0 -64 -47 -49 -1 -1 -15 -5 -7 -2 -56 -3 -47 -50 -4 -1 -11 -I -4 -I -0 -I -0 -I -0 -I --2 -p -5 -s -32 -clean up the example directories -x -4 -desc -x -5 -clean -M -1 -p -2 -x -9 -for_block -t -n -x -9 -__block__ -i -24 -5 -7 -0 -64 -47 -49 -1 -1 -15 -45 -2 -3 -7 -4 -64 -49 -5 -1 -56 -6 -50 -7 -0 -11 -I -3 -I -0 -I -0 -I -0 -I --2 -p -8 -s -17 -Cleaning Examples -x -4 -puts -x -3 -Dir -n -s -19 -examples/*/clean.rb -x -4 -glob -M -1 -p -2 -x -9 -for_block -t -n -x -9 -__block__ -i -12 -57 -19 -0 -15 -5 -20 -0 -47 -49 -0 -1 -11 -I -4 -I -1 -I -1 -I -1 -n -p -1 -x -4 -load -p -5 -I -0 -I -52 -I -4 -I -53 -I -c -x -35 -/Users/sdavis/Work/compass/Rakefile -p -1 -x -7 -cleaner -x -4 -each -p -5 -I -0 -I -51 -I -9 -I -52 -I -18 -x -35 -/Users/sdavis/Work/compass/Rakefile -p -0 -x -4 -task -p -5 -I -0 -I -4f -I -9 -I -50 -I -13 -x -35 -/Users/sdavis/Work/compass/Rakefile -p -0 -x -9 -namespace -s -16 -gemspec:generate -s -14 -examples:clean -x -3 -git -M -1 -p -2 -x -9 -for_block -t -n -x -9 -__block__ -i -10 -5 -7 -0 -56 -1 -47 -50 -2 -1 -11 -I -4 -I -0 -I -0 -I -0 -I --2 -p -3 -x -5 -clean -M -1 -p -2 -x -9 -for_block -t -n -x -9 -__block__ -i -15 -5 -7 -0 -64 -7 -1 -64 -7 -2 -64 -47 -49 -3 -3 -11 -I -5 -I -0 -I -0 -I -0 -I --2 -p -4 -s -3 -git -s -5 -clean -s -4 --fdx -x -2 -sh -p -3 -I -0 -I -5c -I -f -x -35 -/Users/sdavis/Work/compass/Rakefile -p -0 -x -4 -task -p -3 -I -0 -I -5b -I -a -x -35 -/Users/sdavis/Work/compass/Rakefile -p -0 -s -13 -rcov/rcovtask -M -1 -p -2 -x -9 -for_block -t -n -x -9 -__block__ -i -47 -45 -0 -1 -43 -2 -43 -3 -7 -4 -56 -5 -50 -6 -1 -15 -45 -7 -8 -43 -9 -7 -10 -56 -11 -50 -6 -1 -15 -5 -7 -12 -64 -47 -49 -13 -1 -15 -5 -7 -14 -56 -15 -47 -50 -16 -1 -11 -I -4 -I -0 -I -0 -I -0 -I --2 -p -17 -x -8 -Cucumber -n -x -4 -Rake -x -4 -Task -x -8 -cucumber -M -1 -p -2 -x -9 -for_block -t -n -x -9 -__block__ -i -51 -57 -19 -0 -15 -20 -0 -2 -13 -18 -2 -49 -0 -1 -15 -15 -20 -0 -7 -1 -64 -7 -2 -64 -7 -3 -64 -7 -4 -64 -35 -4 -13 -18 -2 -49 -5 -1 -15 -15 -20 -0 -49 -6 -0 -7 -7 -64 -49 -8 -1 -11 -I -7 -I -1 -I -1 -I -1 -n -p -9 -x -5 -rcov= -s -9 ---exclude -s -34 -osx\/objc,gems\/,spec\/,features\/ -s -11 ---aggregate -s -13 -coverage.data -x -10 -rcov_opts= -x -9 -rcov_opts -s -13 --o "coverage" -x -2 -<< -p -9 -I -0 -I -65 -I -4 -I -66 -I -f -I -67 -I -27 -I -68 -I -33 -x -35 -/Users/sdavis/Work/compass/Rakefile -p -1 -x -1 -t -x -3 -new -x -4 -Rcov -n -x -8 -RcovTask -x -5 -units -M -1 -p -2 -x -9 -for_block -t -n -x -9 -__block__ -i -112 -57 -19 -0 -15 -20 -0 -49 -0 -0 -7 -1 -64 -49 -2 -1 -15 -45 -3 -4 -7 -5 -64 -49 -6 -1 -19 -1 -15 -20 -1 -7 -7 -64 -7 -8 -64 -49 -9 -2 -15 -20 -0 -20 -1 -13 -18 -2 -49 -10 -1 -15 -15 -20 -0 -7 -11 -64 -13 -18 -2 -49 -12 -1 -15 -15 -20 -0 -2 -13 -18 -2 -49 -13 -1 -15 -15 -20 -0 -7 -14 -64 -7 -15 -64 -7 -16 -64 -7 -17 -64 -35 -4 -13 -18 -2 -49 -18 -1 -15 -15 -20 -0 -49 -19 -0 -7 -20 -64 -49 -2 -1 -11 -I -8 -I -2 -I -1 -I -1 -n -p -21 -x -4 -libs -s -3 -lib -x -2 -<< -x -8 -FileList -n -s -17 -test/**/*_test.rb -x -2 -[] -s -12 -test/rails/* -s -11 -test/haml/* -x -7 -exclude -x -8 -pattern= -s -8 -coverage -x -11 -output_dir= -x -8 -verbose= -s -9 ---exclude -s -34 -osx\/objc,gems\/,spec\/,features\/ -s -11 ---aggregate -s -13 -coverage.data -x -10 -rcov_opts= -x -9 -rcov_opts -s -29 --o "coverage" --sort coverage -p -19 -I -0 -I -6b -I -4 -I -6c -I -10 -I -6d -I -1c -I -6e -I -28 -I -6f -I -34 -I -70 -I -41 -I -71 -I -4c -I -72 -I -64 -I -73 -I -70 -x -35 -/Users/sdavis/Work/compass/Rakefile -p -2 -x -4 -rcov -x -10 -test_files -s -59 -Run both specs and features to generate aggregated coverage -x -4 -desc -x -3 -all -M -1 -p -2 -x -9 -for_block -t -n -x -9 -__block__ -i -57 -57 -19 -0 -15 -45 -0 -1 -7 -2 -64 -49 -3 -1 -9 -25 -5 -7 -2 -64 -47 -49 -4 -1 -8 -26 -1 -15 -45 -5 -6 -43 -7 -7 -8 -64 -49 -9 -1 -49 -10 -0 -15 -45 -5 -11 -43 -7 -7 -12 -64 -49 -9 -1 -49 -10 -0 -11 -I -4 -I -1 -I -1 -I -1 -n -p -13 -x -4 -File -n -s -13 -coverage.data -x -6 -exist? -x -2 -rm -x -4 -Rake -n -x -4 -Task -s -10 -rcov:units -x -2 -[] -x -6 -invoke -n -s -13 -rcov:cucumber -p -9 -I -0 -I -78 -I -4 -I -79 -I -1b -I -7a -I -2a -I -7b -I -39 -x -35 -/Users/sdavis/Work/compass/Rakefile -p -1 -x -1 -t -x -4 -task -p -9 -I -0 -I -65 -I -f -I -6b -I -1c -I -77 -I -25 -I -78 -I -2f -x -35 -/Users/sdavis/Work/compass/Rakefile -p -0 -n -s -9 -WARNING: -x -4 -to_s -p -61 -I -0 -I -1 -I -9 -I -2 -I -12 -I -3 -I -19 -I -4 -I -22 -I -8 -I -3c -I -a -I -45 -I -b -I -4e -I -c -I -57 -I -d -I -60 -I -f -I -6f -I -13 -I -7c -I -1b -I -8f -I -21 -I -9f -I -23 -I -c0 -I -25 -I -cf -I -29 -I -ec -I -2a -I -f9 -I -2b -I -10d -I -2e -I -116 -I -2f -I -120 -I -4e -I -12a -I -58 -I -142 -I -5a -I -14c -I -62 -I -15c -I -63 -I -165 -I -64 -I -176 -I -7e -I -183 -I -80 -I -184 -I -7e -I -187 -I -7f -I -1a3 -x -35 -/Users/sdavis/Work/compass/Rakefile -p -1 -x -1 -e diff --git a/lib/compass/version.rbc b/lib/compass/version.rbc deleted file mode 100644 index 025b2434..00000000 --- a/lib/compass/version.rbc +++ /dev/null @@ -1,1259 +0,0 @@ -!RBIX -10937318184790222022 -x -M -1 -n -n -x -10 -__script__ -i -28 -99 -7 -0 -65 -49 -1 -2 -13 -99 -12 -7 -2 -12 -7 -3 -12 -65 -12 -49 -4 -4 -15 -49 -2 -0 -15 -2 -11 -I -6 -I -0 -I -0 -I -0 -n -p -5 -x -7 -Compass -x -11 -open_module -x -15 -__module_init__ -M -1 -n -n -x -7 -Compass -i -50 -5 -66 -99 -7 -0 -65 -49 -1 -2 -13 -99 -12 -7 -2 -12 -7 -3 -12 -65 -12 -49 -4 -4 -15 -49 -2 -0 -15 -5 -45 -5 -6 -43 -0 -47 -49 -7 -1 -15 -99 -7 -8 -7 -9 -65 -5 -49 -4 -4 -11 -I -6 -I -0 -I -0 -I -0 -n -p -10 -x -7 -Version -x -11 -open_module -x -15 -__module_init__ -M -1 -n -n -x -7 -Version -i -76 -5 -66 -99 -7 -0 -7 -1 -65 -67 -49 -2 -0 -49 -3 -4 -15 -5 -48 -4 -15 -99 -7 -5 -7 -6 -65 -67 -49 -2 -0 -49 -3 -4 -15 -99 -7 -7 -7 -8 -65 -67 -49 -2 -0 -49 -3 -4 -15 -99 -7 -9 -7 -10 -65 -67 -49 -2 -0 -49 -3 -4 -15 -99 -7 -11 -7 -12 -65 -67 -49 -2 -0 -49 -3 -4 -11 -I -5 -I -0 -I -0 -I -0 -n -p -13 -x -7 -version -M -1 -n -n -x -7 -version -i -23 -5 -7 -0 -49 -1 -1 -9 -12 -7 -2 -8 -13 -1 -9 -19 -39 -0 -8 -22 -5 -48 -3 -11 -I -2 -I -0 -I -0 -I -0 -n -p -4 -x -8 -@version -x -31 -__instance_variable_defined_p__ -s -17 -instance-variable -x -12 -read_version -p -9 -I --1 -I -9 -I -0 -I -a -I -f -I -b -I -13 -I -d -I -17 -x -49 -/Users/sdavis/Work/compass/lib/compass/version.rb -p -0 -x -17 -method_visibility -x -15 -add_defn_method -x -9 -protected -x -5 -scope -M -1 -n -n -x -5 -scope -i -25 -45 -0 -1 -45 -0 -2 -65 -49 -3 -0 -49 -4 -1 -7 -5 -64 -7 -5 -64 -20 -0 -49 -6 -4 -11 -I -6 -I -1 -I -1 -I -1 -n -p -7 -x -4 -File -n -n -x -11 -active_path -x -7 -dirname -s -2 -.. -x -4 -join -p -5 -I --1 -I -13 -I -0 -I -14 -I -19 -x -49 -/Users/sdavis/Work/compass/lib/compass/version.rb -p -1 -x -4 -file -x -12 -read_version -M -1 -n -n -x -12 -read_version -i -262 -5 -7 -0 -64 -47 -49 -1 -1 -15 -45 -2 -3 -45 -4 -5 -5 -7 -6 -64 -47 -49 -7 -1 -49 -8 -1 -49 -9 -1 -38 -10 -15 -39 -10 -7 -11 -39 -10 -7 -12 -49 -13 -1 -13 -18 -3 -49 -14 -2 -15 -15 -39 -10 -7 -15 -39 -10 -7 -16 -49 -13 -1 -47 -101 -17 -7 -18 -39 -10 -7 -19 -49 -13 -1 -47 -101 -17 -63 -3 -13 -18 -3 -49 -14 -2 -15 -15 -39 -10 -7 -12 -49 -13 -1 -9 -122 -39 -10 -7 -15 -49 -13 -1 -7 -18 -39 -10 -7 -12 -49 -13 -1 -47 -101 -17 -63 -2 -49 -20 -1 -8 -123 -1 -15 -39 -10 -7 -21 -49 -13 -1 -9 -159 -39 -10 -7 -15 -49 -13 -1 -7 -18 -39 -10 -7 -21 -49 -13 -1 -47 -101 -17 -63 -2 -49 -20 -1 -8 -160 -1 -15 -39 -10 -7 -22 -49 -13 -1 -9 -196 -39 -10 -7 -15 -49 -13 -1 -7 -18 -39 -10 -7 -22 -49 -13 -1 -47 -101 -17 -63 -2 -49 -20 -1 -8 -197 -1 -15 -45 -23 -24 -7 -25 -64 -49 -13 -1 -10 -212 -2 -8 -213 -3 -13 -9 -222 -15 -5 -48 -26 -19 -0 -9 -257 -39 -10 -7 -15 -49 -13 -1 -7 -18 -20 -0 -44 -43 -27 -78 -4 -6 -49 -28 -2 -49 -13 -1 -47 -101 -17 -63 -2 -49 -20 -1 -8 -258 -1 -15 -39 -10 -11 -I -7 -I -1 -I -0 -I -0 -n -p -29 -s -4 -yaml -x -7 -require -x -4 -YAML -n -x -4 -File -n -s -11 -VERSION.yml -x -5 -scope -x -4 -read -x -4 -load -x -8 -@version -x -5 -teeny -x -5 -patch -x -2 -[] -x -3 -[]= -x -6 -string -x -5 -major -x -4 -to_s -s -1 -. -x -5 -minor -x -2 -<< -x -5 -state -x -5 -build -x -3 -ENV -n -s -8 -OFFICIAL -x -8 -revision -x -5 -Range -x -3 -new -p -25 -I --1 -I -17 -I -0 -I -18 -I -9 -I -19 -I -20 -I -1a -I -33 -I -1b -I -57 -I -1c -I -7c -I -1d -I -a1 -I -1e -I -c6 -I -1f -I -e0 -I -20 -I -101 -I -1f -I -103 -I -22 -I -106 -x -49 -/Users/sdavis/Work/compass/lib/compass/version.rb -p -1 -x -1 -r -x -8 -revision -M -1 -n -n -x -8 -revision -i -4 -5 -48 -0 -11 -I -1 -I -0 -I -0 -I -0 -n -p -1 -x -17 -revision_from_git -p -5 -I --1 -I -25 -I -0 -I -26 -I -4 -x -49 -/Users/sdavis/Work/compass/lib/compass/version.rb -p -0 -x -17 -revision_from_git -M -1 -n -n -x -17 -revision_from_git -i -97 -45 -0 -1 -5 -7 -2 -64 -47 -49 -3 -1 -49 -4 -1 -9 -95 -45 -0 -5 -5 -7 -2 -64 -47 -49 -3 -1 -49 -6 -1 -49 -7 -0 -19 -0 -15 -20 -0 -7 -8 -13 -70 -9 -56 -15 -44 -43 -9 -7 -10 -78 -49 -11 -2 -6 -8 -49 -12 -1 -9 -92 -45 -0 -13 -5 -7 -14 -4 -5 -78 -98 -15 -2 -47 -101 -16 -63 -2 -47 -49 -3 -1 -49 -6 -1 -49 -7 -0 -19 -0 -8 -93 -1 -8 -96 -1 -11 -I -6 -I -1 -I -0 -I -0 -n -p -17 -x -4 -File -n -s -9 -.git/HEAD -x -5 -scope -x -7 -exists? -n -x -4 -read -x -5 -strip -n -x -6 -Regexp -s -11 -^ref: (.*)$ -x -3 -new -x -2 -=~ -n -s -5 -.git/ -x -24 -regexp_last_match_result -x -4 -to_s -p -15 -I --1 -I -29 -I -0 -I -2a -I -10 -I -2b -I -24 -I -2c -I -3d -I -2d -I -5c -I -2c -I -5f -I -2a -I -61 -x -49 -/Users/sdavis/Work/compass/lib/compass/version.rb -p -1 -x -3 -rev -p -13 -I -2 -I -9 -I -10 -I -11 -I -14 -I -13 -I -22 -I -17 -I -30 -I -25 -I -3e -I -29 -I -4c -x -49 -/Users/sdavis/Work/compass/lib/compass/version.rb -p -0 -x -13 -attach_method -x -7 -Compass -n -x -6 -extend -x -13 -const_missing -M -1 -n -n -x -13 -const_missing -i -22 -20 -0 -7 -0 -83 -1 -9 -18 -5 -48 -2 -7 -3 -49 -4 -1 -8 -21 -54 -89 -5 -11 -I -3 -I -1 -I -1 -I -1 -n -p -6 -x -7 -VERSION -x -2 -== -x -7 -version -x -6 -string -x -2 -[] -x -13 -const_missing -p -9 -I --1 -I -33 -I -0 -I -35 -I -8 -I -36 -I -12 -I -38 -I -16 -x -49 -/Users/sdavis/Work/compass/lib/compass/version.rb -p -1 -x -5 -const -p -7 -I -2 -I -2 -I -1c -I -32 -I -27 -I -33 -I -32 -x -49 -/Users/sdavis/Work/compass/lib/compass/version.rb -p -0 -x -13 -attach_method -p -3 -I -0 -I -1 -I -1c -x -49 -/Users/sdavis/Work/compass/lib/compass/version.rb -p -0 From d23e5546d8c0dfd773818853e3b3e952c9499cd9 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Thu, 3 Mar 2011 01:19:49 -0500 Subject: [PATCH 062/223] updated ignore --- .gitignore | 1 + Gemfile.lock | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 8d7173a5..ecc3e275 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ doc-src/.bundle attic devbin .rvmrc +*.rbc diff --git a/Gemfile.lock b/Gemfile.lock index a82f2df5..f786de87 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.2.c0a0b63) + compass (0.11.beta.2.267a5df) chunky_png (~> 0.12.0) sass (>= 3.1.0.alpha.218) From 5a5c30caf4493da957ba90c0fb736549f362ccf2 Mon Sep 17 00:00:00 2001 From: Eric Meyer Date: Mon, 14 Mar 2011 22:50:39 -0600 Subject: [PATCH 063/223] updated font-face a la fontspring, no change in usage --- Gemfile.lock | 2 +- .../stylesheets/compass/css3/_font-face.scss | 19 ++++++++++--------- .../stylesheets/compass/css/fonts.css | 8 ++------ .../stylesheets/compass/sass/fonts.sass | 2 +- 4 files changed, 14 insertions(+), 17 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index b2c857cf..9ff9fa15 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.2.c521908) + compass (0.11.beta.2.132621c) chunky_png (~> 0.12.0) sass (>= 3.1.0.alpha.218) diff --git a/frameworks/compass/stylesheets/compass/css3/_font-face.scss b/frameworks/compass/stylesheets/compass/css3/_font-face.scss index 445dff16..c8475053 100644 --- a/frameworks/compass/stylesheets/compass/css3/_font-face.scss +++ b/frameworks/compass/stylesheets/compass/css3/_font-face.scss @@ -14,19 +14,20 @@ // If you need to generate other formats check out the Font Squirrel // [font generator](http://www.fontsquirrel.com/fontface/generator) -@mixin font-face($name, $font-files, $eot: false) { +@mixin font-face( + $name, + $font-files, + $eot: false +) { + $iefont: unquote("#{$eot}?iefix"); @font-face { font-family: quote($name); - @if $eot { src: font-url($eot); } - src: local("☺"), $font-files; - } - @media screen and (max-device-width: 480px) { - @font-face { - font-family: quote($name); - src: $font-files; + @if $eot { + src: font-url($eot); + $font-files: font-url($iefont) unquote("format('eot')"), $font-files; } + src: $font-files; } - } // EXAMPLE diff --git a/test/fixtures/stylesheets/compass/css/fonts.css b/test/fixtures/stylesheets/compass/css/fonts.css index 8a2196ab..4cbdb33b 100644 --- a/test/fixtures/stylesheets/compass/css/fonts.css +++ b/test/fixtures/stylesheets/compass/css/fonts.css @@ -1,9 +1,5 @@ @charset "UTF-8"; @font-face { font-family: "font1"; - src: local("☺"), url('/tmp/fonts/font1.woff') format('woff'); } - -@media screen and (max-device-width: 480px) { - @font-face { - font-family: "font1"; - src: url('/tmp/fonts/font1.woff') format('woff'); } } + src: url('/tmp/fonts/font1.eot'); + src: url('/tmp/fonts/font1.eot?iefix') format('eot'), url('/tmp/fonts/font1.woff') format('woff'); } diff --git a/test/fixtures/stylesheets/compass/sass/fonts.sass b/test/fixtures/stylesheets/compass/sass/fonts.sass index fdbef5b5..dd191bb1 100644 --- a/test/fixtures/stylesheets/compass/sass/fonts.sass +++ b/test/fixtures/stylesheets/compass/sass/fonts.sass @@ -1,3 +1,3 @@ @import compass/css3/font-face -+font-face("font1", font-files("font1.woff", woff)) \ No newline at end of file ++font-face("font1", font-files("font1.woff", woff), "font1.eot") \ No newline at end of file From 40d0e623d049c11d25de14266d4a590fef51fe7f Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 14 Mar 2011 16:08:35 -0700 Subject: [PATCH 064/223] Use a single staleness checker during a compile run to speed up dependency checking. --- lib/compass/compiler.rb | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/compass/compiler.rb b/lib/compass/compiler.rb index 086e1d3b..cc887a70 100644 --- a/lib/compass/compiler.rb +++ b/lib/compass/compiler.rb @@ -3,7 +3,7 @@ module Compass include Actions - attr_accessor :working_path, :from, :to, :options + attr_accessor :working_path, :from, :to, :options, :staleness_checker, :importer def initialize(working_path, from, to, options) self.working_path = working_path @@ -12,6 +12,8 @@ module Compass self.options = options self.options[:cache_location] ||= determine_cache_location Compass.configure_sass_plugin! + self.importer = Sass::Importers::Filesystem.new(from) + self.staleness_checker = Sass::Plugin::StalenessChecker.new(options) end def determine_cache_location @@ -23,6 +25,10 @@ module Compass @sass_files = self.options[:sass_files] || Dir.glob(separate("#{from}/**/#{'[^_]' if exclude_partials}*.s[ac]ss")) end + def relative_stylesheet_name(sass_file) + sass_file[("#{from}/".length)..-1] + end + def stylesheet_name(sass_file) sass_file[("#{from}/".length)..-6] end @@ -42,11 +48,15 @@ module Compass # Returns the sass file that needs to be compiled, if any. def out_of_date? sass_files.zip(css_files).each do |sass_filename, css_filename| - return sass_filename if Sass::Plugin.send(:stylesheet_needs_update?, css_filename, sass_filename) + return sass_filename if needs_update?(css_filename, sass_filename) end false end + def needs_update?(css_filename, sass_filename) + staleness_checker.stylesheet_needs_update?(css_filename, relative_stylesheet_name(sass_filename), importer) + end + # Determines if the configuration file is newer than any css file def new_config? config_file = Compass.detect_configuration_file @@ -123,7 +133,7 @@ module Compass end def should_compile?(sass_filename, css_filename) - options[:force] || Sass::Plugin.send(:stylesheet_needs_update?, css_filename, sass_filename) + options[:force] || needs_update?(css_filename, sass_filename) end # A sass engine for compiling a single file. From ca97c44b6017b3cc16d7966cb540d29db32758de Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Tue, 15 Mar 2011 14:46:54 -0700 Subject: [PATCH 065/223] Update sass dependency for new staleness checker api --- compass.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compass.gemspec b/compass.gemspec index 481db7a2..0003448a 100644 --- a/compass.gemspec +++ b/compass.gemspec @@ -16,7 +16,7 @@ Gem::Specification.new do |gemspec| gemspec.rubygems_version = "1.3.5" gemspec.summary = %q{A Real Stylesheet Framework} - gemspec.add_dependency 'sass', '>= 3.1.0.alpha.218' + gemspec.add_dependency 'sass', '>= 3.1.0.alpha.249' gemspec.add_dependency 'chunky_png', '~> 0.12.0' gemspec.files = %w(README.markdown LICENSE.markdown VERSION.yml Rakefile) From 0d29379b4457e80bc045f98ad7bd1db9626fe9d0 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Tue, 15 Mar 2011 16:03:04 -0700 Subject: [PATCH 066/223] Font face file no longer needs a UTF-8 Charset. --- frameworks/compass/stylesheets/compass/css3/_font-face.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/frameworks/compass/stylesheets/compass/css3/_font-face.scss b/frameworks/compass/stylesheets/compass/css3/_font-face.scss index c8475053..b110d25a 100644 --- a/frameworks/compass/stylesheets/compass/css3/_font-face.scss +++ b/frameworks/compass/stylesheets/compass/css3/_font-face.scss @@ -1,4 +1,3 @@ -@charset "UTF-8"; @import "shared"; // Cross-browser support for @font-face. Supports IE, Gecko, Webkit, Opera. From 7057f0f5bdeaa02fae7dc05fd2ee138c03eef929 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Tue, 15 Mar 2011 17:09:46 -0700 Subject: [PATCH 067/223] Release documentation. --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- doc-src/Gemfile | 2 +- doc-src/Gemfile.lock | 8 ++++---- doc-src/content/CHANGELOG.markdown | 33 ++++++++++++++++++++++-------- 5 files changed, 34 insertions(+), 19 deletions(-) diff --git a/Gemfile b/Gemfile index 5a4d1042..47b93610 100644 --- a/Gemfile +++ b/Gemfile @@ -6,7 +6,7 @@ gem "rspec", "~>2.0.0" gem "rails", "~>3.0.0.rc" gem "compass-validator", "3.0.0" gem "css_parser", "~> 1.0.1" -gem "sass", ">= 3.1.0.alpha.218" +gem "sass", "3.1.0.alpha.249" gem "haml", "~> 3.1.0.alpha" gem "rcov" gem "rubyzip" diff --git a/Gemfile.lock b/Gemfile.lock index 9ff9fa15..3a28704c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,9 +1,9 @@ PATH remote: . specs: - compass (0.11.beta.2.132621c) + compass (0.11.beta.2.0d29379) chunky_png (~> 0.12.0) - sass (>= 3.1.0.alpha.218) + sass (>= 3.1.0.alpha.249) GEM remote: http://rubygems.org/ @@ -105,7 +105,7 @@ GEM ruby-json (1.1.2) ruby-prof (0.9.2) rubyzip (0.9.4) - sass (3.1.0.alpha.221) + sass (3.1.0.alpha.249) term-ansicolor (1.0.5) thor (0.14.6) treetop (1.4.9) @@ -128,4 +128,4 @@ DEPENDENCIES rspec (~> 2.0.0) ruby-prof rubyzip - sass (>= 3.1.0.alpha.218) + sass (= 3.1.0.alpha.249) diff --git a/doc-src/Gemfile b/doc-src/Gemfile index aea55426..5eebcc3e 100644 --- a/doc-src/Gemfile +++ b/doc-src/Gemfile @@ -8,7 +8,7 @@ gem 'mime-types' gem 'serve', "1.0.0" gem 'nokogiri' gem 'coderay' -gem 'sass', ">= 3.1.0.alpha.50" +gem 'sass', ">= 3.1.0.alpha.249" gem 'fssm', '0.1.2' gem 'haml', ">= 3.1.0.alpha.36" gem 'rake' diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index 41698cae..738b38e5 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,9 +8,9 @@ GIT PATH remote: .. specs: - compass (0.11.beta.2.65cf2f9) + compass (0.11.beta.2.0d29379) chunky_png (~> 0.12.0) - sass (>= 3.1.0.alpha.218) + sass (>= 3.1.0.alpha.249) GEM remote: http://rubygems.org/ @@ -34,7 +34,7 @@ GEM rake (0.8.7) rdiscount (1.6.5) ruby-prof (0.9.2) - sass (3.1.0.alpha.221) + sass (3.1.0.caring.0) serve (1.0.0) activesupport (~> 3.0.1) i18n (~> 0.4.1) @@ -62,6 +62,6 @@ DEPENDENCIES rake rdiscount ruby-prof - sass (>= 3.1.0.alpha.50) + sass (>= 3.1.0.alpha.249) serve (= 1.0.0) thor diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index fc7f6811..24917d0f 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -14,25 +14,40 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/ The Documentation for the [latest preview release](http://beta.compass-style.org/) -0.11.beta.3 (UNRELEASED) +0.11.beta.3 (3/15/2011) ------------------------ -* There is a new typography module: Vertical Rhythm. - This makes it easier to align the typography of your page to a common rhythm. + +### Compass CSS3 + +* A new CSS3 mixin for [appearance](/reference/compass/css3/appearance/) was added. +* The font-face mixin has been updated again with the [syntax recommendations + from font-spring](http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax). + The API has not changed. + +### Compass Typography + * Some text-based mixins have been moved from utilities to the new typography module. The old imports are deprecated now. Affected modules: utilities/links, utilities/lists, and utilities/text and their sub-modules. -* You can now register callbacks for compilation events so that you can take - custom actions when they occur. For instance, you might want to notify - Growl when a stylesheet compilation error occurs. +* There is a new typography module: [Vertical Rhythm](/reference/compass/typography/vertical_rhythm/). + This makes it easier to align the typography of your page to a common rhythm. + +### Compass Utilities + +* A new mixin `reset-float` is available in the [float module](/reference/compass/utilities/general/float/#mixin-reset-float) that makes it easier to reset the floats introduced from that module. * A new mixin `reset-float` is available in the [float module](/reference/compass/utilities/general/float/#mixin-reset-float) that makes it easier to reset the floats introduced from that module. -* Reset mixins have been updated based on [Eric Meyer's CSS Reset v2.0](http://meyerweb.com/eric/tools/css/reset/index.html). HTML5 support is included by default. - For the legacy projects, you can adjust your imports to reference the the [legacy reset](/reference/compass/reset/) or [legacy reset utilities](/reference/compass/reset/utilities/). * A new module has been added to create readable text against an arbitrary background color based on the lightness of the background: [compass/utilities/color/contrast](/reference/compass/utilities/color/contrast/). * The comma-delimited-list has been renamed to delimited-list and generalized to accept a delimiter which defaults to a comma. The old function continues to exist, but is deprecated. -* A new CSS3 mixin for [appearance](/reference/compass/css3/appearance/) was added. + +### Compass Internals + +* You can now register callbacks for compilation events so that you can take + custom actions when they occur. For instance, you might want to notify + Growl when a stylesheet compilation error occurs. +* Bug fixes & performance improvements. 0.11.beta.2 (02/01/2011) ------------------------ From 5a2ea40024daefda5295e85ffc03fb8434e4d841 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Tue, 15 Mar 2011 17:10:15 -0700 Subject: [PATCH 068/223] Version bump --- VERSION.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.yml b/VERSION.yml index 669feaac..08c2e2e2 100644 --- a/VERSION.yml +++ b/VERSION.yml @@ -2,4 +2,4 @@ :major: 0 :minor: 11 :state: beta -:build: 2 +:build: 3 From ddea94bb9650db0aaeaa8f5faf4da4227e0ebad2 Mon Sep 17 00:00:00 2001 From: Eric Meyer Date: Wed, 16 Mar 2011 16:11:55 -0600 Subject: [PATCH 069/223] fixed transform-style typo caught by @doctyper --- Gemfile.lock | 2 +- frameworks/compass/stylesheets/compass/css3/_transform.scss | 2 +- test/fixtures/stylesheets/compass/css/transform.css | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 9ff9fa15..df3b38ba 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.2.132621c) + compass (0.11.beta.2.5a5c30c) chunky_png (~> 0.12.0) sass (>= 3.1.0.alpha.218) diff --git a/frameworks/compass/stylesheets/compass/css3/_transform.scss b/frameworks/compass/stylesheets/compass/css3/_transform.scss index e6fa3b4b..1ecd7787 100644 --- a/frameworks/compass/stylesheets/compass/css3/_transform.scss +++ b/frameworks/compass/stylesheets/compass/css3/_transform.scss @@ -201,7 +201,7 @@ $default-skew-y : 5deg !default; // where `style` can be either `flat` or `preserves-3d` // browsers default to `flat`, mixin defaults to `preserves-3d` @mixin transform-style($style: preserves-3d) { - @include experimental(perspective-origin, $style, + @include experimental(transform-style, $style, not -moz, -webkit, not -o, not -ms, not -khtml, official ); } diff --git a/test/fixtures/stylesheets/compass/css/transform.css b/test/fixtures/stylesheets/compass/css/transform.css index 73ba64ec..11509863 100644 --- a/test/fixtures/stylesheets/compass/css/transform.css +++ b/test/fixtures/stylesheets/compass/css/transform.css @@ -40,8 +40,8 @@ perspective-origin: 25% 25%; } .transform-style { - -webkit-perspective-origin: preserves-3d; - perspective-origin: preserves-3d; } + -webkit-transform-style: preserves-3d; + transform-style: preserves-3d; } .backface-visibility { -webkit-backface-visibility: hidden; From 51e21b08b957a7156235dfdb93c40122873d68e0 Mon Sep 17 00:00:00 2001 From: Eric Meyer Date: Wed, 16 Mar 2011 16:32:00 -0600 Subject: [PATCH 070/223] additional transform-style typo and tests fixed --- frameworks/compass/stylesheets/compass/css3/_transform.scss | 6 +++--- test/fixtures/stylesheets/compass/css/transform.css | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frameworks/compass/stylesheets/compass/css3/_transform.scss b/frameworks/compass/stylesheets/compass/css3/_transform.scss index 1ecd7787..ceb18271 100644 --- a/frameworks/compass/stylesheets/compass/css3/_transform.scss +++ b/frameworks/compass/stylesheets/compass/css3/_transform.scss @@ -198,9 +198,9 @@ $default-skew-y : 5deg !default; // // @include transform-style( [ style ] ) // -// where `style` can be either `flat` or `preserves-3d` -// browsers default to `flat`, mixin defaults to `preserves-3d` -@mixin transform-style($style: preserves-3d) { +// where `style` can be either `flat` or `preserve-3d` +// browsers default to `flat`, mixin defaults to `preserve-3d` +@mixin transform-style($style: preserve-3d) { @include experimental(transform-style, $style, not -moz, -webkit, not -o, not -ms, not -khtml, official ); diff --git a/test/fixtures/stylesheets/compass/css/transform.css b/test/fixtures/stylesheets/compass/css/transform.css index 11509863..a1745a52 100644 --- a/test/fixtures/stylesheets/compass/css/transform.css +++ b/test/fixtures/stylesheets/compass/css/transform.css @@ -40,8 +40,8 @@ perspective-origin: 25% 25%; } .transform-style { - -webkit-transform-style: preserves-3d; - transform-style: preserves-3d; } + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; } .backface-visibility { -webkit-backface-visibility: hidden; From 0fdf606ad31c91e5fc7f9a35bb295f3ede2f2e90 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 21 Mar 2011 00:57:07 -0700 Subject: [PATCH 071/223] Rename Download to Install and spruce up the madlib a bit. --- doc-src/Gemfile.lock | 2 +- .../javascripts/{download.js => install.js} | 10 ++++++++- .../content/{download.haml => install.haml} | 21 ++++++++++++++----- .../{_download.scss => _install.scss} | 6 ++++-- doc-src/content/stylesheets/screen.scss | 2 +- doc-src/layouts/partials/main-navigation.haml | 2 +- 6 files changed, 32 insertions(+), 11 deletions(-) rename doc-src/assets/javascripts/{download.js => install.js} (84%) rename doc-src/content/{download.haml => install.haml} (78%) rename doc-src/content/stylesheets/partials/{_download.scss => _install.scss} (62%) diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index 738b38e5..37c68cec 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,7 +8,7 @@ GIT PATH remote: .. specs: - compass (0.11.beta.2.0d29379) + compass (0.11.beta.3.5a2ea40) chunky_png (~> 0.12.0) sass (>= 3.1.0.alpha.249) diff --git a/doc-src/assets/javascripts/download.js b/doc-src/assets/javascripts/install.js similarity index 84% rename from doc-src/assets/javascripts/download.js rename to doc-src/assets/javascripts/install.js index 8ad3b756..6b52b844 100644 --- a/doc-src/assets/javascripts/download.js +++ b/doc-src/assets/javascripts/install.js @@ -45,7 +45,14 @@ function showInstallCommand() { create_command = create_command + " --syntax sass"; } if ($("#options").val() == "customized") { - create_command = create_command + " --sass-dir <sassdir> --css-dir <cssdir> --javascripts-dir <jsdir> --images-dir <imgsdir>"; + $("#directories").show(); + create_command = create_command + + " --sass-dir \"" + $("#sassdir").val() + "\"" + + " --css-dir \"" + $("#cssdir").val() + "\"" + + " --javascripts-dir \"" + $("#jsdir").val() + "\"" + + " --images-dir \"" + $("#imagesdir").val() + "\""; + } else { + $("#directories").hide(); } commands.push(create_command); var instructions = "

" + commands.join("\n") + "
"; @@ -69,6 +76,7 @@ function attachMadlibBehaviors() { } }); $("#existence, #app-type, #framework, #syntax, #options").change(showInstallCommand); + $(".madlib input").keyup(function(){setTimeout(showInstallCommand, 0.1)}); } function setupMadlib() { diff --git a/doc-src/content/download.haml b/doc-src/content/install.haml similarity index 78% rename from doc-src/content/download.haml rename to doc-src/content/install.haml index f1c178f5..8b3769cf 100644 --- a/doc-src/content/download.haml +++ b/doc-src/content/install.haml @@ -1,10 +1,10 @@ --- -title: Download | Compass Documentation -crumb: Download -body_id: download +title: Install the Compass Stylesheet Authoring Framework +crumb: Install +body_id: install --- - content_for :javascripts do - %script(src="/javascripts/download.js") + %script(src="/javascripts/install.js") %p Compass runs on any computer that has ruby installed. @@ -36,7 +36,18 @@ body_id: download %select#options %option{:value => "default"} use compass's recommended %option{:value => "customized"} customize my project's - directory structure. + directory structure. + %h4 Thanks. Now run the following steps in your terminal: %p.note diff --git a/doc-src/content/stylesheets/partials/_download.scss b/doc-src/content/stylesheets/partials/_install.scss similarity index 62% rename from doc-src/content/stylesheets/partials/_download.scss rename to doc-src/content/stylesheets/partials/_install.scss index ddc823ac..353a2df8 100644 --- a/doc-src/content/stylesheets/partials/_download.scss +++ b/doc-src/content/stylesheets/partials/_install.scss @@ -1,8 +1,10 @@ -body#download { +body#install { #steps, p.madlib, p.note, h4 { margin-top: 1em; } p.note { font-size: smaller; font-style: italic; } p.warning { color: #c00; } .customization { display: none; } .customizable .customization { display: inline; } - blockquote { border-left: 2px solid #ccc; text-indent: 0; padding-left: 0.5em; } + blockquote { border-left: 2px solid #ccc; + text-indent: 0; padding-left: 0.5em; } + .customization input { width: 8em; } } \ No newline at end of file diff --git a/doc-src/content/stylesheets/screen.scss b/doc-src/content/stylesheets/screen.scss index cbbbe5ed..48b4c998 100644 --- a/doc-src/content/stylesheets/screen.scss +++ b/doc-src/content/stylesheets/screen.scss @@ -16,7 +16,7 @@ @import "partials/main"; @import "partials/code"; @import "partials/example"; -@import "partials/download"; +@import "partials/install"; @import "syntax/syntax-theme"; diff --git a/doc-src/layouts/partials/main-navigation.haml b/doc-src/layouts/partials/main-navigation.haml index 038d17be..c8cef4d3 100644 --- a/doc-src/layouts/partials/main-navigation.haml +++ b/doc-src/layouts/partials/main-navigation.haml @@ -13,4 +13,4 @@ %li %a{:href => "/get-involved/", :rel=> "get-involved"} Get Involved %li - %a{:href => "/download/", :rel=> "download"} Download + %a{:href => "/install/", :rel=> "install"} Install From 6ff877cbd366892489ef2ded2987d56d6a6323c8 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Mon, 21 Mar 2011 17:14:41 -0400 Subject: [PATCH 072/223] chunky_png gemfile change --- Gemfile | 1 - Gemfile.lock | 77 ++++++++++++++++++++++---------------------- compass.gemspec | 2 +- spec/sprites_spec.rb | 2 +- 4 files changed, 40 insertions(+), 42 deletions(-) diff --git a/Gemfile b/Gemfile index 47b93610..1dab3f61 100644 --- a/Gemfile +++ b/Gemfile @@ -11,7 +11,6 @@ gem "haml", "~> 3.1.0.alpha" gem "rcov" gem "rubyzip" gem "livereload" -gem "chunky_png", "~> 0.12.0" gem "ruby-prof" unless RUBY_PLATFORM == "java" diff --git a/Gemfile.lock b/Gemfile.lock index 3a28704c..e6e7f6fb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,44 +1,44 @@ PATH remote: . specs: - compass (0.11.beta.2.0d29379) - chunky_png (~> 0.12.0) + compass (0.11.beta.3.0fdf606) + chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) GEM remote: http://rubygems.org/ specs: abstract (1.0.0) - actionmailer (3.0.3) - actionpack (= 3.0.3) - mail (~> 2.2.9) - actionpack (3.0.3) - activemodel (= 3.0.3) - activesupport (= 3.0.3) + actionmailer (3.0.5) + actionpack (= 3.0.5) + mail (~> 2.2.15) + actionpack (3.0.5) + activemodel (= 3.0.5) + activesupport (= 3.0.5) builder (~> 2.1.2) erubis (~> 2.6.6) i18n (~> 0.4) rack (~> 1.2.1) rack-mount (~> 0.6.13) - rack-test (~> 0.5.6) + rack-test (~> 0.5.7) tzinfo (~> 0.3.23) - activemodel (3.0.3) - activesupport (= 3.0.3) + activemodel (3.0.5) + activesupport (= 3.0.5) builder (~> 2.1.2) i18n (~> 0.4) - activerecord (3.0.3) - activemodel (= 3.0.3) - activesupport (= 3.0.3) + activerecord (3.0.5) + activemodel (= 3.0.5) + activesupport (= 3.0.5) arel (~> 2.0.2) tzinfo (~> 0.3.23) - activeresource (3.0.3) - activemodel (= 3.0.3) - activesupport (= 3.0.3) - activesupport (3.0.3) - addressable (2.2.2) - arel (2.0.6) + activeresource (3.0.5) + activemodel (= 3.0.5) + activesupport (= 3.0.5) + activesupport (3.0.5) + addressable (2.2.4) + arel (2.0.9) builder (2.1.2) - chunky_png (0.12.0) + chunky_png (1.1.0) compass-validator (3.0.0) css_parser (1.0.1) cucumber (0.9.4) @@ -49,7 +49,7 @@ GEM term-ansicolor (~> 1.0.5) diff-lcs (1.1.2) em-dir-watcher (0.9.4) - em-websocket (0.1.4) + em-websocket (0.2.1) addressable (>= 2.1.1) eventmachine (>= 0.12.9) erubis (2.6.6) @@ -58,36 +58,36 @@ GEM gherkin (2.2.9) json (~> 1.4.6) term-ansicolor (~> 1.0.5) - haml (3.1.0.alpha.36) + haml (3.1.0.alpha.147) i18n (0.5.0) json (1.4.6) - livereload (1.4) + livereload (1.6) em-dir-watcher (>= 0.1) em-websocket (>= 0.1.2) ruby-json (>= 1.1.2) - mail (2.2.12) + mail (2.2.15) activesupport (>= 2.3.6) i18n (>= 0.4.0) mime-types (~> 1.16) treetop (~> 1.4.8) mime-types (1.16) polyglot (0.3.1) - rack (1.2.1) + rack (1.2.2) rack-mount (0.6.13) rack (>= 1.0.0) - rack-test (0.5.6) + rack-test (0.5.7) rack (>= 1.0) - rails (3.0.3) - actionmailer (= 3.0.3) - actionpack (= 3.0.3) - activerecord (= 3.0.3) - activeresource (= 3.0.3) - activesupport (= 3.0.3) + rails (3.0.5) + actionmailer (= 3.0.5) + actionpack (= 3.0.5) + activerecord (= 3.0.5) + activeresource (= 3.0.5) + activesupport (= 3.0.5) bundler (~> 1.0) - railties (= 3.0.3) - railties (3.0.3) - actionpack (= 3.0.3) - activesupport (= 3.0.3) + railties (= 3.0.5) + railties (3.0.5) + actionpack (= 3.0.5) + activesupport (= 3.0.5) rake (>= 0.8.7) thor (~> 0.14.4) rake (0.8.7) @@ -110,13 +110,12 @@ GEM thor (0.14.6) treetop (1.4.9) polyglot (>= 0.3.1) - tzinfo (0.3.23) + tzinfo (0.3.25) PLATFORMS ruby DEPENDENCIES - chunky_png (~> 0.12.0) compass! compass-validator (= 3.0.0) css_parser (~> 1.0.1) diff --git a/compass.gemspec b/compass.gemspec index 0003448a..d491b294 100644 --- a/compass.gemspec +++ b/compass.gemspec @@ -17,7 +17,7 @@ Gem::Specification.new do |gemspec| gemspec.summary = %q{A Real Stylesheet Framework} gemspec.add_dependency 'sass', '>= 3.1.0.alpha.249' - gemspec.add_dependency 'chunky_png', '~> 0.12.0' + gemspec.add_dependency 'chunky_png', '~> 1.1.0' gemspec.files = %w(README.markdown LICENSE.markdown VERSION.yml Rakefile) gemspec.files += Dir.glob("bin/*") diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index 94349518..3a9668d0 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -7,7 +7,7 @@ describe Compass::Sprites do before :each do @images_src_path = File.join(File.dirname(__FILE__), 'test_project', 'public', 'images') @images_tmp_path = File.join(File.dirname(__FILE__), 'test_project', 'public', 'images-tmp') - FileUtils.cp_r @images_src_path, @images_tmp_path + ::FileUtils.cp_r @images_src_path, @images_tmp_path file = StringIO.new("images_path = #{@images_tmp_path.inspect}\n") Compass.add_configuration(file, "sprite_config") Compass.configure_sass_plugin! From d361d5f826627c390b503f2ce3e29e717ea2a3e6 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Mon, 21 Mar 2011 17:18:28 -0400 Subject: [PATCH 073/223] chunky_png gemfile change --- Gemfile | 1 - Gemfile.lock | 77 ++++++++++++++++++++++++------------------------- compass.gemspec | 2 +- 3 files changed, 39 insertions(+), 41 deletions(-) diff --git a/Gemfile b/Gemfile index 47b93610..1dab3f61 100644 --- a/Gemfile +++ b/Gemfile @@ -11,7 +11,6 @@ gem "haml", "~> 3.1.0.alpha" gem "rcov" gem "rubyzip" gem "livereload" -gem "chunky_png", "~> 0.12.0" gem "ruby-prof" unless RUBY_PLATFORM == "java" diff --git a/Gemfile.lock b/Gemfile.lock index 3a28704c..e6e7f6fb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,44 +1,44 @@ PATH remote: . specs: - compass (0.11.beta.2.0d29379) - chunky_png (~> 0.12.0) + compass (0.11.beta.3.0fdf606) + chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) GEM remote: http://rubygems.org/ specs: abstract (1.0.0) - actionmailer (3.0.3) - actionpack (= 3.0.3) - mail (~> 2.2.9) - actionpack (3.0.3) - activemodel (= 3.0.3) - activesupport (= 3.0.3) + actionmailer (3.0.5) + actionpack (= 3.0.5) + mail (~> 2.2.15) + actionpack (3.0.5) + activemodel (= 3.0.5) + activesupport (= 3.0.5) builder (~> 2.1.2) erubis (~> 2.6.6) i18n (~> 0.4) rack (~> 1.2.1) rack-mount (~> 0.6.13) - rack-test (~> 0.5.6) + rack-test (~> 0.5.7) tzinfo (~> 0.3.23) - activemodel (3.0.3) - activesupport (= 3.0.3) + activemodel (3.0.5) + activesupport (= 3.0.5) builder (~> 2.1.2) i18n (~> 0.4) - activerecord (3.0.3) - activemodel (= 3.0.3) - activesupport (= 3.0.3) + activerecord (3.0.5) + activemodel (= 3.0.5) + activesupport (= 3.0.5) arel (~> 2.0.2) tzinfo (~> 0.3.23) - activeresource (3.0.3) - activemodel (= 3.0.3) - activesupport (= 3.0.3) - activesupport (3.0.3) - addressable (2.2.2) - arel (2.0.6) + activeresource (3.0.5) + activemodel (= 3.0.5) + activesupport (= 3.0.5) + activesupport (3.0.5) + addressable (2.2.4) + arel (2.0.9) builder (2.1.2) - chunky_png (0.12.0) + chunky_png (1.1.0) compass-validator (3.0.0) css_parser (1.0.1) cucumber (0.9.4) @@ -49,7 +49,7 @@ GEM term-ansicolor (~> 1.0.5) diff-lcs (1.1.2) em-dir-watcher (0.9.4) - em-websocket (0.1.4) + em-websocket (0.2.1) addressable (>= 2.1.1) eventmachine (>= 0.12.9) erubis (2.6.6) @@ -58,36 +58,36 @@ GEM gherkin (2.2.9) json (~> 1.4.6) term-ansicolor (~> 1.0.5) - haml (3.1.0.alpha.36) + haml (3.1.0.alpha.147) i18n (0.5.0) json (1.4.6) - livereload (1.4) + livereload (1.6) em-dir-watcher (>= 0.1) em-websocket (>= 0.1.2) ruby-json (>= 1.1.2) - mail (2.2.12) + mail (2.2.15) activesupport (>= 2.3.6) i18n (>= 0.4.0) mime-types (~> 1.16) treetop (~> 1.4.8) mime-types (1.16) polyglot (0.3.1) - rack (1.2.1) + rack (1.2.2) rack-mount (0.6.13) rack (>= 1.0.0) - rack-test (0.5.6) + rack-test (0.5.7) rack (>= 1.0) - rails (3.0.3) - actionmailer (= 3.0.3) - actionpack (= 3.0.3) - activerecord (= 3.0.3) - activeresource (= 3.0.3) - activesupport (= 3.0.3) + rails (3.0.5) + actionmailer (= 3.0.5) + actionpack (= 3.0.5) + activerecord (= 3.0.5) + activeresource (= 3.0.5) + activesupport (= 3.0.5) bundler (~> 1.0) - railties (= 3.0.3) - railties (3.0.3) - actionpack (= 3.0.3) - activesupport (= 3.0.3) + railties (= 3.0.5) + railties (3.0.5) + actionpack (= 3.0.5) + activesupport (= 3.0.5) rake (>= 0.8.7) thor (~> 0.14.4) rake (0.8.7) @@ -110,13 +110,12 @@ GEM thor (0.14.6) treetop (1.4.9) polyglot (>= 0.3.1) - tzinfo (0.3.23) + tzinfo (0.3.25) PLATFORMS ruby DEPENDENCIES - chunky_png (~> 0.12.0) compass! compass-validator (= 3.0.0) css_parser (~> 1.0.1) diff --git a/compass.gemspec b/compass.gemspec index 0003448a..d491b294 100644 --- a/compass.gemspec +++ b/compass.gemspec @@ -17,7 +17,7 @@ Gem::Specification.new do |gemspec| gemspec.summary = %q{A Real Stylesheet Framework} gemspec.add_dependency 'sass', '>= 3.1.0.alpha.249' - gemspec.add_dependency 'chunky_png', '~> 0.12.0' + gemspec.add_dependency 'chunky_png', '~> 1.1.0' gemspec.files = %w(README.markdown LICENSE.markdown VERSION.yml Rakefile) gemspec.files += Dir.glob("bin/*") From 691c6718b52d391dbe3b070f85c4ed47aab2b22d Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Mon, 21 Mar 2011 17:38:15 -0400 Subject: [PATCH 074/223] updated for chunky png 1.1.0 --- Gemfile.lock | 2 +- .../sass_extensions/sprites/engines/chunky_png_engine.rb | 2 +- spec/sprites_spec.rb | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index cf35e06b..f1945b11 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.3.a4d4319) + compass (0.11.beta.3.acf9c66) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb b/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb index f9a43e8a..3990cd45 100644 --- a/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb +++ b/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb @@ -20,7 +20,7 @@ module Compass else x = image.left - (image.left / image.width).ceil * image.width while x < width do - output_png.replace input_png, x, image.top + output_png.replace! input_png, x, image.top x += image.width end end diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index 94349518..700610eb 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -88,7 +88,7 @@ describe Compass::Sprites do } CSS image_size('squares-*.png').should == [20, 30] - image_md5('squares-*.png').should == 'fcc93d7b279c2ad6898fbca49cbd01e1' + image_md5('squares-*.png').should == 'd1aff60ac2f10dcc9859309d36f7e9a0' end it "should generate sprite classes with dimensions" do @@ -311,7 +311,7 @@ describe Compass::Sprites do } CSS image_size('squares-*.png').should == [20, 30] - image_md5('squares-*.png').should == '652b67f5e9092520d6f26caae7e18012' + image_md5('squares-*.png').should == 'd1aff60ac2f10dcc9859309d36f7e9a0' end it "should use position adjustments in mixins" do @@ -349,7 +349,7 @@ describe Compass::Sprites do } CSS image_size('squares-*.png').should == [20, 30] - image_md5('squares-*.png').should == '652b67f5e9092520d6f26caae7e18012' + image_md5('squares-*.png').should == 'd1aff60ac2f10dcc9859309d36f7e9a0' end it "should repeat the image" do @@ -396,7 +396,7 @@ describe Compass::Sprites do } CSS image_size('squares-*.png').should == [30, 30] - image_md5('squares-*.png').should == '2fb19ef9c83018c93c6f147af3a56cb2' + image_md5('squares-*.png').should == '33b385d541ce887441606e75467fd7ef' end it "should provide a nice errors for lemonade's old users" do From 01b9cd3a46f24fe992dab62442324e502312b00e Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Mon, 21 Mar 2011 18:07:53 -0400 Subject: [PATCH 075/223] gemfile --- Gemfile.lock | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index f1945b11..a86923d6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.3.acf9c66) + compass (0.11.beta.3.691c671) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) @@ -55,12 +55,17 @@ GEM erubis (2.6.6) abstract (>= 1.0.0) eventmachine (0.12.10) + eventmachine (0.12.10-java) gherkin (2.2.9) json (~> 1.4.6) term-ansicolor (~> 1.0.5) + gherkin (2.2.9-java) + json (~> 1.4.6) + term-ansicolor (~> 1.0.5) haml (3.1.0.alpha.147) i18n (0.5.0) json (1.4.6) + json (1.4.6-java) livereload (1.6) em-dir-watcher (>= 0.1) em-websocket (>= 0.1.2) @@ -92,6 +97,7 @@ GEM thor (~> 0.14.4) rake (0.8.7) rcov (0.9.9) + rcov (0.9.9-java) rspec (2.0.1) rspec-core (~> 2.0.1) rspec-expectations (~> 2.0.1) @@ -103,7 +109,6 @@ GEM rspec-core (~> 2.0.1) rspec-expectations (~> 2.0.1) ruby-json (1.1.2) - ruby-prof (0.9.2) rubyzip (0.9.4) sass (3.1.0.alpha.249) term-ansicolor (1.0.5) @@ -113,6 +118,7 @@ GEM tzinfo (0.3.25) PLATFORMS + java ruby DEPENDENCIES @@ -125,6 +131,5 @@ DEPENDENCIES rails (~> 3.0.0.rc) rcov rspec (~> 2.0.0) - ruby-prof rubyzip sass (= 3.1.0.alpha.249) From f7d0079f27aede34b3f6626bea153dfa1b77c3d7 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Mon, 21 Mar 2011 18:36:55 -0400 Subject: [PATCH 076/223] file cleanup --- lib/compass/sass_extensions/sprites/base.rb | 2 -- lib/compass/sass_extensions/sprites/engines.rb | 1 + .../sass_extensions/sprites/engines/chunky_png_engine.rb | 2 +- lib/compass/sass_extensions/sprites/image.rb | 2 -- 4 files changed, 2 insertions(+), 5 deletions(-) create mode 100644 lib/compass/sass_extensions/sprites/engines.rb diff --git a/lib/compass/sass_extensions/sprites/base.rb b/lib/compass/sass_extensions/sprites/base.rb index 112db850..a2e16f75 100644 --- a/lib/compass/sass_extensions/sprites/base.rb +++ b/lib/compass/sass_extensions/sprites/base.rb @@ -1,5 +1,3 @@ -require 'compass/sass_extensions/sprites/image' -require 'compass/sass_extensions/sprites/engines/chunky_png_engine' module Compass module SassExtensions module Sprites diff --git a/lib/compass/sass_extensions/sprites/engines.rb b/lib/compass/sass_extensions/sprites/engines.rb new file mode 100644 index 00000000..26a73260 --- /dev/null +++ b/lib/compass/sass_extensions/sprites/engines.rb @@ -0,0 +1 @@ +require 'compass/sass_extensions/sprites/engines/chunky_png_engine' \ No newline at end of file diff --git a/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb b/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb index 3990cd45..1483b762 100644 --- a/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb +++ b/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb @@ -16,7 +16,7 @@ module Compass images.each do |image| input_png = ChunkyPNG::Image.from_file(image.file) if image.repeat == "no-repeat" - output_png.replace input_png, image.left, image.top + output_png.replace! input_png, image.left, image.top else x = image.left - (image.left / image.width).ceil * image.width while x < width do diff --git a/lib/compass/sass_extensions/sprites/image.rb b/lib/compass/sass_extensions/sprites/image.rb index f90861e6..07c8cfdd 100644 --- a/lib/compass/sass_extensions/sprites/image.rb +++ b/lib/compass/sass_extensions/sprites/image.rb @@ -1,5 +1,3 @@ -require 'digest/md5' - module Compass module SassExtensions module Sprites From a9b6d8cfde6f4450be7c0896381a846b8ebdda3d Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Mon, 21 Mar 2011 18:37:24 -0400 Subject: [PATCH 077/223] file cleanup --- Gemfile.lock | 4 +++- lib/compass/sass_extensions.rb | 1 + lib/compass/sass_extensions/functions/sprites.rb | 3 --- lib/compass/sass_extensions/sprites.rb | 12 ++++++++++++ lib/compass/sprites.rb | 1 + spec/spec_helper.rb | 1 - spec/sprites_spec.rb | 8 ++++---- 7 files changed, 21 insertions(+), 9 deletions(-) create mode 100644 lib/compass/sass_extensions/sprites.rb diff --git a/Gemfile.lock b/Gemfile.lock index a86923d6..f385792e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.3.691c671) + compass (0.11.beta.3.01b9cd3) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) @@ -109,6 +109,7 @@ GEM rspec-core (~> 2.0.1) rspec-expectations (~> 2.0.1) ruby-json (1.1.2) + ruby-prof (0.9.2) rubyzip (0.9.4) sass (3.1.0.alpha.249) term-ansicolor (1.0.5) @@ -131,5 +132,6 @@ DEPENDENCIES rails (~> 3.0.0.rc) rcov rspec (~> 2.0.0) + ruby-prof rubyzip sass (= 3.1.0.alpha.249) diff --git a/lib/compass/sass_extensions.rb b/lib/compass/sass_extensions.rb index 182717b1..0b89610d 100644 --- a/lib/compass/sass_extensions.rb +++ b/lib/compass/sass_extensions.rb @@ -3,3 +3,4 @@ end require 'compass/sass_extensions/functions' require 'compass/sass_extensions/monkey_patches' +require 'compass/sass_extensions/sprites' diff --git a/lib/compass/sass_extensions/functions/sprites.rb b/lib/compass/sass_extensions/functions/sprites.rb index d51c3395..ba40afd0 100644 --- a/lib/compass/sass_extensions/functions/sprites.rb +++ b/lib/compass/sass_extensions/functions/sprites.rb @@ -1,6 +1,3 @@ -require 'digest/md5' -require 'compass/sass_extensions/sprites/base' - module Compass::SassExtensions::Functions::Sprites ZERO = Sass::Script::Number::new(0) diff --git a/lib/compass/sass_extensions/sprites.rb b/lib/compass/sass_extensions/sprites.rb new file mode 100644 index 00000000..0bf1f30d --- /dev/null +++ b/lib/compass/sass_extensions/sprites.rb @@ -0,0 +1,12 @@ +require 'digest/md5' +require 'compass/sass_extensions/sprites/image' +require 'compass/sass_extensions/sprites/base' +require 'compass/sass_extensions/sprites/engines' + +module Compass + module SassExtensions + module Sprites + + end + end +end \ No newline at end of file diff --git a/lib/compass/sprites.rb b/lib/compass/sprites.rb index c3ac2d55..26e48159 100644 --- a/lib/compass/sprites.rb +++ b/lib/compass/sprites.rb @@ -46,6 +46,7 @@ $#{name}-sprite-dimensions: false !default; $#{name}-position: 0% !default; $#{name}-spacing: 0 !default; $#{name}-repeat: no-repeat !default; +$#{name}-prefix: '' !default; #{skip_overrides ? "$#{name}-sprites: sprite-map(\"#{uri}\");" : generate_overrides(uri, name, images) } diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 4877c67b..ccc17e29 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,6 +1,5 @@ $LOAD_PATH.unshift(File.dirname(__FILE__)) $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) - require 'rubygems' require 'compass' require 'rspec' diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index 700610eb..94349518 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -88,7 +88,7 @@ describe Compass::Sprites do } CSS image_size('squares-*.png').should == [20, 30] - image_md5('squares-*.png').should == 'd1aff60ac2f10dcc9859309d36f7e9a0' + image_md5('squares-*.png').should == 'fcc93d7b279c2ad6898fbca49cbd01e1' end it "should generate sprite classes with dimensions" do @@ -311,7 +311,7 @@ describe Compass::Sprites do } CSS image_size('squares-*.png').should == [20, 30] - image_md5('squares-*.png').should == 'd1aff60ac2f10dcc9859309d36f7e9a0' + image_md5('squares-*.png').should == '652b67f5e9092520d6f26caae7e18012' end it "should use position adjustments in mixins" do @@ -349,7 +349,7 @@ describe Compass::Sprites do } CSS image_size('squares-*.png').should == [20, 30] - image_md5('squares-*.png').should == 'd1aff60ac2f10dcc9859309d36f7e9a0' + image_md5('squares-*.png').should == '652b67f5e9092520d6f26caae7e18012' end it "should repeat the image" do @@ -396,7 +396,7 @@ describe Compass::Sprites do } CSS image_size('squares-*.png').should == [30, 30] - image_md5('squares-*.png').should == '33b385d541ce887441606e75467fd7ef' + image_md5('squares-*.png').should == '2fb19ef9c83018c93c6f147af3a56cb2' end it "should provide a nice errors for lemonade's old users" do From 46eec5362d8532bb7972e7d7bf0f6e746096efb9 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Mon, 21 Mar 2011 21:16:55 -0400 Subject: [PATCH 078/223] fixes #253 --- Gemfile.lock | 2 +- lib/compass/sass_extensions/sprites/base.rb | 1 + lib/compass/sass_extensions/sprites/image.rb | 4 +++ spec/sprites_spec.rb | 27 ++++++++++++++++++++ 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index f385792e..dbcf72c8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.3.01b9cd3) + compass (0.11.beta.3.a9b6d8c) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/sass_extensions/sprites/base.rb b/lib/compass/sass_extensions/sprites/base.rb index a2e16f75..abf91652 100644 --- a/lib/compass/sass_extensions/sprites/base.rb +++ b/lib/compass/sass_extensions/sprites/base.rb @@ -55,6 +55,7 @@ module Compass image end end + # Calculates the overal image dimensions # collects image sizes and input parameters for each sprite def compute_image_positions! diff --git a/lib/compass/sass_extensions/sprites/image.rb b/lib/compass/sass_extensions/sprites/image.rb index 07c8cfdd..fce68ad0 100644 --- a/lib/compass/sass_extensions/sprites/image.rb +++ b/lib/compass/sass_extensions/sprites/image.rb @@ -51,6 +51,10 @@ module Compass Digest::MD5.file(file).hexdigest end + def mtime + File.mtime(file) + end + private def dimensions @dimensions ||= Compass::SassExtensions::Functions::ImageSize::ImageProperties.new(file).size diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index 94349518..0c8fd94c 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -440,5 +440,32 @@ describe Compass::Sprites do } CSS end + + it "should calculate corret sprite demsions when givin spacing via issue#253" do + css = render <<-SCSS + $squares-spacing: 10px; + @import "squares/*.png"; + .foo { + @include sprite-background-position($squares-sprites, "twenty-by-twenty"); + } + .bar { + @include sprite-background-position($squares-sprites, "ten-by-ten"); + } + SCSS + image_size('squares-*.png').should == [20, 40] + css.should == <<-CSS + .squares-sprite { + background: url('/squares-e3c68372d9.png') no-repeat; + } + + .foo { + background-position: 0 -20px; + } + + .bar { + background-position: 0 0; + } + CSS + end end \ No newline at end of file From 6e1daf69f528d745d95234c54616009525f70590 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Mon, 21 Mar 2011 22:10:44 -0400 Subject: [PATCH 079/223] added boolean functions for finding selectors --- Gemfile.lock | 2 +- lib/compass/sass_extensions/sprites/base.rb | 14 +++++++++++++- lib/compass/sass_extensions/sprites/image.rb | 2 +- .../compass/sass_extensions/sprites/base_spec.rb | 0 .../public/images/selectors/ten-by-ten.png | Bin 0 -> 2804 bytes .../images/selectors/ten-by-ten_active.png | Bin 0 -> 2804 bytes .../public/images/selectors/ten-by-ten_hover.png | Bin 0 -> 2804 bytes .../images/selectors/ten-by-ten_target.png | Bin 0 -> 2804 bytes 8 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 spec/compass/sass_extensions/sprites/base_spec.rb create mode 100644 spec/test_project/public/images/selectors/ten-by-ten.png create mode 100644 spec/test_project/public/images/selectors/ten-by-ten_active.png create mode 100644 spec/test_project/public/images/selectors/ten-by-ten_hover.png create mode 100644 spec/test_project/public/images/selectors/ten-by-ten_target.png diff --git a/Gemfile.lock b/Gemfile.lock index dbcf72c8..6783942b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - compass (0.11.beta.3.a9b6d8c) + compass (0.11.beta.3.46eec53) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/sass_extensions/sprites/base.rb b/lib/compass/sass_extensions/sprites/base.rb index abf91652..3d2e20c2 100644 --- a/lib/compass/sass_extensions/sprites/base.rb +++ b/lib/compass/sass_extensions/sprites/base.rb @@ -70,7 +70,19 @@ module Compass def image_for(name) @images.detect { |img| img.name == name} end - + + def has_hover?(name) + !image_for("#{name}_hover").nil? + end + + def has_target?(name) + !image_for("#{name}_target").nil? + end + + def has_active?(name) + !image_for("#{name}_active").nil? + end + def sprite_names image_names.map{|f| Compass::Sprites.sprite_name(f) } end diff --git a/lib/compass/sass_extensions/sprites/image.rb b/lib/compass/sass_extensions/sprites/image.rb index fce68ad0..e28de0e3 100644 --- a/lib/compass/sass_extensions/sprites/image.rb +++ b/lib/compass/sass_extensions/sprites/image.rb @@ -54,7 +54,7 @@ module Compass def mtime File.mtime(file) end - + private def dimensions @dimensions ||= Compass::SassExtensions::Functions::ImageSize::ImageProperties.new(file).size diff --git a/spec/compass/sass_extensions/sprites/base_spec.rb b/spec/compass/sass_extensions/sprites/base_spec.rb new file mode 100644 index 00000000..e69de29b diff --git a/spec/test_project/public/images/selectors/ten-by-ten.png b/spec/test_project/public/images/selectors/ten-by-ten.png new file mode 100644 index 0000000000000000000000000000000000000000..c0ae53ccadde24b58be417ca95dcb57eb6da4f1a GIT binary patch literal 2804 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 Date: Tue, 22 Mar 2011 21:19:19 -0400 Subject: [PATCH 080/223] start refactoring work on sprite map --- Gemfile | 7 +- Gemfile.lock | 17 ++- autotest/discover.rb | 4 + lib/compass/sass_extensions/sprites/base.rb | 14 +- lib/compass/sass_extensions/sprites/image.rb | 8 +- lib/compass/sprite_map.rb | 121 ++++++++++++++++++ lib/compass/sprites.rb | 106 +-------------- .../sass_extensions/sprites/image_spec.rb | 28 ++-- spec/compass/sprite_map_spec.rb | 50 ++++++++ spec/compass/sprites_spec.rb | 6 + spec/spec_helper.rb | 3 + 11 files changed, 235 insertions(+), 129 deletions(-) create mode 100644 autotest/discover.rb create mode 100644 lib/compass/sprite_map.rb create mode 100644 spec/compass/sprite_map_spec.rb create mode 100644 spec/compass/sprites_spec.rb diff --git a/Gemfile b/Gemfile index 706e9e85..d884daa8 100644 --- a/Gemfile +++ b/Gemfile @@ -14,4 +14,9 @@ gem "livereload" gem "ruby-prof" unless RUBY_PLATFORM == "java" -#gem 'rmagick' \ No newline at end of file +gem 'autotest' +gem 'fakefs', :git => 'git://github.com/johnbintz/fakefs.git' +gem 'mocha' +gem 'timecop' + +#gem 'rmagick' diff --git a/Gemfile.lock b/Gemfile.lock index 6783942b..85b70cc1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,13 +1,20 @@ +GIT + remote: git://github.com/johnbintz/fakefs.git + revision: 005ddaaeb2b2881391c31ac9846a55ce5a42c206 + specs: + fakefs (0.3.1) + PATH remote: . specs: - compass (0.11.beta.3.46eec53) + compass (0.11.beta.3.6e1daf6) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) GEM remote: http://rubygems.org/ specs: + ZenTest (4.5.0) abstract (1.0.0) actionmailer (3.0.5) actionpack (= 3.0.5) @@ -37,6 +44,8 @@ GEM activesupport (3.0.5) addressable (2.2.4) arel (2.0.9) + autotest (4.4.6) + ZenTest (>= 4.4.1) builder (2.1.2) chunky_png (1.1.0) compass-validator (3.0.0) @@ -76,6 +85,7 @@ GEM mime-types (~> 1.16) treetop (~> 1.4.8) mime-types (1.16) + mocha (0.9.12) polyglot (0.3.1) rack (1.2.2) rack-mount (0.6.13) @@ -114,6 +124,7 @@ GEM sass (3.1.0.alpha.249) term-ansicolor (1.0.5) thor (0.14.6) + timecop (0.3.5) treetop (1.4.9) polyglot (>= 0.3.1) tzinfo (0.3.25) @@ -123,15 +134,19 @@ PLATFORMS ruby DEPENDENCIES + autotest compass! compass-validator (= 3.0.0) css_parser (~> 1.0.1) cucumber (~> 0.9.2) + fakefs! haml (~> 3.1.0.alpha) livereload + mocha rails (~> 3.0.0.rc) rcov rspec (~> 2.0.0) ruby-prof rubyzip sass (= 3.1.0.alpha.249) + timecop diff --git a/autotest/discover.rb b/autotest/discover.rb new file mode 100644 index 00000000..d02f3b31 --- /dev/null +++ b/autotest/discover.rb @@ -0,0 +1,4 @@ +Autotest.add_discovery { 'rspec2' } + + + diff --git a/lib/compass/sass_extensions/sprites/base.rb b/lib/compass/sass_extensions/sprites/base.rb index 3d2e20c2..18120922 100644 --- a/lib/compass/sass_extensions/sprites/base.rb +++ b/lib/compass/sass_extensions/sprites/base.rb @@ -1,14 +1,16 @@ +require 'compass/sprite_map' + module Compass module SassExtensions module Sprites class Base < Sass::Script::Literal - def self.from_uri(uri, context, kwargs) - path, name = Compass::Sprites.path_and_name(uri.value) - sprites = Compass::Sprites.discover_sprites(uri.value).map do |sprite| + sprite_map = ::Compass::SpriteMap.new(uri.value, {}) + + sprites = sprite_map.files.map do |sprite| sprite.gsub(Compass.configuration.images_path+"/", "") end - new(sprites, path, name, context, kwargs) + new(sprites, sprite_map.path, sprite_map.name, context, kwargs) end def require_engine! @@ -50,7 +52,7 @@ module Compass def init_images @images = image_names.collect do |relative_file| - image = Compass::SassExtensions::Sprites::Image.new(relative_file, options) + image = Compass::SassExtensions::Sprites::Image.new(self, relative_file, options) @width = [ @width, image.width + image.offset ].max image end @@ -84,7 +86,7 @@ module Compass end def sprite_names - image_names.map{|f| Compass::Sprites.sprite_name(f) } + image_names.map { |f| File.basename(f, '.png') } end def validate! diff --git a/lib/compass/sass_extensions/sprites/image.rb b/lib/compass/sass_extensions/sprites/image.rb index e28de0e3..11fc5c7e 100644 --- a/lib/compass/sass_extensions/sprites/image.rb +++ b/lib/compass/sass_extensions/sprites/image.rb @@ -2,11 +2,11 @@ module Compass module SassExtensions module Sprites class Image - attr_reader :relative_file, :options + attr_reader :relative_file, :options, :base attr_accessor :top, :left - def initialize(relative_file, options) - @relative_file, @options = relative_file, options + def initialize(base, relative_file, options) + @base, @relative_file, @options = base, relative_file, options @left = @top = 0 end @@ -23,7 +23,7 @@ module Compass end def name - Compass::Sprites.sprite_name(relative_file) + File.basename(relative_file, '.png') end def repeat diff --git a/lib/compass/sprite_map.rb b/lib/compass/sprite_map.rb new file mode 100644 index 00000000..ece478a7 --- /dev/null +++ b/lib/compass/sprite_map.rb @@ -0,0 +1,121 @@ +module Compass + class SpriteMap + attr_reader :uri, :options + + def initialize(uri, options) + @uri, @options = uri, options + end + + def name + ensure_path_and_name! + @name + end + + def path + ensure_path_and_name! + @path + end + + def files + @files ||= Dir[File.join(Compass.configuration.images_path, uri)].sort + end + + def sprite_names + @sprite_names ||= files.collect { |file| File.basename(file, '.png') } + end + + def sass_options + @sass_options ||= options.merge(:filename => name, :syntax => :scss, :importer => self) + end + + def mtime + Compass.quick_cache("mtime:#{uri}") do + files.collect { |file| File.mtime(file) }.max + end + end + + def sass_engine + Sass::Engine.new(content_for_images, options) + end + + private + def ensure_path_and_name! + return if @path && @name + uri =~ %r{((.+/)?(.+))/(.+?)\.png} + @path, @name = $1, $3 + end + + def content_for_images(skip_overrides = false) + <<-SCSS +@import "compass/utilities/sprites/base"; + +// General Sprite Defaults +// You can override them before you import this file. +$#{name}-sprite-base-class: ".#{name}-sprite" !default; +$#{name}-sprite-dimensions: false !default; +$#{name}-position: 0% !default; +$#{name}-spacing: 0 !default; +$#{name}-repeat: no-repeat !default; +$#{name}-prefix: '' !default; + +#{skip_overrides ? "$#{name}-sprites: sprite-map(\"#{uri}\");" : generate_overrides } + +// All sprites should extend this class +// The #{name}-sprite mixin will do so for you. +\#{$#{name}-sprite-base-class} { + background: $#{name}-sprites no-repeat; +} + +// Use this to set the dimensions of an element +// based on the size of the original image. +@mixin #{name}-sprite-dimensions($name) { + @include sprite-dimensions($#{name}-sprites, $name) +} + +// Move the background position to display the sprite. +@mixin #{name}-sprite-position($name, $offset-x: 0, $offset-y: 0) { + @include sprite-background-position($#{name}-sprites, $name, $offset-x, $offset-y) +} + +// Extends the sprite base class and set the background position for the desired sprite. +// It will also apply the image dimensions if $dimensions is true. +@mixin #{name}-sprite($name, $dimensions: $#{name}-sprite-dimensions, $offset-x: 0, $offset-y: 0) { + @extend \#{$#{name}-sprite-base-class}; + @include sprite($#{name}-sprites, $name, $dimensions, $offset-x, $offset-y) +} + +@mixin #{name}-sprites($sprite-names, $dimensions: $#{name}-sprite-dimensions, $prefix: sprite-map-name($#{name}-sprites)) { + @include sprites($#{name}-sprites, $sprite-names, $#{name}-sprite-base-class, $dimensions, $prefix) +} + +// Generates a class for each sprited image. +@mixin all-#{name}-sprites($dimensions: $#{name}-sprite-dimensions, $prefix: sprite-map-name($#{name}-sprites)) { + @include #{name}-sprites(#{sprite_names.join(" ")}, $dimensions, $prefix); +} +SCSS + end + + def generate_overrides + content = <<-TXT +// These variables control the generated sprite output +// You can override them selectively before you import this file. + TXT + sprite_names.map do |sprite_name| + content += <<-SCSS +$#{name}-#{sprite_name}-position: $#{name}-position !default; +$#{name}-#{sprite_name}-spacing: $#{name}-spacing !default; +$#{name}-#{sprite_name}-repeat: $#{name}-repeat !default; + SCSS + end.join + + content += "\n$#{name}-sprites: sprite-map(\"#{uri}\",\n" + content += sprite_names.map do |sprite_name| +%Q{ $#{sprite_name}-position: $#{name}-#{sprite_name}-position, + $#{sprite_name}-spacing: $#{name}-#{sprite_name}-spacing, + $#{sprite_name}-repeat: $#{name}-#{sprite_name}-repeat} + end.join(",\n") + content += ");" + end + end +end + diff --git a/lib/compass/sprites.rb b/lib/compass/sprites.rb index 26e48159..5dea8570 100644 --- a/lib/compass/sprites.rb +++ b/lib/compass/sprites.rb @@ -1,128 +1,26 @@ module Compass class Sprites < Sass::Importers::Base - attr_accessor :name - attr_accessor :path - - class << self - def path_and_name(uri) - if uri =~ %r{((.+/)?(.+))/(.+?)\.png} - [$1, $3, $4] - end - end - - def discover_sprites(uri) - glob = File.join(Compass.configuration.images_path, uri) - Dir.glob(glob).sort - end - - def sprite_name(file) - File.basename(file, '.png') - end - - end - def find_relative(*args) nil end def find(uri, options) if uri =~ /\.png$/ - self.path, self.name = Compass::Sprites.path_and_name(uri) - options.merge! :filename => name, :syntax => :scss, :importer => self - sprite_files = Compass::Sprites.discover_sprites(uri) - image_names = sprite_files.map {|i| Compass::Sprites.sprite_name(i) } - Sass::Engine.new(content_for_images(uri, name, image_names), options) + SpriteMap.new(uri, options).sass_engine end end - def content_for_images(uri, name, images, skip_overrides = false) - <<-SCSS -@import "compass/utilities/sprites/base"; - -// General Sprite Defaults -// You can override them before you import this file. -$#{name}-sprite-base-class: ".#{name}-sprite" !default; -$#{name}-sprite-dimensions: false !default; -$#{name}-position: 0% !default; -$#{name}-spacing: 0 !default; -$#{name}-repeat: no-repeat !default; -$#{name}-prefix: '' !default; - -#{skip_overrides ? "$#{name}-sprites: sprite-map(\"#{uri}\");" : generate_overrides(uri, name, images) } - -// All sprites should extend this class -// The #{name}-sprite mixin will do so for you. -\#{$#{name}-sprite-base-class} { - background: $#{name}-sprites no-repeat; -} - -// Use this to set the dimensions of an element -// based on the size of the original image. -@mixin #{name}-sprite-dimensions($name) { - @include sprite-dimensions($#{name}-sprites, $name) -} - -// Move the background position to display the sprite. -@mixin #{name}-sprite-position($name, $offset-x: 0, $offset-y: 0) { - @include sprite-background-position($#{name}-sprites, $name, $offset-x, $offset-y) -} - -// Extends the sprite base class and set the background position for the desired sprite. -// It will also apply the image dimensions if $dimensions is true. -@mixin #{name}-sprite($name, $dimensions: $#{name}-sprite-dimensions, $offset-x: 0, $offset-y: 0) { - @extend \#{$#{name}-sprite-base-class}; - @include sprite($#{name}-sprites, $name, $dimensions, $offset-x, $offset-y) -} - -@mixin #{name}-sprites($sprite-names, $dimensions: $#{name}-sprite-dimensions, $prefix: sprite-map-name($#{name}-sprites)) { - @include sprites($#{name}-sprites, $sprite-names, $#{name}-sprite-base-class, $dimensions, $prefix) -} - -// Generates a class for each sprited image. -@mixin all-#{name}-sprites($dimensions: $#{name}-sprite-dimensions, $prefix: sprite-map-name($#{name}-sprites)) { - @include #{name}-sprites(#{images.join(" ")}, $dimensions, $prefix); -} -SCSS - end - def key(uri, options) [self.class.name + ":" + File.dirname(File.expand_path(uri)), File.basename(uri)] end def mtime(uri, options) - Compass.quick_cache("mtime:#{uri}") do - self.path, self.name = Compass::Sprites.path_and_name(uri) - glob = File.join(Compass.configuration.images_path, uri) - Dir.glob(glob).inject(Time.at(0)) do |max_time, file| - (t = File.mtime(file)) > max_time ? t : max_time - end - end + SpriteMap.new(uri, options).mtime end def to_s "" end - - def generate_overrides(uri, name,images) - content = <<-TXT -// These variables control the generated sprite output -// You can override them selectively before you import this file. - TXT - images.map do |sprite_name| - content += <<-SCSS -$#{name}-#{sprite_name}-position: $#{name}-position !default; -$#{name}-#{sprite_name}-spacing: $#{name}-spacing !default; -$#{name}-#{sprite_name}-repeat: $#{name}-repeat !default; - SCSS - end.join - content += "\n$#{name}-sprites: sprite-map(\"#{uri}\",\n" - content += images.map do |sprite_name| -%Q{ $#{sprite_name}-position: $#{name}-#{sprite_name}-position, - $#{sprite_name}-spacing: $#{name}-#{sprite_name}-spacing, - $#{sprite_name}-repeat: $#{name}-#{sprite_name}-repeat} - end.join(",\n") - content += ");" - end end end diff --git a/spec/compass/sass_extensions/sprites/image_spec.rb b/spec/compass/sass_extensions/sprites/image_spec.rb index df62faab..7708233f 100644 --- a/spec/compass/sass_extensions/sprites/image_spec.rb +++ b/spec/compass/sass_extensions/sprites/image_spec.rb @@ -5,7 +5,7 @@ describe Compass::SassExtensions::Sprites::Image do let(:sprite_filename) { 'squares/ten-by-ten.png' } let(:sprite_path) { File.join(images_src_path, sprite_filename) } let(:sprite_name) { File.basename(sprite_filename, '.png') } - let(:image) { self.class.describes.new(File.join(sprite_filename), options)} + let(:image) { self.class.describes.new(nil, File.join(sprite_filename), options)} let(:digest) { Digest::MD5.file(sprite_path).hexdigest } subject { image } @@ -26,9 +26,13 @@ describe Compass::SassExtensions::Sprites::Image do its(:left) { should == 0 } end + let(:get_var_expects) { nil } + let(:get_var_return) { nil } + let(:options) { - options = Object.new - options.stub(:get_var) { |which| (which == get_var_expects) ? get_var_return : nil } + options = mock + options.stubs(:get_var).with(anything).returns(nil) + options.stubs(:get_var).with(get_var_expects).returns(get_var_return) options } @@ -105,32 +109,30 @@ describe Compass::SassExtensions::Sprites::Image do end describe '#offset' do - before { image.stub(:position) { stub_position } } + before { image.stubs(:position).returns(stub_position) } let(:offset) { 100 } let(:stub_position) { - stub = double - stub.stub(:value) { offset } - stub + stub(:value => offset) } context 'unitless' do - before { stub_position.stub(:unitless?) { true } } - before { stub_position.stub(:unit_str) { 'em' } } + before { stub_position.stubs(:unitless?).returns(true) } + before { stub_position.stubs(:unit_str).returns('em') } its(:offset) { should == offset } end context 'pixels' do - before { stub_position.stub(:unitless?) { false } } - before { stub_position.stub(:unit_str) { 'px' } } + before { stub_position.stubs(:unitless?).returns(false) } + before { stub_position.stubs(:unit_str).returns('px') } its(:offset) { should == offset } end context 'neither, use 0' do - before { stub_position.stub(:unitless?) { false } } - before { stub_position.stub(:unit_str) { 'em' } } + before { stub_position.stubs(:unitless?).returns(false) } + before { stub_position.stubs(:unit_str).returns('em') } its(:offset) { should == 0 } end diff --git a/spec/compass/sprite_map_spec.rb b/spec/compass/sprite_map_spec.rb new file mode 100644 index 00000000..8df74e48 --- /dev/null +++ b/spec/compass/sprite_map_spec.rb @@ -0,0 +1,50 @@ +require 'spec_helper' +require 'compass/sprite_map' +require 'fakefs/spec_helpers' +require 'timecop' + +describe Compass::SpriteMap do + include FakeFS::SpecHelpers + + let(:sprite_map) { self.class.describes.new(uri, options) } + let(:options) { { :test => :test2 } } + + subject { sprite_map } + + let(:path) { 'path' } + let(:dir) { "dir/#{name}" } + let(:name) { 'subdir' } + + let(:sprite_path) { File.join(path, dir) } + let(:files) { (1..3).collect { |i| File.join(sprite_path, "#{i}.png") } } + let(:expanded_files) { files.collect { |file| File.expand_path(file) } } + + let(:configuration) { stub(:images_path => path) } + let(:mtime) { Time.now - 30 } + + before { + Compass.stubs(:configuration).returns(configuration) + + FileUtils.mkdir_p(sprite_path) + Timecop.freeze(mtime) do + files.each { |file| File.open(file, 'w') } + end + Timecop.return + } + + describe '#initialize' do + let(:uri) { 'dir/subdir/*.png' } + + its(:uri) { should == uri } + its(:path) { should == dir } + its(:name) { should == name } + + its(:files) { should == expanded_files } + + its(:sass_options) { should == options.merge(:filename => name, :syntax => :scss, :importer => sprite_map) } + + its(:mtime) { should == mtime } + + it "should have a test for the sass engine" + end +end diff --git a/spec/compass/sprites_spec.rb b/spec/compass/sprites_spec.rb new file mode 100644 index 00000000..648fc929 --- /dev/null +++ b/spec/compass/sprites_spec.rb @@ -0,0 +1,6 @@ +require 'spec_helper' +require 'compass/sprites' +require 'fakefs/spec_helpers' + +describe Compass::Sprites do +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index ccc17e29..1eb4ea2e 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -4,6 +4,7 @@ require 'rubygems' require 'compass' require 'rspec' require 'rspec/autorun' +require 'mocha' module CompassGlobalInclude class << self @@ -17,4 +18,6 @@ end RSpec.configure do |config| config.include(CompassGlobalInclude) + + config.mock_with :mocha end From a5e27952f8f46915d421c8c0a116e7be95ad7e81 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Tue, 22 Mar 2011 22:54:16 -0400 Subject: [PATCH 081/223] merge --- compass.gemspec | 2 +- .../sass_extensions/sprites/base_spec.rb | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/compass.gemspec b/compass.gemspec index d491b294..be58ca9b 100644 --- a/compass.gemspec +++ b/compass.gemspec @@ -7,7 +7,7 @@ Gem::Specification.new do |gemspec| gemspec.date = "#{Time.now.year}-#{Time.now.month}-#{Time.now.day}" # Automatically update for each build gemspec.description = "Compass is a Sass-based Stylesheet Framework that streamlines the creation and maintainance of CSS." gemspec.homepage = "http://compass-style.org" - gemspec.authors = ["Chris Eppstein", "Eric A. Meyer", "Brandon Mathis", "Nico Hagenburger"] + gemspec.authors = ["Chris Eppstein", "Eric A. Meyer", "Brandon Mathis", "Nico Hagenburger", "Scott Davis"] gemspec.email = "chris@eppsteins.net" gemspec.default_executable = "compass" gemspec.executables = %w(compass) diff --git a/spec/compass/sass_extensions/sprites/base_spec.rb b/spec/compass/sass_extensions/sprites/base_spec.rb index e69de29b..179325e3 100644 --- a/spec/compass/sass_extensions/sprites/base_spec.rb +++ b/spec/compass/sass_extensions/sprites/base_spec.rb @@ -0,0 +1,29 @@ +require 'spec_helper' +describe Compass::SassExtensions::Sprites::Base do + + before :each do + @images_src_path = File.join(File.dirname(__FILE__), '..', '..', '..', 'test_project', 'public', 'images') + @images_tmp_path = File.join(File.dirname(__FILE__), '..', '..', '..', 'test_project', 'public', 'selectors-images-tmp') + #FileUtils.mkdir_p @images_src_path + #FileUtils.mkdir_p @images_tmp_path + FileUtils.cp_r @images_src_path, @images_tmp_path + file = StringIO.new("images_path = #{@images_tmp_path.inspect}\n") + Compass.add_configuration(file, "sprite_config") + Compass.configure_sass_plugin! + rels = Dir["#{@images_src_path}/selectors/*.png"].sort.map { |f| f.split('/')[-2..-1].join('/') } + Compass::SassExtensions::Sprites::Base.new(rels, @images_src_path, 'selectors', self, options) + end + + after :each do + FileUtils.rm_r @images_tmp_path + end + + it "should" do + "foo" + end + + + + + +end \ No newline at end of file From 03b0ee266093146585c9ecdf713c4ab16501042b Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Wed, 23 Mar 2011 00:56:49 -0400 Subject: [PATCH 082/223] sprite base spec --- Gemfile.lock | 2 +- lib/compass/sass_extensions/sprites/base.rb | 5 +- .../sass_extensions/sprites/base_spec.rb | 47 ++++++++++++++----- .../sass_extensions/sprites/image_spec.rb | 4 +- spec/compass/sprite_map_spec.rb | 4 +- 5 files changed, 46 insertions(+), 16 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 85b70cc1..88e6d492 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.3.6e1daf6) + compass (0.11.beta.3.a5e2795) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/sass_extensions/sprites/base.rb b/lib/compass/sass_extensions/sprites/base.rb index 18120922..8a35b040 100644 --- a/lib/compass/sass_extensions/sprites/base.rb +++ b/lib/compass/sass_extensions/sprites/base.rb @@ -143,7 +143,10 @@ module Compass # Checks whether this sprite is outdated def outdated? - @images.map(&:mtime).any? { |mtime| mtime > self.mtime } + if File.exists?(filename) + return @images.map(&:mtime).any? { |mtime| mtime > self.mtime } + end + true end def mtime diff --git a/spec/compass/sass_extensions/sprites/base_spec.rb b/spec/compass/sass_extensions/sprites/base_spec.rb index 179325e3..41344885 100644 --- a/spec/compass/sass_extensions/sprites/base_spec.rb +++ b/spec/compass/sass_extensions/sprites/base_spec.rb @@ -3,27 +3,50 @@ describe Compass::SassExtensions::Sprites::Base do before :each do @images_src_path = File.join(File.dirname(__FILE__), '..', '..', '..', 'test_project', 'public', 'images') - @images_tmp_path = File.join(File.dirname(__FILE__), '..', '..', '..', 'test_project', 'public', 'selectors-images-tmp') - #FileUtils.mkdir_p @images_src_path - #FileUtils.mkdir_p @images_tmp_path + @images_tmp_path = File.join(File.dirname(__FILE__), '..', '..', '..', 'test_project', 'public', 'images-tmp') FileUtils.cp_r @images_src_path, @images_tmp_path - file = StringIO.new("images_path = #{@images_tmp_path.inspect}\n") - Compass.add_configuration(file, "sprite_config") + config = Compass::Configuration::Data.new('config') + config.images_path = @images_tmp_path + Compass.add_configuration(config) Compass.configure_sass_plugin! - rels = Dir["#{@images_src_path}/selectors/*.png"].sort.map { |f| f.split('/')[-2..-1].join('/') } - Compass::SassExtensions::Sprites::Base.new(rels, @images_src_path, 'selectors', self, options) + #fix this eww + options = Compass.sass_engine_options.extend Compass::SassExtensions::Functions::Sprites::VariableReader + @map = Compass::SpriteMap.new("selectors/*.png", options) + @base = Compass::SassExtensions::Sprites::Base.new(@map.sprite_names.map{|n| "selectors/#{n}.png"}, @map.path, 'selectors', @map.sass_engine, @map.options) end after :each do FileUtils.rm_r @images_tmp_path end - it "should" do - "foo" + subject { @base } + + its(:size) { should == [10,40] } + its(:sprite_names) { should == @map.sprite_names } + its(:image_filenames) { should == Dir["#{@images_tmp_path}/selectors/*.png"].sort } + its(:generation_required?) { should be_true } + its(:uniqueness_hash) { should == 'ef52c5c63a'} + its(:outdated?) { should be_true } + its(:filename) { should == File.join(@images_tmp_path, "#{@base.path}-#{@base.uniqueness_hash}.png")} + + it "should return the 'ten-by-ten' image" do + subject.image_for('ten-by-ten').name.should == 'ten-by-ten' + subject.image_for('ten-by-ten').should be_a Compass::SassExtensions::Sprites::Image end - - - + %w(target hover active).each do |selector| + it "should have a #{selector}" do + subject.send(:"has_#{selector}?", 'ten-by-ten').should be_true + end + end + context "#generate" do + before { @base.generate } + it "should generate sprite" do + File.exists?(@base.filename).should be_true + end + + its(:generation_required?) { should be_false } + its(:outdated?) { should be_false } + end end \ No newline at end of file diff --git a/spec/compass/sass_extensions/sprites/image_spec.rb b/spec/compass/sass_extensions/sprites/image_spec.rb index 7708233f..5c61e0f6 100644 --- a/spec/compass/sass_extensions/sprites/image_spec.rb +++ b/spec/compass/sass_extensions/sprites/image_spec.rb @@ -7,7 +7,6 @@ describe Compass::SassExtensions::Sprites::Image do let(:sprite_name) { File.basename(sprite_filename, '.png') } let(:image) { self.class.describes.new(nil, File.join(sprite_filename), options)} let(:digest) { Digest::MD5.file(sprite_path).hexdigest } - subject { image } before { @@ -37,6 +36,7 @@ describe Compass::SassExtensions::Sprites::Image do } describe '#repeat' do + let(:type) { nil } let(:get_var_return) { OpenStruct.new(:value => type) } context 'specific image' do @@ -61,6 +61,7 @@ describe Compass::SassExtensions::Sprites::Image do end describe '#position' do + let(:type) { nil } let(:get_var_return) { type } context 'specific image' do @@ -85,6 +86,7 @@ describe Compass::SassExtensions::Sprites::Image do end describe '#spacing' do + let(:type) { nil } let(:get_var_return) { OpenStruct.new(:value => type) } context 'specific image' do diff --git a/spec/compass/sprite_map_spec.rb b/spec/compass/sprite_map_spec.rb index 8df74e48..b356d1ed 100644 --- a/spec/compass/sprite_map_spec.rb +++ b/spec/compass/sprite_map_spec.rb @@ -45,6 +45,8 @@ describe Compass::SpriteMap do its(:mtime) { should == mtime } - it "should have a test for the sass engine" + it "should have a test for the sass engine" do + pending 'sass' + end end end From f78744171d3986022ec3145ed79dd3bd0a671ed2 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Wed, 23 Mar 2011 01:09:41 -0400 Subject: [PATCH 083/223] sprite base spec selector methods --- Gemfile.lock | 2 +- lib/compass/sass_extensions/sprites/image.rb | 24 +++++++++++++++++++ .../sass_extensions/sprites/base_spec.rb | 5 ++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 88e6d492..630b7668 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.3.a5e2795) + compass (0.11.beta.3.03b0ee2) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/sass_extensions/sprites/image.rb b/lib/compass/sass_extensions/sprites/image.rb index 11fc5c7e..4ed352be 100644 --- a/lib/compass/sass_extensions/sprites/image.rb +++ b/lib/compass/sass_extensions/sprites/image.rb @@ -54,6 +54,30 @@ module Compass def mtime File.mtime(file) end + + def hover? + base.has_hover?(name) + end + + def hover + base.image_for("#{name}_hover") + end + + def target? + base.has_target?(name) + end + + def target + base.image_for("#{name}_target") + end + + def active? + base.has_active?(name) + end + + def active + base.image_for("#{name}_active") + end private def dimensions diff --git a/spec/compass/sass_extensions/sprites/base_spec.rb b/spec/compass/sass_extensions/sprites/base_spec.rb index 41344885..6a086737 100644 --- a/spec/compass/sass_extensions/sprites/base_spec.rb +++ b/spec/compass/sass_extensions/sprites/base_spec.rb @@ -38,6 +38,11 @@ describe Compass::SassExtensions::Sprites::Base do it "should have a #{selector}" do subject.send(:"has_#{selector}?", 'ten-by-ten').should be_true end + + it "should return #{selector} image class" do + subject.image_for('ten-by-ten').send(:"#{selector}").name.should == "ten-by-ten_#{selector}" + end + end context "#generate" do before { @base.generate } From 965c37f6d776e6fef051401878416ca2f0213376 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Wed, 23 Mar 2011 01:15:18 -0400 Subject: [PATCH 084/223] modified gem --- .rake_tasks~ | 10 ++++++++++ Gemfile.lock | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .rake_tasks~ diff --git a/.rake_tasks~ b/.rake_tasks~ new file mode 100644 index 00000000..fbe403b4 --- /dev/null +++ b/.rake_tasks~ @@ -0,0 +1,10 @@ +examples +examples:clean +features +rcov +rcov:all +rcov:clobber_units +rcov:cucumber +rcov:units +spec +test \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index 630b7668..428028e5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.3.03b0ee2) + compass (0.11.beta.3.f787441) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) From eba86119c56658b86bcafa6a2b3154eb8951ad3d Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Wed, 23 Mar 2011 01:22:32 -0400 Subject: [PATCH 085/223] cleanup --- .rake_tasks~ | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 .rake_tasks~ diff --git a/.rake_tasks~ b/.rake_tasks~ deleted file mode 100644 index fbe403b4..00000000 --- a/.rake_tasks~ +++ /dev/null @@ -1,10 +0,0 @@ -examples -examples:clean -features -rcov -rcov:all -rcov:clobber_units -rcov:cucumber -rcov:units -spec -test \ No newline at end of file From f8197c530cbfe770e46edb2b9512a966de69ea48 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Wed, 23 Mar 2011 01:23:38 -0400 Subject: [PATCH 086/223] gemfile.locl --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 428028e5..f5264999 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.3.f787441) + compass (0.11.beta.3.eba8611) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) From 463ee01a128b957a6c7ca5861e7744bd9c1e5767 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Wed, 23 Mar 2011 01:29:51 -0400 Subject: [PATCH 087/223] moved files around --- Gemfile.lock | 2 +- lib/compass.rb | 2 +- lib/compass/sass_extensions/sprites.rb | 2 + lib/compass/sass_extensions/sprites/base.rb | 2 - .../sass_extensions/sprites/sprite_map.rb | 121 ++++++++++++++++++ .../sass_extensions/sprites/sprites.rb | 26 ++++ .../sprites/sprite_map_spec.rb | 51 ++++++++ .../sass_extensions/sprites/sprites_spec.rb | 5 + spec/sprites_spec.rb | 1 - 9 files changed, 207 insertions(+), 5 deletions(-) create mode 100644 lib/compass/sass_extensions/sprites/sprite_map.rb create mode 100644 lib/compass/sass_extensions/sprites/sprites.rb create mode 100644 spec/compass/sass_extensions/sprites/sprite_map_spec.rb create mode 100644 spec/compass/sass_extensions/sprites/sprites_spec.rb diff --git a/Gemfile.lock b/Gemfile.lock index f5264999..6042394b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.3.eba8611) + compass (0.11.beta.3.f8197c5) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass.rb b/lib/compass.rb index 5ce7268d..952c0627 100644 --- a/lib/compass.rb +++ b/lib/compass.rb @@ -18,6 +18,6 @@ module Compass extend QuickCache end -%w(configuration frameworks app_integration actions compiler sprites).each do |lib| +%w(configuration frameworks app_integration actions compiler).each do |lib| require "compass/#{lib}" end diff --git a/lib/compass/sass_extensions/sprites.rb b/lib/compass/sass_extensions/sprites.rb index 0bf1f30d..85765179 100644 --- a/lib/compass/sass_extensions/sprites.rb +++ b/lib/compass/sass_extensions/sprites.rb @@ -1,4 +1,6 @@ require 'digest/md5' +require 'compass/sass_extensions/sprites/sprites' +require 'compass/sass_extensions/sprites/sprite_map' require 'compass/sass_extensions/sprites/image' require 'compass/sass_extensions/sprites/base' require 'compass/sass_extensions/sprites/engines' diff --git a/lib/compass/sass_extensions/sprites/base.rb b/lib/compass/sass_extensions/sprites/base.rb index 8a35b040..e2f7251e 100644 --- a/lib/compass/sass_extensions/sprites/base.rb +++ b/lib/compass/sass_extensions/sprites/base.rb @@ -1,5 +1,3 @@ -require 'compass/sprite_map' - module Compass module SassExtensions module Sprites diff --git a/lib/compass/sass_extensions/sprites/sprite_map.rb b/lib/compass/sass_extensions/sprites/sprite_map.rb new file mode 100644 index 00000000..ece478a7 --- /dev/null +++ b/lib/compass/sass_extensions/sprites/sprite_map.rb @@ -0,0 +1,121 @@ +module Compass + class SpriteMap + attr_reader :uri, :options + + def initialize(uri, options) + @uri, @options = uri, options + end + + def name + ensure_path_and_name! + @name + end + + def path + ensure_path_and_name! + @path + end + + def files + @files ||= Dir[File.join(Compass.configuration.images_path, uri)].sort + end + + def sprite_names + @sprite_names ||= files.collect { |file| File.basename(file, '.png') } + end + + def sass_options + @sass_options ||= options.merge(:filename => name, :syntax => :scss, :importer => self) + end + + def mtime + Compass.quick_cache("mtime:#{uri}") do + files.collect { |file| File.mtime(file) }.max + end + end + + def sass_engine + Sass::Engine.new(content_for_images, options) + end + + private + def ensure_path_and_name! + return if @path && @name + uri =~ %r{((.+/)?(.+))/(.+?)\.png} + @path, @name = $1, $3 + end + + def content_for_images(skip_overrides = false) + <<-SCSS +@import "compass/utilities/sprites/base"; + +// General Sprite Defaults +// You can override them before you import this file. +$#{name}-sprite-base-class: ".#{name}-sprite" !default; +$#{name}-sprite-dimensions: false !default; +$#{name}-position: 0% !default; +$#{name}-spacing: 0 !default; +$#{name}-repeat: no-repeat !default; +$#{name}-prefix: '' !default; + +#{skip_overrides ? "$#{name}-sprites: sprite-map(\"#{uri}\");" : generate_overrides } + +// All sprites should extend this class +// The #{name}-sprite mixin will do so for you. +\#{$#{name}-sprite-base-class} { + background: $#{name}-sprites no-repeat; +} + +// Use this to set the dimensions of an element +// based on the size of the original image. +@mixin #{name}-sprite-dimensions($name) { + @include sprite-dimensions($#{name}-sprites, $name) +} + +// Move the background position to display the sprite. +@mixin #{name}-sprite-position($name, $offset-x: 0, $offset-y: 0) { + @include sprite-background-position($#{name}-sprites, $name, $offset-x, $offset-y) +} + +// Extends the sprite base class and set the background position for the desired sprite. +// It will also apply the image dimensions if $dimensions is true. +@mixin #{name}-sprite($name, $dimensions: $#{name}-sprite-dimensions, $offset-x: 0, $offset-y: 0) { + @extend \#{$#{name}-sprite-base-class}; + @include sprite($#{name}-sprites, $name, $dimensions, $offset-x, $offset-y) +} + +@mixin #{name}-sprites($sprite-names, $dimensions: $#{name}-sprite-dimensions, $prefix: sprite-map-name($#{name}-sprites)) { + @include sprites($#{name}-sprites, $sprite-names, $#{name}-sprite-base-class, $dimensions, $prefix) +} + +// Generates a class for each sprited image. +@mixin all-#{name}-sprites($dimensions: $#{name}-sprite-dimensions, $prefix: sprite-map-name($#{name}-sprites)) { + @include #{name}-sprites(#{sprite_names.join(" ")}, $dimensions, $prefix); +} +SCSS + end + + def generate_overrides + content = <<-TXT +// These variables control the generated sprite output +// You can override them selectively before you import this file. + TXT + sprite_names.map do |sprite_name| + content += <<-SCSS +$#{name}-#{sprite_name}-position: $#{name}-position !default; +$#{name}-#{sprite_name}-spacing: $#{name}-spacing !default; +$#{name}-#{sprite_name}-repeat: $#{name}-repeat !default; + SCSS + end.join + + content += "\n$#{name}-sprites: sprite-map(\"#{uri}\",\n" + content += sprite_names.map do |sprite_name| +%Q{ $#{sprite_name}-position: $#{name}-#{sprite_name}-position, + $#{sprite_name}-spacing: $#{name}-#{sprite_name}-spacing, + $#{sprite_name}-repeat: $#{name}-#{sprite_name}-repeat} + end.join(",\n") + content += ");" + end + end +end + diff --git a/lib/compass/sass_extensions/sprites/sprites.rb b/lib/compass/sass_extensions/sprites/sprites.rb new file mode 100644 index 00000000..5dea8570 --- /dev/null +++ b/lib/compass/sass_extensions/sprites/sprites.rb @@ -0,0 +1,26 @@ +module Compass + class Sprites < Sass::Importers::Base + def find_relative(*args) + nil + end + + def find(uri, options) + if uri =~ /\.png$/ + SpriteMap.new(uri, options).sass_engine + end + end + + def key(uri, options) + [self.class.name + ":" + File.dirname(File.expand_path(uri)), + File.basename(uri)] + end + + def mtime(uri, options) + SpriteMap.new(uri, options).mtime + end + + def to_s + "" + end + end +end diff --git a/spec/compass/sass_extensions/sprites/sprite_map_spec.rb b/spec/compass/sass_extensions/sprites/sprite_map_spec.rb new file mode 100644 index 00000000..1136e9a4 --- /dev/null +++ b/spec/compass/sass_extensions/sprites/sprite_map_spec.rb @@ -0,0 +1,51 @@ +require 'spec_helper' +require 'fakefs/spec_helpers' +require 'timecop' + +describe Compass::SpriteMap do + include FakeFS::SpecHelpers + + let(:sprite_map) { self.class.describes.new(uri, options) } + let(:options) { { :test => :test2 } } + + subject { sprite_map } + + let(:path) { 'path' } + let(:dir) { "dir/#{name}" } + let(:name) { 'subdir' } + + let(:sprite_path) { File.join(path, dir) } + let(:files) { (1..3).collect { |i| File.join(sprite_path, "#{i}.png") } } + let(:expanded_files) { files.collect { |file| File.expand_path(file) } } + + let(:configuration) { stub(:images_path => path) } + let(:mtime) { Time.now - 30 } + + before { + Compass.stubs(:configuration).returns(configuration) + + FileUtils.mkdir_p(sprite_path) + Timecop.freeze(mtime) do + files.each { |file| File.open(file, 'w') } + end + Timecop.return + } + + describe '#initialize' do + let(:uri) { 'dir/subdir/*.png' } + + its(:uri) { should == uri } + its(:path) { should == dir } + its(:name) { should == name } + + its(:files) { should == expanded_files } + + its(:sass_options) { should == options.merge(:filename => name, :syntax => :scss, :importer => sprite_map) } + + its(:mtime) { should == mtime } + + it "should have a test for the sass engine" do + pending 'sass' + end + end +end diff --git a/spec/compass/sass_extensions/sprites/sprites_spec.rb b/spec/compass/sass_extensions/sprites/sprites_spec.rb new file mode 100644 index 00000000..9246d8d3 --- /dev/null +++ b/spec/compass/sass_extensions/sprites/sprites_spec.rb @@ -0,0 +1,5 @@ +require 'spec_helper' +require 'fakefs/spec_helpers' + +describe Compass::Sprites do +end diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index 0c8fd94c..ec6555ea 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -1,5 +1,4 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper') -require "compass/sprites" require 'digest/md5' describe Compass::Sprites do From de86610c146aaf846a448ef33eab70393d54a888 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Wed, 23 Mar 2011 01:29:56 -0400 Subject: [PATCH 088/223] moved files around --- lib/compass/sprite_map.rb | 121 -------------------------------- lib/compass/sprites.rb | 26 ------- spec/compass/sprite_map_spec.rb | 52 -------------- spec/compass/sprites_spec.rb | 6 -- 4 files changed, 205 deletions(-) delete mode 100644 lib/compass/sprite_map.rb delete mode 100644 lib/compass/sprites.rb delete mode 100644 spec/compass/sprite_map_spec.rb delete mode 100644 spec/compass/sprites_spec.rb diff --git a/lib/compass/sprite_map.rb b/lib/compass/sprite_map.rb deleted file mode 100644 index ece478a7..00000000 --- a/lib/compass/sprite_map.rb +++ /dev/null @@ -1,121 +0,0 @@ -module Compass - class SpriteMap - attr_reader :uri, :options - - def initialize(uri, options) - @uri, @options = uri, options - end - - def name - ensure_path_and_name! - @name - end - - def path - ensure_path_and_name! - @path - end - - def files - @files ||= Dir[File.join(Compass.configuration.images_path, uri)].sort - end - - def sprite_names - @sprite_names ||= files.collect { |file| File.basename(file, '.png') } - end - - def sass_options - @sass_options ||= options.merge(:filename => name, :syntax => :scss, :importer => self) - end - - def mtime - Compass.quick_cache("mtime:#{uri}") do - files.collect { |file| File.mtime(file) }.max - end - end - - def sass_engine - Sass::Engine.new(content_for_images, options) - end - - private - def ensure_path_and_name! - return if @path && @name - uri =~ %r{((.+/)?(.+))/(.+?)\.png} - @path, @name = $1, $3 - end - - def content_for_images(skip_overrides = false) - <<-SCSS -@import "compass/utilities/sprites/base"; - -// General Sprite Defaults -// You can override them before you import this file. -$#{name}-sprite-base-class: ".#{name}-sprite" !default; -$#{name}-sprite-dimensions: false !default; -$#{name}-position: 0% !default; -$#{name}-spacing: 0 !default; -$#{name}-repeat: no-repeat !default; -$#{name}-prefix: '' !default; - -#{skip_overrides ? "$#{name}-sprites: sprite-map(\"#{uri}\");" : generate_overrides } - -// All sprites should extend this class -// The #{name}-sprite mixin will do so for you. -\#{$#{name}-sprite-base-class} { - background: $#{name}-sprites no-repeat; -} - -// Use this to set the dimensions of an element -// based on the size of the original image. -@mixin #{name}-sprite-dimensions($name) { - @include sprite-dimensions($#{name}-sprites, $name) -} - -// Move the background position to display the sprite. -@mixin #{name}-sprite-position($name, $offset-x: 0, $offset-y: 0) { - @include sprite-background-position($#{name}-sprites, $name, $offset-x, $offset-y) -} - -// Extends the sprite base class and set the background position for the desired sprite. -// It will also apply the image dimensions if $dimensions is true. -@mixin #{name}-sprite($name, $dimensions: $#{name}-sprite-dimensions, $offset-x: 0, $offset-y: 0) { - @extend \#{$#{name}-sprite-base-class}; - @include sprite($#{name}-sprites, $name, $dimensions, $offset-x, $offset-y) -} - -@mixin #{name}-sprites($sprite-names, $dimensions: $#{name}-sprite-dimensions, $prefix: sprite-map-name($#{name}-sprites)) { - @include sprites($#{name}-sprites, $sprite-names, $#{name}-sprite-base-class, $dimensions, $prefix) -} - -// Generates a class for each sprited image. -@mixin all-#{name}-sprites($dimensions: $#{name}-sprite-dimensions, $prefix: sprite-map-name($#{name}-sprites)) { - @include #{name}-sprites(#{sprite_names.join(" ")}, $dimensions, $prefix); -} -SCSS - end - - def generate_overrides - content = <<-TXT -// These variables control the generated sprite output -// You can override them selectively before you import this file. - TXT - sprite_names.map do |sprite_name| - content += <<-SCSS -$#{name}-#{sprite_name}-position: $#{name}-position !default; -$#{name}-#{sprite_name}-spacing: $#{name}-spacing !default; -$#{name}-#{sprite_name}-repeat: $#{name}-repeat !default; - SCSS - end.join - - content += "\n$#{name}-sprites: sprite-map(\"#{uri}\",\n" - content += sprite_names.map do |sprite_name| -%Q{ $#{sprite_name}-position: $#{name}-#{sprite_name}-position, - $#{sprite_name}-spacing: $#{name}-#{sprite_name}-spacing, - $#{sprite_name}-repeat: $#{name}-#{sprite_name}-repeat} - end.join(",\n") - content += ");" - end - end -end - diff --git a/lib/compass/sprites.rb b/lib/compass/sprites.rb deleted file mode 100644 index 5dea8570..00000000 --- a/lib/compass/sprites.rb +++ /dev/null @@ -1,26 +0,0 @@ -module Compass - class Sprites < Sass::Importers::Base - def find_relative(*args) - nil - end - - def find(uri, options) - if uri =~ /\.png$/ - SpriteMap.new(uri, options).sass_engine - end - end - - def key(uri, options) - [self.class.name + ":" + File.dirname(File.expand_path(uri)), - File.basename(uri)] - end - - def mtime(uri, options) - SpriteMap.new(uri, options).mtime - end - - def to_s - "" - end - end -end diff --git a/spec/compass/sprite_map_spec.rb b/spec/compass/sprite_map_spec.rb deleted file mode 100644 index b356d1ed..00000000 --- a/spec/compass/sprite_map_spec.rb +++ /dev/null @@ -1,52 +0,0 @@ -require 'spec_helper' -require 'compass/sprite_map' -require 'fakefs/spec_helpers' -require 'timecop' - -describe Compass::SpriteMap do - include FakeFS::SpecHelpers - - let(:sprite_map) { self.class.describes.new(uri, options) } - let(:options) { { :test => :test2 } } - - subject { sprite_map } - - let(:path) { 'path' } - let(:dir) { "dir/#{name}" } - let(:name) { 'subdir' } - - let(:sprite_path) { File.join(path, dir) } - let(:files) { (1..3).collect { |i| File.join(sprite_path, "#{i}.png") } } - let(:expanded_files) { files.collect { |file| File.expand_path(file) } } - - let(:configuration) { stub(:images_path => path) } - let(:mtime) { Time.now - 30 } - - before { - Compass.stubs(:configuration).returns(configuration) - - FileUtils.mkdir_p(sprite_path) - Timecop.freeze(mtime) do - files.each { |file| File.open(file, 'w') } - end - Timecop.return - } - - describe '#initialize' do - let(:uri) { 'dir/subdir/*.png' } - - its(:uri) { should == uri } - its(:path) { should == dir } - its(:name) { should == name } - - its(:files) { should == expanded_files } - - its(:sass_options) { should == options.merge(:filename => name, :syntax => :scss, :importer => sprite_map) } - - its(:mtime) { should == mtime } - - it "should have a test for the sass engine" do - pending 'sass' - end - end -end diff --git a/spec/compass/sprites_spec.rb b/spec/compass/sprites_spec.rb deleted file mode 100644 index 648fc929..00000000 --- a/spec/compass/sprites_spec.rb +++ /dev/null @@ -1,6 +0,0 @@ -require 'spec_helper' -require 'compass/sprites' -require 'fakefs/spec_helpers' - -describe Compass::Sprites do -end From 9940ee8cbbe52e217a88b9a46ae5074790eea129 Mon Sep 17 00:00:00 2001 From: Steve Hull Date: Thu, 24 Mar 2011 18:54:24 -0700 Subject: [PATCH 089/223] Adding support for pixel-stops for webkit if the gradient goes from left-to-right or top-to-bottom. --- .../functions/gradient_support.rb | 22 +++++++++++++++++-- .../stylesheets/compass/css/gradients.css | 14 ++++++++++++ .../stylesheets/compass/sass/gradients.sass | 8 ++++++- 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/lib/compass/sass_extensions/functions/gradient_support.rb b/lib/compass/sass_extensions/functions/gradient_support.rb index 1aadd511..01243dff 100644 --- a/lib/compass/sass_extensions/functions/gradient_support.rb +++ b/lib/compass/sass_extensions/functions/gradient_support.rb @@ -120,7 +120,7 @@ module Compass::SassExtensions::Functions::GradientSupport def to_webkit(options = self.options) args = [] args << grad_point(position_and_angle || Sass::Script::String.new("top")) - args << grad_point(opposite_position(position_and_angle || Sass::Script::String.new("top"))) + args << linear_end_position(position_and_angle, color_stops) args << grad_color_stops(color_stops) args.each{|a| a.options = options} Sass::Script::String.new("-webkit-gradient(linear, #{args.join(', ')})") @@ -142,7 +142,6 @@ module Compass::SassExtensions::Functions::GradientSupport end module Functions - # given a position list, return a corresponding position in percents def grad_point(position) position = unless position.is_a?(Sass::Script::List) @@ -263,6 +262,25 @@ module Compass::SassExtensions::Functions::GradientSupport end end + # only used for webkit + def linear_end_position(position_and_angle, color_list) + start_point = grad_point(position_and_angle || Sass::Script::String.new("top")) + end_point = grad_point(opposite_position(position_and_angle || Sass::Script::String.new("top"))) + end_target = color_list.value.last.stop + + if color_list.value.last.stop && color_list.value.last.stop.numerator_units == ["px"] + new_end = color_list.value.last.stop.value + if start_point.value.first == end_point.value.first && start_point.value.last.value == 0 + # this means top-to-bottom + end_point.value[1] = Sass::Script::Number.new(end_target.value) + elsif start_point.value.last == end_point.value.last && start_point.value.first.value == 0 + # this implies left-to-right + end_point.value[0] = Sass::Script::Number.new(end_target.value) + end + end + end_point + end + # returns the end position of the gradient from the color stop def grad_end_position(color_list, radial = Sass::Script::Bool.new(false)) assert_type color_list, :List diff --git a/test/fixtures/stylesheets/compass/css/gradients.css b/test/fixtures/stylesheets/compass/css/gradients.css index c3586f46..a7a23906 100644 --- a/test/fixtures/stylesheets/compass/css/gradients.css +++ b/test/fixtures/stylesheets/compass/css/gradients.css @@ -25,6 +25,20 @@ background-image: -moz-linear-gradient(top left, #dddddd, #aaaaaa); background-image: linear-gradient(top left, #dddddd, #aaaaaa); } +.bg-linear-gradient-pixel-stop-from-top { + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjI1JSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 50% 0%, 50% 40, color-stop(25%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -moz-linear-gradient(top, #dddddd 10px, #aaaaaa 40px); + background-image: linear-gradient(top, #dddddd 10px, #aaaaaa 40px); } + +.bg-linear-gradient-pixel-stop-from-left { + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSI1MCUiIHgyPSIxMDAlIiB5Mj0iNTAlIj48c3RvcCBvZmZzZXQ9IjI1JSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 0% 50%, 40 50%, color-stop(25%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -moz-linear-gradient(left, #dddddd 10px, #aaaaaa 40px); + background-image: linear-gradient(left, #dddddd 10px, #aaaaaa 40px); } + .bg-radial-gradient { background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; diff --git a/test/fixtures/stylesheets/compass/sass/gradients.sass b/test/fixtures/stylesheets/compass/sass/gradients.sass index fd0ec96a..1000f551 100644 --- a/test/fixtures/stylesheets/compass/sass/gradients.sass +++ b/test/fixtures/stylesheets/compass/sass/gradients.sass @@ -16,6 +16,12 @@ $experimental-support-for-svg: true .bg-linear-gradient +background-image(linear-gradient(top left, #ddd, #aaa)) +.bg-linear-gradient-pixel-stop-from-top + +background-image(linear-gradient(top, #ddd 10px, #aaa 40px)) + +.bg-linear-gradient-pixel-stop-from-left + +background-image(linear-gradient(left, #ddd 10px, #aaa 40px)) + .bg-radial-gradient +background-image(radial-gradient(center center, #ddd, #aaa 100px)) @@ -215,4 +221,4 @@ $experimental-support-for-svg: true +filter-gradient(white, black, vertical) .ie-alpha-filter - +filter-gradient(rgba(#fff, 1), rgba(#fff, 0)) \ No newline at end of file + +filter-gradient(rgba(#fff, 1), rgba(#fff, 0)) From 2bf3d8f453f93dafaf747470133957ad22aec293 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 00:54:47 -0400 Subject: [PATCH 090/223] reverted chunky_png version pushed that by mistake and patched a bug that was causing callbacks to register twice --- Gemfile.lock | 6 +++--- compass.gemspec | 2 +- lib/compass/configuration/helpers.rb | 13 ++++++++----- spec/sprites_spec.rb | 28 +++++++++++++++++++++++++++- 4 files changed, 39 insertions(+), 10 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index e6e7f6fb..812473f3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,8 +1,8 @@ PATH remote: . specs: - compass (0.11.beta.3.0fdf606) - chunky_png (~> 1.1.0) + compass (0.11.beta.3.6ff877c) + chunky_png (~> 0.12) sass (>= 3.1.0.alpha.249) GEM @@ -38,7 +38,7 @@ GEM addressable (2.2.4) arel (2.0.9) builder (2.1.2) - chunky_png (1.1.0) + chunky_png (0.12.0) compass-validator (3.0.0) css_parser (1.0.1) cucumber (0.9.4) diff --git a/compass.gemspec b/compass.gemspec index d491b294..e5758060 100644 --- a/compass.gemspec +++ b/compass.gemspec @@ -17,7 +17,7 @@ Gem::Specification.new do |gemspec| gemspec.summary = %q{A Real Stylesheet Framework} gemspec.add_dependency 'sass', '>= 3.1.0.alpha.249' - gemspec.add_dependency 'chunky_png', '~> 1.1.0' + gemspec.add_dependency 'chunky_png', '~> 0.12' gemspec.files = %w(README.markdown LICENSE.markdown VERSION.yml Rakefile) gemspec.files += Dir.glob("bin/*") diff --git a/lib/compass/configuration/helpers.rb b/lib/compass/configuration/helpers.rb index 37fc478a..c10bfffa 100644 --- a/lib/compass/configuration/helpers.rb +++ b/lib/compass/configuration/helpers.rb @@ -65,11 +65,14 @@ module Compass Sass::Plugin.add_template_location sass_dir, css_dir end end - Sass::Plugin.on_updating_stylesheet do |sass_file, css_file| - Compass.configuration.run_callback(:stylesheet_saved, css_file) - end - Sass::Plugin.on_compilation_error do |e, filename, css| - Compass.configuration.run_callback(:stylesheet_error, filename, e.message) + unless defined?(CallbacksSetup) + Sass::Plugin.on_updating_stylesheet do |sass_file, css_file| + Compass.configuration.run_callback(:stylesheet_saved, css_file) + end + Sass::Plugin.on_compilation_error do |e, filename, css| + Compass.configuration.run_callback(:stylesheet_error, filename, e.message) + end + const_set('CallbacksSetup', true) end end diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index 3a9668d0..d8944c03 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -1,5 +1,4 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper') -require "compass/sprites" require 'digest/md5' describe Compass::Sprites do @@ -440,5 +439,32 @@ describe Compass::Sprites do } CSS end + + it "should calculate corret sprite demsions when givin spacing via issue#253" do + css = render <<-SCSS + $squares-spacing: 10px; + @import "squares/*.png"; + .foo { + @include sprite-background-position($squares-sprites, "twenty-by-twenty"); + } + .bar { + @include sprite-background-position($squares-sprites, "ten-by-ten"); + } + SCSS + image_size('squares-*.png').should == [20, 40] + css.should == <<-CSS + .squares-sprite { + background: url('/squares-e3c68372d9.png') no-repeat; + } + + .foo { + background-position: 0 -20px; + } + + .bar { + background-position: 0 0; + } + CSS + end end \ No newline at end of file From 2041ed0845df125204c0c63560a29546a1f9c40c Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 01:04:11 -0400 Subject: [PATCH 091/223] gemfile.lock --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 6042394b..cf128fe3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.3.f8197c5) + compass (0.11.beta.3.de86610) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) From e4756376821cae86fabf167e170f088ce093950c Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 01:23:13 -0400 Subject: [PATCH 092/223] merged sprite abstracton branch --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index b373ae96..aecdb1ba 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.3.2041ed0) + compass (0.11.beta.3.fccd5d9) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) From cca6474ba21dd42200a5a9bb1357df3563b1a8ae Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 21 Mar 2011 09:21:36 -0700 Subject: [PATCH 093/223] Don't extend core classes. --- lib/compass.rb | 2 +- .../rails/templates/compass-install-rails.rb | 8 ++++---- lib/compass/core_ext.rb | 14 -------------- lib/compass/util.rb | 11 +++++++++++ test/test_case_helper.rb | 2 +- 5 files changed, 17 insertions(+), 20 deletions(-) delete mode 100644 lib/compass/core_ext.rb diff --git a/lib/compass.rb b/lib/compass.rb index 952c0627..382f094b 100644 --- a/lib/compass.rb +++ b/lib/compass.rb @@ -1,7 +1,7 @@ module Compass end -%w(dependencies util browser_support sass_extensions core_ext version errors quick_cache).each do |lib| +%w(dependencies util browser_support sass_extensions version errors quick_cache).each do |lib| require "compass/#{lib}" end diff --git a/lib/compass/app_integration/rails/templates/compass-install-rails.rb b/lib/compass/app_integration/rails/templates/compass-install-rails.rb index 8bbc5593..aa2b8ce8 100644 --- a/lib/compass/app_integration/rails/templates/compass-install-rails.rb +++ b/lib/compass/app_integration/rails/templates/compass-install-rails.rb @@ -47,18 +47,18 @@ css_framework = ask("What CSS Framework install do you want to use with Compass? # sass storage prompt sass_dir = ask("Where would you like to keep your sass files within your project? (default: 'app/stylesheets')") -sass_dir = "app/stylesheets" if sass_dir.blank? +sass_dir = "app/stylesheets" if Compass::Util.blank?(sass_dir) # compiled css storage prompt css_dir = ask("Where would you like Compass to store your compiled css files? (default: 'public/stylesheets/compiled')") -css_dir = "public/stylesheets/compiled" if css_dir.blank? +css_dir = "public/stylesheets/compiled" if Compass::Util.blank?(css_dir) # use sudo for gem commands? use_sudo = nil if sudo_is_an_option? # dont give them the option if they are on a system that can't use sudo (aka windows) use_sudo = yes?("Use sudo for the gem commands? (the default for your system is #{sudo_is_an_option? ? 'yes' : 'no'})") end -use_sudo = sudo_is_an_option? if use_sudo.blank? +use_sudo = sudo_is_an_option? if Compass::Util.blank?(use_sudo) # define dependencies gem "haml", :version => ">=3.0.0" @@ -71,7 +71,7 @@ rake "gems:unpack GEM=compass --trace" # build out compass command compass_command = "compass init rails . --css-dir=#{css_dir} --sass-dir=#{sass_dir} " -compass_command << "--using #{css_framework} " unless css_framework.blank? +compass_command << "--using #{css_framework} " unless Compass::Util.blank?(css_framework) # integrate it! run "haml --rails ." diff --git a/lib/compass/core_ext.rb b/lib/compass/core_ext.rb deleted file mode 100644 index 09927e72..00000000 --- a/lib/compass/core_ext.rb +++ /dev/null @@ -1,14 +0,0 @@ -class String - unless method_defined?(:blank?) - # see if string has any content - def blank?; self.length.zero?; end - end -end - -class NilClass - unless method_defined?(:blank?) - def blank? - true - end - end -end diff --git a/lib/compass/util.rb b/lib/compass/util.rb index 516be5f9..4e75dd03 100644 --- a/lib/compass/util.rb +++ b/lib/compass/util.rb @@ -15,4 +15,15 @@ module Compass::Util send(WARN_METHOD, *args) end + def blank?(value) + case value + when NilClass, FalseClass + true + when String, Array + value.length.zero? + else + false + end + end + end diff --git a/test/test_case_helper.rb b/test/test_case_helper.rb index 3c4f95e0..9110ae5d 100644 --- a/test/test_case_helper.rb +++ b/test/test_case_helper.rb @@ -1,7 +1,7 @@ module Compass module TestCaseHelper def absolutize(path) - if path.blank? + if Compass::Util.blank?(path) File.dirname(__FILE__) elsif path[0] == ?/ "#{File.dirname(__FILE__)}#{path}" From 3272dc7e5a35316dc2dc29d18430e64ab139726c Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 21 Mar 2011 09:29:43 -0700 Subject: [PATCH 094/223] Load extensions found in ~/.compass/extensions, if the directory exists. --- doc-src/content/CHANGELOG.markdown | 7 ++++++- features/extensions.feature | 7 +++++++ lib/compass.rb | 5 ++++- lib/compass/configuration/helpers.rb | 7 ++++++- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 24917d0f..df433711 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -14,7 +14,12 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/ The Documentation for the [latest preview release](http://beta.compass-style.org/) -0.11.beta.3 (3/15/2011) +0.11.beta.4 (UNRELEASED) +------------------------ + +* Extensions that are installed into ~/.compass/extensions will be automatically available to all your compass projects. + +0.11.beta.3 (03/15/2011) ------------------------ ### Compass CSS3 diff --git a/features/extensions.feature b/features/extensions.feature index eaed66fb..079fa53c 100644 --- a/features/extensions.feature +++ b/features/extensions.feature @@ -20,3 +20,10 @@ Feature: Extensions When I run: compass frameworks Then the list of frameworks includes "testing" + @listframeworks + Scenario: Shared extensions directory + Given I am using the existing project in test/fixtures/stylesheets/compass + And the "~/.compass/extensions" directory exists + And and I have a fake extension at ~/.compass/extensions/testing + When I run: compass frameworks + Then the list of frameworks includes "testing" diff --git a/lib/compass.rb b/lib/compass.rb index 382f094b..dd1116b7 100644 --- a/lib/compass.rb +++ b/lib/compass.rb @@ -14,7 +14,10 @@ module Compass def lib_directory File.expand_path(File.join(File.dirname(__FILE__))) end - module_function :base_directory, :lib_directory + def shared_extension_paths + [File.expand_path("~/.compass/extensions")] + end + module_function :base_directory, :lib_directory, :shared_extension_paths extend QuickCache end diff --git a/lib/compass/configuration/helpers.rb b/lib/compass/configuration/helpers.rb index c10bfffa..03def3f5 100644 --- a/lib/compass/configuration/helpers.rb +++ b/lib/compass/configuration/helpers.rb @@ -101,7 +101,12 @@ module Compass end def discover_extensions! - if File.exists?(configuration.extensions_path) + Compass.shared_extension_paths.each do |extensions_path| + if File.directory?(extensions_path) + Compass::Frameworks.discover(extensions_path) + end + end + if File.directory?(configuration.extensions_path) Compass::Frameworks.discover(configuration.extensions_path) end end From 9540450e25a24ea2a911cd6cac01fdc7d95b1797 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 02:11:03 -0400 Subject: [PATCH 095/223] updated change log --- Gemfile.lock | 2 +- doc-src/content/CHANGELOG.markdown | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index aecdb1ba..8a332a1a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.3.fccd5d9) + compass (0.11.beta.3.3272dc7) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index df433711..3f8994bb 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -19,6 +19,14 @@ The Documentation for the [latest preview release](http://beta.compass-style.org * Extensions that are installed into ~/.compass/extensions will be automatically available to all your compass projects. +### Compass Internals + +* Fixed a small bug in callbacks that was causing them to register twice +* The Sprite classes have been abstracted allowing for different engines +* Bumped chunky_png version to 1.1.0 +* Total rewrite of the sprite generation classes - thanks to @johnbintz for the help +* More Rspec tests + 0.11.beta.3 (03/15/2011) ------------------------ From 6822db1705a9d1444f6effc400e7a2f700a514fb Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 02:12:49 -0400 Subject: [PATCH 096/223] added link to change log --- doc-src/content/CHANGELOG.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 3f8994bb..0acde11c 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -24,7 +24,7 @@ The Documentation for the [latest preview release](http://beta.compass-style.org * Fixed a small bug in callbacks that was causing them to register twice * The Sprite classes have been abstracted allowing for different engines * Bumped chunky_png version to 1.1.0 -* Total rewrite of the sprite generation classes - thanks to @johnbintz for the help +* Total rewrite of the sprite generation classes - thanks to [@johnbintz](https://github.com/johnbintz) for the help * More Rspec tests 0.11.beta.3 (03/15/2011) From f5c902068a53b91ba124bc4120aefa51c49b9f19 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Thu, 24 Mar 2011 23:13:52 -0700 Subject: [PATCH 097/223] Version bump. --- VERSION.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.yml b/VERSION.yml index 08c2e2e2..927d5311 100644 --- a/VERSION.yml +++ b/VERSION.yml @@ -2,4 +2,4 @@ :major: 0 :minor: 11 :state: beta -:build: 3 +:build: 4 From ca1f13744f848c040f698781c25395a725cac1ac Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 02:18:37 -0400 Subject: [PATCH 098/223] added sprite config options to config reference --- .../content/help/tutorials/configuration-reference.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc-src/content/help/tutorials/configuration-reference.markdown b/doc-src/content/help/tutorials/configuration-reference.markdown index 101a0fe4..97c63b45 100644 --- a/doc-src/content/help/tutorials/configuration-reference.markdown +++ b/doc-src/content/help/tutorials/configuration-reference.markdown @@ -271,6 +271,11 @@ later on. String The relative http path to font files on the web server. + + sprite_engine + Symbol + Defaults to :chunky_png + ## Configuration Functions From 713ebe16003d5432d4dfd115d918a2099e0df5a2 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 02:53:25 -0400 Subject: [PATCH 099/223] added extending section to turtorials --- .../content/help/tutorials/extending.markdown | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 doc-src/content/help/tutorials/extending.markdown diff --git a/doc-src/content/help/tutorials/extending.markdown b/doc-src/content/help/tutorials/extending.markdown new file mode 100644 index 00000000..4bc17e9b --- /dev/null +++ b/doc-src/content/help/tutorials/extending.markdown @@ -0,0 +1,49 @@ +--- +title: Extending Compass +layout: tutorial +crumb: Extending Compass +classnames: + - tutorial +--- + +# Extending Compass + +## Sprite engine + +The sprite engine is the work horse of sprite generation it's the interface for assembling and writing the image file to disk. + +## Requirments + +A sprite engine requires only one method and that is `construct_sprite` which must return an object that responds to `save(filepath)` + +Once inside this method you have access to `images` which is a collection of [Compass::SassExtensions::Sprites::Image](http://rdoc.info/github/chriseppstein/compass/dda7c9/Compass/SassExtensions/Sprites/Image) + +Since the Engine module extends base you also have access to all methods in [Compass::SassExtensions::Sprites::Base](http://rdoc.info/github/chriseppstein/compass/dda7c9/Compass/SassExtensions/Sprites/Base) + +### Configuration + +To enable your sprite engine from the config file set + + sprite_engine = : + +The example below will load `Compass::SassExtension::Sprites::ChunkyPngEngine` + + sprite_engine = :chunky_png + + +### Class Definition + + module Compass + module SassExtensions + module Sprites + module Engine + + # Returns an object + def construct_sprite + #must return a image object that responds to save(filename) + end + + end + end + end + end From 39947f04d0eb5f8475c3fd3b80c34f1b91414c0a Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 02:53:52 -0400 Subject: [PATCH 100/223] gemfile.lock --- doc-src/Gemfile.lock | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index 37c68cec..8d7adce5 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,40 +8,40 @@ GIT PATH remote: .. specs: - compass (0.11.beta.3.5a2ea40) - chunky_png (~> 0.12.0) + compass (0.11.beta.4.dda7c94) + chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) GEM remote: http://rubygems.org/ specs: - activesupport (3.0.1) - chunky_png (0.12.0) - coderay (0.9.5) - compass-susy-plugin (0.8.1) - compass (>= 0.10.0) + activesupport (3.0.5) + chunky_png (1.1.0) + coderay (0.9.7) + compass-susy-plugin (0.9.beta.3) + compass (>= 0.11.beta.3) cri (1.0.1) css-slideshow (0.2.0) compass (>= 0.10.0.rc3) - css_parser (1.1.4) + css_parser (1.1.5) fssm (0.1.2) - haml (3.1.0.alpha.36) + haml (3.1.0.alpha.147) i18n (0.4.2) - json (1.4.6) + json (1.5.1) mime-types (1.16) - nokogiri (1.4.3.1) - rack (1.2.1) + nokogiri (1.4.4) + rack (1.2.2) rake (0.8.7) - rdiscount (1.6.5) + rdiscount (1.6.8) ruby-prof (0.9.2) - sass (3.1.0.caring.0) + sass (3.1.0.alpha.252) serve (1.0.0) activesupport (~> 3.0.1) i18n (~> 0.4.1) rack (~> 1.2.1) tzinfo (~> 0.3.23) - thor (0.14.4) - tzinfo (0.3.23) + thor (0.14.6) + tzinfo (0.3.25) PLATFORMS ruby From 2b5d91fa9d6cea7b193ac7c9ca442cf8ef587ee4 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 25 Mar 2011 07:58:57 -0700 Subject: [PATCH 101/223] fix some broken links --- doc-src/content/help/tutorials.haml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc-src/content/help/tutorials.haml b/doc-src/content/help/tutorials.haml index dbeb2ee5..cd6093e7 100644 --- a/doc-src/content/help/tutorials.haml +++ b/doc-src/content/help/tutorials.haml @@ -13,9 +13,9 @@ layout: tutorial ## New to Compass? - If you're new to Compass, you might be interested in [best practices](/help/tutorials/best-practices), the [configuration reference](/help/tutorials/configuration-reference), [configurable variables](/help/tutorials/configurable-variables), - or the [command line documentation](/help/tutorials/command-line). + If you're new to Compass, you might be interested in [best practices](/help/tutorials/best-practices/), the [configuration reference](/help/tutorials/configuration-reference/), [configurable variables](/help/tutorials/configurable-variables/), + or the [command line documentation](/help/tutorials/command-line/). ## Want to contribute? - If you've been using Compass for a while and you'd like to give back, check out the tutorials on [contributing](/help/tutorials/contributing) and [creating extensions](/help/tutorials/extensions). + If you've been using Compass for a while and you'd like to give back, check out the tutorials on [contributing](/help/tutorials/contributing/) and [creating extensions](/help/tutorials/extensions/). From 6d91ecc0ea6a4deb4d85053d0b50182a497552c7 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 25 Mar 2011 08:24:07 -0700 Subject: [PATCH 102/223] Fix broken link --- doc-src/content/help/tutorials.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc-src/content/help/tutorials.haml b/doc-src/content/help/tutorials.haml index cd6093e7..047f8f52 100644 --- a/doc-src/content/help/tutorials.haml +++ b/doc-src/content/help/tutorials.haml @@ -13,7 +13,7 @@ layout: tutorial ## New to Compass? - If you're new to Compass, you might be interested in [best practices](/help/tutorials/best-practices/), the [configuration reference](/help/tutorials/configuration-reference/), [configurable variables](/help/tutorials/configurable-variables/), + If you're new to Compass, you might be interested in [best practices](/help/tutorials/best_practices/), the [configuration reference](/help/tutorials/configuration-reference/), [configurable variables](/help/tutorials/configurable-variables/), or the [command line documentation](/help/tutorials/command-line/). ## Want to contribute? From e47fccd2ed6222e7b870c9e5554b24b2bde590fc Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 12:48:18 -0400 Subject: [PATCH 103/223] rdoc updates for sprite classes --- lib/compass/sass_extensions/sprites/base.rb | 26 +++++++++++++--- .../sprites/engines/chunky_png_engine.rb | 1 - lib/compass/sass_extensions/sprites/image.rb | 30 ++++++++++++++----- .../sass_extensions/sprites/sprite_map.rb | 18 +++++++++-- .../sass_extensions/sprites/sprites.rb | 7 +++-- 5 files changed, 65 insertions(+), 17 deletions(-) diff --git a/lib/compass/sass_extensions/sprites/base.rb b/lib/compass/sass_extensions/sprites/base.rb index e2f7251e..c50d047e 100644 --- a/lib/compass/sass_extensions/sprites/base.rb +++ b/lib/compass/sass_extensions/sprites/base.rb @@ -2,6 +2,10 @@ module Compass module SassExtensions module Sprites class Base < Sass::Script::Literal + + + # Initialize a new aprite object from a relative file path + # the path is relative to the images_path confguration option def self.from_uri(uri, context, kwargs) sprite_map = ::Compass::SpriteMap.new(uri.value, {}) @@ -10,7 +14,8 @@ module Compass end new(sprites, sprite_map.path, sprite_map.name, context, kwargs) end - + + # Loads the sprite engine def require_engine! self.class.send(:include, eval("::Compass::SassExtensions::Sprites::#{modulize}Engine")) end @@ -41,13 +46,15 @@ module Compass # Calculates the overal image dimensions # collects image sizes and input parameters for each sprite + # Calculates the height def compute_image_metadata! @width = 0 init_images compute_image_positions! @height = @images.last.top + @images.last.height end - + + # Creates the Sprite::Image objects for each image and calculates the width def init_images @images = image_names.collect do |relative_file| image = Compass::SassExtensions::Sprites::Image.new(self, relative_file, options) @@ -66,27 +73,34 @@ module Compass image.top = last_image.top + last_image.height + [image.spacing, last_image.spacing].max end end - + + # Fetches the Sprite::Image object for the supplied name def image_for(name) @images.detect { |img| img.name == name} end + # Returns true if the image name has a hover selector image def has_hover?(name) !image_for("#{name}_hover").nil? end + # Returns true if the image name has a target selector image def has_target?(name) !image_for("#{name}_target").nil? end + # Returns true if the image name has an active selector image def has_active?(name) !image_for("#{name}_active").nil? end + # Return and array of image names that make up this sprite def sprite_names image_names.map { |f| File.basename(f, '.png') } end + + # Validates that the sprite_names are valid sass def validate! for sprite_name in sprite_names unless sprite_name =~ /\A#{Sass::SCSS::RX::IDENT}\Z/ @@ -108,11 +122,13 @@ module Compass Compass.configuration.run_callback(:sprite_generated, sprite_data) end end - + + # Does this sprite need to be generated def generation_required? !File.exists?(filename) || outdated? end + # Returns the uniqueness hash for this sprite object def uniqueness_hash @uniqueness_hash ||= begin sum = Digest::MD5.new @@ -128,6 +144,7 @@ module Compass @uniqueness_hash end + # Saves the sprite engine def save!(output_png) saved = output_png.save filename Compass.configuration.run_callback(:sprite_saved, filename) @@ -147,6 +164,7 @@ module Compass true end + # Mtime of the sprite file def mtime File.mtime(filename) end diff --git a/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb b/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb index 1483b762..3a17d9e4 100644 --- a/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb +++ b/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb @@ -11,7 +11,6 @@ module Compass # Returns a PNG object def construct_sprite - #require_png_library! output_png = ChunkyPNG::Image.new(width, height, ChunkyPNG::Color::TRANSPARENT) images.each do |image| input_png = ChunkyPNG::Image.from_file(image.file) diff --git a/lib/compass/sass_extensions/sprites/image.rb b/lib/compass/sass_extensions/sprites/image.rb index 4ed352be..4a73ee8f 100644 --- a/lib/compass/sass_extensions/sprites/image.rb +++ b/lib/compass/sass_extensions/sprites/image.rb @@ -9,23 +9,28 @@ module Compass @base, @relative_file, @options = base, relative_file, options @left = @top = 0 end - + + # The Full path to the image def file File.join(Compass.configuration.images_path, relative_file) end - + + # Width of the image def width dimensions.first end - + + # Height of the image def height dimensions.last end - + + # Basename of the image def name File.basename(relative_file, '.png') end + # Value of $#{name}-repeat or $repeat def repeat [ "#{name}-repeat", "repeat" ].each { |which| if var = options.get_var(which) @@ -35,46 +40,57 @@ module Compass "no-repeat" end + # Value of $#{name}-position or $position defaults o 0px def position options.get_var("#{name}-position") || options.get_var("position") || Sass::Script::Number.new(0, ["px"]) end - + + # Offset within the sprite def offset (position.unitless? || position.unit_str == "px") ? position.value : 0 end - + + # Spacing between this image and the next def spacing (options.get_var("#{name}-spacing") || options.get_var("spacing") || Sass::Script::Number.new(0)).value end + # MD5 hash of this file def digest Digest::MD5.file(file).hexdigest end - + + # mtime of this file def mtime File.mtime(file) end + # Has hover selector def hover? base.has_hover?(name) end + # Hover selector Image object if exsists def hover base.image_for("#{name}_hover") end + # Has target selector def target? base.has_target?(name) end + # Target selector Image object if exsists def target base.image_for("#{name}_target") end + # Has active selector def active? base.has_active?(name) end + # Active selector Image object if exsists def active base.image_for("#{name}_active") end diff --git a/lib/compass/sass_extensions/sprites/sprite_map.rb b/lib/compass/sass_extensions/sprites/sprite_map.rb index ece478a7..fcbc823d 100644 --- a/lib/compass/sass_extensions/sprites/sprite_map.rb +++ b/lib/compass/sass_extensions/sprites/sprite_map.rb @@ -6,34 +6,41 @@ module Compass @uri, @options = uri, options end + # Name of this spite def name ensure_path_and_name! @name end + # The on-disk location of this sprite def path ensure_path_and_name! @path end - + + # Returns the Glob of image files for this sprite def files @files ||= Dir[File.join(Compass.configuration.images_path, uri)].sort end + # Returns an Array of image names without the file extension def sprite_names @sprite_names ||= files.collect { |file| File.basename(file, '.png') } end + # Returns the sass options for this sprite def sass_options @sass_options ||= options.merge(:filename => name, :syntax => :scss, :importer => self) end + # Returns the mtime of all image files combined def mtime Compass.quick_cache("mtime:#{uri}") do files.collect { |file| File.mtime(file) }.max end end - + + # Returns a Sass::Engine for this sprite object def sass_engine Sass::Engine.new(content_for_images, options) end @@ -45,6 +52,7 @@ module Compass @path, @name = $1, $3 end + # Generates the Sass for this sprite file def content_for_images(skip_overrides = false) <<-SCSS @import "compass/utilities/sprites/base"; @@ -94,7 +102,11 @@ $#{name}-prefix: '' !default; } SCSS end - + + # Generates the override defaults for this Sprite + # $#{name}-#{sprite_name}-position + # $#{name}-#{sprite_name}-spacing + # #{name}-#{sprite_name}-repeat: def generate_overrides content = <<-TXT // These variables control the generated sprite output diff --git a/lib/compass/sass_extensions/sprites/sprites.rb b/lib/compass/sass_extensions/sprites/sprites.rb index 5dea8570..fcac8979 100644 --- a/lib/compass/sass_extensions/sprites/sprites.rb +++ b/lib/compass/sass_extensions/sprites/sprites.rb @@ -1,15 +1,18 @@ module Compass class Sprites < Sass::Importers::Base + def find_relative(*args) nil end - + + # Called by the sass engine to build a new SpriteMap def find(uri, options) if uri =~ /\.png$/ SpriteMap.new(uri, options).sass_engine end end - + + # Called by the sass engine to identift the SpriteMap def key(uri, options) [self.class.name + ":" + File.dirname(File.expand_path(uri)), File.basename(uri)] From 9962a37b2ed6150ccb56e56521cceddd96a55f61 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 15:00:50 -0400 Subject: [PATCH 104/223] added tests and css selector support for sprites ending in _hover _target _active closes#248 --- Gemfile.lock | 2 +- .../compass/utilities/sprites/_base.scss | 15 +++++ .../sass_extensions/functions/sprites.rb | 61 ++++++++++++++----- spec/sprites_spec.rb | 39 +++++++++++- 4 files changed, 100 insertions(+), 17 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 8a332a1a..1a8ba66c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.3.3272dc7) + compass (0.11.beta.4.e47fccd) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss b/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss index 650431c5..002419f8 100644 --- a/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss +++ b/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss @@ -34,6 +34,21 @@ @each $sprite-name in $sprite-names { $full-sprite-name: if($prefix and $prefix != "", "#{$prefix}-#{$sprite-name}", $sprite-name); .#{$full-sprite-name} { + @if sprite_has_hover($map, $sprite-name) { + &:hover { + @include sprite($map, "#{$sprite-name}_hover") + } + } + @if sprite_has_target($map, $sprite-name) { + &:target { + @include sprite($map, "#{$sprite-name}_target") + } + } + @if sprite_has_active($map, $sprite-name) { + &:active { + @include sprite($map, "#{$sprite-name}_active") + } + } @if $base-class { @extend #{$base-class}; } @include sprite($map, $sprite-name, $dimensions); } diff --git a/lib/compass/sass_extensions/functions/sprites.rb b/lib/compass/sass_extensions/functions/sprites.rb index ba40afd0..9b3637c9 100644 --- a/lib/compass/sass_extensions/functions/sprites.rb +++ b/lib/compass/sass_extensions/functions/sprites.rb @@ -34,9 +34,7 @@ module Compass::SassExtensions::Functions::Sprites # # background: url('/images/icons.png?12345678') 0 -24px no-repeat; def sprite(map, sprite, offset_x = ZERO, offset_y = ZERO) - unless map.is_a?(Compass::SassExtensions::Sprites::Base) - missing_sprite!("sprite") - end + verify_map(map) unless sprite.is_a?(Sass::Script::String) raise Sass::SyntaxError, %Q(The second argument to sprite() must be a sprite name. See http://beta.compass-style.org/help/tutorials/spriting/ for more information.) end @@ -51,18 +49,15 @@ module Compass::SassExtensions::Functions::Sprites # Returns the name of a sprite map # The name is derived from the folder than contains the sprites. def sprite_map_name(map) - unless map.is_a?(Compass::SassExtensions::Sprites::Base) - missing_sprite!("sprite-map-name") - end + verify_map(map, "sprite-map-name") Sass::Script::String.new(map.name) end Sass::Script::Functions.declare :sprite_name, [:sprite] # Returns the path to the original image file for the sprite with the given name def sprite_file(map, sprite) - unless map.is_a?(Compass::SassExtensions::Sprites::Base) - missing_sprite!("sprite-file") - end + verify_map(map, "sprite") + verify_sprite(sprite) if image = map.image_for(sprite.value) Sass::Script::String.new(image.relative_file) else @@ -71,11 +66,37 @@ module Compass::SassExtensions::Functions::Sprites end Sass::Script::Functions.declare :sprite_file, [:map, :sprite] + # Returns boolean is sprite image has a hover selector + def sprite_has_hover(map, sprite) + verify_map(map) + verify_sprite(sprite) + Sass::Script::Bool.new map.has_hover?(sprite) + end + + Sass::Script::Functions.declare :sprite_has_hover, [:map, :sprite] + + # Returns boolean is sprite image has a target selector + def sprite_has_target(map, sprite) + verify_map(map) + verify_sprite(sprite) + Sass::Script::Bool.new map.has_target?(sprite) + end + + Sass::Script::Functions.declare :sprite_has_target, [:map, :sprite] + + # Returns boolean is sprite image has a active selector + def sprite_has_active(map, sprite) + verify_map(map) + verify_sprite(sprite) + Sass::Script::Bool.new map.has_active?(sprite) + end + + Sass::Script::Functions.declare :sprite_has_active, [:map, :sprite] + + # Returns a url to the sprite image. def sprite_url(map) - unless map.is_a?(Compass::SassExtensions::Sprites::Base) - missing_sprite!("sprite-url") - end + verify_map(map, "sprite-url") map.generate image_url(Sass::Script::String.new("#{map.path}-#{map.uniqueness_hash}.png"), Sass::Script::Bool.new(false), @@ -103,9 +124,7 @@ module Compass::SassExtensions::Functions::Sprites # # background-position: 3px -36px; def sprite_position(map, sprite = nil, offset_x = ZERO, offset_y = ZERO) - unless map.is_a?(Compass::SassExtensions::Sprites::Base) - missing_sprite!("sprite-position") - end + verify_map(map, "sprite-position") unless sprite && sprite.is_a?(Sass::Script::String) raise Sass::SyntaxError, %Q(The second argument to sprite-position must be a sprite name. See http://beta.compass-style.org/help/tutorials/spriting/ for more information.) end @@ -134,6 +153,18 @@ module Compass::SassExtensions::Functions::Sprites protected + def verify_map(map, error = "sprite") + unless map.is_a?(Compass::SassExtensions::Sprites::Base) + missing_sprite!(error) + end + end + + def verify_sprite(sprite) + unless sprite.is_a?(Sass::Script::String) + raise Sass::SyntaxError, %Q(The second argument to sprite() must be a sprite name. See http://beta.compass-style.org/help/tutorials/spriting/ for more information.) + end + end + def missing_image!(map, sprite) raise Sass::SyntaxError, "No sprite called #{sprite} found in sprite map #{map.path}/#{map.name}. Did you mean one of: #{map.sprite_names.join(", ")}" end diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index d8944c03..e31a3e68 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -467,4 +467,41 @@ describe Compass::Sprites do CSS end -end \ No newline at end of file + it "should render corret sprite with css selectors via issue#248" do + css = render <<-SCSS + @import "selectors/*.png"; + @include all-selectors-sprites; + SCSS + css.should == <<-CSS + .selectors-sprite, .selectors-ten-by-ten, .selectors-ten-by-ten_active, .selectors-ten-by-ten_hover, .selectors-ten-by-ten_target { + background: url('/selectors-edfef809e2.png') no-repeat; + } + + .selectors-ten-by-ten { + background-position: 0 0; + } + .selectors-ten-by-ten:hover { + background-position: 0 -20px; + } + .selectors-ten-by-ten:target { + background-position: 0 -30px; + } + .selectors-ten-by-ten:active { + background-position: 0 -10px; + } + + .selectors-ten-by-ten_active { + background-position: 0 -10px; + } + + .selectors-ten-by-ten_hover { + background-position: 0 -20px; + } + + .selectors-ten-by-ten_target { + background-position: 0 -30px; + } + CSS + end + +end From 4d7dc7ad305a2681783619df84aaf6f67832897d Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 17:17:27 -0400 Subject: [PATCH 105/223] refactored sprite selectors --- Gemfile.lock | 2 +- .../compass/utilities/sprites/_base.scss | 37 +++++++++--------- .../utilities/sprites/_sprite-img.scss | 2 + .../sass_extensions/functions/sprites.rb | 38 ++++++++----------- lib/compass/sass_extensions/sprites/image.rb | 15 ++++++-- .../sass_extensions/sprites/image_spec.rb | 23 ++++++++++- spec/sprites_spec.rb | 23 ++++------- 7 files changed, 78 insertions(+), 62 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1a8ba66c..09e8eb4c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.4.e47fccd) + compass (0.11.beta.4.9962a37) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss b/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss index 002419f8..e033d85f 100644 --- a/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss +++ b/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss @@ -24,6 +24,19 @@ } } +// Include the selectors for the `$sprite` given the `$map` and the +// `$full-sprite-name` +// @private +@mixin sprite_selectors($map, $sprite-name, $full-sprite-name) { + @each $selector in $sprite-selectors { + @if sprite_has_selector($map, $sprite-name, $selector) { + .#{$full-sprite-name}:#{$selector}, .#{$full-sprite-name}_#{$selector}, .#{$full-sprite-name}-#{$selector} { + @include sprite($map, "#{$sprite-name}_#{$selector}"); + } + } + } +} + // Generates a class for each space separated name in `$sprite-names`. // The class will be of the form .-. // @@ -32,25 +45,13 @@ // If `$dimensions` is `true`, the sprite dimensions will specified. @mixin sprites($map, $sprite-names, $base-class: false, $dimensions: false, $prefix: sprite-map-name($map)) { @each $sprite-name in $sprite-names { - $full-sprite-name: if($prefix and $prefix != "", "#{$prefix}-#{$sprite-name}", $sprite-name); - .#{$full-sprite-name} { - @if sprite_has_hover($map, $sprite-name) { - &:hover { - @include sprite($map, "#{$sprite-name}_hover") - } + @if sprite_does_not_have_parent($map, $sprite-name) { + $full-sprite-name: "#{$prefix}-#{$sprite-name}"; + .#{$full-sprite-name} { + @if $base-class { @extend #{$base-class}; } + @include sprite($map, $sprite-name, $dimensions); } - @if sprite_has_target($map, $sprite-name) { - &:target { - @include sprite($map, "#{$sprite-name}_target") - } - } - @if sprite_has_active($map, $sprite-name) { - &:active { - @include sprite($map, "#{$sprite-name}_active") - } - } - @if $base-class { @extend #{$base-class}; } - @include sprite($map, $sprite-name, $dimensions); + @include sprite_selectors($map, $sprite-name, $full-sprite-name); } } } \ No newline at end of file diff --git a/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite-img.scss b/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite-img.scss index b14536be..4cbfb359 100644 --- a/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite-img.scss +++ b/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite-img.scss @@ -24,6 +24,8 @@ $sprite-image-default-width: $sprite-default-size !default; $sprite-image-default-height: $sprite-default-size !default; +$sprite-selectors: hover, target, active !default; + // Sets all the rules for a sprite from a given sprite image to show just one of the sprites. // To reduce duplication use a sprite-bg mixin for common properties and a sprite-select mixin for positioning. @mixin sprite-img($img, $col, $row: 1, $width: $sprite-image-default-width, $height: $sprite-image-default-height, $margin: $sprite-default-margin) { diff --git a/lib/compass/sass_extensions/functions/sprites.rb b/lib/compass/sass_extensions/functions/sprites.rb index 9b3637c9..18ca2009 100644 --- a/lib/compass/sass_extensions/functions/sprites.rb +++ b/lib/compass/sass_extensions/functions/sprites.rb @@ -1,6 +1,6 @@ module Compass::SassExtensions::Functions::Sprites ZERO = Sass::Script::Number::new(0) - + VALID_SELECTORS = %w(hover active target) # Provides a consistent interface for getting a variable in ruby # from a keyword argument hash that accounts for underscores/dash equivalence # and allows the caller to pass a symbol instead of a string. @@ -66,32 +66,26 @@ module Compass::SassExtensions::Functions::Sprites end Sass::Script::Functions.declare :sprite_file, [:map, :sprite] - # Returns boolean is sprite image has a hover selector - def sprite_has_hover(map, sprite) - verify_map(map) - verify_sprite(sprite) - Sass::Script::Bool.new map.has_hover?(sprite) + # Returns voolean if sprite has a parent + def sprite_does_not_have_parent(map, sprite) + verify_map map + verify_sprite sprite + Sass::Script::Bool.new map.image_for(sprite.value).parent.nil? end - Sass::Script::Functions.declare :sprite_has_hover, [:map, :sprite] + Sass::Script::Functions.declare :sprite_does_not_have_parent, [:map, :sprite] - # Returns boolean is sprite image has a target selector - def sprite_has_target(map, sprite) - verify_map(map) - verify_sprite(sprite) - Sass::Script::Bool.new map.has_target?(sprite) + # Returns boolean if sprite has the selector + def sprite_has_selector(map, sprite, selector) + verify_map map + verify_sprite sprite + unless VALID_SELECTORS.include?(selector.value) + raise Sass::SyntaxError, "Invalid Selctor did you mean one of: #{VALID_SELECTORS.join(', ')}" + end + Sass::Script::Bool.new map.send(:"has_#{selector.value}?", sprite) end - Sass::Script::Functions.declare :sprite_has_target, [:map, :sprite] - - # Returns boolean is sprite image has a active selector - def sprite_has_active(map, sprite) - verify_map(map) - verify_sprite(sprite) - Sass::Script::Bool.new map.has_active?(sprite) - end - - Sass::Script::Functions.declare :sprite_has_active, [:map, :sprite] + Sass::Script::Functions.declare :sprite_has_selector, [:map, :sprite, :selector] # Returns a url to the sprite image. diff --git a/lib/compass/sass_extensions/sprites/image.rb b/lib/compass/sass_extensions/sprites/image.rb index 4a73ee8f..43a40394 100644 --- a/lib/compass/sass_extensions/sprites/image.rb +++ b/lib/compass/sass_extensions/sprites/image.rb @@ -67,7 +67,7 @@ module Compass # Has hover selector def hover? - base.has_hover?(name) + name[-6..-1] == '_hover' end # Hover selector Image object if exsists @@ -77,7 +77,7 @@ module Compass # Has target selector def target? - base.has_target?(name) + name[-7..-1] == '_target' end # Target selector Image object if exsists @@ -87,13 +87,22 @@ module Compass # Has active selector def active? - base.has_active?(name) + name[-7..-1] == '_active' end # Active selector Image object if exsists def active base.image_for("#{name}_active") end + + + def parent + if [hover?, target?, active?].any? + %r{(.+)_(.+)$}.match name + base.image_for($1) + end + end + private def dimensions diff --git a/spec/compass/sass_extensions/sprites/image_spec.rb b/spec/compass/sass_extensions/sprites/image_spec.rb index 5c61e0f6..f328a535 100644 --- a/spec/compass/sass_extensions/sprites/image_spec.rb +++ b/spec/compass/sass_extensions/sprites/image_spec.rb @@ -5,7 +5,15 @@ describe Compass::SassExtensions::Sprites::Image do let(:sprite_filename) { 'squares/ten-by-ten.png' } let(:sprite_path) { File.join(images_src_path, sprite_filename) } let(:sprite_name) { File.basename(sprite_filename, '.png') } - let(:image) { self.class.describes.new(nil, File.join(sprite_filename), options)} + let(:parent) do + mock + end + before do + parent.stubs(:image_for).with('ten-by-ten').returns(image) + parent.stubs(:image_for).with('ten-by-ten_hover').returns(hover_image) + end + let(:image) { self.class.describes.new(parent, File.join(sprite_filename), options)} + let(:hover_image) { self.class.describes.new(parent, File.join('selectors/ten-by-ten_hover.png'), options)} let(:digest) { Digest::MD5.file(sprite_path).hexdigest } subject { image } @@ -34,7 +42,18 @@ describe Compass::SassExtensions::Sprites::Image do options.stubs(:get_var).with(get_var_expects).returns(get_var_return) options } - + + describe '#parent' do + context '_hover' do + subject { hover_image } + its(:parent) { should == image } + end + context 'no parent' do + subject { image } + its(:parent) { should be_nil } + end + end + describe '#repeat' do let(:type) { nil } let(:get_var_return) { OpenStruct.new(:value => type) } diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index e31a3e68..d5aff351 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -473,34 +473,25 @@ describe Compass::Sprites do @include all-selectors-sprites; SCSS css.should == <<-CSS - .selectors-sprite, .selectors-ten-by-ten, .selectors-ten-by-ten_active, .selectors-ten-by-ten_hover, .selectors-ten-by-ten_target { + .selectors-sprite, .selectors-ten-by-ten { background: url('/selectors-edfef809e2.png') no-repeat; } .selectors-ten-by-ten { background-position: 0 0; } - .selectors-ten-by-ten:hover { - background-position: 0 -20px; - } - .selectors-ten-by-ten:target { - background-position: 0 -30px; - } - .selectors-ten-by-ten:active { - background-position: 0 -10px; - } - .selectors-ten-by-ten_active { - background-position: 0 -10px; - } - - .selectors-ten-by-ten_hover { + .selectors-ten-by-ten:hover, .selectors-ten-by-ten_hover, .selectors-ten-by-ten-hover { background-position: 0 -20px; } - .selectors-ten-by-ten_target { + .selectors-ten-by-ten:target, .selectors-ten-by-ten_target, .selectors-ten-by-ten-target { background-position: 0 -30px; } + + .selectors-ten-by-ten:active, .selectors-ten-by-ten_active, .selectors-ten-by-ten-active { + background-position: 0 -10px; + } CSS end From c72eebdf42e3f8bf7aa86510a70834117801ee1b Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 17:28:38 -0400 Subject: [PATCH 106/223] added support for sprite-selector formats --- Gemfile.lock | 4 ++-- lib/compass/sass_extensions/sprites/image.rb | 13 +++++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 09e8eb4c..46f8736d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.4.9962a37) + compass (0.11.beta.4.4d7dc7a) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) @@ -88,7 +88,7 @@ GEM mocha (0.9.12) polyglot (0.3.1) rack (1.2.2) - rack-mount (0.6.13) + rack-mount (0.6.14) rack (>= 1.0.0) rack-test (0.5.7) rack (>= 1.0) diff --git a/lib/compass/sass_extensions/sprites/image.rb b/lib/compass/sass_extensions/sprites/image.rb index 43a40394..9ad43235 100644 --- a/lib/compass/sass_extensions/sprites/image.rb +++ b/lib/compass/sass_extensions/sprites/image.rb @@ -2,6 +2,11 @@ module Compass module SassExtensions module Sprites class Image + ACTIVE = %r{[_-]active$} + TARGET = %r{[_-]target$} + HOVER = %r{[_-]hover$} + PARENT = %r{(.+)_(.+)$} + attr_reader :relative_file, :options, :base attr_accessor :top, :left @@ -67,7 +72,7 @@ module Compass # Has hover selector def hover? - name[-6..-1] == '_hover' + name =~ HOVER end # Hover selector Image object if exsists @@ -77,7 +82,7 @@ module Compass # Has target selector def target? - name[-7..-1] == '_target' + name =~ TARGET end # Target selector Image object if exsists @@ -87,7 +92,7 @@ module Compass # Has active selector def active? - name[-7..-1] == '_active' + name =~ ACTIVE end # Active selector Image object if exsists @@ -98,7 +103,7 @@ module Compass def parent if [hover?, target?, active?].any? - %r{(.+)_(.+)$}.match name + PARENT.match name base.image_for($1) end end From c3f00537c862d566f1eb50512f5ef8c64aa897b0 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 17:30:27 -0400 Subject: [PATCH 107/223] updated code comments --- lib/compass/sass_extensions/sprites/image.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/compass/sass_extensions/sprites/image.rb b/lib/compass/sass_extensions/sprites/image.rb index 9ad43235..aff1931a 100644 --- a/lib/compass/sass_extensions/sprites/image.rb +++ b/lib/compass/sass_extensions/sprites/image.rb @@ -70,7 +70,7 @@ module Compass File.mtime(file) end - # Has hover selector + # Is hover selector def hover? name =~ HOVER end @@ -80,7 +80,7 @@ module Compass base.image_for("#{name}_hover") end - # Has target selector + # Is target selector def target? name =~ TARGET end @@ -90,7 +90,7 @@ module Compass base.image_for("#{name}_target") end - # Has active selector + # Is active selector def active? name =~ ACTIVE end From bd11d0b3815e04a7c9c1296683b37ab6bb44d79d Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 17:32:58 -0400 Subject: [PATCH 108/223] updated regular expression for finding the parent image --- Gemfile.lock | 2 +- lib/compass/sass_extensions/sprites/image.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 46f8736d..93a1392e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.4.4d7dc7a) + compass (0.11.beta.4.c3f0053) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/sass_extensions/sprites/image.rb b/lib/compass/sass_extensions/sprites/image.rb index aff1931a..3a3e57cf 100644 --- a/lib/compass/sass_extensions/sprites/image.rb +++ b/lib/compass/sass_extensions/sprites/image.rb @@ -5,7 +5,7 @@ module Compass ACTIVE = %r{[_-]active$} TARGET = %r{[_-]target$} HOVER = %r{[_-]hover$} - PARENT = %r{(.+)_(.+)$} + PARENT = %r{(.+)[-_](.+)$} attr_reader :relative_file, :options, :base attr_accessor :top, :left From 337d4da1aecc2bec6e87d11bd51f26ed490eeef9 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 18:49:49 -0400 Subject: [PATCH 109/223] updated docs for magic selectors --- doc-src/Gemfile.lock | 2 +- doc-src/content/CHANGELOG.markdown | 9 ++++- .../content/help/tutorials/spriting.markdown | 36 +++++++++++++++++++ 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index 8d7adce5..c24deb08 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,7 +8,7 @@ GIT PATH remote: .. specs: - compass (0.11.beta.4.dda7c94) + compass (0.11.beta.4.bd11d0b) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 0acde11c..bd735436 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -14,7 +14,14 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/ The Documentation for the [latest preview release](http://beta.compass-style.org/) -0.11.beta.4 (UNRELEASED) +0.11.beta.5 (UNRELEASED) +------------------------ + +### Compass Sprites + +[Magic Imports](/help/tutorials/spriting/#magic-selectors) have been added + +0.11.beta.4 (02/25/2011) ------------------------ * Extensions that are installed into ~/.compass/extensions will be automatically available to all your compass projects. diff --git a/doc-src/content/help/tutorials/spriting.markdown b/doc-src/content/help/tutorials/spriting.markdown index 40f0e6a4..c1c54193 100644 --- a/doc-src/content/help/tutorials/spriting.markdown +++ b/doc-src/content/help/tutorials/spriting.markdown @@ -100,6 +100,42 @@ might want to avoid it. For instance, if your sprite map has more than about 20 sprites, you may find that hand crafting the import will speed up compilation times. See the section on [performance considerations](#performance) for more details. + +## Magic Selectors + +If you want to add selectors for your sprites, it's easy todo by adding `_active` `_target` or `_hover` to the file name, In the example below we have a sprite directory that looks like: + +* `link/icon.png` +* `link/icon_hover.png` +* `link/icon_active.png` +* `link/icon_target.png` + +Now in our sass file we add: + + @import "link/*.png"; + + @include link_sprite(icon); + +And your stylesheet will compile to: + + .link-icon { + background-position: 0 0; + } + + .link-icon:hover, .link-icon_hover, .link-icon_hover-hover { + background-position: 0 -20px; + } + + .link-icon:target, .link-icon_hover_target, .link-icon_hover-target { + background-position: 0 -30px; + } + + .link-icon:active, .link-icon_hover_active, .link-icon_hover-active { + background-position: 0 -10px; + } + + + ## Customization Options From ab04d6fc041683f995e9a1164d057af628b6dd4a Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 18:51:41 -0400 Subject: [PATCH 110/223] updated docs for magic selectors --- doc-src/content/CHANGELOG.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index bd735436..d0ebc511 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -19,7 +19,7 @@ The Documentation for the [latest preview release](http://beta.compass-style.org ### Compass Sprites -[Magic Imports](/help/tutorials/spriting/#magic-selectors) have been added +[Magic Selectors](/help/tutorials/spriting/#magic-selectors) have been added 0.11.beta.4 (02/25/2011) ------------------------ From 3d9365ec48f05eeaad597cae81374930591cdad0 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 19:02:55 -0400 Subject: [PATCH 111/223] screwed up a date --- doc-src/Gemfile.lock | 2 +- doc-src/content/CHANGELOG.markdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index c24deb08..89674053 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,7 +8,7 @@ GIT PATH remote: .. specs: - compass (0.11.beta.4.bd11d0b) + compass (0.11.beta.4.ab04d6f) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index d0ebc511..f77d66cb 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -21,7 +21,7 @@ The Documentation for the [latest preview release](http://beta.compass-style.org [Magic Selectors](/help/tutorials/spriting/#magic-selectors) have been added -0.11.beta.4 (02/25/2011) +0.11.beta.4 (03/25/2011) ------------------------ * Extensions that are installed into ~/.compass/extensions will be automatically available to all your compass projects. From 365fc5d68f81f250faa04688384c4735104fc66d Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 19:05:21 -0400 Subject: [PATCH 112/223] im bad at typing --- doc-src/Gemfile.lock | 2 +- doc-src/content/help/tutorials/spriting.markdown | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index 89674053..12fb4a3c 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,7 +8,7 @@ GIT PATH remote: .. specs: - compass (0.11.beta.4.ab04d6f) + compass (0.11.beta.4.3d9365e) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/doc-src/content/help/tutorials/spriting.markdown b/doc-src/content/help/tutorials/spriting.markdown index c1c54193..b8208d0d 100644 --- a/doc-src/content/help/tutorials/spriting.markdown +++ b/doc-src/content/help/tutorials/spriting.markdown @@ -122,15 +122,15 @@ And your stylesheet will compile to: background-position: 0 0; } - .link-icon:hover, .link-icon_hover, .link-icon_hover-hover { + .link-icon:hover, .link-icon_hover, .link-icon-hover { background-position: 0 -20px; } - .link-icon:target, .link-icon_hover_target, .link-icon_hover-target { + .link-icon:target, .link-icon_target, .link-icon-target { background-position: 0 -30px; } - .link-icon:active, .link-icon_hover_active, .link-icon_hover-active { + .link-icon:active, .link-icon_active, .link-icon-active { background-position: 0 -10px; } From c2015635dc5087ae39c056e740de6bcab2e06823 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 25 Mar 2011 21:25:27 -0400 Subject: [PATCH 113/223] added some anchor tags for easy linking --- doc-src/Gemfile.lock | 2 +- .../help/tutorials/configuration-reference.markdown | 13 +++++++++---- doc-src/content/help/tutorials/spriting.markdown | 1 + 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index 12fb4a3c..70bbc9df 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,7 +8,7 @@ GIT PATH remote: .. specs: - compass (0.11.beta.4.3d9365e) + compass (0.11.beta.4.365fc5d) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/doc-src/content/help/tutorials/configuration-reference.markdown b/doc-src/content/help/tutorials/configuration-reference.markdown index 97c63b45..af6d6ea7 100644 --- a/doc-src/content/help/tutorials/configuration-reference.markdown +++ b/doc-src/content/help/tutorials/configuration-reference.markdown @@ -9,7 +9,7 @@ classnames: The compass configuration file is a ruby file, which means that we can do some clever things if we want to. But don’t let it frighten you; it’s really quite easy to set up your project. - + ## Basic format Most configuration properties are a simple assignment to a configuration property. @@ -35,11 +35,12 @@ There are two kinds of composite values: It is a comma delimited list of associations surrounded by curly brackets. An association is two values separated by `=>`. E.g. `{:foo => "aaa", :bar => "zzz"}` + ## Comments Use the hash sign `#` to comment out everything from the hash sign to the end of the line. - + ## Import Note for Windows Users The backslash character (`\`) is a special character in a string delimited by @@ -47,6 +48,7 @@ double quotes (`"`). If you are working with folders in your paths, you should either use **single quotes** to delimit your strings or escape your backslash by doubling it like `"some\\path"`. + ## Loading Compass Plugins Compass relies on the ruby `require` mechanism to load other libraries of code. @@ -59,11 +61,13 @@ Example: require 'ninesixty' require 'susy' + ## Overriding Configuration Settings When using the compass command line, configuration options that you set on the command line will override the corresponding settings in your configuration file. + ## Inspecting Configuration Settings passed via the Command Line When using the compass command line, configuration options that you set on the @@ -78,7 +82,7 @@ Then you can inspect the value like so: Values that are not set on the CLI will be `nil` even though they will have a default value later on. - + ## Configuration Properties @@ -278,6 +282,7 @@ later on.
+ ## Configuration Functions **`add_import_path`** – Call this function to add a path to the list of sass import @@ -336,7 +341,7 @@ more than once. Example: This code will be called if the file is added, updated, or removed. Be sure to check for existence to avoid crashing the watcher in the case where the file has been removed. - + ## Callbacks **`on_sprite_saved`** -- Pass this function a block of code that gets executed after a sprite is saved to disk. The block will be passed the filename. Can be invoked more then once. Example: diff --git a/doc-src/content/help/tutorials/spriting.markdown b/doc-src/content/help/tutorials/spriting.markdown index b8208d0d..8149617a 100644 --- a/doc-src/content/help/tutorials/spriting.markdown +++ b/doc-src/content/help/tutorials/spriting.markdown @@ -52,6 +52,7 @@ simple naming convention for your sprites so that you they are easy to remember should never have to care what the is name of the generated sprite map, nor where a sprite is located within it. + ## Selector Control If you want control over what selectors are generated, it is easy to do. In this example, From 27735a95379d40290b2e294bafea8cd4bdf3e1b9 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Sat, 26 Mar 2011 13:31:48 -0400 Subject: [PATCH 114/223] fixed a bug that was causeing stack level too deep --- Gemfile.lock | 2 +- lib/compass/sass_extensions/sprites/base.rb | 4 +- .../sass_extensions/sprites/sprite_map.rb | 31 ++++++----- .../sass_extensions/sprites/sprites.rb | 52 ++++++++++++++----- .../sprites/sprite_map_spec.rb | 5 +- 5 files changed, 63 insertions(+), 31 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 93a1392e..c486cffc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.4.c3f0053) + compass (0.11.beta.4.c201563) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/sass_extensions/sprites/base.rb b/lib/compass/sass_extensions/sprites/base.rb index c50d047e..aa671b39 100644 --- a/lib/compass/sass_extensions/sprites/base.rb +++ b/lib/compass/sass_extensions/sprites/base.rb @@ -159,14 +159,14 @@ module Compass # Checks whether this sprite is outdated def outdated? if File.exists?(filename) - return @images.map(&:mtime).any? { |mtime| mtime > self.mtime } + return @images.map(&:mtime).any? { |imtime| imtime.to_i > self.mtime.to_i } end true end # Mtime of the sprite file def mtime - File.mtime(filename) + @mtime ||= File.mtime(filename) end def inspect diff --git a/lib/compass/sass_extensions/sprites/sprite_map.rb b/lib/compass/sass_extensions/sprites/sprite_map.rb index fcbc823d..3890135c 100644 --- a/lib/compass/sass_extensions/sprites/sprite_map.rb +++ b/lib/compass/sass_extensions/sprites/sprite_map.rb @@ -2,6 +2,11 @@ module Compass class SpriteMap attr_reader :uri, :options + + def find_relative(*args) + nil + end + def initialize(uri, options) @uri, @options = uri, options end @@ -27,29 +32,27 @@ module Compass def sprite_names @sprite_names ||= files.collect { |file| File.basename(file, '.png') } end - + # Returns the sass options for this sprite def sass_options @sass_options ||= options.merge(:filename => name, :syntax => :scss, :importer => self) end - - # Returns the mtime of all image files combined - def mtime - Compass.quick_cache("mtime:#{uri}") do - files.collect { |file| File.mtime(file) }.max - end - end # Returns a Sass::Engine for this sprite object def sass_engine - Sass::Engine.new(content_for_images, options) + Sass::Engine.new(content_for_images, sass_options) + end + + def ensure_path_and_name! + @path, @name = Compass::Sprites.path_and_name(uri) + end + + def key(uri, options) + Compass::Sprites.key(uri) end - private - def ensure_path_and_name! - return if @path && @name - uri =~ %r{((.+/)?(.+))/(.+?)\.png} - @path, @name = $1, $3 + def mtime(uri, options) + Compass::Sprites.mtime(uri, options) end # Generates the Sass for this sprite file diff --git a/lib/compass/sass_extensions/sprites/sprites.rb b/lib/compass/sass_extensions/sprites/sprites.rb index fcac8979..8d40c294 100644 --- a/lib/compass/sass_extensions/sprites/sprites.rb +++ b/lib/compass/sass_extensions/sprites/sprites.rb @@ -1,27 +1,53 @@ module Compass class Sprites < Sass::Importers::Base - - def find_relative(*args) - nil + attr_accessor :name, :path + @@maps = {} + class << self + + def path_and_name(uri) + if uri =~ %r{((.+/)?(.+))/(.+?)\.png} + [$1, $3, $4] + end + end + + def discover_sprites(uri) + self.load_map(uri, options).files + end + + def sprite_name(file) + File.basename(file, '.png') + end end - + + def self.load_map(uri, options) + key = self.key(uri, options) + @@maps[key] ||= SpriteMap.new(uri, options) + end + + # Called by the sass engine to build a new SpriteMap def find(uri, options) if uri =~ /\.png$/ - SpriteMap.new(uri, options).sass_engine + map = Compass::Sprites.load_map(uri, options) + self.path, self.name = map.path, map.name + return map.sass_engine end end - - # Called by the sass engine to identift the SpriteMap - def key(uri, options) - [self.class.name + ":" + File.dirname(File.expand_path(uri)), - File.basename(uri)] + + # Called by the sass engine to identify the SpriteMap + def self.key(uri, options={}) + [self.class.name + ":" + File.dirname(File.expand_path(uri)), File.basename(uri)] end - def mtime(uri, options) - SpriteMap.new(uri, options).mtime + def self.mtime(uri, options) + Compass.quick_cache("mtime:#{uri}") do + map = Compass::Sprites.load_map(uri, options) + map.files.inject(Time.at(0)) do |max_time, file| + (t = File.mtime(file)) > max_time ? t : max_time + end + end end - + def to_s "" end diff --git a/spec/compass/sass_extensions/sprites/sprite_map_spec.rb b/spec/compass/sass_extensions/sprites/sprite_map_spec.rb index 1136e9a4..ddb679de 100644 --- a/spec/compass/sass_extensions/sprites/sprite_map_spec.rb +++ b/spec/compass/sass_extensions/sprites/sprite_map_spec.rb @@ -42,7 +42,10 @@ describe Compass::SpriteMap do its(:sass_options) { should == options.merge(:filename => name, :syntax => :scss, :importer => sprite_map) } - its(:mtime) { should == mtime } + + it "should have a correct mtime" do + puts sprite_map.mtime(uri, subject.sass_options) + end it "should have a test for the sass engine" do pending 'sass' From a2200b1d83dd0beef2e6ecbd3c53db34db169790 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Sat, 26 Mar 2011 13:46:36 -0400 Subject: [PATCH 115/223] fixed test --- Gemfile.lock | 2 +- doc-src/content/CHANGELOG.markdown | 2 ++ spec/compass/sass_extensions/sprites/sprite_map_spec.rb | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index c486cffc..b66da7c1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.4.c201563) + compass (0.11.beta.4.27735a9) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index f77d66cb..1b6034f4 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -21,6 +21,8 @@ The Documentation for the [latest preview release](http://beta.compass-style.org [Magic Selectors](/help/tutorials/spriting/#magic-selectors) have been added +Fixed a bug causing a stack level too deep in ruby 1.8.7 + 0.11.beta.4 (03/25/2011) ------------------------ diff --git a/spec/compass/sass_extensions/sprites/sprite_map_spec.rb b/spec/compass/sass_extensions/sprites/sprite_map_spec.rb index ddb679de..a6eee9ea 100644 --- a/spec/compass/sass_extensions/sprites/sprite_map_spec.rb +++ b/spec/compass/sass_extensions/sprites/sprite_map_spec.rb @@ -44,7 +44,7 @@ describe Compass::SpriteMap do it "should have a correct mtime" do - puts sprite_map.mtime(uri, subject.sass_options) + sprite_map.mtime(uri, subject.sass_options).should == mtime end it "should have a test for the sass engine" do From b0bfb63bb7bf7298a430ca3d723d4c2f2ed8008f Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Sat, 26 Mar 2011 13:53:50 -0400 Subject: [PATCH 116/223] removed class variable --- Gemfile.lock | 2 +- .../sass_extensions/sprites/sprites.rb | 26 +++++++++---------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index b66da7c1..eba84349 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.4.27735a9) + compass (0.11.beta.4.a2200b1) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/sass_extensions/sprites/sprites.rb b/lib/compass/sass_extensions/sprites/sprites.rb index 8d40c294..d93426fe 100644 --- a/lib/compass/sass_extensions/sprites/sprites.rb +++ b/lib/compass/sass_extensions/sprites/sprites.rb @@ -1,27 +1,25 @@ module Compass class Sprites < Sass::Importers::Base attr_accessor :name, :path - @@maps = {} - class << self - - def path_and_name(uri) - if uri =~ %r{((.+/)?(.+))/(.+?)\.png} - [$1, $3, $4] - end + @maps = {} + + def self.path_and_name(uri) + if uri =~ %r{((.+/)?(.+))/(.+?)\.png} + [$1, $3, $4] end + end - def discover_sprites(uri) - self.load_map(uri, options).files - end + def self.discover_sprites(uri) + self.load_map(uri, options).files + end - def sprite_name(file) - File.basename(file, '.png') - end + def self.sprite_name(file) + File.basename(file, '.png') end def self.load_map(uri, options) key = self.key(uri, options) - @@maps[key] ||= SpriteMap.new(uri, options) + @maps[key] ||= SpriteMap.new(uri, options) end From b395552db38c579b2047775cdae37e663839c010 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Sat, 26 Mar 2011 15:24:59 -0400 Subject: [PATCH 117/223] chanded spritemap instance to use quick cache --- Gemfile.lock | 2 +- lib/compass/sass_extensions/sprites/sprites.rb | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index eba84349..ca441145 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.4.a2200b1) + compass (0.11.beta.4.b0bfb63) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/sass_extensions/sprites/sprites.rb b/lib/compass/sass_extensions/sprites/sprites.rb index d93426fe..c32ae4fc 100644 --- a/lib/compass/sass_extensions/sprites/sprites.rb +++ b/lib/compass/sass_extensions/sprites/sprites.rb @@ -1,7 +1,6 @@ module Compass class Sprites < Sass::Importers::Base attr_accessor :name, :path - @maps = {} def self.path_and_name(uri) if uri =~ %r{((.+/)?(.+))/(.+?)\.png} @@ -18,8 +17,9 @@ module Compass end def self.load_map(uri, options) - key = self.key(uri, options) - @maps[key] ||= SpriteMap.new(uri, options) + Compass.quick_cache("spritemap:#{uri}", 50) do + SpriteMap.new(uri, options) + end end From d579c8bdcbf453cc0bde617c5ff0ebc2390b3b40 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Sat, 26 Mar 2011 15:25:47 -0400 Subject: [PATCH 118/223] 5 not 50 --- lib/compass/sass_extensions/sprites/sprites.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/compass/sass_extensions/sprites/sprites.rb b/lib/compass/sass_extensions/sprites/sprites.rb index c32ae4fc..59992153 100644 --- a/lib/compass/sass_extensions/sprites/sprites.rb +++ b/lib/compass/sass_extensions/sprites/sprites.rb @@ -17,7 +17,7 @@ module Compass end def self.load_map(uri, options) - Compass.quick_cache("spritemap:#{uri}", 50) do + Compass.quick_cache("spritemap:#{uri}", 5) do SpriteMap.new(uri, options) end end From 411cdb7c2cf5acf8e206ab2060fa570fd6f4245f Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 26 Mar 2011 12:36:03 -0700 Subject: [PATCH 119/223] Version Bump. --- VERSION.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.yml b/VERSION.yml index 927d5311..7dd62e62 100644 --- a/VERSION.yml +++ b/VERSION.yml @@ -2,4 +2,4 @@ :major: 0 :minor: 11 :state: beta -:build: 4 +:build: 5 From 29656eaf17e973f1b9989da4a2962aecd8a4a7bb Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Sat, 26 Mar 2011 15:25:47 -0400 Subject: [PATCH 120/223] 5 not 50 --- lib/compass/sass_extensions/sprites/sprites.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/compass/sass_extensions/sprites/sprites.rb b/lib/compass/sass_extensions/sprites/sprites.rb index c32ae4fc..59992153 100644 --- a/lib/compass/sass_extensions/sprites/sprites.rb +++ b/lib/compass/sass_extensions/sprites/sprites.rb @@ -17,7 +17,7 @@ module Compass end def self.load_map(uri, options) - Compass.quick_cache("spritemap:#{uri}", 50) do + Compass.quick_cache("spritemap:#{uri}", 5) do SpriteMap.new(uri, options) end end From b91e669050374af2c815b14e8fd6c0776cacc0dd Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 27 Mar 2011 19:16:28 -0700 Subject: [PATCH 121/223] Some links on the sprites reference page to related spriting resources. --- .../content/reference/compass/utilities/sprites.haml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/doc-src/content/reference/compass/utilities/sprites.haml b/doc-src/content/reference/compass/utilities/sprites.haml index 5b1bd949..25202a24 100644 --- a/doc-src/content/reference/compass/utilities/sprites.haml +++ b/doc-src/content/reference/compass/utilities/sprites.haml @@ -11,5 +11,13 @@ classnames: - core - utilities --- -= render 'reference' +- render 'reference' do + %h3 Additional Resources + %ul + %li + %a(href="/help/tutorials/spriting/") Spriting Tutorial + %li + %a(href="/reference/compass/helpers/sprites/") Sprite Helpers + %li + %a(href="/reference/compass/utilities/sprites/base/") Base Stylesheet \ No newline at end of file From a7b8689fb895d1786c5cabda6f5008572386b5a2 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 27 Mar 2011 19:16:59 -0700 Subject: [PATCH 122/223] Fix bug in the compact function. --- lib/compass/sass_extensions/functions/lists.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/compass/sass_extensions/functions/lists.rb b/lib/compass/sass_extensions/functions/lists.rb index e82a6757..a9e15a0c 100644 --- a/lib/compass/sass_extensions/functions/lists.rb +++ b/lib/compass/sass_extensions/functions/lists.rb @@ -18,8 +18,9 @@ module Compass::SassExtensions::Functions::Lists def compact(*args) sep = :comma if args.size == 1 && args.first.is_a?(Sass::Script::List) - args = args.first.value - sep = args.first.separator + list = args.first + args = list.value + sep = list.separator end Sass::Script::List.new(args.reject{|a| !a.to_bool}, sep) end From 119ce9d018ef25bf08531114ce22307306dfc212 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 27 Mar 2011 21:03:14 -0700 Subject: [PATCH 123/223] Don't output transparent in css2 ouput. Closes GH-309 --- .../monkey_patches/browser_support.rb | 18 ++++++++++++++++++ test/sass_extensions_test.rb | 1 + 2 files changed, 19 insertions(+) diff --git a/lib/compass/sass_extensions/monkey_patches/browser_support.rb b/lib/compass/sass_extensions/monkey_patches/browser_support.rb index 6dfa63d8..95d8997e 100644 --- a/lib/compass/sass_extensions/monkey_patches/browser_support.rb +++ b/lib/compass/sass_extensions/monkey_patches/browser_support.rb @@ -92,4 +92,22 @@ module Sass::Script end end + class String < Literal + def supports?(aspect) + aspect == "css2" && value == "transparent" && type == :identifier + end + + def has_aspect? + true + end + + def to_css2(options = self.options) + if value == "transparent" && type == :identifier + Sass::Script::String.new("") + else + dup + end + end + end + end diff --git a/test/sass_extensions_test.rb b/test/sass_extensions_test.rb index cbd75f8a..3d129d87 100644 --- a/test/sass_extensions_test.rb +++ b/test/sass_extensions_test.rb @@ -87,6 +87,7 @@ class SassExtensionsTest < Test::Unit::TestCase assert_equal "true", evaluate("blank('')") assert_equal "true", evaluate("blank(' ')") assert_equal "true", evaluate("blank(-compass-space-list(' '))") + assert_equal " ", evaluate("-css2(transparent linear-gradient(#fff,#000))") end protected From 2521d4dd7bffbbc1ccc88b636715e8413de3dd0a Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 27 Mar 2011 21:16:29 -0700 Subject: [PATCH 124/223] Fix broken links in the search results page. --- doc-src/lib/search.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc-src/lib/search.rb b/doc-src/lib/search.rb index aadde495..f5f5d47b 100644 --- a/doc-src/lib/search.rb +++ b/doc-src/lib/search.rb @@ -66,7 +66,7 @@ def search_index # puts "Indexed: #{term}" end idx["items"][id] = { - "url" => "/docs#{item.identifier}", + "url" => "#{item.identifier}", "title" => item[:title], "crumb" => item[:crumb] } From ccb391d9d1948740950ce402b9907a6e83f15733 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 28 Mar 2011 09:29:38 -0700 Subject: [PATCH 125/223] Revert "Don't output transparent in css2 ouput." Transparent is a legal value in css2. This reverts commit 119ce9d018ef25bf08531114ce22307306dfc212. --- .../monkey_patches/browser_support.rb | 18 ------------------ test/sass_extensions_test.rb | 1 - 2 files changed, 19 deletions(-) diff --git a/lib/compass/sass_extensions/monkey_patches/browser_support.rb b/lib/compass/sass_extensions/monkey_patches/browser_support.rb index 95d8997e..6dfa63d8 100644 --- a/lib/compass/sass_extensions/monkey_patches/browser_support.rb +++ b/lib/compass/sass_extensions/monkey_patches/browser_support.rb @@ -92,22 +92,4 @@ module Sass::Script end end - class String < Literal - def supports?(aspect) - aspect == "css2" && value == "transparent" && type == :identifier - end - - def has_aspect? - true - end - - def to_css2(options = self.options) - if value == "transparent" && type == :identifier - Sass::Script::String.new("") - else - dup - end - end - end - end diff --git a/test/sass_extensions_test.rb b/test/sass_extensions_test.rb index 3d129d87..cbd75f8a 100644 --- a/test/sass_extensions_test.rb +++ b/test/sass_extensions_test.rb @@ -87,7 +87,6 @@ class SassExtensionsTest < Test::Unit::TestCase assert_equal "true", evaluate("blank('')") assert_equal "true", evaluate("blank(' ')") assert_equal "true", evaluate("blank(-compass-space-list(' '))") - assert_equal " ", evaluate("-css2(transparent linear-gradient(#fff,#000))") end protected From 7571d4af9320b85ee9e75307a472570f7d24d2c5 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Mon, 28 Mar 2011 17:08:53 -0400 Subject: [PATCH 126/223] refactored sprite selectors --- Gemfile.lock | 2 +- .../compass/utilities/sprites/_base.scss | 8 ++--- spec/sprites_spec.rb | 34 ++++++++++++++++--- 3 files changed, 34 insertions(+), 10 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index ca441145..ba867187 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.4.b0bfb63) + compass (0.11.beta.4.29656ea) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss b/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss index e033d85f..177a2c56 100644 --- a/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss +++ b/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss @@ -22,16 +22,17 @@ @if $dimensions { @include sprite-dimensions($map, $sprite); } + @include sprite-selectors($map, $sprite, $sprite); } // Include the selectors for the `$sprite` given the `$map` and the // `$full-sprite-name` // @private -@mixin sprite_selectors($map, $sprite-name, $full-sprite-name) { +@mixin sprite-selectors($map, $sprite-name, $full-sprite-name) { @each $selector in $sprite-selectors { @if sprite_has_selector($map, $sprite-name, $selector) { - .#{$full-sprite-name}:#{$selector}, .#{$full-sprite-name}_#{$selector}, .#{$full-sprite-name}-#{$selector} { - @include sprite($map, "#{$sprite-name}_#{$selector}"); + &:#{$selector}, &.#{$full-sprite-name}_#{$selector}, &.#{$full-sprite-name}-#{$selector} { + @include sprite-background-position($map, "#{$sprite-name}_#{$selector}"); } } } @@ -51,7 +52,6 @@ @if $base-class { @extend #{$base-class}; } @include sprite($map, $sprite-name, $dimensions); } - @include sprite_selectors($map, $sprite-name, $full-sprite-name); } } } \ No newline at end of file diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index d5aff351..0c30f68b 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -480,16 +480,40 @@ describe Compass::Sprites do .selectors-ten-by-ten { background-position: 0 0; } - - .selectors-ten-by-ten:hover, .selectors-ten-by-ten_hover, .selectors-ten-by-ten-hover { + .selectors-ten-by-ten:hover, .selectors-ten-by-ten.ten-by-ten_hover, .selectors-ten-by-ten.ten-by-ten-hover { background-position: 0 -20px; } - - .selectors-ten-by-ten:target, .selectors-ten-by-ten_target, .selectors-ten-by-ten-target { + .selectors-ten-by-ten:target, .selectors-ten-by-ten.ten-by-ten_target, .selectors-ten-by-ten.ten-by-ten-target { background-position: 0 -30px; } + .selectors-ten-by-ten:active, .selectors-ten-by-ten.ten-by-ten_active, .selectors-ten-by-ten.ten-by-ten-active { + background-position: 0 -10px; + } + CSS + end + + it "should render corret sprite with css selectors via magic mixin" do + css = render <<-SCSS + @import "selectors/*.png"; + a { + @include selectors_sprite(ten-by-ten) + } + SCSS + css.should == <<-CSS + .selectors-sprite, a { + background: url('/selectors-edfef809e2.png') no-repeat; + } - .selectors-ten-by-ten:active, .selectors-ten-by-ten_active, .selectors-ten-by-ten-active { + a { + background-position: 0 0; + } + a:hover, a.ten-by-ten_hover, a.ten-by-ten-hover { + background-position: 0 -20px; + } + a:target, a.ten-by-ten_target, a.ten-by-ten-target { + background-position: 0 -30px; + } + a:active, a.ten-by-ten_active, a.ten-by-ten-active { background-position: 0 -10px; } CSS From 2e8fd055edd0878b96d9c467db0b974a39d5bd07 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Mon, 28 Mar 2011 22:39:12 -0400 Subject: [PATCH 127/223] closes 268 - filenames can not start with numbers the must be legal css identifiers --- Gemfile.lock | 2 +- lib/compass/sass_extensions/sprites/sprite_map.rb | 10 ++++++++-- spec/sprites_spec.rb | 14 +++++++++++++- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index ba867187..24340b69 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.4.29656ea) + compass (0.11.beta.5.7571d4a) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/sass_extensions/sprites/sprite_map.rb b/lib/compass/sass_extensions/sprites/sprite_map.rb index 3890135c..f2106739 100644 --- a/lib/compass/sass_extensions/sprites/sprite_map.rb +++ b/lib/compass/sass_extensions/sprites/sprite_map.rb @@ -1,7 +1,7 @@ module Compass class SpriteMap attr_reader :uri, :options - + VAILD_FILE_NAME = /\A#{Sass::SCSS::RX::IDENT}\Z/ def find_relative(*args) nil @@ -30,7 +30,13 @@ module Compass # Returns an Array of image names without the file extension def sprite_names - @sprite_names ||= files.collect { |file| File.basename(file, '.png') } + @sprite_names ||= files.collect do |file| + filename = File.basename(file, '.png') + unless VAILD_FILE_NAME =~ filename + raise Compass::Error, "Sprite file names must be legal css identifiers. Please rename #{File.basename(file)}" + end + filename + end end # Returns the sass options for this sprite diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index 0c30f68b..61a0d3f4 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -496,7 +496,7 @@ describe Compass::Sprites do css = render <<-SCSS @import "selectors/*.png"; a { - @include selectors_sprite(ten-by-ten) + @include selectors-sprite(ten-by-ten) } SCSS css.should == <<-CSS @@ -518,5 +518,17 @@ describe Compass::Sprites do } CSS end + + it "should raise error on filenames that are not valid sass syntax" do + lambda do + render <<-SCSS + $sprite-file-prefix:'foo'; + @import "prefix/*.png"; + a { + @include squares-sprite(20-by-20) + } + SCSS + end.should raise_error Compass::Error + end end From 36b7c25f1b3e0f0e16eabb80490c1f9d5178d880 Mon Sep 17 00:00:00 2001 From: Jeremy Weiskotten Date: Mon, 28 Mar 2011 23:37:30 -0400 Subject: [PATCH 128/223] fix some typos --- doc-src/Rakefile | 2 +- .../reference/compass/utilities/sprites/sprite_img.haml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc-src/Rakefile b/doc-src/Rakefile index 37ca4c55..b088a701 100644 --- a/doc-src/Rakefile +++ b/doc-src/Rakefile @@ -25,7 +25,7 @@ task :watch do rebuild_site = lambda do |base, relative| if relative && relative =~ /\.s[ac]ss/ - puts ">>> Change Detected to #{relative} : updating stylsheets <<<" + puts ">>> Change Detected to #{relative} : updating stylesheets <<<" system "bundle exec compass compile" else if !relative diff --git a/doc-src/content/reference/compass/utilities/sprites/sprite_img.haml b/doc-src/content/reference/compass/utilities/sprites/sprite_img.haml index 8f51a96f..177c6604 100644 --- a/doc-src/content/reference/compass/utilities/sprites/sprite_img.haml +++ b/doc-src/content/reference/compass/utilities/sprites/sprite_img.haml @@ -16,14 +16,14 @@ classnames: a.twitter +sprite-img("icons-32.png", 1) a.facebook - +sprite-img("icons-32png", 2) + +sprite-img("icons-32.png", 2) **Example 2** Sharing a common base: a +sprite-background("icons-32.png") - a.twitter + &.twitter +sprite-column(1) - a.facebook + &.facebook +sprite-row(2) \ No newline at end of file From 4a5c968739a183ca0f7b3e333b1c4a6d55f26593 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Tue, 29 Mar 2011 19:20:22 -0400 Subject: [PATCH 129/223] added rspec test for sprite command --- spec/compass/commands/sprite_spec.rb | 49 ++++++++++++++++++ .../public/images/prefix/20-by-20.png | Bin 0 -> 2799 bytes .../public/images/prefix/ten-by-ten.png | Bin 0 -> 2804 bytes 3 files changed, 49 insertions(+) create mode 100644 spec/compass/commands/sprite_spec.rb create mode 100644 spec/test_project/public/images/prefix/20-by-20.png create mode 100644 spec/test_project/public/images/prefix/ten-by-ten.png diff --git a/spec/compass/commands/sprite_spec.rb b/spec/compass/commands/sprite_spec.rb new file mode 100644 index 00000000..7eada2b4 --- /dev/null +++ b/spec/compass/commands/sprite_spec.rb @@ -0,0 +1,49 @@ +require 'spec_helper' +require 'compass/commands' +require 'compass/exec' +require 'compass/commands/sprite' +describe Compass::Commands::Sprite do + def config_data + return <<-CONFIG + images_path = #{@images_tmp_path.inspect} + CONFIG + end + + def create_temp_cli_dir + directory = File.join(File.expand_path('../', __FILE__), 'test') + ::FileUtils.mkdir_p directory + @test_dir = directory + end + + def run_compass_with_options(options) + output = 'foo' + ::Dir.chdir @test_dir do + output = Compass::Exec::SubCommandUI.new(options).run! + end + output + end + + def options_to_cli(options) + options.map.flatten! + end + + let(:test_dir) { @test_dir } + before :each do + create_temp_cli_dir + create_sprite_temp + File.open(File.join(@test_dir, 'config.rb'), 'w') do |f| + f << config_data + end + end + after :each do + clean_up_sprites + FileUtils.rm_r @test_dir if File.exists?(@test_dir) + end + + it "should create sprite file" do + puts run_compass_with_options(['sprite', "-f", "stylesheet.scss", "'#{@images_tmp_path}/*.png'"]).inspect + File.exists?(File.join(test_dir, 'stylesheet.scss')).should be_true + end + + +end \ No newline at end of file diff --git a/spec/test_project/public/images/prefix/20-by-20.png b/spec/test_project/public/images/prefix/20-by-20.png new file mode 100644 index 0000000000000000000000000000000000000000..4e5e297ffe74b97eaac97d132bea620d976120a6 GIT binary patch literal 2799 zcmV)P)4Tx0C)k_mUmQB$sWh&-t5!0D$We?#oOQB8gjh?!F5wOq$!XIXzYo8oZzjV*CRZI8Njlw7|kN*B>}AWI@k~ck^H1*i?_jJPB+c z@t)1)7o`VK- zTn5*|N8vX3B774bfQR5$@H7gbNGLi=4P}I~MY*8@P?4xOlnAvERe&l*)uNhFov0qv zUDOb267?C4MN`oXv=Q0??TrpabI>X1jp!nDIl3O*hQ5rxiylT#p}%7&7$uAW#va4M ztibRvnV5V`Ddq^K6>|kMfEmSnz+$my3@TCSccLi?CJL7Hk)`A3K7b#^G@C zI0Kv`E&#{IrQz~%`*BBc7jSoQqqt9a5?&Q=j`zez;sy9zd?~&We;$7aKZc(nND;IM z_JjZemyk^;CLAVo5^fVl2{S}#q7KoK7(z@SZXuQtn~7J5Pl)eGB$7JGjBElrg+ zlMawhmM)TRl)f%KE`yWNmhq6`%H+u$lDQ-^LPb$EsBTmabu0BS^$K;AhNbDyShNIM zA?+Bgmo_CUBWo!eCYvQ&A$v}Ch>oIb(^>Q+dNKVZ{XYH666GZ>OJbL7U(&qf&XSLE zigHZ3Sh)hZ7P$erFY*j|5BWs-UGnYnPZiJ#`U=YxG8GOeTv3=*q$xTmauf>`PbxlA zf|c}@f|S-N9a6fbG_9MJ-miQ~c~XV0!c<96*`sn^WkQvz>ZHn7-J^Oz^(8}= z;lfB_lrb(drqqoj|7u5ZpUuQ0!7L9y_(*ksXR@y61?GS>2d zt^c-8%>*Nn@XEOTbga4ZISIYJB*#H-6p%UcAxF7?bGZ} z+W+NXmwSPGuZN6Bs7JZSGf#C-o@bNil$Vv)IGK<4%U`_eh_-ydG>`V3y_AU2)zD$3aXj!Kp?C0aR+wY0LmcPKiJpcr- z0(J*H4b%xt3H)t2c6s3PisdhY%!1Yj^#oIc*912Pe+Y36DGqrYsvDXf+8rht78TYI z_A%T&yd->Rg~^HyD{e+8MDQazB5{#nkw+q@S9+}6yK*$jDk?wf{wkeSS*xzER#=_1 z`rI1HHS9H~qA}6o(T&kx*#YcY_H+y@rZQ%V{-2rLIctNTVTU=2p6H`cLV@8BQ4$8J{x4GEZemX9==yW$R~e z&mPP1%=vX4dL3t7_jLjG z`>o+yJM)zDHs_7}cizC^w#e{h?_w(6hJKl6X?-EOgc|Mu?%+=3g0riG=2UyC?J zH-0hurR-?f?8NRA?7Y9rc~^ajbV*Lh$Zo&gZF?Ad3iiC;yJqk8Qp?in zeZ+m~`-aMvm38db+`n`G*Yf!CfeP1(mP)0{?Uf&^xK(!!Fb_0WD_0j*e>uoM_@KtC zrma@Hw)7D8P{yGbhrC3F?OGgX%9g*fcaWDm4~2!A2tDLf92ryqZLBKpMrlfEarPuZSoKCN}SvX$Ce&<3?-w@tOjw-0qh zbo8I`In&+g(AoN%@o#l!)y`I&lRZ~_o_Id*{OpCC3)5Y~uE~qMizD4@x*uO!ap~UW z<(GS}_+Gho)${759+#dA*Bq~%y>5T~%njQc?KiD&w%xM2)%v^D@2$Poy=}K`Zg=$A z^>y|y?LU9V`Od|=?su==W8J$s;6KoRKlJ{C!KlHZ2iyna50f6gd6e;J=JDnym?s5K zrJj~PQ+ihWhu$A8L)Js*hTVs6Jr92Vc!V?Z>d(|azmDd;pu8v@QypsSHf2_lllLW{#WH|-Pfo8V*Yh&YQ@y(8_}EDw?*&d-_^aheBV7CIQ{HH@`ss^ z1)t=@-0@RJ`HGBX7002ovPDHLkV1j+) BIe!2E literal 0 HcmV?d00001 diff --git a/spec/test_project/public/images/prefix/ten-by-ten.png b/spec/test_project/public/images/prefix/ten-by-ten.png new file mode 100644 index 0000000000000000000000000000000000000000..c0ae53ccadde24b58be417ca95dcb57eb6da4f1a GIT binary patch literal 2804 zcmV4Tx0C)k_mUmQB$sWh&-t5!0D$We?#oOQB8gjh?!F5wOq$!XIXzYo8oZzjV*CRZI8Njlw7|kN*B>}AWI@k~ck^H1*i?_jJPB+c z@t)1)7o`VK- zTn5*|N8vX3B774bfQR5$@H7gbNGLi=4P}I~MY*8@P?4xOlnAvERe&l*)uNhFov0qv zUDOb267?C4MN`oXv=Q0??TrpabI>X1jp!nDIl3O*hQ5rxiylT#p}%7&7$uAW#va4M ztibRvnV5V`Ddq^K6>|kMfEmSnz+$my3@TCSccLi?CJL7Hk)`A3K7b#^G@C zI0Kv`E&#{IrQz~%`*BBc7jSoQqqt9a5?&Q=j`zez;sy9zd?~&We;$7aKZc(nND;IM z_JjZemyk^;CLAVo5^fVl2{S}#q7KoK7(z@SZXuQtn~7J5Pl)eGB$7JGjBElrg+ zlMawhmM)TRl)f%KE`yWNmhq6`%H+u$lDQ-^LPb$EsBTmabu0BS^$K;AhNbDyShNIM zA?+Bgmo_CUBWo!eCYvQ&A$v}Ch>oIb(^>Q+dNKVZ{XYH666GZ>OJbL7U(&qf&XSLE zigHZ3Sh)hZ7P$erFY*j|5BWs-UGnYnPZiJ#`U=YxG8GOeTv3=*q$xTmauf>`PbxlA zf|c}@f|S-N9a6fbG_9MJ-miQ~c~XV0!c<96*`sn^WkQvz>ZHn7-J^Oz^(8}= z;lfB_lrb(drqqoj|7u5ZpUuQ0!7L9y_(*ksXR@y61?GS>2d zt^c-8%>*Nn@XEOTbga4ZISIYJB*#H-6p%UcAxF7?bGZ} z+W+NXmwSPGuZN6Bs7JZSGf#C-o@bNil$Vv)IGK<4%U`_eh_-ydG>`V3y_AU2)zD$3aXj!Kp?C0aR+wY0LmcPKiJpcr- z0(J*H4b%xt3H)t2c6s3PisdhY%!1Yj^#oIc*912Pe+Y36DGqrYsvDXf+8rht78TYI z_A%T&yd->Rg~^HyD{e+8MDQazB5{#nkw+q@S9+}6yK*$jDk?wf{wkeSS*xzER#=_1 z`rI1HHS9H~qA}6o(T&kx*#YcY_H+y@rZQ%V{-2rLIctNTVTU=2p6H`cLV@8BQ4$8J{x4GEZemX9==yW$R~e z&mPP1%=vX4dL3t7_jLjG z`>o+yJM)zDHs_7}cizC^w#e{h?_w(6hJKl6X?-EOgc|Mu?%+=3g0riG=2UyC?J zH-0hurR-?f?8NRA?7Y9rc~^ajbV*Lh$Zo&gZF?Ad3iiC;yJqk8Qp?in zeZ+m~`-aMvm38db+`n`G*Yf!CfeP1(mP)0{?Uf&^xK(!!Fb_0WD_0j*e>uoM_@KtC zrma@Hw)7D8P{yGbhrC3F?OGgX%9g*fcaWDm4~2!A2tDLf92ryqZLBKpMrlfEarPuZSoKCN}SvX$Ce&<3?-w@tOjw-0qh zbo8I`In&+g(AoN%@o#l!)y`I&lRZ~_o_Id*{OpCC3)5Y~uE~qMizD4@x*uO!ap~UW z<(GS}_+Gho)${759+#dA*Bq~%y>5T~%njQc?KiD&w%xM2)%v^D@2$Poy=}K`Zg=$A z^>y|y?LU9V`Od|=?su==W8J$s;6KoRKlJ{C!KlHZ2iyna50f6gd6e;J=JDnym?s5K zrJj~PQ+ihWhu$A8L)Js*hTVs6Jr92Vc!V?Z>d(|azmDd;pu8v@QypsSHf2_lllLW{#WH|-Pfo8V*Yh&YQ@y(8_}EDw?*&d-_^aheBV7CIQ{HH@`ss^ z1)t Date: Tue, 29 Mar 2011 19:26:11 -0400 Subject: [PATCH 130/223] closes #320 and refactored the rspec tests --- Gemfile.lock | 2 +- lib/compass/commands/sprite.rb | 7 +--- .../sass_extensions/sprites/sprites.rb | 2 +- spec/compass/commands/sprite_spec.rb | 10 ++++- spec/spec_helper.rb | 18 ++++++++- spec/sprites_spec.rb | 40 +++++++++---------- 6 files changed, 47 insertions(+), 32 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 24340b69..c0448a79 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.5.7571d4a) + compass (0.11.beta.5.4a5c968) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/commands/sprite.rb b/lib/compass/commands/sprite.rb index 2e7a4481..2b33f9fc 100644 --- a/lib/compass/commands/sprite.rb +++ b/lib/compass/commands/sprite.rb @@ -38,14 +38,11 @@ module Compass end def perform - sprites = Compass::Sprites.new relative_uri = options[:uri].gsub(/^#{Compass.configuration.images_dir}\//, '') - sprite_images = Compass::Sprites.discover_sprites(relative_uri) - image_names = sprite_images.map{|i| File.basename(i, '.png')} - sprites.path, sprites.name = Compass::Sprites.path_and_name(relative_uri) + sprites = Compass::SpriteMap.new(relative_uri, Compass.sass_engine_options) options[:output_file] ||= File.join(Compass.configuration.sass_path, "sprites", "_#{sprites.name}.#{Compass.configuration.preferred_syntax}") options[:skip_overrides] ||= false - contents = sprites.content_for_images(relative_uri, sprites.name, image_names, options[:skip_overrides]) + contents = sprites.content_for_images(options[:skip_overrides]) if options[:output_file][-4..-1] != "scss" contents = Sass::Engine.new(contents, Compass.sass_engine_options.merge(:syntax => :scss)).to_tree.to_sass end diff --git a/lib/compass/sass_extensions/sprites/sprites.rb b/lib/compass/sass_extensions/sprites/sprites.rb index 59992153..12bfd9d4 100644 --- a/lib/compass/sass_extensions/sprites/sprites.rb +++ b/lib/compass/sass_extensions/sprites/sprites.rb @@ -9,7 +9,7 @@ module Compass end def self.discover_sprites(uri) - self.load_map(uri, options).files + self.load_map(uri, {}).files end def self.sprite_name(file) diff --git a/spec/compass/commands/sprite_spec.rb b/spec/compass/commands/sprite_spec.rb index 7eada2b4..797a7df9 100644 --- a/spec/compass/commands/sprite_spec.rb +++ b/spec/compass/commands/sprite_spec.rb @@ -37,13 +37,19 @@ describe Compass::Commands::Sprite do end after :each do clean_up_sprites - FileUtils.rm_r @test_dir if File.exists?(@test_dir) + if File.exists?(@test_dir) + ::FileUtils.rm_r @test_dir + end end it "should create sprite file" do - puts run_compass_with_options(['sprite', "-f", "stylesheet.scss", "'#{@images_tmp_path}/*.png'"]).inspect + run_compass_with_options(['sprite', "-f", "stylesheet.scss", "'#{@images_tmp_path}/*.png'"]).to_i.should == 0 File.exists?(File.join(test_dir, 'stylesheet.scss')).should be_true end + it "should fail gracfuly when giving bad arguments" do + pending + end + end \ No newline at end of file diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 1eb4ea2e..9fee20ea 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -16,8 +16,22 @@ module CompassGlobalInclude end end +module CompassSpriteHelpers + def create_sprite_temp + ::FileUtils.cp_r @images_src_path, @images_tmp_path + end + + def clean_up_sprites + ::FileUtils.rm_r @images_tmp_path + end +end + RSpec.configure do |config| config.include(CompassGlobalInclude) - + config.include(CompassSpriteHelpers) + config.before :each do + @images_src_path = File.join(File.dirname(__FILE__), 'test_project', 'public', 'images') + @images_tmp_path = File.join(File.dirname(__FILE__), 'test_project', 'public', 'images-tmp') + end config.mock_with :mocha -end +end \ No newline at end of file diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index 61a0d3f4..2a01813c 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -4,16 +4,14 @@ require 'digest/md5' describe Compass::Sprites do before :each do - @images_src_path = File.join(File.dirname(__FILE__), 'test_project', 'public', 'images') - @images_tmp_path = File.join(File.dirname(__FILE__), 'test_project', 'public', 'images-tmp') - ::FileUtils.cp_r @images_src_path, @images_tmp_path + create_sprite_temp file = StringIO.new("images_path = #{@images_tmp_path.inspect}\n") Compass.add_configuration(file, "sprite_config") Compass.configure_sass_plugin! end after :each do - FileUtils.rm_r @images_tmp_path + clean_up_sprites end def map_location(file) @@ -75,7 +73,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/squares-161c60ad78.png') no-repeat; + background: url('/images/squares-161c60ad78.png') no-repeat; } .squares-ten-by-ten { @@ -98,7 +96,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/squares-161c60ad78.png') no-repeat; + background: url('/images/squares-161c60ad78.png') no-repeat; } .squares-ten-by-ten { @@ -130,7 +128,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .cubicle, .large-cube { - background: url('/squares-161c60ad78.png') no-repeat; + background: url('/images/squares-161c60ad78.png') no-repeat; } .cubicle { @@ -155,7 +153,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .circles { - background: url('/squares-161c60ad78.png') no-repeat; + background: url('/images/squares-161c60ad78.png') no-repeat; } CSS image_size('squares-*.png').should == [20, 30] @@ -169,7 +167,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/squares-89450808af.png') no-repeat; + background: url('/images/squares-89450808af.png') no-repeat; } .squares-ten-by-ten { @@ -191,7 +189,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/squares-673837183a.png') no-repeat; + background: url('/images/squares-673837183a.png') no-repeat; } .squares-ten-by-ten { @@ -214,7 +212,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/squares-1cd84c9068.png') no-repeat; + background: url('/images/squares-1cd84c9068.png') no-repeat; } .squares-ten-by-ten { @@ -237,7 +235,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/squares-f25b7090ca.png') no-repeat; + background: url('/images/squares-f25b7090ca.png') no-repeat; } .squares-ten-by-ten { @@ -259,7 +257,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/squares-d66bf24bab.png') no-repeat; + background: url('/images/squares-d66bf24bab.png') no-repeat; } .squares-ten-by-ten { @@ -294,7 +292,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite { - background: url('/squares-8e490168dd.png') no-repeat; + background: url('/images/squares-8e490168dd.png') no-repeat; } .adjusted-percentage { @@ -332,7 +330,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .adjusted-percentage, .adjusted-px-1, .adjusted-px-2 { - background: url('/squares-8e490168dd.png') no-repeat; + background: url('/images/squares-8e490168dd.png') no-repeat; } .adjusted-percentage { @@ -359,7 +357,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/squares-a5550fd132.png') no-repeat; + background: url('/images/squares-a5550fd132.png') no-repeat; } .squares-ten-by-ten { @@ -383,7 +381,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/squares-89a274044e.png') no-repeat; + background: url('/images/squares-89a274044e.png') no-repeat; } .squares-ten-by-ten { @@ -435,7 +433,7 @@ describe Compass::Sprites do SCSS actual_css.should == <<-CSS .squares { - background: url('/squares-145869726f.png') 0 -10px no-repeat; + background: url('/images/squares-145869726f.png') 0 -10px no-repeat; } CSS end @@ -454,7 +452,7 @@ describe Compass::Sprites do image_size('squares-*.png').should == [20, 40] css.should == <<-CSS .squares-sprite { - background: url('/squares-e3c68372d9.png') no-repeat; + background: url('/images/squares-e3c68372d9.png') no-repeat; } .foo { @@ -474,7 +472,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .selectors-sprite, .selectors-ten-by-ten { - background: url('/selectors-edfef809e2.png') no-repeat; + background: url('/images/selectors-edfef809e2.png') no-repeat; } .selectors-ten-by-ten { @@ -501,7 +499,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .selectors-sprite, a { - background: url('/selectors-edfef809e2.png') no-repeat; + background: url('/images/selectors-edfef809e2.png') no-repeat; } a { From da57adc49d4c75b56235390cad4c5721b8961a24 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Wed, 30 Mar 2011 10:20:27 -0700 Subject: [PATCH 131/223] add opera support for the css3 gradient syntax --- .../stylesheets/compass/css3/_images.scss | 8 ++- .../functions/gradient_support.rb | 8 ++- .../stylesheets/compass/css/gradients.css | 56 +++++++++++++++++++ test/fixtures/stylesheets/compass/css/pie.css | 1 + .../stylesheets/compass/css/utilities.css | 3 + 5 files changed, 74 insertions(+), 2 deletions(-) diff --git a/frameworks/compass/stylesheets/compass/css3/_images.scss b/frameworks/compass/stylesheets/compass/css3/_images.scss index 8ad01d43..cda3c2ff 100644 --- a/frameworks/compass/stylesheets/compass/css3/_images.scss +++ b/frameworks/compass/stylesheets/compass/css3/_images.scss @@ -21,6 +21,7 @@ @if $experimental-support-for-svg and prefixed(-svg, $backgrounds) { background: -svg($backgrounds); } @if $experimental-support-for-webkit and prefixed(-webkit, $backgrounds) { background: -webkit($backgrounds); } @if $experimental-support-for-mozilla and prefixed(-moz, $backgrounds) { background: -moz($backgrounds); } + @if $experimental-support-for-opera and prefixed(-o, $backgrounds) { background: -o($backgrounds); } @if $experimental-support-for-pie and (prefixed(-pie, $backgrounds) or $mult-bgs) { -pie-background: -pie($backgrounds); } background: $backgrounds; } @@ -43,7 +44,8 @@ @if $experimental-support-for-svg and prefixed(-svg, $images) { background-image: -svg($images); background-size: 100%; } @if $experimental-support-for-webkit and prefixed(-webkit, $images) { background-image: -webkit($images); } @if $experimental-support-for-mozilla and prefixed(-moz, $images) { background-image: -moz($images); } - @if $experimental-support-for-pie and (prefixed(-pie, $images) or -compass-list-size($images) > 1) { @warn "PIE does not support background-image. Use @include background(#{$images}) instead." } + @if $experimental-support-for-opera and prefixed(-o, $images) { background-image: -o($images); } + @if $experimental-support-for-pie and (prefixed(-pie, $images) or -compass-list-size($images) > 1) { @warn "PIE does not support background-image. Use @include background(#{$images}) instead." } background-image: $images ; } @@ -67,6 +69,7 @@ @mixin border-image($value) { @if $experimental-support-for-mozilla { -moz-border-image: -moz(-compass-list($value)); } @if $experimental-support-for-webkit { -webkit-border-image: -webkit(-compass-list($value)); } + @if $experimental-support-for-opera { -o-border-image: -o(-compass-list($value)); } @if $experimental-support-for-svg { border-image: -svg(-compass-list($value)); } border-image: $value; } @@ -75,6 +78,7 @@ @mixin list-style-image($image) { @if $experimental-support-for-mozilla and prefixed(-moz, $image) { list-style-image: -moz($image); } @if $experimental-support-for-webkit and prefixed(-webkit, $image) { list-style-image: -webkit($image); } + @if $experimental-support-for-opera and prefixed(-o, $image) { list-style-image: -o($image); } @if $experimental-support-for-svg and prefixed(-svg, $image) { list-style-image: -svg($image); } list-style-image: $image ; } @@ -84,6 +88,7 @@ $value: -compass-list($value); @if $experimental-support-for-mozilla and prefixed(-moz, $value) { list-style-image: -moz($value); } @if $experimental-support-for-webkit and prefixed(-webkit, $value) { list-style-image: -webkit($value); } + @if $experimental-support-for-opera and prefixed(-o, $value) { list-style-image: -o($value); } @if $experimental-support-for-svg and prefixed(-svg, $value) { list-style-image: -svg($value); } list-style-image: $value ; } @@ -93,6 +98,7 @@ $value: -compass-list($value); @if $experimental-support-for-mozilla and prefixed(-moz, $value) { content: -moz($value); } @if $experimental-support-for-webkit and prefixed(-webkit, $value) { content: -webkit($value); } + @if $experimental-support-for-opera and prefixed(-o, $value) { content: -o($value); } @if $experimental-support-for-svg and prefixed(-svg, $value) { content: -svg($value); } content: $value ; } diff --git a/lib/compass/sass_extensions/functions/gradient_support.rb b/lib/compass/sass_extensions/functions/gradient_support.rb index 1aadd511..faa31f34 100644 --- a/lib/compass/sass_extensions/functions/gradient_support.rb +++ b/lib/compass/sass_extensions/functions/gradient_support.rb @@ -1,6 +1,6 @@ module Compass::SassExtensions::Functions::GradientSupport - GRADIENT_ASPECTS = %w(webkit moz svg pie css2).freeze + GRADIENT_ASPECTS = %w(webkit moz svg pie css2 o).freeze class ColorStop < Sass::Script::Literal attr_accessor :color, :stop @@ -77,6 +77,9 @@ module Compass::SassExtensions::Functions::GradientSupport def to_moz(options = self.options) Sass::Script::String.new("-moz-#{to_s(options)}") end + def to_o(options = self.options) + Sass::Script::String.new("-o-#{to_s(options)}") + end def to_svg(options = self.options) # XXX Add shape support if possible radial_svg_gradient(color_stops, position_and_angle || _center_position) @@ -128,6 +131,9 @@ module Compass::SassExtensions::Functions::GradientSupport def to_moz(options = self.options) Sass::Script::String.new("-moz-#{to_s(options)}") end + def to_o(options = self.options) + Sass::Script::String.new("-o-#{to_s(options)}") + end def to_svg(options = self.options) linear_svg_gradient(color_stops, position_and_angle || Sass::Script::String.new("top")) end diff --git a/test/fixtures/stylesheets/compass/css/gradients.css b/test/fixtures/stylesheets/compass/css/gradients.css index c3586f46..45ff67d0 100644 --- a/test/fixtures/stylesheets/compass/css/gradients.css +++ b/test/fixtures/stylesheets/compass/css/gradients.css @@ -6,6 +6,7 @@ background: white url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background: white -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background: white -moz-linear-gradient(top left, #dddddd, #aaaaaa); + background: white -o-linear-gradient(top left, #dddddd, #aaaaaa); background: white linear-gradient(top left, #dddddd, #aaaaaa); } .bg-shortcut-radial-gradient { @@ -13,6 +14,7 @@ background: white url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background: white -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background: white -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); + background: white -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background: white radial-gradient(center center, #dddddd, #aaaaaa 100px); } .bg-simple-image { @@ -23,6 +25,7 @@ background-size: 100%; background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(top left, #dddddd, #aaaaaa); + background-image: -o-linear-gradient(top left, #dddddd, #aaaaaa); background-image: linear-gradient(top left, #dddddd, #aaaaaa); } .bg-radial-gradient { @@ -30,6 +33,7 @@ background-size: 100%; background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); + background-image: -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } .bg-linear-gradient-with-angle { @@ -37,6 +41,7 @@ background-size: 100%; background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(top left -45deg, #dddddd, #aaaaaa); + background-image: -o-linear-gradient(top left -45deg, #dddddd, #aaaaaa); background-image: linear-gradient(top left -45deg, #dddddd, #aaaaaa); } .bg-radial-gradient-with-angle-and-shape { @@ -44,6 +49,7 @@ background-size: 100%; background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-radial-gradient(center center 45deg, ellipse cover, #dddddd, #aaaaaa 100px); + background-image: -o-radial-gradient(center center 45deg, ellipse cover, #dddddd, #aaaaaa 100px); background-image: radial-gradient(center center 45deg, ellipse cover, #dddddd, #aaaaaa 100px); } .bg-all-gradient-types { @@ -51,11 +57,13 @@ background-size: 100%; background-image: url('/images/4x6.png?busted=true'), -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)), -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: url('/images/4x6.png?busted=true'), -moz-linear-gradient(top left, #dddddd, #aaaaaa), -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); + background-image: url('/images/4x6.png?busted=true'), -o-linear-gradient(top left, #dddddd, #aaaaaa), -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: url('/images/4x6.png?busted=true'), linear-gradient(top left, #dddddd, #aaaaaa), radial-gradient(center center, #dddddd, #aaaaaa 100px); } .border-image-gradient { -moz-border-image: -moz-radial-gradient(#00ff00, #ff0000 100px) 100 stretch; -webkit-border-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #00ff00), color-stop(100%, #ff0000)) 100 stretch; + -o-border-image: -o-radial-gradient(#00ff00, #ff0000 100px) 100 stretch; border-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjMDBmZjAwIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjZmYwMDAwIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g') 100 stretch; border-image: radial-gradient(#00ff00, #ff0000 100px) 100 stretch; } @@ -68,12 +76,14 @@ .direct-list-image-with-gradient { list-style-image: -moz-radial-gradient(#00ff00, #ff0000 10px); list-style-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 10, color-stop(0%, #00ff00), color-stop(100%, #ff0000)); + list-style-image: -o-radial-gradient(#00ff00, #ff0000 10px); list-style-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAiPjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiMwMGZmMDAiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZjAwMDAiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); list-style-image: radial-gradient(#00ff00, #ff0000 10px); } .shorthand-list-image-with-gradient { list-style-image: outside -moz-radial-gradient(#00ff00, #ff0000 10px); list-style-image: outside -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 10, color-stop(0%, #00ff00), color-stop(100%, #ff0000)); + list-style-image: outside -o-radial-gradient(#00ff00, #ff0000 10px); list-style-image: outside url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAiPjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiMwMGZmMDAiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZjAwMDAiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); list-style-image: outside radial-gradient(#00ff00, #ff0000 10px); } @@ -83,132 +93,158 @@ .content-with-gradient { content: -moz-radial-gradient(#00ff00, #ff0000 10px); content: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 10, color-stop(0%, #00ff00), color-stop(100%, #ff0000)); + content: -o-radial-gradient(#00ff00, #ff0000 10px); content: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAiPjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiMwMGZmMDAiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZjAwMDAiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); content: radial-gradient(#00ff00, #ff0000 10px); } .bg-linear-gradient-no-position { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(#dddddd, #aaaaaa); + background-image: -o-linear-gradient(#dddddd, #aaaaaa); background-image: linear-gradient(#dddddd, #aaaaaa); } .bg-radial-gradient-no-position { background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-radial-gradient(#dddddd, #aaaaaa 100px); + background-image: -o-radial-gradient(#dddddd, #aaaaaa 100px); background-image: radial-gradient(#dddddd, #aaaaaa 100px); } .image-fallback { background-image: image(-webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)), url('/images/4x6.png?busted=true'), #cc0000); background-image: image(-moz-radial-gradient(#dddddd, #aaaaaa 100px), url('/images/4x6.png?busted=true'), #cc0000); + background-image: image(-o-radial-gradient(#dddddd, #aaaaaa 100px), url('/images/4x6.png?busted=true'), #cc0000); background-image: image(radial-gradient(#dddddd, #aaaaaa 100px), url('/images/4x6.png?busted=true'), #cc0000); } .cross-fade { background-image: cross-fade(-webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)), url('/images/4x6.png?busted=true')); background-image: cross-fade(-moz-radial-gradient(#dddddd, #aaaaaa 100px), url('/images/4x6.png?busted=true')); + background-image: cross-fade(-o-radial-gradient(#dddddd, #aaaaaa 100px), url('/images/4x6.png?busted=true')); background-image: cross-fade(radial-gradient(#dddddd, #aaaaaa 100px), url('/images/4x6.png?busted=true')); } .unknown-function-wrapper { background: foo(-webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa))); background: foo(-moz-radial-gradient(#dddddd, #aaaaaa 100px)); + background: foo(-o-radial-gradient(#dddddd, #aaaaaa 100px)); background: foo(radial-gradient(#dddddd, #aaaaaa 100px)); } .linear-1 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(top, #dddddd, #aaaaaa); + background-image: -o-linear-gradient(top, #dddddd, #aaaaaa); background-image: linear-gradient(top, #dddddd, #aaaaaa); } .linear-2 { background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(left, #dddddd, #aaaaaa); + background-image: -o-linear-gradient(left, #dddddd, #aaaaaa); background-image: linear-gradient(left, #dddddd, #aaaaaa); } .linear-3 { background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(top left, #dddddd, #aaaaaa); + background-image: -o-linear-gradient(top left, #dddddd, #aaaaaa); background-image: linear-gradient(top left, #dddddd, #aaaaaa); } .linear-4 { background-image: -webkit-gradient(linear, 100% 0%, 0% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(top right, #dddddd, #aaaaaa); + background-image: -o-linear-gradient(top right, #dddddd, #aaaaaa); background-image: linear-gradient(top right, #dddddd, #aaaaaa); } .linear-5 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(50%, #cccccc), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(top, #dddddd, #cccccc, #aaaaaa); + background-image: -o-linear-gradient(top, #dddddd, #cccccc, #aaaaaa); background-image: linear-gradient(top, #dddddd, #cccccc, #aaaaaa); } .linear-6 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(20%, #cccccc), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(top, #dddddd, #cccccc 20%, #aaaaaa); + background-image: -o-linear-gradient(top, #dddddd, #cccccc 20%, #aaaaaa); background-image: linear-gradient(top, #dddddd, #cccccc 20%, #aaaaaa); } .linear-7 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(20%, #cccccc), color-stop(60%, #eeeeee), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(top, #dddddd, #cccccc 20%, #eeeeee, #aaaaaa); + background-image: -o-linear-gradient(top, #dddddd, #cccccc 20%, #eeeeee, #aaaaaa); background-image: linear-gradient(top, #dddddd, #cccccc 20%, #eeeeee, #aaaaaa); } .linear-8 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(80%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(top, #dddddd 80%, #aaaaaa); + background-image: -o-linear-gradient(top, #dddddd 80%, #aaaaaa); background-image: linear-gradient(top, #dddddd 80%, #aaaaaa); } .linear-9 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(20%, #aaaaaa)); background-image: -moz-linear-gradient(top, #dddddd, #aaaaaa 20%); + background-image: -o-linear-gradient(top, #dddddd, #aaaaaa 20%); background-image: linear-gradient(top, #dddddd, #aaaaaa 20%); } .linear-10 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #dddddd), color-stop(50%, #aaaaaa)); background-image: -moz-linear-gradient(top, #dddddd 40%, #aaaaaa 50%); + background-image: -o-linear-gradient(top, #dddddd 40%, #aaaaaa 50%); background-image: linear-gradient(top, #dddddd 40%, #aaaaaa 50%); } .linear-11 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #dddddd), color-stop(45%, #000000), color-stop(50%, #aaaaaa)); background-image: -moz-linear-gradient(top, #dddddd 40%, #000000, #aaaaaa 50%); + background-image: -o-linear-gradient(top, #dddddd 40%, #000000, #aaaaaa 50%); background-image: linear-gradient(top, #dddddd 40%, #000000, #aaaaaa 50%); } .linear-12 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(33%, #0000ff), color-stop(67%, #000000)); background-image: -moz-linear-gradient(top, #ffffff, #0000ff 33%, #000000 67%); + background-image: -o-linear-gradient(top, #ffffff, #0000ff 33%, #000000 67%); background-image: linear-gradient(top, #ffffff, #0000ff 33%, #000000 67%); } .radial-1 { background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); + background-image: -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } .radial-2 { background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); + background-image: -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } .radial-3 { background-image: -webkit-gradient(radial, 50% 0%, 0, 50% 0%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-radial-gradient(top center, #dddddd, #aaaaaa 100px); + background-image: -o-radial-gradient(top center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(top center, #dddddd, #aaaaaa 100px); } .radial-4 { background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); + background-image: -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } .radial-5 { background-image: -webkit-gradient(radial, 50% 0%, 0, 50% 0%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-radial-gradient(top center, #dddddd, #aaaaaa 100px); + background-image: -o-radial-gradient(top center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(top center, #dddddd, #aaaaaa 100px); } .radial-6 { background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 50, color-stop(40%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-radial-gradient(center center, #dddddd 20px, #aaaaaa 50px); + background-image: -o-radial-gradient(center center, #dddddd 20px, #aaaaaa 50px); background-image: radial-gradient(center center, #dddddd 20px, #aaaaaa 50px); } .radial-7 { background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 50, color-stop(20%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-radial-gradient(center center, #dddddd 20%, #aaaaaa 50px); + background-image: -o-radial-gradient(center center, #dddddd 20%, #aaaaaa 50px); background-image: radial-gradient(center center, #dddddd 20%, #aaaaaa 50px); } .alpha-linear { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, rgba(255, 255, 255, 0)), color-stop(45%, rgba(255, 127, 127, 0.5)), color-stop(50%, #ffffff)); background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0) 40%, rgba(255, 127, 127, 0.5), #ffffff 50%); + background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0) 40%, rgba(255, 127, 127, 0.5), #ffffff 50%); background-image: linear-gradient(top, rgba(255, 255, 255, 0) 40%, rgba(255, 127, 127, 0.5), #ffffff 50%); } .linear-svg-1 { @@ -216,6 +252,7 @@ background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(top, #dddddd, #aaaaaa); + background-image: -o-linear-gradient(top, #dddddd, #aaaaaa); background-image: linear-gradient(top, #dddddd, #aaaaaa); } .linear-svg-2 { @@ -223,6 +260,7 @@ background-size: 100%; background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(left, #dddddd, #aaaaaa); + background-image: -o-linear-gradient(left, #dddddd, #aaaaaa); background-image: linear-gradient(left, #dddddd, #aaaaaa); } .linear-svg-3 { @@ -230,6 +268,7 @@ background-size: 100%; background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(top left, #dddddd, #aaaaaa); + background-image: -o-linear-gradient(top left, #dddddd, #aaaaaa); background-image: linear-gradient(top left, #dddddd, #aaaaaa); } .linear-svg-4 { @@ -237,6 +276,7 @@ background-size: 100%; background-image: -webkit-gradient(linear, 100% 0%, 0% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(top right, #dddddd, #aaaaaa); + background-image: -o-linear-gradient(top right, #dddddd, #aaaaaa); background-image: linear-gradient(top right, #dddddd, #aaaaaa); } .linear-svg-5 { @@ -244,6 +284,7 @@ background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(50%, #cccccc), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(top, #dddddd, #cccccc, #aaaaaa); + background-image: -o-linear-gradient(top, #dddddd, #cccccc, #aaaaaa); background-image: linear-gradient(top, #dddddd, #cccccc, #aaaaaa); } .linear-svg-6 { @@ -251,6 +292,7 @@ background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(20%, #cccccc), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(top, #dddddd, #cccccc 20%, #aaaaaa); + background-image: -o-linear-gradient(top, #dddddd, #cccccc 20%, #aaaaaa); background-image: linear-gradient(top, #dddddd, #cccccc 20%, #aaaaaa); } .linear-svg-7 { @@ -258,6 +300,7 @@ background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(20%, #cccccc), color-stop(60%, #eeeeee), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(top, #dddddd, #cccccc 20%, #eeeeee, #aaaaaa); + background-image: -o-linear-gradient(top, #dddddd, #cccccc 20%, #eeeeee, #aaaaaa); background-image: linear-gradient(top, #dddddd, #cccccc 20%, #eeeeee, #aaaaaa); } .linear-svg-8 { @@ -265,6 +308,7 @@ background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(80%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-linear-gradient(top, #dddddd 80%, #aaaaaa); + background-image: -o-linear-gradient(top, #dddddd 80%, #aaaaaa); background-image: linear-gradient(top, #dddddd 80%, #aaaaaa); } .linear-svg-9 { @@ -272,6 +316,7 @@ background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(20%, #aaaaaa)); background-image: -moz-linear-gradient(top, #dddddd, #aaaaaa 20%); + background-image: -o-linear-gradient(top, #dddddd, #aaaaaa 20%); background-image: linear-gradient(top, #dddddd, #aaaaaa 20%); } .linear-svg-10 { @@ -279,6 +324,7 @@ background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #dddddd), color-stop(50%, #aaaaaa)); background-image: -moz-linear-gradient(top, #dddddd 40%, #aaaaaa 50%); + background-image: -o-linear-gradient(top, #dddddd 40%, #aaaaaa 50%); background-image: linear-gradient(top, #dddddd 40%, #aaaaaa 50%); } .linear-svg-11 { @@ -286,6 +332,7 @@ background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #dddddd), color-stop(45%, #000000), color-stop(50%, #aaaaaa)); background-image: -moz-linear-gradient(top, #dddddd 40%, #000000, #aaaaaa 50%); + background-image: -o-linear-gradient(top, #dddddd 40%, #000000, #aaaaaa 50%); background-image: linear-gradient(top, #dddddd 40%, #000000, #aaaaaa 50%); } .linear-svg-12 { @@ -293,6 +340,7 @@ background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(33%, #0000ff), color-stop(67%, #000000)); background-image: -moz-linear-gradient(top, #ffffff, #0000ff 33%, #000000 67%); + background-image: -o-linear-gradient(top, #ffffff, #0000ff 33%, #000000 67%); background-image: linear-gradient(top, #ffffff, #0000ff 33%, #000000 67%); } .radial-svg-1 { @@ -300,6 +348,7 @@ background-size: 100%; background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); + background-image: -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } .radial-svg-2 { @@ -307,6 +356,7 @@ background-size: 100%; background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); + background-image: -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } .radial-svg-3 { @@ -314,6 +364,7 @@ background-size: 100%; background-image: -webkit-gradient(radial, 50% 0%, 0, 50% 0%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-radial-gradient(top center, #dddddd, #aaaaaa 100px); + background-image: -o-radial-gradient(top center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(top center, #dddddd, #aaaaaa 100px); } .radial-svg-4 { @@ -321,6 +372,7 @@ background-size: 100%; background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); + background-image: -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } .radial-svg-5 { @@ -328,6 +380,7 @@ background-size: 100%; background-image: -webkit-gradient(radial, 50% 0%, 0, 50% 0%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-radial-gradient(top center, #dddddd, #aaaaaa 100px); + background-image: -o-radial-gradient(top center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(top center, #dddddd, #aaaaaa 100px); } .radial-svg-6 { @@ -335,6 +388,7 @@ background-size: 100%; background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 50, color-stop(40%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-radial-gradient(center center, #dddddd 20px, #aaaaaa 50px); + background-image: -o-radial-gradient(center center, #dddddd 20px, #aaaaaa 50px); background-image: radial-gradient(center center, #dddddd 20px, #aaaaaa 50px); } .radial-svg-7 { @@ -342,6 +396,7 @@ background-size: 100%; background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 50, color-stop(20%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -moz-radial-gradient(center center, #dddddd 20%, #aaaaaa 50px); + background-image: -o-radial-gradient(center center, #dddddd 20%, #aaaaaa 50px); background-image: radial-gradient(center center, #dddddd 20%, #aaaaaa 50px); } .alpha-linear-svg { @@ -349,6 +404,7 @@ background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, rgba(255, 255, 255, 0)), color-stop(45%, rgba(255, 127, 127, 0.5)), color-stop(50%, #ffffff)); background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0) 40%, rgba(255, 127, 127, 0.5), #ffffff 50%); + background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0) 40%, rgba(255, 127, 127, 0.5), #ffffff 50%); background-image: linear-gradient(top, rgba(255, 255, 255, 0) 40%, rgba(255, 127, 127, 0.5), #ffffff 50%); } .ie-horizontal-filter { diff --git a/test/fixtures/stylesheets/compass/css/pie.css b/test/fixtures/stylesheets/compass/css/pie.css index c911df07..ec8ac289 100644 --- a/test/fixtures/stylesheets/compass/css/pie.css +++ b/test/fixtures/stylesheets/compass/css/pie.css @@ -13,6 +13,7 @@ .gradient { background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ff0000), color-stop(100%, #0000ff)); background: -moz-linear-gradient(#ff0000, #0000ff); + background: -o-linear-gradient(#ff0000, #0000ff); -pie-background: linear-gradient(#ff0000, #0000ff); background: linear-gradient(#ff0000, #0000ff); } diff --git a/test/fixtures/stylesheets/compass/css/utilities.css b/test/fixtures/stylesheets/compass/css/utilities.css index aef752a4..354c84dc 100644 --- a/test/fixtures/stylesheets/compass/css/utilities.css +++ b/test/fixtures/stylesheets/compass/css/utilities.css @@ -15,12 +15,15 @@ p.light { background-color: #b0201e; color: black; } + p.dark { background-color: #5f1210; color: white; } + p.light-with-args { background-color: #b0201e; color: green; } + p.dark-with-args { background-color: #5f1210; color: blue; } From f2ceec4680a2305bf716c5eba2fbc52768ff721e Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Wed, 30 Mar 2011 10:45:27 -0700 Subject: [PATCH 132/223] Created a function called css2-fallback($value, $css2-value) that will use the $css2-value in a css2 context and the $value in other contexts. --- doc-src/content/CHANGELOG.markdown | 6 +++- .../content/reference/compass/helpers.haml | 1 + .../compass/helpers/cross-browser.haml | 11 +++++++ .../functions/cross_browser_support.rb | 31 +++++++++++++++++++ test/sass_extensions_test.rb | 6 ++++ 5 files changed, 54 insertions(+), 1 deletion(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 1b6034f4..aa4b0db5 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -14,7 +14,11 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/ The Documentation for the [latest preview release](http://beta.compass-style.org/) -0.11.beta.5 (UNRELEASED) +0.11.beta.6 (3/27/2011) +------------------------ +* Added opera prefix support for linear and radial gradients. + +0.11.beta.5 (03/27/2011) ------------------------ ### Compass Sprites diff --git a/doc-src/content/reference/compass/helpers.haml b/doc-src/content/reference/compass/helpers.haml index 340e1f45..3a8846ff 100644 --- a/doc-src/content/reference/compass/helpers.haml +++ b/doc-src/content/reference/compass/helpers.haml @@ -24,6 +24,7 @@ layout: core * [append-selector()](/reference/compass/helpers/selectors/#append-selector) * [color-stops()](/reference/compass/helpers/color-stops/) * [cos()](/reference/compass/helpers/trig/#cos) + * [css2-fallback()](/reference/compass/helpers/cross-browser/#css2-fallback) * [elements-of-type()](/reference/compass/helpers/display/) * [enumerate()](/reference/compass/helpers/selectors/#enumerate) * [font-files()](/reference/compass/helpers/font-files/) diff --git a/doc-src/content/reference/compass/helpers/cross-browser.haml b/doc-src/content/reference/compass/helpers/cross-browser.haml index f8097bd7..32396476 100644 --- a/doc-src/content/reference/compass/helpers/cross-browser.haml +++ b/doc-src/content/reference/compass/helpers/cross-browser.haml @@ -112,3 +112,14 @@ documented_functions: It is a kind of hack to sanitize the output of experimental code into a form that can be parsed by a css2.1 compliant parser. Usually this results in causing some functions to be omitted. +#css2-fallback.helper + %h3 + %a(href="#css2-fallback") + css2-fallback($value, $css2-value) + .details + %p + This function returns a value that is normally $value, + but is $css2-value when passed through the -css2() + helper function. Many of the compass css3 mixins will create a css2 fallback + value if the arguments have a css2 representation (gradients have a null css2 + representation). diff --git a/lib/compass/sass_extensions/functions/cross_browser_support.rb b/lib/compass/sass_extensions/functions/cross_browser_support.rb index 92bab46e..beb2356d 100644 --- a/lib/compass/sass_extensions/functions/cross_browser_support.rb +++ b/lib/compass/sass_extensions/functions/cross_browser_support.rb @@ -1,4 +1,31 @@ module Compass::SassExtensions::Functions::CrossBrowserSupport + + class CSS2FallbackValue < Sass::Script::Literal + attr_accessor :value, :css2_value + def children + [value, css2_value] + end + def initialize(value, css2_value) + self.value = value + self.css2_value = css2_value + end + def inspect + to_s + end + def to_s(options = self.options) + value.to_s(options) + end + def supports?(aspect) + aspect == "css2" + end + def has_aspect? + true + end + def to_css2(options = self.options) + css2_value + end + end + # Check if any of the arguments passed require a vendor prefix. def prefixed(prefix, *args) aspect = prefix.value.sub(/^-/,"") @@ -36,4 +63,8 @@ module Compass::SassExtensions::Functions::CrossBrowserSupport end end + def css2_fallback(value, css2_value) + CSS2FallbackValue.new(value, css2_value) + end + end diff --git a/test/sass_extensions_test.rb b/test/sass_extensions_test.rb index cbd75f8a..569d49f0 100644 --- a/test/sass_extensions_test.rb +++ b/test/sass_extensions_test.rb @@ -89,6 +89,12 @@ class SassExtensionsTest < Test::Unit::TestCase assert_equal "true", evaluate("blank(-compass-space-list(' '))") end + def test_css2_fallback + assert_equal "css3", evaluate("css2-fallback(css3, css2)") + assert_equal "css2", evaluate("-css2(css2-fallback(css3, css2))") + assert_equal "true", evaluate("prefixed(-css2, css2-fallback(css3, css2))") + end + protected def evaluate(value) Sass::Script::Parser.parse(value, 0, 0).perform(Sass::Environment.new).to_s From 0cf4fcd8a7b808d94ae9b55d3f310d4b0e73a159 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Wed, 30 Mar 2011 14:24:39 -0700 Subject: [PATCH 133/223] We don't have a charset in fonts anymore --- test/fixtures/stylesheets/compass/css/fonts.css | 1 - 1 file changed, 1 deletion(-) diff --git a/test/fixtures/stylesheets/compass/css/fonts.css b/test/fixtures/stylesheets/compass/css/fonts.css index 4cbdb33b..c282458a 100644 --- a/test/fixtures/stylesheets/compass/css/fonts.css +++ b/test/fixtures/stylesheets/compass/css/fonts.css @@ -1,4 +1,3 @@ -@charset "UTF-8"; @font-face { font-family: "font1"; src: url('/tmp/fonts/font1.eot'); From da2af62f47c81b95f995e17cf745b21a36bf5317 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 1 Apr 2011 10:32:48 -0400 Subject: [PATCH 134/223] closes #271 - fixed bug that was causing file name to truncate --- Gemfile.lock | 2 +- doc-src/Gemfile.lock | 2 +- lib/compass/compiler.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index c0448a79..d6e36fc4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.5.4a5c968) + compass (0.11.beta.5.0cf4fcd) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index 70bbc9df..2e427a7a 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,7 +8,7 @@ GIT PATH remote: .. specs: - compass (0.11.beta.4.365fc5d) + compass (0.11.beta.5.96f1e4d) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/compiler.rb b/lib/compass/compiler.rb index cc887a70..bf3f7f3e 100644 --- a/lib/compass/compiler.rb +++ b/lib/compass/compiler.rb @@ -30,7 +30,7 @@ module Compass end def stylesheet_name(sass_file) - sass_file[("#{from}/".length)..-6] + %r(#{from}\/(.+)\.(.+)).match(sass_file)[1] end def css_files From f83f85406ce2b12c897b155ad66f1156c924a5f7 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 1 Apr 2011 11:14:30 -0400 Subject: [PATCH 135/223] refactored to fix relative path bug with the compile command --- Gemfile.lock | 2 +- lib/compass/compiler.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index d6e36fc4..929bec58 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.5.0cf4fcd) + compass (0.11.beta.5.da2af62) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/compiler.rb b/lib/compass/compiler.rb index bf3f7f3e..837b3dab 100644 --- a/lib/compass/compiler.rb +++ b/lib/compass/compiler.rb @@ -7,7 +7,7 @@ module Compass def initialize(working_path, from, to, options) self.working_path = working_path - self.from, self.to = from, to + self.from, self.to = from.gsub('./', ''), to self.logger = options.delete(:logger) self.options = options self.options[:cache_location] ||= determine_cache_location @@ -30,7 +30,7 @@ module Compass end def stylesheet_name(sass_file) - %r(#{from}\/(.+)\.(.+)).match(sass_file)[1] + sass_file.gsub(%r{#{from}/}, '')[0..-6] end def css_files From 23f0f03a0931cb11a7ddee69ffe778e7938fe972 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 1 Apr 2011 12:14:45 -0400 Subject: [PATCH 136/223] fixed sprite rsspec cli test to change back to the correct directory --- Gemfile.lock | 2 +- spec/compass/commands/sprite_spec.rb | 8 +++---- spec/sprites_spec.rb | 34 ++++++++++++++-------------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 929bec58..81650f56 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.5.da2af62) + compass (0.11.beta.5.f83f854) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/spec/compass/commands/sprite_spec.rb b/spec/compass/commands/sprite_spec.rb index 797a7df9..6980dcc5 100644 --- a/spec/compass/commands/sprite_spec.rb +++ b/spec/compass/commands/sprite_spec.rb @@ -17,10 +17,8 @@ describe Compass::Commands::Sprite do def run_compass_with_options(options) output = 'foo' - ::Dir.chdir @test_dir do - output = Compass::Exec::SubCommandUI.new(options).run! - end - output + ::Dir.chdir @test_dir + %x{compass #{options.join(' ')}} end def options_to_cli(options) @@ -29,6 +27,7 @@ describe Compass::Commands::Sprite do let(:test_dir) { @test_dir } before :each do + @before_dir = ::Dir.pwd create_temp_cli_dir create_sprite_temp File.open(File.join(@test_dir, 'config.rb'), 'w') do |f| @@ -36,6 +35,7 @@ describe Compass::Commands::Sprite do end end after :each do + ::Dir.chdir @before_dir clean_up_sprites if File.exists?(@test_dir) ::FileUtils.rm_r @test_dir diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index 2a01813c..3632deef 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -73,7 +73,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/images/squares-161c60ad78.png') no-repeat; + background: url('/squares-161c60ad78.png') no-repeat; } .squares-ten-by-ten { @@ -96,7 +96,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/images/squares-161c60ad78.png') no-repeat; + background: url('/squares-161c60ad78.png') no-repeat; } .squares-ten-by-ten { @@ -128,7 +128,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .cubicle, .large-cube { - background: url('/images/squares-161c60ad78.png') no-repeat; + background: url('/squares-161c60ad78.png') no-repeat; } .cubicle { @@ -153,7 +153,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .circles { - background: url('/images/squares-161c60ad78.png') no-repeat; + background: url('/squares-161c60ad78.png') no-repeat; } CSS image_size('squares-*.png').should == [20, 30] @@ -167,7 +167,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/images/squares-89450808af.png') no-repeat; + background: url('/squares-89450808af.png') no-repeat; } .squares-ten-by-ten { @@ -189,7 +189,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/images/squares-673837183a.png') no-repeat; + background: url('/squares-673837183a.png') no-repeat; } .squares-ten-by-ten { @@ -212,7 +212,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/images/squares-1cd84c9068.png') no-repeat; + background: url('/squares-1cd84c9068.png') no-repeat; } .squares-ten-by-ten { @@ -235,7 +235,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/images/squares-f25b7090ca.png') no-repeat; + background: url('/squares-f25b7090ca.png') no-repeat; } .squares-ten-by-ten { @@ -257,7 +257,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/images/squares-d66bf24bab.png') no-repeat; + background: url('/squares-d66bf24bab.png') no-repeat; } .squares-ten-by-ten { @@ -292,7 +292,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite { - background: url('/images/squares-8e490168dd.png') no-repeat; + background: url('/squares-8e490168dd.png') no-repeat; } .adjusted-percentage { @@ -330,7 +330,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .adjusted-percentage, .adjusted-px-1, .adjusted-px-2 { - background: url('/images/squares-8e490168dd.png') no-repeat; + background: url('/squares-8e490168dd.png') no-repeat; } .adjusted-percentage { @@ -357,7 +357,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/images/squares-a5550fd132.png') no-repeat; + background: url('/squares-a5550fd132.png') no-repeat; } .squares-ten-by-ten { @@ -381,7 +381,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .squares-sprite, .squares-ten-by-ten, .squares-twenty-by-twenty { - background: url('/images/squares-89a274044e.png') no-repeat; + background: url('/squares-89a274044e.png') no-repeat; } .squares-ten-by-ten { @@ -433,7 +433,7 @@ describe Compass::Sprites do SCSS actual_css.should == <<-CSS .squares { - background: url('/images/squares-145869726f.png') 0 -10px no-repeat; + background: url('/squares-145869726f.png') 0 -10px no-repeat; } CSS end @@ -452,7 +452,7 @@ describe Compass::Sprites do image_size('squares-*.png').should == [20, 40] css.should == <<-CSS .squares-sprite { - background: url('/images/squares-e3c68372d9.png') no-repeat; + background: url('/squares-e3c68372d9.png') no-repeat; } .foo { @@ -472,7 +472,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .selectors-sprite, .selectors-ten-by-ten { - background: url('/images/selectors-edfef809e2.png') no-repeat; + background: url('/selectors-edfef809e2.png') no-repeat; } .selectors-ten-by-ten { @@ -499,7 +499,7 @@ describe Compass::Sprites do SCSS css.should == <<-CSS .selectors-sprite, a { - background: url('/images/selectors-edfef809e2.png') no-repeat; + background: url('/selectors-edfef809e2.png') no-repeat; } a { From 2c62cdf2f96c2f769faaf03f86cb28815984d963 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 1 Apr 2011 14:47:24 -0400 Subject: [PATCH 137/223] closes #296 rescue OutOfBounds exception gracfuly --- Gemfile | 1 - Gemfile.lock | 2 +- .../sprites/engines/chunky_png_engine.rb | 10 ++++++--- spec/sprites_spec.rb | 22 ++++++++++++++++++- 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/Gemfile b/Gemfile index d884daa8..b1eebc5d 100644 --- a/Gemfile +++ b/Gemfile @@ -18,5 +18,4 @@ gem 'autotest' gem 'fakefs', :git => 'git://github.com/johnbintz/fakefs.git' gem 'mocha' gem 'timecop' - #gem 'rmagick' diff --git a/Gemfile.lock b/Gemfile.lock index 81650f56..596209f8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.5.f83f854) + compass (0.11.beta.5.23f0f03) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb b/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb index 3a17d9e4..de720221 100644 --- a/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb +++ b/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb @@ -17,10 +17,14 @@ module Compass if image.repeat == "no-repeat" output_png.replace! input_png, image.left, image.top else - x = image.left - (image.left / image.width).ceil * image.width + x = image.left - (image.left / image.width).floor * image.width while x < width do - output_png.replace! input_png, x, image.top - x += image.width + begin + output_png.replace! input_png, x, image.top + x += image.width + rescue ChunkyPNG::OutOfBounds + break; + end end end end diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index 3632deef..31190898 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -520,7 +520,6 @@ describe Compass::Sprites do it "should raise error on filenames that are not valid sass syntax" do lambda do render <<-SCSS - $sprite-file-prefix:'foo'; @import "prefix/*.png"; a { @include squares-sprite(20-by-20) @@ -528,5 +527,26 @@ describe Compass::Sprites do SCSS end.should raise_error Compass::Error end + + it "should generate sprite with bad repeat-x dimensions" do + css = render <<-SCSS + $ko-starbg26x27-repeat: repeat-x; + @import "ko/*.png"; + @include all-ko-sprites; + SCSS + css.should == <<-CSS + .ko-sprite, .ko-default_background, .ko-starbg26x27 { + background: url('/ko-cc3f80660d.png') no-repeat; + } + + .ko-default_background { + background-position: 0 0; + } + + .ko-starbg26x27 { + background-position: 0 -128px; + } + CSS + end end From a08003cdd95fed10f5d449fc6d366e810a32c87d Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 1 Apr 2011 14:57:29 -0400 Subject: [PATCH 138/223] changed sprite math back to ceil --- .../sass_extensions/sprites/engines/chunky_png_engine.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb b/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb index de720221..dd7a6455 100644 --- a/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb +++ b/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb @@ -17,7 +17,7 @@ module Compass if image.repeat == "no-repeat" output_png.replace! input_png, image.left, image.top else - x = image.left - (image.left / image.width).floor * image.width + x = image.left - (image.left / image.width).ceil * image.width while x < width do begin output_png.replace! input_png, x, image.top From 7ffde70c8d98f3898461110238359316742d84c6 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 1 Apr 2011 16:13:29 -0400 Subject: [PATCH 139/223] added test files for repeat-x bug tests --- .../public/images/ko/default_background.png | Bin 0 -> 3113 bytes .../public/images/ko/starbg26x27.png | Bin 0 -> 1079 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 spec/test_project/public/images/ko/default_background.png create mode 100755 spec/test_project/public/images/ko/starbg26x27.png diff --git a/spec/test_project/public/images/ko/default_background.png b/spec/test_project/public/images/ko/default_background.png new file mode 100644 index 0000000000000000000000000000000000000000..b98cd7f9476b78880c84f878790179263f802257 GIT binary patch literal 3113 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 DNFA4( literal 0 HcmV?d00001 diff --git a/spec/test_project/public/images/ko/starbg26x27.png b/spec/test_project/public/images/ko/starbg26x27.png new file mode 100755 index 0000000000000000000000000000000000000000..48dee0dba6a00fd37685ac90a39858d86aa50cdd GIT binary patch literal 1079 zcmV-71jze|P)mBv)T{f%L8uR=8ohvIVB^HY% zp-(-<7P+Yd``vE$@cH?9wQxC|&VIe?DYlST2afIU?}sH4Ld@s$A%cwsmt9}D4CQ({ z1d->iQoWeSWHN~Kh(=Kp2n0Iyex#s^J{(DSstB3PsE26lIM zNA%5rXccwTNGnVb1%-maV0>?HZ$X?YinyX$sG|8+z_wCtg(^WwhOYgKbo)F2>y!fOt9 z8LLY5w8i6bHs2NZM6ZFtrTeJYb0eJ8GbSo?#cFlEOzrIKl<7by5e{KJI5@CwY;0I` zD_}JnTLp~(-3D5nY!GLNpNJP?JXZ)`=OpG1g+g|Z$78RotR#A1kZ%d*t0fO)hg}GF z2}BVb7BtI+#X$>#qT)X{1;fe{Yki_Y1aqj@-yzW`7k!3_KZ~g79Q-CKA}31T*9ipZBK}Ko3+e>?=6y^&6MX{v z2<(CYO4vftMg{)jHFZEND?(-*O1D)Atj*d>$5C*XpzZU{5QWCiNf92`jL_8T`w2h|DN5mXSG)LDLX9w*nc`KzXzHTbUtaz(^k< z{N*=S3U)j+&_QH}5E&r`*!f>V6mQxbMwiTp*Ma~jC|S4!GeJkvVblmgAS0~1bk*qH zg@xxF@LoI>Sj6n)Zp0?C!{TgHAOeem?25J!=l){qvol1aAVgCXb#XBEQcG$^GZj6f xY{bkNVqw8(ycJxwMPIabhY{m8;nuiv{Q`evSC2M2B`^R0002ovPDHLkV1mf%+(rNZ literal 0 HcmV?d00001 From 8a1f14d72d60acaa98664e9c6c9076f3b67b8f98 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 1 Apr 2011 22:19:24 -0400 Subject: [PATCH 140/223] removed dynamic constant becasuse i was being a bad programer --- Gemfile.lock | 2 +- lib/compass/configuration/helpers.rb | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 596209f8..d45de989 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.5.23f0f03) + compass (0.11.beta.5.7ffde70) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/configuration/helpers.rb b/lib/compass/configuration/helpers.rb index 03def3f5..db6f8af6 100644 --- a/lib/compass/configuration/helpers.rb +++ b/lib/compass/configuration/helpers.rb @@ -1,5 +1,6 @@ module Compass module Configuration + @callbacks_loaded = false # The helpers are available as methods on the Compass module. E.g. Compass.configuration module Helpers def configuration @@ -65,14 +66,14 @@ module Compass Sass::Plugin.add_template_location sass_dir, css_dir end end - unless defined?(CallbacksSetup) + unless @callbacks_loaded Sass::Plugin.on_updating_stylesheet do |sass_file, css_file| Compass.configuration.run_callback(:stylesheet_saved, css_file) end Sass::Plugin.on_compilation_error do |e, filename, css| Compass.configuration.run_callback(:stylesheet_error, filename, e.message) end - const_set('CallbacksSetup', true) + @callbacks_loaded = true end end From 428e5b513cba960aca97719bd11e1b6c35a3d045 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Sat, 2 Apr 2011 08:30:44 -0400 Subject: [PATCH 141/223] updated spriting turtorial --- doc-src/content/help/tutorials/spriting.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc-src/content/help/tutorials/spriting.markdown b/doc-src/content/help/tutorials/spriting.markdown index 8149617a..193f6c52 100644 --- a/doc-src/content/help/tutorials/spriting.markdown +++ b/doc-src/content/help/tutorials/spriting.markdown @@ -24,7 +24,8 @@ Each is an icon that is 32px square. ## Basic Usage The simplest way to use these icon sprites is to let compass give you a class for each sprite: - + + @import "compass/utilities/sprites"; @import "icon/*.png"; @include all-icon-sprites; From 5d2db94bc042399675e8aea02048d5d0906c4235 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Sat, 2 Apr 2011 10:07:55 -0400 Subject: [PATCH 142/223] working on lemonade upgrade guide --- Gemfile.lock | 2 +- doc-src/Gemfile.lock | 4 +- .../upgrading/lemonade_upgrade_guide.markdown | 50 +++++++++++++++++++ 3 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 doc-src/content/help/tutorials/upgrading/lemonade_upgrade_guide.markdown diff --git a/Gemfile.lock b/Gemfile.lock index d45de989..646539a5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.5.7ffde70) + compass (0.11.beta.5.428e5b5) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index 2e427a7a..7203882c 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,7 +8,7 @@ GIT PATH remote: .. specs: - compass (0.11.beta.5.96f1e4d) + compass (0.11.beta.5.428e5b5) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) @@ -23,7 +23,7 @@ GEM cri (1.0.1) css-slideshow (0.2.0) compass (>= 0.10.0.rc3) - css_parser (1.1.5) + css_parser (1.1.9) fssm (0.1.2) haml (3.1.0.alpha.147) i18n (0.4.2) diff --git a/doc-src/content/help/tutorials/upgrading/lemonade_upgrade_guide.markdown b/doc-src/content/help/tutorials/upgrading/lemonade_upgrade_guide.markdown new file mode 100644 index 00000000..d845ba7e --- /dev/null +++ b/doc-src/content/help/tutorials/upgrading/lemonade_upgrade_guide.markdown @@ -0,0 +1,50 @@ +--- +title: Lemonade Upgrade Guide +layout: tutorial +crumb: Lemonade Upgrade +classnames: + - tutorial +--- +# Lemonade Upgrade Guide +## Example 1 + +### Lemonade + + .logo { + background: sprite-image("lemonade/lemonade-logo.png"); + } + .lime { + background: sprite-image("lemonade/lime.png"); + } + .coffee { + background: sprite-image("other-drinks/coffee.png") no-repeat; + } + +### Compass + + + @import "lemonade/*.png"; + @import "other-drinks/*.png" + @include all-lemonade-sprites; + @include all-other-drinks-sprites; + +Compass will return class names `.lemonade-logo`, `.lemonade-lime`, `.other-drinks-coffee` + + +# Example 2 + +### Lemonade + + .lemonade-example-1 { + background: sprite-image("lemonade/example-1/blue-10x10.png", 10px, 2px); + } + +### Compass + With compass you need to flatten the image directory to be `images/lemonade` instead of `images/lemonade/example-1` + + @import "lemonade/*.png" + + .lemonade-example-1 { + @include lemonade-sprite(blue-10x10, true, 10px, 2px); + background-color: yellow; + } \ No newline at end of file From 04ab1e30f23543609d1aea5f3702b4398fc9fc60 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Sat, 2 Apr 2011 10:08:10 -0400 Subject: [PATCH 143/223] added semi colon --- spec/sprites_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index 31190898..afae08d2 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -522,12 +522,12 @@ describe Compass::Sprites do render <<-SCSS @import "prefix/*.png"; a { - @include squares-sprite(20-by-20) + @include squares-sprite(20-by-20); } SCSS end.should raise_error Compass::Error end - + it "should generate sprite with bad repeat-x dimensions" do css = render <<-SCSS $ko-starbg26x27-repeat: repeat-x; From d2b4ec423f30f03598ee1caf8804c04574ba0eb2 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Sat, 2 Apr 2011 10:58:45 -0400 Subject: [PATCH 144/223] updated install page to have better installation instructions --- doc-src/Gemfile.lock | 2 +- doc-src/content/install.haml | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index 7203882c..c2090be9 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,7 +8,7 @@ GIT PATH remote: .. specs: - compass (0.11.beta.5.428e5b5) + compass (0.11.beta.5.04ab1e3) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/doc-src/content/install.haml b/doc-src/content/install.haml index 8b3769cf..e622a4f9 100644 --- a/doc-src/content/install.haml +++ b/doc-src/content/install.haml @@ -5,9 +5,19 @@ body_id: install --- - content_for :javascripts do %script(src="/javascripts/install.js") + +%h2 Installing Ruby %p Compass runs on any computer that has ruby installed. +%p + For more advanced users you may want to install + rvm. + +%h2 Setting up the ruby environment +%ol + %li $ gem update --system + %li $ gem install compass %h2 Tell us about your project and we'll help you get it set up: %blockquote.madlib.customizable< From 0eef08e6ce664d5d905928c7a7c4e66f80e5e8c7 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Thu, 31 Mar 2011 19:03:40 -0700 Subject: [PATCH 145/223] Remove the css3 background simple bg support and move it to a new mixin called background-with-css2-fallback. --- doc-src/content/CHANGELOG.markdown | 6 +++++ .../stylesheets/compass/css3/_images.scss | 24 +++++++++++++++++-- .../stylesheets/compass/css/gradients.css | 10 ++++++-- .../stylesheets/compass/sass/gradients.sass | 3 +++ 4 files changed, 39 insertions(+), 4 deletions(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index aa4b0db5..edc19255 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -17,6 +17,12 @@ The Documentation for the [latest preview release](http://beta.compass-style.org 0.11.beta.6 (3/27/2011) ------------------------ * Added opera prefix support for linear and radial gradients. +* The CSS3 `background` mixin's "simple" background that came + before the prefixed versions has been removed. If you + need to target css2 background it is recommended that you set a + the background property before calling the `background` mixin + or you can call the `background-with-css2-fallback` if you want + keep using compass's automatic simplification of the arguments. 0.11.beta.5 (03/27/2011) ------------------------ diff --git a/frameworks/compass/stylesheets/compass/css3/_images.scss b/frameworks/compass/stylesheets/compass/css3/_images.scss index cda3c2ff..79f9ba02 100644 --- a/frameworks/compass/stylesheets/compass/css3/_images.scss +++ b/frameworks/compass/stylesheets/compass/css3/_images.scss @@ -16,8 +16,6 @@ $backgrounds: compact($background-1, $background-2, $background-3, $background-4, $background-5, $background-6, $background-7, $background-8, $background-9, $background-10); $mult-bgs: -compass-list-size($backgrounds) > 1; - $simple-background: if($mult-bgs or prefixed(-css2, $backgrounds), -css2(-compass-nth($backgrounds, last)), false); - @if not blank($simple-background) { background: $simple-background; } @if $experimental-support-for-svg and prefixed(-svg, $backgrounds) { background: -svg($backgrounds); } @if $experimental-support-for-webkit and prefixed(-webkit, $backgrounds) { background: -webkit($backgrounds); } @if $experimental-support-for-mozilla and prefixed(-moz, $backgrounds) { background: -moz($backgrounds); } @@ -26,6 +24,28 @@ background: $backgrounds; } +@mixin background-with-css2-fallback( + $background-1, + $background-2: false, + $background-3: false, + $background-4: false, + $background-5: false, + $background-6: false, + $background-7: false, + $background-8: false, + $background-9: false, + $background-10: false +) { + $backgrounds: compact($background-1, $background-2, $background-3, $background-4, $background-5, + $background-6, $background-7, $background-8, $background-9, $background-10); + $mult-bgs: -compass-list-size($backgrounds) > 1; + $simple-background: if($mult-bgs or prefixed(-css2, $backgrounds), -css2(-compass-nth($backgrounds, last)), false); + @if not blank($simple-background) { background: $simple-background; } + @include background($background-1, $background-2, $background-3, $background-4, $background-5, + $background-6, $background-7, $background-8, $background-9, $background-10); +} + + // Background image property support for vendor prefixing within values. @mixin background-image( $image-1, diff --git a/test/fixtures/stylesheets/compass/css/gradients.css b/test/fixtures/stylesheets/compass/css/gradients.css index 45ff67d0..b8c6c077 100644 --- a/test/fixtures/stylesheets/compass/css/gradients.css +++ b/test/fixtures/stylesheets/compass/css/gradients.css @@ -2,7 +2,6 @@ background: white url("foo.png"); } .bg-shortcut-linear-gradient { - background: white ; background: white url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background: white -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background: white -moz-linear-gradient(top left, #dddddd, #aaaaaa); @@ -10,13 +9,20 @@ background: white linear-gradient(top left, #dddddd, #aaaaaa); } .bg-shortcut-radial-gradient { - background: white ; background: white url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background: white -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background: white -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); background: white -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background: white radial-gradient(center center, #dddddd, #aaaaaa 100px); } +.bg-all-gradient-types-with-simplification { + background: #ffcc00; + background: url('/images/4x6.png?busted=true'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'), #ffcc00; + background: url('/images/4x6.png?busted=true'), -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)), -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)), #ffcc00; + background: url('/images/4x6.png?busted=true'), -moz-linear-gradient(top left, #dddddd, #aaaaaa), -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px), #ffcc00; + background: url('/images/4x6.png?busted=true'), -o-linear-gradient(top left, #dddddd, #aaaaaa), -o-radial-gradient(center center, #dddddd, #aaaaaa 100px), #ffcc00; + background: url('/images/4x6.png?busted=true'), linear-gradient(top left, #dddddd, #aaaaaa), radial-gradient(center center, #dddddd, #aaaaaa 100px), #ffcc00; } + .bg-simple-image { background-image: url("foo.png"); } diff --git a/test/fixtures/stylesheets/compass/sass/gradients.sass b/test/fixtures/stylesheets/compass/sass/gradients.sass index fd0ec96a..f521aede 100644 --- a/test/fixtures/stylesheets/compass/sass/gradients.sass +++ b/test/fixtures/stylesheets/compass/sass/gradients.sass @@ -10,6 +10,9 @@ $experimental-support-for-svg: true .bg-shortcut-radial-gradient +background(#fff radial-gradient(center center, #ddd, #aaa 100px)) +.bg-all-gradient-types-with-simplification + +background-with-css2-fallback(image-url("4x6.png"), linear-gradient(top left, #ddd, #aaa), radial-gradient(center center, #ddd, #aaa 100px), #ffcc00) + .bg-simple-image +background-image(url('foo.png')) From 389291958516adf695e274b81dab16a3c12cb2cc Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 1 Apr 2011 09:00:33 -0700 Subject: [PATCH 146/223] Raise an error when compiling selective files from a directory other than the project directory. --- lib/compass/compiler.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/compass/compiler.rb b/lib/compass/compiler.rb index 837b3dab..5ee4d542 100644 --- a/lib/compass/compiler.rb +++ b/lib/compass/compiler.rb @@ -26,11 +26,15 @@ module Compass end def relative_stylesheet_name(sass_file) - sass_file[("#{from}/".length)..-1] + sass_file[(from.length + 1)..-1] end def stylesheet_name(sass_file) - sass_file.gsub(%r{#{from}/}, '')[0..-6] + if sass_file.index(from) == 0 + sass_file[(from.length + 1)..-6] + else + raise Compass::Error, "You must compile individual stylesheets from the project directory." + end end def css_files From 1bd156e88fe56a23983fbab84735ead14d3aa958 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 2 Apr 2011 09:54:06 -0700 Subject: [PATCH 147/223] Fix a bug in the sprites base file and added a basic sprites test case to the compass test. --- .../compass/utilities/sprites/_base.scss | 3 + .../utilities/sprites/_sprite-img.scss | 2 - .../stylesheets/compass/css/sprites.css | 1262 +++++++++++++++++ .../compass/images/flag-03c3b29b35.png | Bin 0 -> 105539 bytes .../stylesheets/compass/images/flag/ad.png | Bin 0 -> 911 bytes .../stylesheets/compass/images/flag/ae.png | Bin 0 -> 733 bytes .../stylesheets/compass/images/flag/af.png | Bin 0 -> 878 bytes .../stylesheets/compass/images/flag/ag.png | Bin 0 -> 912 bytes .../stylesheets/compass/images/flag/ai.png | Bin 0 -> 972 bytes .../stylesheets/compass/images/flag/al.png | Bin 0 -> 897 bytes .../stylesheets/compass/images/flag/am.png | Bin 0 -> 788 bytes .../stylesheets/compass/images/flag/an.png | Bin 0 -> 823 bytes .../stylesheets/compass/images/flag/ao.png | Bin 0 -> 841 bytes .../stylesheets/compass/images/flag/ar.png | Bin 0 -> 826 bytes .../stylesheets/compass/images/flag/as.png | Bin 0 -> 1000 bytes .../stylesheets/compass/images/flag/at.png | Bin 0 -> 746 bytes .../stylesheets/compass/images/flag/au.png | Bin 0 -> 1036 bytes .../stylesheets/compass/images/flag/aw.png | Bin 0 -> 849 bytes .../stylesheets/compass/images/flag/ax.png | Bin 0 -> 936 bytes .../stylesheets/compass/images/flag/az.png | Bin 0 -> 879 bytes .../stylesheets/compass/images/flag/ba.png | Bin 0 -> 928 bytes .../stylesheets/compass/images/flag/bb.png | Bin 0 -> 859 bytes .../stylesheets/compass/images/flag/bd.png | Bin 0 -> 829 bytes .../stylesheets/compass/images/flag/be.png | Bin 0 -> 751 bytes .../stylesheets/compass/images/flag/bf.png | Bin 0 -> 797 bytes .../stylesheets/compass/images/flag/bg.png | Bin 0 -> 776 bytes .../stylesheets/compass/images/flag/bh.png | Bin 0 -> 803 bytes .../stylesheets/compass/images/flag/bi.png | Bin 0 -> 1024 bytes .../stylesheets/compass/images/flag/bj.png | Bin 0 -> 767 bytes .../stylesheets/compass/images/flag/bm.png | Bin 0 -> 955 bytes .../stylesheets/compass/images/flag/bn.png | Bin 0 -> 964 bytes .../stylesheets/compass/images/flag/bo.png | Bin 0 -> 797 bytes .../stylesheets/compass/images/flag/br.png | Bin 0 -> 942 bytes .../stylesheets/compass/images/flag/bs.png | Bin 0 -> 847 bytes .../stylesheets/compass/images/flag/bt.png | Bin 0 -> 927 bytes .../stylesheets/compass/images/flag/bv.png | Bin 0 -> 858 bytes .../stylesheets/compass/images/flag/bw.png | Bin 0 -> 783 bytes .../stylesheets/compass/images/flag/by.png | Bin 0 -> 845 bytes .../stylesheets/compass/images/flag/bz.png | Bin 0 -> 933 bytes .../stylesheets/compass/images/flag/ca.png | Bin 0 -> 930 bytes .../compass/images/flag/catalonia.png | Bin 0 -> 793 bytes .../stylesheets/compass/images/flag/cc.png | Bin 0 -> 952 bytes .../stylesheets/compass/images/flag/cd.png | Bin 0 -> 924 bytes .../stylesheets/compass/images/flag/cf.png | Bin 0 -> 912 bytes .../stylesheets/compass/images/flag/cg.png | Bin 0 -> 838 bytes .../stylesheets/compass/images/flag/ch.png | Bin 0 -> 707 bytes .../stylesheets/compass/images/flag/ci.png | Bin 0 -> 762 bytes .../stylesheets/compass/images/flag/ck.png | Bin 0 -> 951 bytes .../stylesheets/compass/images/flag/cl.png | Bin 0 -> 780 bytes .../stylesheets/compass/images/flag/cm.png | Bin 0 -> 804 bytes .../stylesheets/compass/images/flag/cn.png | Bin 0 -> 805 bytes .../stylesheets/compass/images/flag/co.png | Bin 0 -> 786 bytes .../stylesheets/compass/images/flag/cr.png | Bin 0 -> 805 bytes .../stylesheets/compass/images/flag/cs.png | Bin 0 -> 777 bytes .../stylesheets/compass/images/flag/cu.png | Bin 0 -> 905 bytes .../stylesheets/compass/images/flag/cv.png | Bin 0 -> 901 bytes .../stylesheets/compass/images/flag/cx.png | Bin 0 -> 954 bytes .../stylesheets/compass/images/flag/cy.png | Bin 0 -> 796 bytes .../stylesheets/compass/images/flag/cz.png | Bin 0 -> 827 bytes .../stylesheets/compass/images/flag/de.png | Bin 0 -> 822 bytes .../stylesheets/compass/images/flag/dj.png | Bin 0 -> 886 bytes .../stylesheets/compass/images/flag/dk.png | Bin 0 -> 808 bytes .../stylesheets/compass/images/flag/dm.png | Bin 0 -> 964 bytes .../stylesheets/compass/images/flag/do.png | Bin 0 -> 824 bytes .../stylesheets/compass/images/flag/dz.png | Bin 0 -> 922 bytes .../stylesheets/compass/images/flag/ec.png | Bin 0 -> 811 bytes .../stylesheets/compass/images/flag/ee.png | Bin 0 -> 755 bytes .../stylesheets/compass/images/flag/eg.png | Bin 0 -> 804 bytes .../stylesheets/compass/images/flag/eh.png | Bin 0 -> 847 bytes .../compass/images/flag/england.png | Bin 0 -> 834 bytes .../stylesheets/compass/images/flag/er.png | Bin 0 -> 954 bytes .../stylesheets/compass/images/flag/es.png | Bin 0 -> 800 bytes .../stylesheets/compass/images/flag/et.png | Bin 0 -> 901 bytes .../compass/images/flag/europeanunion.png | Bin 0 -> 859 bytes .../stylesheets/compass/images/flag/fam.png | Bin 0 -> 806 bytes .../stylesheets/compass/images/flag/fi.png | Bin 0 -> 824 bytes .../stylesheets/compass/images/flag/fj.png | Bin 0 -> 973 bytes .../stylesheets/compass/images/flag/fk.png | Bin 0 -> 982 bytes .../stylesheets/compass/images/flag/fm.png | Bin 0 -> 867 bytes .../stylesheets/compass/images/flag/fo.png | Bin 0 -> 833 bytes .../stylesheets/compass/images/flag/fr.png | Bin 0 -> 829 bytes .../stylesheets/compass/images/flag/ga.png | Bin 0 -> 799 bytes .../stylesheets/compass/images/flag/gb.png | Bin 0 -> 1005 bytes .../stylesheets/compass/images/flag/gd.png | Bin 0 -> 920 bytes .../stylesheets/compass/images/flag/ge.png | Bin 0 -> 951 bytes .../stylesheets/compass/images/flag/gf.png | Bin 0 -> 829 bytes .../stylesheets/compass/images/flag/gh.png | Bin 0 -> 792 bytes .../stylesheets/compass/images/flag/gi.png | Bin 0 -> 825 bytes .../stylesheets/compass/images/flag/gl.png | Bin 0 -> 807 bytes .../stylesheets/compass/images/flag/gm.png | Bin 0 -> 819 bytes .../stylesheets/compass/images/flag/gn.png | Bin 0 -> 776 bytes .../stylesheets/compass/images/flag/gp.png | Bin 0 -> 812 bytes .../stylesheets/compass/images/flag/gq.png | Bin 0 -> 861 bytes .../stylesheets/compass/images/flag/gr.png | Bin 0 -> 847 bytes .../stylesheets/compass/images/flag/gs.png | Bin 0 -> 982 bytes .../stylesheets/compass/images/flag/gt.png | Bin 0 -> 795 bytes .../stylesheets/compass/images/flag/gu.png | Bin 0 -> 840 bytes .../stylesheets/compass/images/flag/gw.png | Bin 0 -> 803 bytes .../stylesheets/compass/images/flag/gy.png | Bin 0 -> 977 bytes .../stylesheets/compass/images/flag/hk.png | Bin 0 -> 849 bytes .../stylesheets/compass/images/flag/hm.png | Bin 0 -> 1036 bytes .../stylesheets/compass/images/flag/hn.png | Bin 0 -> 867 bytes .../stylesheets/compass/images/flag/hr.png | Bin 0 -> 877 bytes .../stylesheets/compass/images/flag/ht.png | Bin 0 -> 783 bytes .../stylesheets/compass/images/flag/hu.png | Bin 0 -> 749 bytes .../stylesheets/compass/images/flag/id-2.png | Bin 0 -> 759 bytes .../stylesheets/compass/images/flag/ie.png | Bin 0 -> 789 bytes .../stylesheets/compass/images/flag/il.png | Bin 0 -> 782 bytes .../stylesheets/compass/images/flag/in.png | Bin 0 -> 833 bytes .../stylesheets/compass/images/flag/io.png | Bin 0 -> 1049 bytes .../stylesheets/compass/images/flag/iq.png | Bin 0 -> 861 bytes .../stylesheets/compass/images/flag/ir.png | Bin 0 -> 854 bytes .../stylesheets/compass/images/flag/is.png | Bin 0 -> 866 bytes .../stylesheets/compass/images/flag/it.png | Bin 0 -> 740 bytes .../stylesheets/compass/images/flag/jm.png | Bin 0 -> 969 bytes .../stylesheets/compass/images/flag/jo.png | Bin 0 -> 809 bytes .../stylesheets/compass/images/flag/jp.png | Bin 0 -> 771 bytes .../stylesheets/compass/images/flag/ke.png | Bin 0 -> 891 bytes .../stylesheets/compass/images/flag/kg.png | Bin 0 -> 811 bytes .../stylesheets/compass/images/flag/kh.png | Bin 0 -> 878 bytes .../stylesheets/compass/images/flag/ki.png | Bin 0 -> 1008 bytes .../stylesheets/compass/images/flag/km.png | Bin 0 -> 921 bytes .../stylesheets/compass/images/flag/kn.png | Bin 0 -> 936 bytes .../stylesheets/compass/images/flag/kp.png | Bin 0 -> 880 bytes .../stylesheets/compass/images/flag/kr.png | Bin 0 -> 971 bytes .../stylesheets/compass/images/flag/kw.png | Bin 0 -> 807 bytes .../stylesheets/compass/images/flag/ky.png | Bin 0 -> 991 bytes .../stylesheets/compass/images/flag/kz.png | Bin 0 -> 916 bytes .../stylesheets/compass/images/flag/la.png | Bin 0 -> 871 bytes .../stylesheets/compass/images/flag/lb.png | Bin 0 -> 849 bytes .../stylesheets/compass/images/flag/lc.png | Bin 0 -> 904 bytes .../stylesheets/compass/images/flag/li.png | Bin 0 -> 855 bytes .../stylesheets/compass/images/flag/lk.png | Bin 0 -> 921 bytes .../stylesheets/compass/images/flag/lr.png | Bin 0 -> 831 bytes .../stylesheets/compass/images/flag/ls.png | Bin 0 -> 962 bytes .../stylesheets/compass/images/flag/lt.png | Bin 0 -> 801 bytes .../stylesheets/compass/images/flag/lu.png | Bin 0 -> 795 bytes .../stylesheets/compass/images/flag/lv.png | Bin 0 -> 795 bytes .../stylesheets/compass/images/flag/ly.png | Bin 0 -> 733 bytes .../stylesheets/compass/images/flag/ma.png | Bin 0 -> 749 bytes .../stylesheets/compass/images/flag/mc.png | Bin 0 -> 714 bytes .../stylesheets/compass/images/flag/md.png | Bin 0 -> 860 bytes .../stylesheets/compass/images/flag/me.png | Bin 0 -> 839 bytes .../stylesheets/compass/images/flag/mg.png | Bin 0 -> 769 bytes .../stylesheets/compass/images/flag/mh.png | Bin 0 -> 974 bytes .../stylesheets/compass/images/flag/mk.png | Bin 0 -> 905 bytes .../stylesheets/compass/images/flag/ml.png | Bin 0 -> 778 bytes .../stylesheets/compass/images/flag/mm.png | Bin 0 -> 792 bytes .../stylesheets/compass/images/flag/mn.png | Bin 0 -> 799 bytes .../stylesheets/compass/images/flag/mo.png | Bin 0 -> 912 bytes .../stylesheets/compass/images/flag/mp.png | Bin 0 -> 937 bytes .../stylesheets/compass/images/flag/mq.png | Bin 0 -> 998 bytes .../stylesheets/compass/images/flag/mr.png | Bin 0 -> 864 bytes .../stylesheets/compass/images/flag/ms.png | Bin 0 -> 953 bytes .../stylesheets/compass/images/flag/mt.png | Bin 0 -> 752 bytes .../stylesheets/compass/images/flag/mu.png | Bin 0 -> 816 bytes .../stylesheets/compass/images/flag/mv.png | Bin 0 -> 847 bytes .../stylesheets/compass/images/flag/mw.png | Bin 0 -> 821 bytes .../stylesheets/compass/images/flag/mx.png | Bin 0 -> 881 bytes .../stylesheets/compass/images/flag/my.png | Bin 0 -> 931 bytes .../stylesheets/compass/images/flag/mz.png | Bin 0 -> 902 bytes .../stylesheets/compass/images/flag/na.png | Bin 0 -> 1016 bytes .../stylesheets/compass/images/flag/nc.png | Bin 0 -> 926 bytes .../stylesheets/compass/images/flag/ne.png | Bin 0 -> 849 bytes .../stylesheets/compass/images/flag/nf.png | Bin 0 -> 934 bytes .../stylesheets/compass/images/flag/ng.png | Bin 0 -> 797 bytes .../stylesheets/compass/images/flag/ni.png | Bin 0 -> 828 bytes .../stylesheets/compass/images/flag/nl.png | Bin 0 -> 766 bytes .../stylesheets/compass/images/flag/no.png | Bin 0 -> 858 bytes .../stylesheets/compass/images/flag/np.png | Bin 0 -> 823 bytes .../stylesheets/compass/images/flag/nr.png | Bin 0 -> 850 bytes .../stylesheets/compass/images/flag/nu.png | Bin 0 -> 925 bytes .../stylesheets/compass/images/flag/nz.png | Bin 0 -> 985 bytes .../stylesheets/compass/images/flag/om.png | Bin 0 -> 795 bytes .../stylesheets/compass/images/flag/pa.png | Bin 0 -> 846 bytes .../stylesheets/compass/images/flag/pe.png | Bin 0 -> 720 bytes .../stylesheets/compass/images/flag/pf.png | Bin 0 -> 835 bytes .../stylesheets/compass/images/flag/pg.png | Bin 0 -> 895 bytes .../stylesheets/compass/images/flag/ph.png | Bin 0 -> 882 bytes .../stylesheets/compass/images/flag/pk.png | Bin 0 -> 910 bytes .../stylesheets/compass/images/flag/pl.png | Bin 0 -> 699 bytes .../stylesheets/compass/images/flag/pm.png | Bin 0 -> 1029 bytes .../stylesheets/compass/images/flag/pn.png | Bin 0 -> 1003 bytes .../stylesheets/compass/images/flag/pr.png | Bin 0 -> 908 bytes .../stylesheets/compass/images/flag/ps.png | Bin 0 -> 804 bytes .../stylesheets/compass/images/flag/pt.png | Bin 0 -> 863 bytes .../stylesheets/compass/images/flag/pw.png | Bin 0 -> 880 bytes .../stylesheets/compass/images/flag/py.png | Bin 0 -> 800 bytes .../stylesheets/compass/images/flag/qa.png | Bin 0 -> 805 bytes .../stylesheets/compass/images/flag/re.png | Bin 0 -> 829 bytes .../stylesheets/compass/images/flag/ro.png | Bin 0 -> 789 bytes .../stylesheets/compass/images/flag/rs.png | Bin 0 -> 816 bytes .../stylesheets/compass/images/flag/ru.png | Bin 0 -> 755 bytes .../stylesheets/compass/images/flag/rw.png | Bin 0 -> 838 bytes .../stylesheets/compass/images/flag/sa.png | Bin 0 -> 884 bytes .../stylesheets/compass/images/flag/sb.png | Bin 0 -> 976 bytes .../stylesheets/compass/images/flag/sc.png | Bin 0 -> 941 bytes .../compass/images/flag/scotland.png | Bin 0 -> 1018 bytes .../stylesheets/compass/images/flag/sd.png | Bin 0 -> 826 bytes .../stylesheets/compass/images/flag/se.png | Bin 0 -> 845 bytes .../stylesheets/compass/images/flag/sg.png | Bin 0 -> 808 bytes .../stylesheets/compass/images/flag/sh.png | Bin 0 -> 980 bytes .../stylesheets/compass/images/flag/si.png | Bin 0 -> 839 bytes .../stylesheets/compass/images/flag/sj.png | Bin 0 -> 858 bytes .../stylesheets/compass/images/flag/sk.png | Bin 0 -> 897 bytes .../stylesheets/compass/images/flag/sl.png | Bin 0 -> 777 bytes .../stylesheets/compass/images/flag/sm.png | Bin 0 -> 852 bytes .../stylesheets/compass/images/flag/sn.png | Bin 0 -> 812 bytes .../stylesheets/compass/images/flag/so.png | Bin 0 -> 832 bytes .../stylesheets/compass/images/flag/sr.png | Bin 0 -> 827 bytes .../stylesheets/compass/images/flag/st.png | Bin 0 -> 891 bytes .../stylesheets/compass/images/flag/sv.png | Bin 0 -> 829 bytes .../stylesheets/compass/images/flag/sy.png | Bin 0 -> 781 bytes .../stylesheets/compass/images/flag/sz.png | Bin 0 -> 967 bytes .../stylesheets/compass/images/flag/tc.png | Bin 0 -> 965 bytes .../stylesheets/compass/images/flag/td.png | Bin 0 -> 834 bytes .../stylesheets/compass/images/flag/tf.png | Bin 0 -> 855 bytes .../stylesheets/compass/images/flag/tg.png | Bin 0 -> 872 bytes .../stylesheets/compass/images/flag/th.png | Bin 0 -> 783 bytes .../stylesheets/compass/images/flag/tj.png | Bin 0 -> 828 bytes .../stylesheets/compass/images/flag/tk.png | Bin 0 -> 979 bytes .../stylesheets/compass/images/flag/tl.png | Bin 0 -> 873 bytes .../stylesheets/compass/images/flag/tm.png | Bin 0 -> 912 bytes .../stylesheets/compass/images/flag/tn.png | Bin 0 -> 824 bytes .../stylesheets/compass/images/flag/to.png | Bin 0 -> 759 bytes .../stylesheets/compass/images/flag/tr.png | Bin 0 -> 826 bytes .../stylesheets/compass/images/flag/tt.png | Bin 0 -> 978 bytes .../stylesheets/compass/images/flag/tv.png | Bin 0 -> 903 bytes .../stylesheets/compass/images/flag/tw.png | Bin 0 -> 786 bytes .../stylesheets/compass/images/flag/tz.png | Bin 0 -> 975 bytes .../stylesheets/compass/images/flag/ua.png | Bin 0 -> 760 bytes .../stylesheets/compass/images/flag/ug.png | Bin 0 -> 844 bytes .../stylesheets/compass/images/flag/um.png | Bin 0 -> 930 bytes .../stylesheets/compass/images/flag/us.png | Bin 0 -> 954 bytes .../stylesheets/compass/images/flag/uy.png | Bin 0 -> 867 bytes .../stylesheets/compass/images/flag/uz.png | Bin 0 -> 869 bytes .../stylesheets/compass/images/flag/va.png | Bin 0 -> 876 bytes .../stylesheets/compass/images/flag/vc.png | Bin 0 -> 868 bytes .../stylesheets/compass/images/flag/ve.png | Bin 0 -> 871 bytes .../stylesheets/compass/images/flag/vg.png | Bin 0 -> 966 bytes .../stylesheets/compass/images/flag/vi.png | Bin 0 -> 984 bytes .../stylesheets/compass/images/flag/vn.png | Bin 0 -> 780 bytes .../stylesheets/compass/images/flag/vu.png | Bin 0 -> 914 bytes .../stylesheets/compass/images/flag/wales.png | Bin 0 -> 1013 bytes .../stylesheets/compass/images/flag/wf.png | Bin 0 -> 895 bytes .../stylesheets/compass/images/flag/ws.png | Bin 0 -> 810 bytes .../stylesheets/compass/images/flag/ye.png | Bin 0 -> 761 bytes .../stylesheets/compass/images/flag/yt.png | Bin 0 -> 916 bytes .../stylesheets/compass/images/flag/za.png | Bin 0 -> 980 bytes .../stylesheets/compass/images/flag/zm.png | Bin 0 -> 815 bytes .../stylesheets/compass/images/flag/zw.png | Bin 0 -> 923 bytes .../stylesheets/compass/sass/sprites.scss | 13 + 252 files changed, 1278 insertions(+), 2 deletions(-) create mode 100644 test/fixtures/stylesheets/compass/css/sprites.css create mode 100644 test/fixtures/stylesheets/compass/images/flag-03c3b29b35.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ad.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ae.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/af.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ag.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ai.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/al.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/am.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/an.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ao.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ar.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/as.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/at.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/au.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/aw.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ax.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/az.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ba.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/bb.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/bd.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/be.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/bf.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/bg.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/bh.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/bi.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/bj.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/bm.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/bn.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/bo.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/br.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/bs.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/bt.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/bv.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/bw.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/by.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/bz.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ca.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/catalonia.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/cc.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/cd.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/cf.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/cg.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ch.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ci.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ck.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/cl.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/cm.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/cn.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/co.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/cr.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/cs.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/cu.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/cv.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/cx.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/cy.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/cz.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/de.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/dj.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/dk.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/dm.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/do.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/dz.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ec.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ee.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/eg.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/eh.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/england.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/er.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/es.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/et.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/europeanunion.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/fam.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/fi.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/fj.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/fk.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/fm.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/fo.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/fr.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ga.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/gb.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/gd.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ge.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/gf.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/gh.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/gi.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/gl.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/gm.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/gn.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/gp.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/gq.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/gr.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/gs.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/gt.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/gu.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/gw.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/gy.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/hk.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/hm.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/hn.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/hr.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ht.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/hu.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/id-2.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ie.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/il.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/in.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/io.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/iq.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ir.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/is.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/it.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/jm.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/jo.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/jp.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ke.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/kg.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/kh.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ki.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/km.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/kn.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/kp.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/kr.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/kw.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ky.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/kz.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/la.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/lb.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/lc.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/li.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/lk.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/lr.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ls.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/lt.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/lu.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/lv.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ly.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ma.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/mc.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/md.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/me.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/mg.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/mh.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/mk.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ml.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/mm.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/mn.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/mo.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/mp.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/mq.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/mr.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ms.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/mt.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/mu.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/mv.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/mw.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/mx.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/my.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/mz.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/na.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/nc.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ne.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/nf.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ng.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ni.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/nl.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/no.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/np.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/nr.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/nu.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/nz.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/om.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/pa.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/pe.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/pf.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/pg.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ph.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/pk.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/pl.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/pm.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/pn.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/pr.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ps.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/pt.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/pw.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/py.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/qa.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/re.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ro.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/rs.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ru.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/rw.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/sa.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/sb.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/sc.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/scotland.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/sd.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/se.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/sg.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/sh.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/si.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/sj.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/sk.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/sl.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/sm.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/sn.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/so.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/sr.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/st.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/sv.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/sy.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/sz.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/tc.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/td.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/tf.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/tg.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/th.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/tj.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/tk.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/tl.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/tm.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/tn.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/to.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/tr.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/tt.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/tv.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/tw.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/tz.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ua.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ug.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/um.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/us.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/uy.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/uz.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/va.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/vc.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ve.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/vg.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/vi.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/vn.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/vu.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/wales.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/wf.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ws.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/ye.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/yt.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/za.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/zm.png create mode 100644 test/fixtures/stylesheets/compass/images/flag/zw.png create mode 100644 test/fixtures/stylesheets/compass/sass/sprites.scss diff --git a/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss b/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss index 177a2c56..cd77be43 100644 --- a/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss +++ b/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss @@ -1,3 +1,6 @@ +// Determines those states for which you want to enable magic sprite selectors +$sprite-selectors: hover, target, active !default; + // Set the width and height of an element to the original // dimensions of an image before it was included in the sprite. @mixin sprite-dimensions($map, $sprite) { diff --git a/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite-img.scss b/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite-img.scss index 4cbfb359..b14536be 100644 --- a/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite-img.scss +++ b/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite-img.scss @@ -24,8 +24,6 @@ $sprite-image-default-width: $sprite-default-size !default; $sprite-image-default-height: $sprite-default-size !default; -$sprite-selectors: hover, target, active !default; - // Sets all the rules for a sprite from a given sprite image to show just one of the sprites. // To reduce duplication use a sprite-bg mixin for common properties and a sprite-select mixin for positioning. @mixin sprite-img($img, $col, $row: 1, $width: $sprite-image-default-width, $height: $sprite-image-default-height, $margin: $sprite-default-margin) { diff --git a/test/fixtures/stylesheets/compass/css/sprites.css b/test/fixtures/stylesheets/compass/css/sprites.css new file mode 100644 index 00000000..5415329a --- /dev/null +++ b/test/fixtures/stylesheets/compass/css/sprites.css @@ -0,0 +1,1262 @@ +.flag-sprite, #flags .us, #flags .au, #flags .ca, #flags .es, #flags .eg, #flags .ly, .flag-ad, .flag-ae, .flag-af, .flag-ag, .flag-ai, .flag-al, .flag-am, .flag-an, .flag-ao, .flag-ar, .flag-as, .flag-at, .flag-au, .flag-aw, .flag-ax, .flag-az, .flag-ba, .flag-bb, .flag-bd, .flag-be, .flag-bf, .flag-bg, .flag-bh, .flag-bi, .flag-bj, .flag-bm, .flag-bn, .flag-bo, .flag-br, .flag-bs, .flag-bt, .flag-bv, .flag-bw, .flag-by, .flag-bz, .flag-ca, .flag-catalonia, .flag-cc, .flag-cd, .flag-cf, .flag-cg, .flag-ch, .flag-ci, .flag-ck, .flag-cl, .flag-cm, .flag-cn, .flag-co, .flag-cr, .flag-cs, .flag-cu, .flag-cv, .flag-cx, .flag-cy, .flag-cz, .flag-de, .flag-dj, .flag-dk, .flag-dm, .flag-do, .flag-dz, .flag-ec, .flag-ee, .flag-eg, .flag-eh, .flag-england, .flag-er, .flag-es, .flag-et, .flag-europeanunion, .flag-fam, .flag-fi, .flag-fj, .flag-fk, .flag-fm, .flag-fo, .flag-fr, .flag-ga, .flag-gb, .flag-gd, .flag-ge, .flag-gf, .flag-gh, .flag-gi, .flag-gl, .flag-gm, .flag-gn, .flag-gp, .flag-gq, .flag-gr, .flag-gs, .flag-gt, .flag-gu, .flag-gw, .flag-gy, .flag-hk, .flag-hm, .flag-hn, .flag-hr, .flag-ht, .flag-hu, .flag-id-2, .flag-ie, .flag-il, .flag-in, .flag-io, .flag-iq, .flag-ir, .flag-is, .flag-it, .flag-jm, .flag-jo, .flag-jp, .flag-ke, .flag-kg, .flag-kh, .flag-ki, .flag-km, .flag-kn, .flag-kp, .flag-kr, .flag-kw, .flag-ky, .flag-kz, .flag-la, .flag-lb, .flag-lc, .flag-li, .flag-lk, .flag-lr, .flag-ls, .flag-lt, .flag-lu, .flag-lv, .flag-ly, .flag-ma, .flag-mc, .flag-md, .flag-me, .flag-mg, .flag-mh, .flag-mk, .flag-ml, .flag-mm, .flag-mn, .flag-mo, .flag-mp, .flag-mq, .flag-mr, .flag-ms, .flag-mt, .flag-mu, .flag-mv, .flag-mw, .flag-mx, .flag-my, .flag-mz, .flag-na, .flag-nc, .flag-ne, .flag-nf, .flag-ng, .flag-ni, .flag-nl, .flag-no, .flag-np, .flag-nr, .flag-nu, .flag-nz, .flag-om, .flag-pa, .flag-pe, .flag-pf, .flag-pg, .flag-ph, .flag-pk, .flag-pl, .flag-pm, .flag-pn, .flag-pr, .flag-ps, .flag-pt, .flag-pw, .flag-py, .flag-qa, .flag-re, .flag-ro, .flag-rs, .flag-ru, .flag-rw, .flag-sa, .flag-sb, .flag-sc, .flag-scotland, .flag-sd, .flag-se, .flag-sg, .flag-sh, .flag-si, .flag-sj, .flag-sk, .flag-sl, .flag-sm, .flag-sn, .flag-so, .flag-sr, .flag-st, .flag-sv, .flag-sy, .flag-sz, .flag-tc, .flag-td, .flag-tf, .flag-tg, .flag-th, .flag-tj, .flag-tk, .flag-tl, .flag-tm, .flag-tn, .flag-to, .flag-tr, .flag-tt, .flag-tv, .flag-tw, .flag-tz, .flag-ua, .flag-ug, .flag-um, .flag-us, .flag-uy, .flag-uz, .flag-va, .flag-vc, .flag-ve, .flag-vg, .flag-vi, .flag-vn, .flag-vu, .flag-wales, .flag-wf, .flag-ws, .flag-ye, .flag-yt, .flag-za, .flag-zm, .flag-zw { + background: url('/images/flag-03c3b29b35.png') no-repeat; } + +#flags .us { + background-position: 0 -2520px; + height: 11px; + width: 16px; } +#flags .au { + background-position: 0 -132px; + height: 11px; + width: 16px; } +#flags .ca { + background-position: 0 -385px; + height: 11px; + width: 16px; } +#flags .es { + background-position: 0 -737px; + height: 11px; + width: 16px; } +#flags .eg { + background-position: 0 -693px; + height: 11px; + width: 16px; } +#flags .ly { + background-position: 0 -1474px; + height: 11px; + width: 16px; } + +.flag-ad { + background-position: 0 0; + height: 11px; + width: 16px; } + +.flag-ae { + background-position: 0 -11px; + height: 11px; + width: 16px; } + +.flag-af { + background-position: 0 -22px; + height: 11px; + width: 16px; } + +.flag-ag { + background-position: 0 -33px; + height: 11px; + width: 16px; } + +.flag-ai { + background-position: 0 -44px; + height: 11px; + width: 16px; } + +.flag-al { + background-position: 0 -55px; + height: 11px; + width: 16px; } + +.flag-am { + background-position: 0 -66px; + height: 11px; + width: 16px; } + +.flag-an { + background-position: 0 -77px; + height: 11px; + width: 16px; } + +.flag-ao { + background-position: 0 -88px; + height: 11px; + width: 16px; } + +.flag-ar { + background-position: 0 -99px; + height: 11px; + width: 16px; } + +.flag-as { + background-position: 0 -110px; + height: 11px; + width: 16px; } + +.flag-at { + background-position: 0 -121px; + height: 11px; + width: 16px; } + +.flag-au { + background-position: 0 -132px; + height: 11px; + width: 16px; } + +.flag-aw { + background-position: 0 -143px; + height: 11px; + width: 16px; } + +.flag-ax { + background-position: 0 -154px; + height: 11px; + width: 16px; } + +.flag-az { + background-position: 0 -165px; + height: 11px; + width: 16px; } + +.flag-ba { + background-position: 0 -176px; + height: 11px; + width: 16px; } + +.flag-bb { + background-position: 0 -187px; + height: 11px; + width: 16px; } + +.flag-bd { + background-position: 0 -198px; + height: 11px; + width: 16px; } + +.flag-be { + background-position: 0 -209px; + height: 11px; + width: 16px; } + +.flag-bf { + background-position: 0 -220px; + height: 11px; + width: 16px; } + +.flag-bg { + background-position: 0 -231px; + height: 11px; + width: 16px; } + +.flag-bh { + background-position: 0 -242px; + height: 11px; + width: 16px; } + +.flag-bi { + background-position: 0 -253px; + height: 11px; + width: 16px; } + +.flag-bj { + background-position: 0 -264px; + height: 11px; + width: 16px; } + +.flag-bm { + background-position: 0 -275px; + height: 11px; + width: 16px; } + +.flag-bn { + background-position: 0 -286px; + height: 11px; + width: 16px; } + +.flag-bo { + background-position: 0 -297px; + height: 11px; + width: 16px; } + +.flag-br { + background-position: 0 -308px; + height: 11px; + width: 16px; } + +.flag-bs { + background-position: 0 -319px; + height: 11px; + width: 16px; } + +.flag-bt { + background-position: 0 -330px; + height: 11px; + width: 16px; } + +.flag-bv { + background-position: 0 -341px; + height: 11px; + width: 16px; } + +.flag-bw { + background-position: 0 -352px; + height: 11px; + width: 16px; } + +.flag-by { + background-position: 0 -363px; + height: 11px; + width: 16px; } + +.flag-bz { + background-position: 0 -374px; + height: 11px; + width: 16px; } + +.flag-ca { + background-position: 0 -385px; + height: 11px; + width: 16px; } + +.flag-catalonia { + background-position: 0 -396px; + height: 11px; + width: 16px; } + +.flag-cc { + background-position: 0 -407px; + height: 11px; + width: 16px; } + +.flag-cd { + background-position: 0 -418px; + height: 11px; + width: 16px; } + +.flag-cf { + background-position: 0 -429px; + height: 11px; + width: 16px; } + +.flag-cg { + background-position: 0 -440px; + height: 11px; + width: 16px; } + +.flag-ch { + background-position: 0 -451px; + height: 11px; + width: 11px; } + +.flag-ci { + background-position: 0 -462px; + height: 11px; + width: 16px; } + +.flag-ck { + background-position: 0 -473px; + height: 11px; + width: 16px; } + +.flag-cl { + background-position: 0 -484px; + height: 11px; + width: 16px; } + +.flag-cm { + background-position: 0 -495px; + height: 11px; + width: 16px; } + +.flag-cn { + background-position: 0 -506px; + height: 11px; + width: 16px; } + +.flag-co { + background-position: 0 -517px; + height: 11px; + width: 16px; } + +.flag-cr { + background-position: 0 -528px; + height: 11px; + width: 16px; } + +.flag-cs { + background-position: 0 -539px; + height: 11px; + width: 16px; } + +.flag-cu { + background-position: 0 -550px; + height: 11px; + width: 16px; } + +.flag-cv { + background-position: 0 -561px; + height: 11px; + width: 16px; } + +.flag-cx { + background-position: 0 -572px; + height: 11px; + width: 16px; } + +.flag-cy { + background-position: 0 -583px; + height: 11px; + width: 16px; } + +.flag-cz { + background-position: 0 -594px; + height: 11px; + width: 16px; } + +.flag-de { + background-position: 0 -605px; + height: 11px; + width: 16px; } + +.flag-dj { + background-position: 0 -616px; + height: 11px; + width: 16px; } + +.flag-dk { + background-position: 0 -627px; + height: 11px; + width: 16px; } + +.flag-dm { + background-position: 0 -638px; + height: 11px; + width: 16px; } + +.flag-do { + background-position: 0 -649px; + height: 11px; + width: 16px; } + +.flag-dz { + background-position: 0 -660px; + height: 11px; + width: 16px; } + +.flag-ec { + background-position: 0 -671px; + height: 11px; + width: 16px; } + +.flag-ee { + background-position: 0 -682px; + height: 11px; + width: 16px; } + +.flag-eg { + background-position: 0 -693px; + height: 11px; + width: 16px; } + +.flag-eh { + background-position: 0 -704px; + height: 11px; + width: 16px; } + +.flag-england { + background-position: 0 -715px; + height: 11px; + width: 16px; } + +.flag-er { + background-position: 0 -726px; + height: 11px; + width: 16px; } + +.flag-es { + background-position: 0 -737px; + height: 11px; + width: 16px; } + +.flag-et { + background-position: 0 -748px; + height: 11px; + width: 16px; } + +.flag-europeanunion { + background-position: 0 -759px; + height: 11px; + width: 16px; } + +.flag-fam { + background-position: 0 -770px; + height: 11px; + width: 16px; } + +.flag-fi { + background-position: 0 -781px; + height: 11px; + width: 16px; } + +.flag-fj { + background-position: 0 -792px; + height: 11px; + width: 16px; } + +.flag-fk { + background-position: 0 -803px; + height: 11px; + width: 16px; } + +.flag-fm { + background-position: 0 -814px; + height: 11px; + width: 16px; } + +.flag-fo { + background-position: 0 -825px; + height: 11px; + width: 16px; } + +.flag-fr { + background-position: 0 -836px; + height: 11px; + width: 16px; } + +.flag-ga { + background-position: 0 -847px; + height: 11px; + width: 16px; } + +.flag-gb { + background-position: 0 -858px; + height: 11px; + width: 16px; } + +.flag-gd { + background-position: 0 -869px; + height: 11px; + width: 16px; } + +.flag-ge { + background-position: 0 -880px; + height: 11px; + width: 16px; } + +.flag-gf { + background-position: 0 -891px; + height: 11px; + width: 16px; } + +.flag-gh { + background-position: 0 -902px; + height: 11px; + width: 16px; } + +.flag-gi { + background-position: 0 -913px; + height: 11px; + width: 16px; } + +.flag-gl { + background-position: 0 -924px; + height: 11px; + width: 16px; } + +.flag-gm { + background-position: 0 -935px; + height: 11px; + width: 16px; } + +.flag-gn { + background-position: 0 -946px; + height: 11px; + width: 16px; } + +.flag-gp { + background-position: 0 -957px; + height: 11px; + width: 16px; } + +.flag-gq { + background-position: 0 -968px; + height: 11px; + width: 16px; } + +.flag-gr { + background-position: 0 -979px; + height: 11px; + width: 16px; } + +.flag-gs { + background-position: 0 -990px; + height: 11px; + width: 16px; } + +.flag-gt { + background-position: 0 -1001px; + height: 11px; + width: 16px; } + +.flag-gu { + background-position: 0 -1012px; + height: 11px; + width: 16px; } + +.flag-gw { + background-position: 0 -1023px; + height: 11px; + width: 16px; } + +.flag-gy { + background-position: 0 -1034px; + height: 11px; + width: 16px; } + +.flag-hk { + background-position: 0 -1045px; + height: 11px; + width: 16px; } + +.flag-hm { + background-position: 0 -1056px; + height: 11px; + width: 16px; } + +.flag-hn { + background-position: 0 -1067px; + height: 11px; + width: 16px; } + +.flag-hr { + background-position: 0 -1078px; + height: 11px; + width: 16px; } + +.flag-ht { + background-position: 0 -1089px; + height: 11px; + width: 16px; } + +.flag-hu { + background-position: 0 -1100px; + height: 11px; + width: 16px; } + +.flag-id-2 { + background-position: 0 -1111px; + height: 11px; + width: 16px; } + +.flag-ie { + background-position: 0 -1122px; + height: 11px; + width: 16px; } + +.flag-il { + background-position: 0 -1133px; + height: 11px; + width: 16px; } + +.flag-in { + background-position: 0 -1144px; + height: 11px; + width: 16px; } + +.flag-io { + background-position: 0 -1155px; + height: 11px; + width: 16px; } + +.flag-iq { + background-position: 0 -1166px; + height: 11px; + width: 16px; } + +.flag-ir { + background-position: 0 -1177px; + height: 11px; + width: 16px; } + +.flag-is { + background-position: 0 -1188px; + height: 11px; + width: 16px; } + +.flag-it { + background-position: 0 -1199px; + height: 11px; + width: 16px; } + +.flag-jm { + background-position: 0 -1210px; + height: 11px; + width: 16px; } + +.flag-jo { + background-position: 0 -1221px; + height: 11px; + width: 16px; } + +.flag-jp { + background-position: 0 -1232px; + height: 11px; + width: 16px; } + +.flag-ke { + background-position: 0 -1243px; + height: 11px; + width: 16px; } + +.flag-kg { + background-position: 0 -1254px; + height: 11px; + width: 16px; } + +.flag-kh { + background-position: 0 -1265px; + height: 11px; + width: 16px; } + +.flag-ki { + background-position: 0 -1276px; + height: 11px; + width: 16px; } + +.flag-km { + background-position: 0 -1287px; + height: 11px; + width: 16px; } + +.flag-kn { + background-position: 0 -1298px; + height: 11px; + width: 16px; } + +.flag-kp { + background-position: 0 -1309px; + height: 11px; + width: 16px; } + +.flag-kr { + background-position: 0 -1320px; + height: 11px; + width: 16px; } + +.flag-kw { + background-position: 0 -1331px; + height: 11px; + width: 16px; } + +.flag-ky { + background-position: 0 -1342px; + height: 11px; + width: 16px; } + +.flag-kz { + background-position: 0 -1353px; + height: 11px; + width: 16px; } + +.flag-la { + background-position: 0 -1364px; + height: 11px; + width: 16px; } + +.flag-lb { + background-position: 0 -1375px; + height: 11px; + width: 16px; } + +.flag-lc { + background-position: 0 -1386px; + height: 11px; + width: 16px; } + +.flag-li { + background-position: 0 -1397px; + height: 11px; + width: 16px; } + +.flag-lk { + background-position: 0 -1408px; + height: 11px; + width: 16px; } + +.flag-lr { + background-position: 0 -1419px; + height: 11px; + width: 16px; } + +.flag-ls { + background-position: 0 -1430px; + height: 11px; + width: 16px; } + +.flag-lt { + background-position: 0 -1441px; + height: 11px; + width: 16px; } + +.flag-lu { + background-position: 0 -1452px; + height: 11px; + width: 16px; } + +.flag-lv { + background-position: 0 -1463px; + height: 11px; + width: 16px; } + +.flag-ly { + background-position: 0 -1474px; + height: 11px; + width: 16px; } + +.flag-ma { + background-position: 0 -1485px; + height: 11px; + width: 16px; } + +.flag-mc { + background-position: 0 -1496px; + height: 11px; + width: 16px; } + +.flag-md { + background-position: 0 -1507px; + height: 11px; + width: 16px; } + +.flag-me { + background-position: 0 -1518px; + height: 12px; + width: 16px; } + +.flag-mg { + background-position: 0 -1530px; + height: 11px; + width: 16px; } + +.flag-mh { + background-position: 0 -1541px; + height: 11px; + width: 16px; } + +.flag-mk { + background-position: 0 -1552px; + height: 11px; + width: 16px; } + +.flag-ml { + background-position: 0 -1563px; + height: 11px; + width: 16px; } + +.flag-mm { + background-position: 0 -1574px; + height: 11px; + width: 16px; } + +.flag-mn { + background-position: 0 -1585px; + height: 11px; + width: 16px; } + +.flag-mo { + background-position: 0 -1596px; + height: 11px; + width: 16px; } + +.flag-mp { + background-position: 0 -1607px; + height: 11px; + width: 16px; } + +.flag-mq { + background-position: 0 -1618px; + height: 11px; + width: 16px; } + +.flag-mr { + background-position: 0 -1629px; + height: 11px; + width: 16px; } + +.flag-ms { + background-position: 0 -1640px; + height: 11px; + width: 16px; } + +.flag-mt { + background-position: 0 -1651px; + height: 11px; + width: 16px; } + +.flag-mu { + background-position: 0 -1662px; + height: 11px; + width: 16px; } + +.flag-mv { + background-position: 0 -1673px; + height: 11px; + width: 16px; } + +.flag-mw { + background-position: 0 -1684px; + height: 11px; + width: 16px; } + +.flag-mx { + background-position: 0 -1695px; + height: 11px; + width: 16px; } + +.flag-my { + background-position: 0 -1706px; + height: 11px; + width: 16px; } + +.flag-mz { + background-position: 0 -1717px; + height: 11px; + width: 16px; } + +.flag-na { + background-position: 0 -1728px; + height: 11px; + width: 16px; } + +.flag-nc { + background-position: 0 -1739px; + height: 11px; + width: 16px; } + +.flag-ne { + background-position: 0 -1750px; + height: 11px; + width: 16px; } + +.flag-nf { + background-position: 0 -1761px; + height: 11px; + width: 16px; } + +.flag-ng { + background-position: 0 -1772px; + height: 11px; + width: 16px; } + +.flag-ni { + background-position: 0 -1783px; + height: 11px; + width: 16px; } + +.flag-nl { + background-position: 0 -1794px; + height: 11px; + width: 16px; } + +.flag-no { + background-position: 0 -1805px; + height: 11px; + width: 16px; } + +.flag-np { + background-position: 0 -1816px; + height: 11px; + width: 9px; } + +.flag-nr { + background-position: 0 -1827px; + height: 11px; + width: 16px; } + +.flag-nu { + background-position: 0 -1838px; + height: 11px; + width: 16px; } + +.flag-nz { + background-position: 0 -1849px; + height: 11px; + width: 16px; } + +.flag-om { + background-position: 0 -1860px; + height: 11px; + width: 16px; } + +.flag-pa { + background-position: 0 -1871px; + height: 11px; + width: 16px; } + +.flag-pe { + background-position: 0 -1882px; + height: 11px; + width: 16px; } + +.flag-pf { + background-position: 0 -1893px; + height: 11px; + width: 16px; } + +.flag-pg { + background-position: 0 -1904px; + height: 11px; + width: 16px; } + +.flag-ph { + background-position: 0 -1915px; + height: 11px; + width: 16px; } + +.flag-pk { + background-position: 0 -1926px; + height: 11px; + width: 16px; } + +.flag-pl { + background-position: 0 -1937px; + height: 11px; + width: 16px; } + +.flag-pm { + background-position: 0 -1948px; + height: 11px; + width: 16px; } + +.flag-pn { + background-position: 0 -1959px; + height: 11px; + width: 16px; } + +.flag-pr { + background-position: 0 -1970px; + height: 11px; + width: 16px; } + +.flag-ps { + background-position: 0 -1981px; + height: 11px; + width: 16px; } + +.flag-pt { + background-position: 0 -1992px; + height: 11px; + width: 16px; } + +.flag-pw { + background-position: 0 -2003px; + height: 11px; + width: 16px; } + +.flag-py { + background-position: 0 -2014px; + height: 11px; + width: 16px; } + +.flag-qa { + background-position: 0 -2025px; + height: 11px; + width: 16px; } + +.flag-re { + background-position: 0 -2036px; + height: 11px; + width: 16px; } + +.flag-ro { + background-position: 0 -2047px; + height: 11px; + width: 16px; } + +.flag-rs { + background-position: 0 -2058px; + height: 11px; + width: 16px; } + +.flag-ru { + background-position: 0 -2069px; + height: 11px; + width: 16px; } + +.flag-rw { + background-position: 0 -2080px; + height: 11px; + width: 16px; } + +.flag-sa { + background-position: 0 -2091px; + height: 11px; + width: 16px; } + +.flag-sb { + background-position: 0 -2102px; + height: 11px; + width: 16px; } + +.flag-sc { + background-position: 0 -2113px; + height: 11px; + width: 16px; } + +.flag-scotland { + background-position: 0 -2124px; + height: 11px; + width: 16px; } + +.flag-sd { + background-position: 0 -2135px; + height: 11px; + width: 16px; } + +.flag-se { + background-position: 0 -2146px; + height: 11px; + width: 16px; } + +.flag-sg { + background-position: 0 -2157px; + height: 11px; + width: 16px; } + +.flag-sh { + background-position: 0 -2168px; + height: 11px; + width: 16px; } + +.flag-si { + background-position: 0 -2179px; + height: 11px; + width: 16px; } + +.flag-sj { + background-position: 0 -2190px; + height: 11px; + width: 16px; } + +.flag-sk { + background-position: 0 -2201px; + height: 11px; + width: 16px; } + +.flag-sl { + background-position: 0 -2212px; + height: 11px; + width: 16px; } + +.flag-sm { + background-position: 0 -2223px; + height: 11px; + width: 16px; } + +.flag-sn { + background-position: 0 -2234px; + height: 11px; + width: 16px; } + +.flag-so { + background-position: 0 -2245px; + height: 11px; + width: 16px; } + +.flag-sr { + background-position: 0 -2256px; + height: 11px; + width: 16px; } + +.flag-st { + background-position: 0 -2267px; + height: 11px; + width: 16px; } + +.flag-sv { + background-position: 0 -2278px; + height: 11px; + width: 16px; } + +.flag-sy { + background-position: 0 -2289px; + height: 11px; + width: 16px; } + +.flag-sz { + background-position: 0 -2300px; + height: 11px; + width: 16px; } + +.flag-tc { + background-position: 0 -2311px; + height: 11px; + width: 16px; } + +.flag-td { + background-position: 0 -2322px; + height: 11px; + width: 16px; } + +.flag-tf { + background-position: 0 -2333px; + height: 11px; + width: 16px; } + +.flag-tg { + background-position: 0 -2344px; + height: 11px; + width: 16px; } + +.flag-th { + background-position: 0 -2355px; + height: 11px; + width: 16px; } + +.flag-tj { + background-position: 0 -2366px; + height: 11px; + width: 16px; } + +.flag-tk { + background-position: 0 -2377px; + height: 11px; + width: 16px; } + +.flag-tl { + background-position: 0 -2388px; + height: 11px; + width: 16px; } + +.flag-tm { + background-position: 0 -2399px; + height: 11px; + width: 16px; } + +.flag-tn { + background-position: 0 -2410px; + height: 11px; + width: 16px; } + +.flag-to { + background-position: 0 -2421px; + height: 11px; + width: 16px; } + +.flag-tr { + background-position: 0 -2432px; + height: 11px; + width: 16px; } + +.flag-tt { + background-position: 0 -2443px; + height: 11px; + width: 16px; } + +.flag-tv { + background-position: 0 -2454px; + height: 11px; + width: 16px; } + +.flag-tw { + background-position: 0 -2465px; + height: 11px; + width: 16px; } + +.flag-tz { + background-position: 0 -2476px; + height: 11px; + width: 16px; } + +.flag-ua { + background-position: 0 -2487px; + height: 11px; + width: 16px; } + +.flag-ug { + background-position: 0 -2498px; + height: 11px; + width: 16px; } + +.flag-um { + background-position: 0 -2509px; + height: 11px; + width: 16px; } + +.flag-us { + background-position: 0 -2520px; + height: 11px; + width: 16px; } + +.flag-uy { + background-position: 0 -2531px; + height: 11px; + width: 16px; } + +.flag-uz { + background-position: 0 -2542px; + height: 11px; + width: 16px; } + +.flag-va { + background-position: 0 -2553px; + height: 11px; + width: 16px; } + +.flag-vc { + background-position: 0 -2564px; + height: 11px; + width: 16px; } + +.flag-ve { + background-position: 0 -2575px; + height: 11px; + width: 16px; } + +.flag-vg { + background-position: 0 -2586px; + height: 11px; + width: 16px; } + +.flag-vi { + background-position: 0 -2597px; + height: 11px; + width: 16px; } + +.flag-vn { + background-position: 0 -2608px; + height: 11px; + width: 16px; } + +.flag-vu { + background-position: 0 -2619px; + height: 11px; + width: 16px; } + +.flag-wales { + background-position: 0 -2630px; + height: 11px; + width: 16px; } + +.flag-wf { + background-position: 0 -2641px; + height: 11px; + width: 16px; } + +.flag-ws { + background-position: 0 -2652px; + height: 11px; + width: 16px; } + +.flag-ye { + background-position: 0 -2663px; + height: 11px; + width: 16px; } + +.flag-yt { + background-position: 0 -2674px; + height: 11px; + width: 16px; } + +.flag-za { + background-position: 0 -2685px; + height: 11px; + width: 16px; } + +.flag-zm { + background-position: 0 -2696px; + height: 11px; + width: 16px; } + +.flag-zw { + background-position: 0 -2707px; + height: 11px; + width: 16px; } diff --git a/test/fixtures/stylesheets/compass/images/flag-03c3b29b35.png b/test/fixtures/stylesheets/compass/images/flag-03c3b29b35.png new file mode 100644 index 0000000000000000000000000000000000000000..3ec1e90d9c6a5abfb2123331a2ddd5596a25b1e9 GIT binary patch literal 105539 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í>nTQUCVuwEZ2@zer6d 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 T>uT4B00000NkvXXu0mjfu=~Ja literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ad.png b/test/fixtures/stylesheets/compass/images/flag/ad.png new file mode 100644 index 0000000000000000000000000000000000000000..1904b78f5a85f0b4b8609fc3b672e92cdb944c79 GIT binary patch literal 911 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ*JY5_^G|szT+?yrBDAD@Rc=P05Z;^={ ziG~UsZaE@?K`&T4rZ!DDb??%#bJ`oYD!4QEaOLLoxbk!;H99D0tnnz>e6D8y^UVPQ z_x@?#dv@~kc_kJHr!}=-KUwW`v1;I8=nxg)P+(xXyQu#-|1yS6T8mh>%~o?)Uj6Cg z4Nqy?twoC?SN^+k^X0B>tOZ4{B%j_3t6gjK^5B+_Pquiy3eXHvn&HR%!b44avC?Vd z)j9va{@N6^>`eC8Z+mT56-_Y8_2DcLRFOQ{p|sjd|DR3d--=uLy0iXrt~6Qcn0aZ1 zv-e^3O)Ub2;_@zvleB zZD4t0cYv0r)8(MQ+Ab`2Gv_TT&3vp8bN}AnU;pl2xx4O;#hLp-t7O=A3BOp9?y_rn z^~yzF?`-b;-LzXwPkJ`{%u{ivrpWbHGu+)H-fvaDt@wEb=K-k&*Ufr)iuUHN-I>#q zaYwt!q4@K^**AT}lKv_c^)2S__i*{szy04_HHHWL6=%x7U&`3H9~e!lC9V-A$wjG& zC8@e8K!U-@z`#=1&`{UVEX2sj%Fw{d#7x(~+{(aUnZxdG~j^en4qbPG)j^N`7u)W}f}uSLb2YL2QD1$W+(BLf6PL1n3VF z1E5!Qfetk=SW%w37N|iIWL7^73-Mw8UHp(o4?I)z3*x e($55G)K3GNQLJC6>UtNbpTX1B&t;ucLK6U@VOszI literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ae.png b/test/fixtures/stylesheets/compass/images/flag/ae.png new file mode 100644 index 0000000000000000000000000000000000000000..c53e2f05c9dd4b238e48dd65e3ad0c05f1fdc187 GIT binary patch literal 733 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft)*@E{-7@=UdNh^kojKYpA8k&U|8Ce+`SecmV8kk!d7%X$x z{S>AFq|yqa3#h@+K-U1M!7#+Y%*xcz$`Gm{?qcy16b-rgDVb@NxHahaoQ?o$FakNr zCo?%UuQ-(>PJF_4)B{NYkzbIWF#M2KbP0Gnkj!((YP0Y-*|NH7Z z%sPloa1WX48d&HWS%v`pVPXLEiZ0Nh1_mq2Q`Z7DNP?^j&QB{TPb^Aha7@WhN>%X8 zO-xS>N=;0uEIgTN15_jpQB+!#oXX(l=nFv#ZaInR3ZBXNdBvgUMfL)fnIM$KhX(n; wTwh*Zu9udW3qg9x`MLTziAnmIAdUKIKr@Q<3sqh30`)U^y85}Sb4q9e04k>chyVZp literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/af.png b/test/fixtures/stylesheets/compass/images/flag/af.png new file mode 100644 index 0000000000000000000000000000000000000000..3e628e75eb66ae8ab24f36d73bc2aac2691168a6 GIT binary patch literal 878 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 qr6uMra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHFJY5_^G|u~8wD0##6lwifdhc_QtoY2H z&KVgZLY*#4zZgzf5puaBjjJnj$|Au<7kk=niC@q%vD(*UFFg76F5~a#D!)fn=O3Mr zG5?un-QDMmrVUICp#p)8f);sf90CFk49Wr88-6~rY$)mPc(w0$c4f83(Z65+J^Y*b zK1iM0=!E|Idm#)ATfXn*ueXlAD|zbc(;pSvrrf-{aP!}aZ^avJb&aem3okcFHJ12) zpOW`w=jUX@ZPT_~zI3|TEt|j1t|w7!Q9}^V%XukX^ZEMqT6<#5epi`n+nBqK|VpqQ1`l)hQGH9Yhf5I-N7j{ex zkL&{(zn%ZOUMPW~LGTB2>MtjUx!+D+1xAc&iEBhja#3nxNvduNkYF$}FtF4$G}JXT z3o$aXGBmIm^)p?k85S!p0GSxM(&^59Q0s6zl0O%E6phFD|R+Oi%1!|B4 zSr?q2R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGSvpCNE)K3v?w{1!OhVZf)w0x64Mnt zlk@Y6L(hxs1u8Q^D2opb@`1U&yu4g5Eio5@^pf*)^>Y%F^fN&k_0xc66zdnNy50rq OXYh3Ob6Mw<&;$UwV^IeH literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/am.png b/test/fixtures/stylesheets/compass/images/flag/am.png new file mode 100644 index 0000000000000000000000000000000000000000..25af545b3843446bfd7fd4a8d5a6fe817893ce15 GIT binary patch literal 788 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIaJzX3_G|q?m@AaGQC@|-D&D6U=3p%Em zFF12qag~SOWtA;9QbJslz9w=Cu*H&Z&tz@C`qlKB=;oaMM4@B{BLnI5 zqy>))BHq1YIO4WxqM6wVkC_^cJe)6g+%MPRp75utO+?bJ*Lm41k=0J2yZ5ME*to9H zz}$02-%GW_Tr-s-RvKN<-)5gz`T2k*S%A@%2A9;pb@87?O-~aThVd9w;b{A7ab#^4_?Owh7cl$e5 z1L0$$wJBP9{+Wk*UP{Q`bx+}#&E3Edt$gd`MX{|MK|0M9%fq)!xBbAzKO242Ez~oGb>X=D?_M;xQoS4P&DM`r(~v8;?|(w zb2zHqb~$0xaB0KD|ja7=M{&Z7ugF` zW`a-_9~$HXbA5Svxn5dgE(GZ%=jZC@Bqr%+f;8%<0nI4ZFI08C3)Iix>FVdQ&MBb@ E07iru)c^nh literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/an.png b/test/fixtures/stylesheets/compass/images/flag/an.png new file mode 100644 index 0000000000000000000000000000000000000000..0a9851850b39d5c1527bd9152041f2995b1a8dee GIT binary patch literal 823 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJNJY5_^G|tCP+~^nWDB$`&Vtudf6D`(7 z4qG%eGF~j`{lPCKqSDkNa(d+>d#4bN?HecjU=Zi*`lBT-rcspk?%u)*{^tiTimkqD zd~2`qwy3oi9GSMUWqoUS71dxB!tm>_UBj82tWT#cxhAvBJe5smz z@5u;fH&%|^yS=f*-^kWzPc(zWB*yUR)7AU?{g+5I-MnA=v+ASgsf!tDC!RmAf7f&2 z+`0CbU)=cxZthvn;j6~p`pa%!@4ml0&nou3kGu0!FNi_AVX4R@xz>f3FW)||UVYqM zKD4Cv^Yb@v^px&;wNKTH%paOTOULrsx9`mrR1j?RnZd}mWqa85t@jSyy_S%}>cptHiBAzvpxWP=gW3Nj{m$sd>ez z3>hUQ1y=g{sd;+knc0~IsVSL>dih1^`XHWuKxtA=W^#N=er{rBp8elf=V8`CY=V2p zRM)^l*T^yi=noSEpjUK(4mB`XQJ%UMs6i5BU2uL{NqJ&XDuZK6ep0G}XKrG8YEWuo zN@d~6R2!foX^5iIqU2NtH%DIxQgF*jOjqzs&d)0jJuk8ssLTYREIu^I2j=?n@^Zbj p#9Ro{OU}>L&q++u&je}IPXn4!tY4_=dKajl!PC{xWt~$(695?yFdF~> literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ao.png b/test/fixtures/stylesheets/compass/images/flag/ao.png new file mode 100644 index 0000000000000000000000000000000000000000..a44327fd23fbcc806151446254bcb8c1fb1cc9e3 GIT binary patch literal 841 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQk(@Ik;OpT1B~5HX4`=T%L*LR zfize(!`BaKkqius5uPrNAsXj>`}b#w1_~UjPrtjn`k>N{nMt#`<9IUk_c?35Rh=s# zAm}8g_`rGw`vpJm(LhNLZ*aC zEPPA{oF=3^m~c>KL0LsjNlT0MJEOyM=ZGp>CWko~PP(-H^l2%FPqU?WCcB;cq*+q` z+I;_;KZ*bDO$aIs|NXnNy!*F(dDoS~kMEZM+tR)L`jRDuDYH!amP}dbH|fj_wV8=- zUfq|^et9*~#N@s2_U$t=XNfF6c5$IpLs9unfyMdL&fa`qP@k0ly*Wwe)mD*fuS>6& zKDOAkd&%U<4_~dS`ln-G`zT%hU2F`Cr)!kn^xFI3me1#Go+)}G=g`B%Th$Nb&maDn zJzLe-c=ME?h_zv{*Le>c_-pMva9aG=m&kW~TXJuIujSoQec5DlK41C&PocTHwHX&o z+j2Lr@zO7Q@fkah$ZpFC{GzfwH4PZxswJ)wCCNppi6yDJDL{h3$iTo-*U(Vc&@9Br z$jZ>b%EV09z}(8fV41`2r!Wm5l~xd4Kn;clx&}ZEh9L%KR;GqlhENT07mJ^uXvob^ z$xN%ntwF!%bOca?5y(kCnaQbn#i* zCFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5Xq#=q*i;`0r+#G!&NWm>9Fs_FJ22WQ% Jmvv4FO#pHzLOuWh literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ar.png b/test/fixtures/stylesheets/compass/images/flag/ar.png new file mode 100644 index 0000000000000000000000000000000000000000..d5bf27c4c588f21f423227fce71c141e7b31528c GIT binary patch literal 826 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHXJzX3_G|u}@-0K$_DA0P{E{9)Z;Q?u$ z-qxvt-ojo|Q;xWQV9fE*Si7=PE-7cr=jXf`J{#0_PR!6N+VuX+cAayLcdnk9esWey zns4Rz!`&A&T%22+vK$Wxm}Drk)Gq&J{^j4z7u#YtOgQjz(we2ajy%|M+3x4Q70wx* z>!u$&-?@=c-0Nxi9(Ikz``?6|?-RTg*d^=I9*y(%}S zrQX~gUsTw)_;$_fUgi5MMc$sj()-+R??%4)52t^=^xv*BR45?)u9W&OX5QkJm5&Rq z#^)@E`;(Y|S~vG~-d*#$FH+KH&OTxLdiDOZ$o_h}e;byqj%MG*ukt=P$xHL%JLkEz zch|{^lv=+IUXZEk{-gH$wmb literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/as.png b/test/fixtures/stylesheets/compass/images/flag/as.png new file mode 100644 index 0000000000000000000000000000000000000000..32222843a743ed3c500baf910f248d929620e942 GIT binary patch literal 1000 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI!d%8G=Xq@+*csg4+P^R_#+?~dgeR!_6 zZMl~9C?ZPSPU`+qA(7~=Z3-P+O-$lB%voi-g=sGYWC7wmHVRQp42iTj5mg?p@4 z@4ej_y4f^u`T34>5&J&Gop~~0m zpP0W2etFg_;jaN-S$q3B18XPWSK9r2b9P@Z`!wTz$J*)KKE{tW#{Ob5@~ihxc6P1P zKmF1(@|5xA3y)-3K4k3wULLi2@3FqSa%OWbo9|!$H?d*<$qhR#g`D1eKGhtxO?%IZ zpR*T+pgg6f49OH0iZa=dTU_)KbrGdm*~HcztQzgP-d| z*-U1|{Z0F^KX2x_mplFn++hC0+%NI7#>(rDDlq<4OI#yLl8aIkOHy@HfCPh)fq|v2 zp`os!S%{I5m7#%^iJ7i}xs`#zGKbwyVH!XxtsuI98Vn6|4S*U9Lk!HUObx9Jp&H^Y z7C%AJkei>9nO2EggMQEH2%rWdkdu5elT-7GQyDT!N(!v>^;7fo$}_Vw3sO@u6ZP_o z()B?+{eaS>oXq6-l>FSp%sl(Qug=4)gV+T3kg2YLg|3lh2+$uU20*Xq0v&2#u%bM5 zEl`6b$hzSCw370~qErUQl>DSr1<%~X^wgl##FWaylc_d9MbZ#OrA5i93~r9T5TxLi zlbEjHnVg?j9C}`4FHo5YLRoxhkPpoD<>lpiX^FWIq?eqZtDlpYq@M}WsGkNjqgcOC S)%7k=KZB>MpUXO@geCxoyM`qI literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/at.png b/test/fixtures/stylesheets/compass/images/flag/at.png new file mode 100644 index 0000000000000000000000000000000000000000..247acd2c8e560a31c743a929b3561755a01732b4 GIT binary patch literal 746 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft;6~E{-7@=W8df&2w@TY1yBfpLN09oI_@r zsfHX+@AF23J&g0j9kw!@4WI_`fo$fI~NV7cSZZ9zDK=2 zZSW*7+;4gC{qGGbEf?gkMoFtrKKZmLQ@eL%{O1UTmAl*I_SMgxZnXJEQec?&-1B#G zboh_nHSf?k{9)(Kl1dAk_usALB(o*0C2#gf%bj`dF#SWyxe_g7n}Wk@W<2y;T%A3q zqvca={fYX#J71VEwlp@FUeP=jHJfti)5p_QRIM8l6|6#*z3a`RI% z(<*Um==^=)4N!v-$Von#$*Fn8sSFtG~j^en4qb zPG)j^N`7u)W}f}uSLb2YL2QD1$W+(BLf6PL1n3VF1E5!Qfetk=SW%w37N|iIWL7^73-Mw8UHp(o4?I)z3*x($55G)K3GNQLJC6>UtNbpTX1B K&t;ucLK6TxW(LIo literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/au.png b/test/fixtures/stylesheets/compass/images/flag/au.png new file mode 100644 index 0000000000000000000000000000000000000000..6268b88669c6da5daeae5e14621d449f65499cba GIT binary patch literal 1036 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85o$jJzX3_G|u}T_xA`clwtVr{`S2L@41(E zZp%Es?Wxl9WwJ@!n-6Vjys4z5@nVXo?BWF}?Ru^U9R#h?0xzg;aAPrS)mR(j!Yk~< zbXQE$^!BCPoa+7Gf8P%M5o34h_{7`B$NFAe`4wTPS6tWHzJB{Zn?2iWKh!aF+2U*C_YH9*w^^V^~{)6D=pG&0+tB5MHHH~eczodT&%Y=^V7W@@8W6om`WP&n5#TeU%X9W&o1&HB$~}gR4yg=hEc5eB zeCs{Fzu9!Q?$<(#GqaA(crb-a^kMdM=Y4Z;o1B^FtIw#wslepGD8O*9C2!sK|HnSv zj%JWy_{YrkLwbq*Wz|{0G@@GK8c~v5l$uzQs+$5N7>o=IEOiYHbq&ozjEt-d4XjMe zbPdd{3=Ebz?0yQ<08(iM(FN3CXrOBV)L zI)5K{1Jqyya*|JGa%x_2Dnmv|Nr9EVerldxd1iKIL2627qF#Pcx;}`fA5fZm^)p?k85S!p0GSxM(&^59Q0s6zl0O%E6phFD|R+Oi%1!|B4Sr?q2R#Ki= zl*-_klAn~S;F+74o*I;zm{M7IGSvpCNE)K3v?w{1!OhVZf)w0x64Mntlk@Y6L(hxs z1u8Q^D2opb@`1U&yu4g5Eio5@^pf*)^>Y%F^fN&k_0xc66zdnNy50rqXYh3Ob6Mw< G&;$Tp_>bQJ literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/aw.png b/test/fixtures/stylesheets/compass/images/flag/aw.png new file mode 100644 index 0000000000000000000000000000000000000000..a7fbdc7bb3df52192ed02fba456e7ed2db33668e GIT binary patch literal 849 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kG?JY5_^G|q=kT$mRcDB${h+Tq2DEG$d` zywl=Wtf*uA*z`c1!?Tc=uUlgWn@(4VLY6@S*Sv;9f-b@wkCuAopMMi6U8v7^=G?54 zK544Pcj~@<+;UkgSBBN2WJ=crr!zM>HFqt_-4eg}+xC3je*XJ!?#Mr8Vq3J}4U?c2 zSIg!-^&b|--i^`e=l}d9<>#xH2VVuIg+;ohHlB)9S+S$=Y0!aVyIyDfp0{**xqOP( zQ-wJ^Tn}Gl?R9^+IWAOeUJQ4-<>}3r zSd^^Z#;kCb_H*dzJRi6uD&g1|CTD8PAq9nN}HL)aBHw8#A7#SE?>KYpA z8k&U|8Ce+`SecmV8kk!d7%X$x{S>AFq|yqa3#h@+K-U1M!7#+Y%*xcz%FrC5;m5Ly z02B?m`6-!cmAEx@{yy*qsKE&2B%jRW)V$(UhK!Pu0xNy})I7cN%^PbJE{Nx literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ax.png b/test/fixtures/stylesheets/compass/images/flag/ax.png new file mode 100644 index 0000000000000000000000000000000000000000..a099b4f3d8c08a7549358308c12f9efde619533d GIT binary patch literal 936 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIsd%8G=Xq-1aFoPf*%fy_7Qa0=Q9F9y#o6`SEhWPe+?H$f^j$PO#`FEnhp(qkcRZ1MJF~iC z!}N3J{@3(;mThh6uuq?R9SFJLayV~ zp%^jOtJZC$g$v3&n~{X4Dqj$PXP+JRN1 z;eWV8<30OASs&f^yUe!&<4?83HKHWBC^fMpRW}7lFc=vaSn3)Y>KdAb7#Ud^8d#Z_ z=^B_@85k^c*!>iy0i@Cjq6?_O&_LG!sKGGAz|6|j(8|ypqT$D~iU1T1x%nxXX_dG& zbpAf@2B^UZgOaT>1Tp8>ZbwCDAq4jb-fGJ&*16m=d#Wz Gp$P!Gxo#i; literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/az.png b/test/fixtures/stylesheets/compass/images/flag/az.png new file mode 100644 index 0000000000000000000000000000000000000000..60bea4eb8d0e08b8e4815cb27f0a3b6bef67ec1f GIT binary patch literal 879 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJzJY5_^G|u}@*qarSDADrV+H$vI_5n8) zdzZ~ws~2p|%~KNJP@W*Vr`crL?FXtEk9jrpR@~r>+#Tv7n0w`j%lDf1XZC1bYdC!P z!-10E4=+rg9Z_P-n4#d%^zZsrg}}~jnT4nJ&Q)YkpR>|OYST>5*={Gc9F{zl{y1Eh zjag@F{5hvKqr=mTmUy%n&k0>ub|QNEuNUj5d1{*T@x9vqKGV@?<`U1zl8KiD`#d)7 z-}bG@Chww&!a@&D$Fu+A?%sWyn{yg z%hlbxFMntE?wZ`{r{81)m0WLnE?^80;}4k@Q2u4#?AjRl-a5NVtNCZo-P@xp>z(?t z!;3kWRmE%KBFVf@uOA;?llbxamlJ|9-f$1yLKlMEV%q(GreCzI{ z@;BX6QUXSUYKdz^NpewYVo9oQ3XothGBB{zH8j*UGz&2@vNANVGBMLNFt;)=Smv<% zDNF-Mr4>XMP=ld?t^rVkVTgg5m8qeXp*cjuk7X4BC>nC}Q!>*kack)Oec%mHgAvF{ zKAFj>dBv#=86_nJR{Hv>d3xoU*_j2YDVd3S`9ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJnd%8G=Xq-=-=-+XsP~zD9`)?klI0r^s zbac<|UOmOMY~|5wIg2bj6rZ+rFShTL$+;bru_)5>Ur&eVrCS+`RM>^Ycb+iVYW#EW z`_HxV?e{HKKK~#y&mRcbOv0v$`^<~3di7)7t9{X%Wp!RLHz+6xxG*@LxgW;P;iBJg zD&c;=ntsflk0s9@9+;JRa8pm@2K9(0?~orS7GCwcD_wt?n<40}%AG3Pimdg}p1E^Qtip^Zo_;%zpWgn~+q|AP=brJ$6pQnd zA8<`RqciaplV+#hXM%3<3xhjq^Eo;7QxZSl|N*DfAbfA=PAMzD`o9mn!t;^zz5 zBvs}-6p@VISNS#X^@GO6!dqLlr=Ry$R4{rVD8SII{NI>mnvC_{M^7gDA1G(2XMA-! z!J+-(fmmR?sg}4#lq46WCYGe?rT_^BBLf3VT|+}%L$eSgBP&A#D-$za19K|_gJll8 zpTabNR9ZoF0W}yJ=o$bu7={>_S(zGI8A3J0T`Ycrq9HdwB{QuOw+8*5(-A-oMj$8o zWG1KP6{j*}l#~=$>FcNF>6K?@XBMQUWG3q67p3cic=`dQNjaIx@hSPaiJ5u!e_x%4 zSqHHR?jciM0}EXv%MhSHObmct(FHoxz+gpr>RO-%Nsx8H`DrEPiAAXljw$&`sS2LC ziRr09sfj6-g(p*OfQqCcib{);QyJVGeIZD}EhjNu!818OuQ>F)$X=i_6NIw(&>$a} v>&wf__0ke^AxJMdKUY5|F-boYq)|T&XhyMqp{na$pne8VS3j3^P6ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI&JY5_^G|t=hugw!>6lqESp2wQ&so>~P zl+9t|km~F)VS$0issf3cz)%kk1;afIOeW_KFe`BJcC|cHb2xnNyk&>4Rn@*4W9G2q zJ3O@F`xqbaq+T)0IS_z^PiU-Uig!D?zUZ5o2#x}zs#$wS$(~nq0b>yIdl0Gr{_6_RUTC$#8q3 z^41o;Z9l$D+;tY(zdrp^WvWO3^9Pn0 z49sjFUSIxg<(?bh@^+Eh8(BGq{|&qW4F8zZHl$ZixeyTs406>H*NBqjqSVBaRNWLH z!C+)yV5w_psB35zVq|1xXkcYxrfXnsWni$(VfRy*29QcCh%TT8Ljzp{pa#Pb12ZdA zLn}k5hPaExPf#@E=BH$)RpQp5-*Y+wsKE&2B%jRW)V$(UhK!Pu0xNy})I7cN%`Q@F(Lo} literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/bd.png b/test/fixtures/stylesheets/compass/images/flag/bd.png new file mode 100644 index 0000000000000000000000000000000000000000..34a6c33cb31c48e0ad16807552de233342e091fd GIT binary patch literal 829 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kICJY5_^G|sn9+?y3rC~`!7I=7<2Mvlfc zy99lNIcJzHm^!VJ;l4s_*OkhtHVt8ix|Ze(%vQLu!u5v0BsEQ!vgeQg=;mGPKlSjq z!BNZh#?39^KNd4_NEjSo-Mqi)0<(pk4O>9yRV~r*pfa{42TymYwNI8~xUkGzeC3i) zHLL#SS5~Y}o2&o&ZNz)?69Jbha(NcGFI>gj9`93HFs(1gY{gl5n_Z7`+~2!}cnUV~ zxkbs`zBPN7^6V=o8uN}#zwbHu(S{3)AGl0Bef#>p+0*LU?|NUFk}B=Mu9P}Gvu@vU zH?xfsbM55+luR{=j0sT^xmfb2aIV?yIk|ynu03H4-85Iip?X$q>d3Ef?+k|E#ZLJg_W& z*FS#WDZoHgEpd$~NiIrFEJ@W(0TK*G1_qY8hK9O^W+6sKR)z*vCT6+@=2iv<%N%w; zg=qk(w1VgYYA`g=H2`Wb3^6dXGBva^gldSpSo{P zOis-!PG!g_DJihh*H6vUE6>c%EJ#hsOw`LSO4kSR^aDzhax#~3AwYka7y!MZ3v{S~!HV+KwLlG$AnStj(@M${i&7aJQ}UBi6+Ckj z(^G>|6H_V+Po~-c6-h%Bl@=wZGPpVVLXd)6PGY)(XL5dCap-xGy+CCq2xal1K|V0o umzS68r6uMra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft+`qE{-7@=W{1IdNn8VxZGbJ>JoCKx8&h5 z?h3{HOVMAguEw&4cRkWF_Kf-RKU%b1arK@v4s83semv*O5E6L(ih8Mc;RmLOwP6mS zp;vEK7EOI{(e9Z0^jGfNuatSmzy8Y9a4#?3$k=!_%gwbXSKf1R-(vFa-LjTd=X}zm zUY&dQqHO!F#nx6^m?x+y81J22v*WM)0lp2vm-rR<99AZ;YT4_*;cdVlwr7^=J+-Qy zf{D?B^}IUxW@TzqxEJJ|)FfjmnMHlE$1A`UiscV56 zBtg~%=ckpFCl;kLIHu$$r7C#lCZ?wbr6#6S7M@JC0VR literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/bf.png b/test/fixtures/stylesheets/compass/images/flag/bf.png new file mode 100644 index 0000000000000000000000000000000000000000..7a4b58930dc893363fc0925f028ee018b1bffc82 GIT binary patch literal 797 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI4JY5_^G|uPt*=9{;6mWg7e&5+dtv9sm z`i}NB2U(YF*dlT%h4G-(YJnK%DszRT#N=$jlT1o0zUK$+VflREVS(k*JBiZ{?ti)O z|MXObm>7l`V!D$G1^RibmsC#KziwR^!+|qj{Z%~NZauZV(&5~yO@Cvc~KF&xbC?Hh-1o1&X?cuJ8NuQ%d`vgP`kmF3FWO zpFO*HP9?24QJN&8&2zjfL^J6`fT(w9kI1f~$81NqoW6cMxKYXco~icrRWj9cR3@7k zi0xti(eV9l{}G2q^&QLyS+mdDUuHQ63^dge*NBqjqSVBaRNWLH!C+)yV5w_psB35z zVq|1xXkcYxrfXnsWni$(VfRy*29QcCh%TT8Ljzp{pa#Pb12ZdALn}k5hPaExPf#@E z=BH$)RpQp5-*Y+wsKE&2B%jRW)V$(UhK!Pu0xNy})I7cN%_s<9V`F< literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/bg.png b/test/fixtures/stylesheets/compass/images/flag/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..c30d885668b1ba02d69627184ca1441fbbaaa042 GIT binary patch literal 776 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJZJzX3_G|uPx8TvT~@_hciM{nwl2rbdl z#D{WoRw{FwKQKBob%q7gDhaF7L`Koh8-)^e-105LmfPldWVRn>6uu!>skKjWH}j11 z&ly%_?O7>xH`8as{rA5!S1w!h&pG>S+5LUF(+?YI*9%QKz4*(@n0dT^e?H#%kni>E zukUKry~TWI`M6DzoaksQViNv*_1VA6m;+S1wN|vQ(D1qErGKdAb7#Ud^8d#Z_=^B_@85k^c*!>iy0i@Cj zq6?_O&_LG!sKGGAz|6|j(8>_1A?{-F6BG@(`6-!cmAEzN_neLZYA^yh$tN>8HLp08 zA)}rSC{4=AOpZ^<&rQtCv;X_*Jj^hsH z>Ka(+8d-(_{b6DN^olOfp#}yk%2U?@HAsT23(ij~DNig)WpGT%PfAtr%uP&B4N6T+ zsVqF1Y6Dax4N+8Dl$^@o=I9GS3T`=x=?b37`FX{m=SB7cm6;%v#fJv@z+7KmUapsx pmra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIqJY5_^G|tCPw9Px@AkaF0Vzju)#wi`r z4wLV+&Au>kilWC7N3X6Yd?t4qmo#%<2)M!3=_7FN+?zcjujLP3&M?)ky=A^xU#p90 z>!hcb+MFxo*Re?~C>7Sy>QeHYWC+#d>%zDGhN9W7G?h*F# zc4j%KIAcP}{`1cz^Vemcm}|L0O2FKNp|0*h;i13t9<8c$k!tri($F_^qgdX1i`j;I zAI;yrV4+uNZrO@&aceE+7H!XdS+L5X_JsPWO>1ty4O6b{e>?55AwT<-`utSS_YZCN zoHw66BPDX$!Q;=0rF#qHawnHuurGfdlDlqg=67Jwsg}4#lq46WCYGe?rT_^BBLf3V zT|+}%L$eSgBP&A#D-$za19K|_gJll8pTabNR9ZoF0W}yJ=o$bu7={>_S(zGI8A3J0 zT`Ycrq9HdwB{QuOw+8*5(-A-oMj$8oWG1KP6{j*}l#~=$>FcNF>6K?@XBMQUWG3q6 z7p3cic=`dQNjaIx@hSPaiJ5u!e_x%4SqHHR?jciM0}EXv%MhSHObmct(FHoxz+gpr z>RO-%Nsx8H`DrEPiAAXljw$&`sS2LCiRr09sfj6-g(p*OfQqCcib{);QyJVGeIZD} zEhjNu!818OuQ>F)$X=i_6NIw(&>$a}>&wf__0ke^AxJMdKUY5|F-boYq)|T&XhyMq Tp{na$pne8VS3j3^P6ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJFY7MP=@`(`_DNiYvjHk zx_0MOMxTzfZq}O#O(h+1Hg3!Hmb!#3_P(h3VpdYSm`lmakV%gD3O76jG>sIymaLT6 zW)^g4t!;Jo?ElZd|Nn30vYo%ic|=f)-4PSA755J zU6aMGwmANL9s7ldh!yA0STs3$cy5*Icu=%)N|{~$JSh`@ne=DhE|#_11zfz-wqIH1 zUEl1J|30mL9-_l`j(7JX_SN~zT=m4|cJJ2RW_~$p@7Isd9(`GK`TfVrTQ&UqmI%*1 z`S3+RMa`U<-Angu(469DY;1f#+S5OE`7fux9~{+}GPGEg>4+My{HdLqXS7)>BI={L z@%6|#Gj0Et{f*tOe@bdG>)wS?la?lB?(lJZ6rDOVTj_!@|2MTAw_;YW4Vz`U{^eHH ziAowT_Qx!V5DNa;e>LQ+?K@}tI2*0h>1%r5+w&{%Emq5!=Ko0d*`(V#bVi|W%g zG1GUyK6#*}z4H6d)B8@;f*Dh&&#G-+p8vpF5p#gU}WKN`1^gomDSIp%;(SIYcteJ zblx1f156jHC9V-A$wjG&C8@e8K!U-@z`#=1&`{UVEX2sj%Fw{d#7x(~+{(aUnZxd< zFbyD;RuEl44Tc7~20#slAqHkvriNCAPz`Yxi=Uuq$jwj5OsmALLBHp81WG~j^en4qbPG)j^N`7u)W}f}uSLb2Y zL2QD1$W+(BLf6PL1n3VF1E5!Qfetk=SW%w37N|iIWL7 u^73-Mw8UHp(o4?I)z3*x($55G)K3GNQLJC6>UtNbpTX1B&t;ucLK6VxL6*t@ literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/bj.png b/test/fixtures/stylesheets/compass/images/flag/bj.png new file mode 100644 index 0000000000000000000000000000000000000000..17398e417df9a9591a430fe9e483b0c74e109798 GIT binary patch literal 767 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/bo.png b/test/fixtures/stylesheets/compass/images/flag/bo.png new file mode 100644 index 0000000000000000000000000000000000000000..e56d84b2c0ed56e489196ad0370bd7cee02c0aeb GIT binary patch literal 797 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI4JY5_^G|uM++O85w6j*cfugRyGE4kU4 z9vJRv-?+1aQ_$J)GoPB=p=yclMxA{5$KmyC#@cLVuEAIDmN5g+NG+k*YD4G?5_6x zdc)5tu2*)H9d_H0b#0C4=4THd-u)?g>}~cPo7l77+E;p`%zXX}ndLltc<=1`atRKp z?OClmQV+dz=1M!<*2x#xB)Bj^yJc-r>5cMywZz4TgpP?nTv~bYeT$}WmGaWfr`^`c z$y`6LeQdVzy-%NN=SgZMSr|vYOVOUzHUIIaw>^xG7c=LC7#5iriss(%dwpYTA_wIUxW@TzldoJ-UaGs N@O1TaS?83{1OTx18*u;t literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/br.png b/test/fixtures/stylesheets/compass/images/flag/br.png new file mode 100644 index 0000000000000000000000000000000000000000..2c8b73e553086744334ed4629634d474954fb743 GIT binary patch literal 942 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJXdb&74>a3H9B+ z_P^|bmF1khSzcWduBngSxG+5Ukk5U8>s873GCp^!@1$<{kp2Fy&yoPutT*Ss{{Q{p zUDlGq^UJneS$+6$^5rmrUk;y-U+!*~tC{-xDoLcBN+H`bH5>rL^ahCZB)N@vhMO-`Wf5c0XUF%vfJp`1AF(gX^k4UafZIeiu%$$TPJdsy?warYUL`;(9EPP zhFu#r=We{5aeK?6$@@P!>pMOwT{j&Vi>f8A5hck*sfi`2x+y?{!N|bCQrFN>*U&7) z$jHjjz{%(#R)*#f4L_Du1fXch z%}>cptHiCL^Y?)_Kn+G9C;4P1r{)!>GGvsL6jq^4vh>g5-u>w|du z0i{VfnaS}f`MHUidG>!_orhTmu?g-WQ(XfKT_ej7pg&9ufL_rBI@G{mMS1F4paw~h zb;0>*CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5Xq#=q*i;`0r+#G!&NWm>9Fs_FJ N22WQ%mvv4FO#lJFaoGR> literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/bs.png b/test/fixtures/stylesheets/compass/images/flag/bs.png new file mode 100644 index 0000000000000000000000000000000000000000..ffc2fa81b0c629c6ccc5efe33381a83298b4c7fd GIT binary patch literal 847 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ-JY5_^G|q=k)X%?MDATh3Z2w=+sFQ~_ zl_+pnG%2cZocO}j^o8||&quztgCDi7?PU=%sgm<&Em?FzSFvRN?)S2b_OlsGcaM2@ z#Q4BR!*l00Y;C>D#gOB{pzt;4yF#Lc3`2$e?1wK-?B1;wt+e2#R|@w6-PxRz&rhE& z%W!6Y?AhnJR=MTx3y)5_kT73wxy-G}Z>>M9U`|-BTleD6pS!1@b}!dm=VJKSD~nm? z$A_w~OPMc3O7 zbrY5(^|o2fE!q^nvhM5s_QuRaj)s)bOcT4>==JkLLo#Q7Q%h96#3jq%dFS@ylPB9x zHvbAuz5H|b#vDuj&40J-OCCLX4Mkch?3-@)Wnih-4r0fU}RumscUGc zYiJf?WMpM%U}a*aYhZ3=V6e<#_fwb#kV-3vE}#ZO16>242Ez~oGb>X=D?@XLh9Ao+ z0#G#M=BH$)RpQpr`TM{dpavt5lYBChQ}c>b88S*r3as??Q}gu7GqW=bQd2S$_413- z^+7!SfYPL#%;fl#{M^LMJo~?|&cm#O*aY{Gsjh*Au90O3&>toSK(FWm9co~(qC9mi zP=h4My5Rh@lJdl&R0hYC{G?O`&)mfH)S%SFl*+=BsWw1G(hxh*5iMbG@mzra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJndAc};Xq?YIwLkw%q0I4*&%amC-~H{< zx28Ks`=_|69y%cZfInfA1TP!sOL+yc$p!|ci+Cb-D`d8uRA6fs=x$uXX4z@7_jT<0 z=llNF+?)UXv_jIy6U8-Rlee=R{&~8PUD@P=(E1M@&E_8(>=js)W%e_2xc8+`Ja{D{ zWQ&0P>J2_xi(ZD_s@x@J!w~eR(P-XMmdLZh`|?+=5?Nh%bGO;6W9ME?zqRpj+;Wzd ze|P7JF4|_#$F_Jz(cR>WardHrN51Ktd!b|9+nO zes=WS)7!TQPZbs@2$(i0MP!*)X?j@aIkTKj_#Ka#a+dYC-t|Ci(W zt%}O8bk6MS1xA}{iEBhja#3nxNvduNkYF$}FtF4$G}JXT3o$aXGBmI3VtQ&&YGO)d;mK4Rpdx9AqSB(|R0cOkUkFlg%SlXE@J!CnD-Jy`vKOe#1feWG zG{^_$`ttH}y|lz!2+~W=&(+UKOw!K;Y1B^xno+D@sOowbsGq^p)z4*}Q$iB}a2|1I literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/bv.png b/test/fixtures/stylesheets/compass/images/flag/bv.png new file mode 100644 index 0000000000000000000000000000000000000000..29aaa169175a0e86f0826c900e945578435102b1 GIT binary patch literal 858 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHNJzX3_G|rb!+?y2=DAIa;=l5F?9&Hzs zCiQffX&$-c_CfWHj>`t_WgRy>=P5MtCrnn#O*j$E!6>R&c1+M@hEfbiX3@1<)sc53 zH(XdB@g`|={f|@pIy-XX>wi5h`u}fFuCNEgfq)n5-!Sx)-DBAB_uJ1b&D1|xw-r66 z>CD9I9{l;qeIQc*_N?=|O+J^FL~afX-*)+B67!)jh7KQwFw>`An`fDN zUZ0iX%=O}$vX|yzPp;c>mNS0FPYE*9)ARcMzEB(LufFZ70;u=wsT$GwvlB$~m zBp8eg3@mjG4RsC8LX3>83=OPI%ybRRtqcs7IqZH4(*ROw14$<&qSw#SfhTQy=%(P0}8ajU;cmvd61agv3W^!s?aVkSbNlAf~zJ6++UU_DA zW;)<_K`4t44f27xzP!9#FD)?_g7lK}bMSyqD^>bP0l+XkKTKYiq literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/bw.png b/test/fixtures/stylesheets/compass/images/flag/bw.png new file mode 100644 index 0000000000000000000000000000000000000000..b273c857416a766bdfd0a283c8cc1ddf48cc54ff GIT binary patch literal 783 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ(JY5_^G|txsZuDB5C@`njzAJ%a&Vsp( z%pZ9_vn0LjzQcUu#*$!pMPG#oS@9hWPB-S}AA4l1Sl$tQM(@qL4QGyg-TYrjc1qBK z2~DaV3mg*fGasIRGK1*svuQSR->2u4{}U427^BC0Ajd3vZJ0`=PMCXIXzDw!P~YX3f7aMBC`5<8 z<^T0#{?{}67!nvRNO`6`^|LpA9Z;>$sBrD|*A%0l|9;!`b{tJIoU?z<-Fpv8UkmZs zzVz9-EB4S;%{tqE5)LO9cR$Wko#nVtWN)UE@vOxsnH*T83=OPI%ybRRtqcs7 zIqZH4(*ROw14$<&qSq0n%u!h|Hl+3hB+!{K6A9w?_ z!3g9epUmXcyy8@bjFOT9D}DXcJiYSF?977Hl*~lE{GxPy5Klj#G$|)DIX)#nH!(BM z{_m^vF!w=hf_unR*T6#8$T9@z4-*5RS9F06H85CFp1KyOK@wzLaDG}zd16s2gJVj5 zQmTSyZen_BP-ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kISJY5_^G|v0>ZOjTu6lmSQw|e8bQta+*`i>-CX0({YUqnOtX;T zJ5zI5akpN7-=}Y8igF$o4%@$2&}#ap@xFoQg7=oz-km`m9{h(c%YL8osWE@u`s{1j zd3i-UQ+BE-Ej{QyGiX|xrti1!+*i(|?Yvn~wQIMT_xFz>)0QzhXa!8Y+O=By-1%T9 zyEm6|Lh^U(Fq(e0jGcb`xblO?`vrHmtKQ)bSrb-SIaB=oJFYvG_ut>qIosw{TKP$5 zf6Y6;dGhmibVYh3az#$;(o9K|3;KB6`2VkIt7?8l+}m@nuHwGm+PSOdMj5Zl*NP6m z=CgL?+O=0h4=TUfWS)LGWPO~@JiR?F?IBB)^w&)g|Nf<;qvu4z=_S8^zJ8zd{&#;q zyFR~xK|vX#!40Rx8UORmOQ+rUQ#}9-WYrSah?3-@)Wnih-4r0fU}RumscUGcYiJf? zWMpM%U}a*aYhZ3=V6e<#_fwb#kV-3vE}#ZO16>242Ez~oGb>X=D?@XLh9Ao+0#G#M z=BH$)RpQpr`TM{dpavt5lYBChQ}c>b88S*r3as??Q}gu7GqW=bQd2S$_413-^+7!S zfYPL#%;fl#{M^LMJo~?|&cm#O*aY{Gsjh*Au90O3&>toSK(FWm9co~(qC9miP=h4M zy5Rh@lJdl&R0hYC{G?O`&)mfH)S%SFl*+=BsWw1G(hxh*5iMbG@mzra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIsc)B=-Xq*q7xIcSxqDbrc-(RyQW!-Y| zRdI6KxYSCcNhIcvqq<{ZNkLK3xA=krL6(p91;WSQH3huYVAZy|*|hE2jV+#&)m~2j zKCgPcv&NNnW7&#j>OCLiSvXP{8t#0|JkBg&u>0eqn~@A`=0`Q+Pw=-b=MLVA4{j~3c>;q_IP9a9(z zn6Dn4z*76A;_JJoFOM!MJebx671Q+R*1pfcCc3(yQ)X1ve zziL8mzxZP@Cv$Dh4#|}h-MksRCpK~gx+EQV@^y9eclmW^pIEE#3EZ=dzjd?yLPlp6 z!-S-AbDs02%jUFPcV%9HQaJvI@8jU=6wXDVb@NxHWYC zKJW%;gAvF{KAFj>dBv#=86_nJR{Hv>d3xoU*_j2YDVd3S`9J&%r>mdKI;Vst E0M5E;x&QzG literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ca.png b/test/fixtures/stylesheets/compass/images/flag/ca.png new file mode 100644 index 0000000000000000000000000000000000000000..fa22e45a152a72fdb4972e93ae94279b75e3110d GIT binary patch literal 930 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHBdb&7!{|s5}(gsX2!)vrvLrq~H5EIYG#ym+S z`Lcwo;ZD!1m!@w2_C410(wzN!>z*2{VtjSJyQXsA#>ty%KZn)I?W+lta5j>Y&#q5; zf2Xg(IVf$Z$`Ti&HT&3lkDipe_&=_$&@$YA+r`qGS9lB={gPeIi6nBU+%A8AHzT1f zd0Oee4>Bzd5X_=?7Xr~sXKR@5D^YeW| z{maXIVxP~Ebkb9H5qfaxD1VoM%h$M2&slMuZ;x*aU%aa5+^SXkF2`-qbUmQz&^+Vi zk!R;5Hg|^lZs%Fqu=Scm@V(vfKF_o~8H;%|CN#t!=)HQX`oI2%w2l*1<=fdc7#`@0 zZ8W;Ow)XH*V9cqOxJHyD7o{ear0S*s2?iqr14~^)LtR6&5F;ZiLjx-lGhG97D+7aN z4!fViG=NlEL39B%7#ipr05uqf7?@d^8d@2eLp1zYRuO=rAvZrIGp!Q0hR)vy-T*Zi zft=)%nVgzeoXU_YHHB>hZ~M*TFP8O8dAs;+l|`WZZ3{an^LB{Ts5LI_}c literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/catalonia.png b/test/fixtures/stylesheets/compass/images/flag/catalonia.png new file mode 100644 index 0000000000000000000000000000000000000000..85082e1aa2b15e6660aa0bf4c54d2cde2e1eb31b GIT binary patch literal 793 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQk(@Ik;OpT1B~5HX4`=T%L*LR zfize(!`BaKkqius8lEnWAsXj>C+_uP4isoTe{6O}hmgtP znp<~^km#E=u021dd%T-DGkN3glYWI3JmvdlS_j|wEB9)Gh@fw2xu%pV>Dm=J&2`c3=pC}l|9vdjV|%nl zXL`gVRjXMP=ld?t^rVkVTgg5m8qeXAyh-$#o{L@8glbf zGSez?YtZjG9Rbu}1agv3W^!s?aVkSbNlAf~zJ6++UU_DAW0>w@#sO3D+9 zQW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%NkbHs7A2=LxHV*Nr@*SkRd44$rjF6*2U FngB|A9!dZJ literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/cc.png b/test/fixtures/stylesheets/compass/images/flag/cc.png new file mode 100644 index 0000000000000000000000000000000000000000..ecf92ff0547b7bc8d0a11fe97c25fc56d31a3648 GIT binary patch literal 952 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ1d%8G=Xq@*A+MgZFD6wbHo+X`I_atyD zUYZspP@3b?W%Yw!q@C}s$Xlh3rpdGYSP$wpClnSGim=Mg`C}Q;)z!SMSu|VIZ0WIM zZQpNQf4}d2HQ&agk1g_cK7ChYG5@&Tl?M$>o0iA&F?TmGXgV>RUw40|#XiyPUB>f& zpNVBQHa875FO}AOA0w4#|0D3%4oRE67daSxc+|w@Mf*anxBKh**h*?n2@-v8@zU%0 zqF0~Z|8UlpSQRo+iGgjC(D~kNuWdc2ZJaRO?@_t`y1VPmk6MKORaSZ*-6-Mj!pWj& zb@1`heJ5`Pg~iPC?0yY`|F|C zQ*SNX5%@Cd+{b6rSBTf_2(qX-k~Y2j(WfHi7yrYKF)>-_JkFZ5HP|~g!{YHHB>hZ~M*TFP X8O8dAs;+l|`WZZ3{an^LB{Ts5{UB}f literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/cd.png b/test/fixtures/stylesheets/compass/images/flag/cd.png new file mode 100644 index 0000000000000000000000000000000000000000..369769c31d3d69b14931e23898e02c493b929415 GIT binary patch literal 924 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQk(@Ik;OpT1B~5HX4`=T%L*LR zfize(!`BaKkqiust36#DLp08pUf7!*oG5ejv@bY?yKW_SL*#geA( zbX)mz1x;Vv8JquJ-ug?Df!(RCn|JyH8P6Wo{BK`U%Z?hlI6OUY$1u<4{{FR}-c~Re zJ@I{(dgAq)KJ|9%ESNMK9&wzsmmo$>*jQ z{?5Lm6&-TNntkHc&Dnp|H~E-Z{C)6RGg9gO`nPkWUhO)!AYZp-UVZSk*1|tIlOI<@lT|=`FBO@zA11l3VT?2C~1A}D_yPv`| zfK*yRbOALO8t57TH5i5%m|2+`S{a%{H2hdr5rCp0H$NpatrE9}&ff>#05uqaoaB?4 zoSIjh%8*e~QedU8pPHvvo|&ClkeZU2sFz=qt`Fkr2b3n|WG2U_Y%F^fN&k_0xc66zdnNy50rqXYh3Ob6Mw<&;$TC*=n!= literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/cf.png b/test/fixtures/stylesheets/compass/images/flag/cf.png new file mode 100644 index 0000000000000000000000000000000000000000..380455ac76460ef6e58db34917512e6dfd5721cf GIT binary patch literal 912 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ*JzX3_G|u~;viAsOlxX|-{Z8?lGVNXS z4nET2&AcSym~DFHRlwS-Paa&bpT675WwNgB!zXVZOcIER-K@&7%U4lEBg18Op?~xJ z?|bjxPH^1+wsHB3n7f+0zs_EIZ|-yZ3r*>p4z53M%k+5qH^XThhlEsg5(B5+{Wy1P z@5+@+|7K^umX|YLs640Ydx)TZzE6c_kWXdDsi*1pSE+1k`~2NXKW=~Rl-5fVr<9dH z{r9(s?digVsuwk}3mgjzJ`@)fHL)}-5@2wcHGA^TZDwEnmvt?Y;Ij{HVAk;VXj1T) zbS7ope+DK4soqts-?_W5i}UyMX&RjjGkUym=AH2U>)ecbMU)rkUH|L2Un++$P5<0G z)9PtrJpSdkn2Tqwt%)(5by@f9%gc9PrY&A6P_Xl&(&5Z$c_uSY|9$WK`4sa(qXMST zdb#iEkG5BzGM>9(%E_3t^?8<;Cr|q%a=xeVC+Di&>V-@BR;pV%oK!u|>VD+yJa5HT zmj;IOcU?B_?G59e%Xcexjvcqa%m+L|C-ff_3eB|m#y)9d%z}*T*P4Lwq*~${QIcGg znpl#mn*t;lj0_Acbqx)54b4J~jI0a|tW3;w4a}_!43;_UehSk7QfURz1=L_@plbls zU>IUxW@TzldoJ-UaGs@O1TaS?83{1OUa2T&n;8 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/cg.png b/test/fixtures/stylesheets/compass/images/flag/cg.png new file mode 100644 index 0000000000000000000000000000000000000000..684ce2dc8d15b1fc0e6781c31e523a09211e5af7 GIT binary patch literal 838 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kH{JzX3_G|uNv+~_xjQK03yc|D_Axd02F zuTBkfm6lXbYt+S9*E3tUO`p?hC}!8#pHRfhs^Z|-tG^(Bfxp73yXW5Y9X-!4=C|zT zli4?Yw;c?3*b)A9al@grlLIwZiG_AgdaWGAu{qtCp;ar~s`X3=bFci$*rmF&x78eb z{duw&!vpz0GtaGAGIOfg{dWcBt)W{E^PRtWX1>@528V+$L;O#FOzW=Zw=T(S?>{{M zPzs|i*UJ#kXz)V^gpOQ)WKy6@DGSvennD!j2PaNN(Ye@JD?Zr&hG ztv<7_NjF3<^Tl6!e`x%{5dYULF?^$_0+cxXhq0{3s!sJR_tQ*?And(Jd#`u&ej&%b)B%q@^5 z-}-;Y<@i;NX=O*OswIJ;t6Jh3QIcGgnpl#mn*t;lj0_Acbqx)54b4J~jI0a|tW3;w z4a}_!43;_UehSk7QfURz1=L_@plblsU>IUxW@TzldoJ-UaGs@O1TaS?83{ F1OS3kFXaFL literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ch.png b/test/fixtures/stylesheets/compass/images/flag/ch.png new file mode 100644 index 0000000000000000000000000000000000000000..2c16c9c5e77c76f85659e904190abee8cab6af1a GIT binary patch literal 707 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1SHkYJtzcHEa{HEjtmUzPnffIy#(?(3p^r= zfwTu0yPeFo0|}NDIHm(>ux^Gq52r8!Ifp!5977~7hfdg=d)PswdB1lar|7K1!4h%@ zTsO5n47^jxo;oI7VsL3iVeSN8(D>#>$&ON{5_19ZRE_&NDy0d-oZG+xL%OkjTC~>qFW( zlaoFD{wh`4pL=$n5jyoLf1k~|ou9;Ynol-aDNcU}^o?qXYeY$MQEFmIs%{F9U@$T; zu+%j))HO5Ewlp@FUeP=jHJfti)5p_QRI zM8l6|6#*z3a`RI%(<*Um==^=)4N!v-$Von#$*Fn8sSFtG~j^en4qbPG)j^N`7u)W}f}uSLb2YL2QD1$W+(BLf6PL1n3VF1E5!Qfetk= zSW%w37N|iIWL7^73-Mw8UHp(o4?I)z3*x($55G)K3GN WQLJC6>UtNbpTX1B&t;ucLK6UuLiWJ` literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ci.png b/test/fixtures/stylesheets/compass/images/flag/ci.png new file mode 100644 index 0000000000000000000000000000000000000000..4b55ff8a025288789d656420f60f388a45342a54 GIT binary patch literal 762 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft;V7E{-7@=UXQl`Z*;EwCr!!&r0G^-MC=k z=0_s;nv`!uRWe(zcY4a%Q?4-Wo0rO@`to$0iU5s^nQ7fW%hYe4>)*iYpb>e$u0ds^ zapor@#|aY*7Cjfvd&lTK*HkY4R>R)yN53k`KIA$6sq*G!=5Nn885})YT;2e>2BV2dxtQ-hN)puy}v#m z3ebEhv(9blYFXAp6HgWK9q?SLy`tb~pn~j5FYyc6r#(&{ovM9;sbSsg8`))c+Tklt zxh}qaXQ8Rr7T4%|@^Qw+-(TJ}sGp_GAmsOxO=3yeoF|EjpkPuhag8WRE=o--N!3jO z5)4KL29~;phPsAkAx1`4h6Yw9X1WIERt5&k9Ckm2X#lCTg6INjFf`CL0BSG{F)*_- zHMBA`hiLe*tRetKLvDUbW?Cg~4V}Laya8%30y)ViGdVS{IF%uzq@=(~Uq3ZZuRJq5 zvmiAkGf^+UC|w`K(+?<3%E?TQPsz_s%*?a@`|3Q*I*3hh51Hy3Sm+vAh5-FxVgU4t zF3_O{1}n-_*8(+2f~*V9Pb(=;EJ|f?Ovz75Rq)JBOiv9;O-!jQJeg_(R3r^iR9cjr z%HZbc3qcBQIf>~Cp2_)n#i8d#_5zieAe6<22Km5TUtV6WmzJ0dL3+vgx%xSYN&1-} bjrwUoGm7;KRbB4_^)q<7`njxgN@xNA*~$!@ literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ck.png b/test/fixtures/stylesheets/compass/images/flag/ck.png new file mode 100644 index 0000000000000000000000000000000000000000..5195a330597c76e32e1778c4a6d04d7efd4d0e6d GIT binary patch literal 951 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ1dAc};Xq?ZT=-YNe_if^G`*NPn?VpmR%`-Uv6ugk@@xQ zTweBHt6rWE%7u$trOZ}3 zC90qE)$nl)owxIo!;zSuS6|P(cc%Tl^iHiG8FNp(g6Zf1MGlWT&9!^kV;5y6{NOtyqS9kBD|PeD0GG2oDj8qza$Q@wq4oIU zuO_S(zGI8Ja^h z{8&~IfTAHcKP5A*61RrV-v{0RH5h@MS% z<*93d8YDs11?Q)glqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%UhA1j6N={{PbM%EE z1-G2UbOq1k{Ji4O^CEkJ%1jW-;zNUcV6HDOFV{;;%!MGmra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ3JzX3_G|rdy*m^k!3bgL8zAr4?t&lbO z(i%sXn66f{rc|+nr+z^@*`=cu&9*gp2)s$EQrfy!UzVsxjYH z@z9wYojZ%UZtQQG)EPHlHcsY!xg2|B(c(A<27W~mSHa{jqP}XAI|?g{8j9<-eE()x zFMl>Ma((UbGfD-&O-{TkKd&5ky(fR#%&Aw(j_)chwhwXNo;~ZbniPXqT>PW-y%Ohj zs!hCmclj^pTb)0>Sz_&de#wmOd#@LJcI@i#{-iQ*lDBH|YSTAm-pvY+G#5rSt}IUxW@TzldoJ-UaGs@O1TaS?83{1OQdC3kd)K literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/cm.png b/test/fixtures/stylesheets/compass/images/flag/cm.png new file mode 100644 index 0000000000000000000000000000000000000000..a3208d65f4bdaeccea2925fd9544daa2a17e8618 GIT binary patch literal 804 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIqJzX3_G|q=kH0+wfDAK&Y{!e(o_6&SJ&zn6@_C}m}vp_M`j^pH^@EwnrOr2f6hautI zJ>%m1h?^U0_p+)P&#v5+`^~p{qx_B8?x$LXRsFWyj$OaTq3&J2^Lu7}(nUDDa- z|DA_h{(-p!&xgO#>;LVQeD83=OPI%ybRRtqcs7IqZH4(*ROw1 z4$<&qSw#SfhTQy=%(P0}8ajU;cmvd61agv3W^!s?aVkSbNlAf~zJ6++UU_DAW;)<_K`4t44f27xzP!9#FD)?_g7lK}bMSyqD^>bP0l+XkKjPogQ literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/cn.png b/test/fixtures/stylesheets/compass/images/flag/cn.png new file mode 100644 index 0000000000000000000000000000000000000000..dec0f326bffbd7dadae17cd9e80d310339d09997 GIT binary patch literal 805 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHTqm}w7pocJhDU6zno!e!-A^AiIZY0yGm<{ z|4n!x_wJ?Mg3mXqQleLUeUq_@=^umDx?+ROmStaofu~yH8c~v5l$uzQs+$5N7>o=I zEOiYHbq&ozjEt-d4XjMebPdd{3=Ebz?0yQ<08(iM(FN3CXrOBV)LI)5K{1Jqyya*|JGa%x_2Dnmv|Nr9EVerldxd1iKIL2627 zqF#Pcx;}`fA5fZm^)p?k85S!p0GSxM(&^59Q0s6zl0O%E6phFD| zR+Oi%1!|B4Sr?q2R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGSvpCNE)K3v?w{1!OhVZ zf)w0x64Mntlk@Y6L(hxs1u8Q^D2opb@`1U&yu4g5Eio5@^pf*)^>Y%F^fN&k_0xc6 W6zdnNy50rqXYh3Ob6Mw<&;$U9SsiKs literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/co.png b/test/fixtures/stylesheets/compass/images/flag/co.png new file mode 100644 index 0000000000000000000000000000000000000000..8584ca4c7e1c60d5f6de31e3bf0061c5e4183d16 GIT binary patch literal 786 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kG^JzX3_G|s2?ZCuxvD9|#$U*CPPqLPSE zk)Ffbd0Vv17nEr#UCeHA^L*Ulv@qz`+cVaSf1IB$lcP3SeYf@OyLI~%A8vATDq{Mt zenU9VzK(Cog$to#h1ri59qWzSzN_MI7W;y$<-1N~xrQ$eQ=gwEm1{0{?TPtHu-D|dJI z$8S%6&t*0%J8oO)c09s;u6DbEHG5rmd~@rW8HPbm`}D1izL_y^sDCwi_x$;<9%Y+K zhMwXHGMU(yAA0K3&7VKr?cSsp+-=YP{{G54pIVvqUhc=vc}?HVXP)?*i7i1v;DhLY z_XF}98nO>6zuEd07*eVwt`Q~4MX8A;sk$jZg2BkZz*5)HP}k5b#K_3X(7?*XOxM8N z%D`Zm!|tar4Iq_P5M4kGh6cI@Kn;c=24+^KhE|5=5Dh<;RRo}D$jwj5OsmALq4W2F zH$V+WASd}`Ca2~Vr!r)eloVL$>!;@Fm1kyW7Nn+RChFxErR#%u`T?a$Iho1vDfzjH znR)hqU!8|p2eAq6AyZug3tc125THLy41iwI1v=EgU`2WATA&6=kafZNX(i=}MX3yq zDfvmM3ZA)%>8U}fi7AzZCsS>JiliZmN{f8UZ64) zgtGY1ARn0P%gf94(h_qaNG~}*S3f5)Nk0>$Q9li6MzMaOs_R{#eg;ohKbLh*2~7YR CT^t|) literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/cr.png b/test/fixtures/stylesheets/compass/images/flag/cr.png new file mode 100644 index 0000000000000000000000000000000000000000..cd207131ae9afba4dc00fe9c951b0fdd2171bb8c GIT binary patch literal 805 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHz7Y|@qH`p;f;(DwjfhFtq`Pw^yXU(cO_Y$h5!*Jm?JXyhw?{`4 z>lOWDUd#dQy%&!@UC1cC$#uHQ%8W}(CMB&rqBXxy|JETnrVWe|4Y>#EFaExE>vhe& zM6<*9=IyuBJ-jJwiOx-?%u7MHZ}i-r{f*&G&+(d?lBt_wUizeHU6Sl7NLzpS?%m(J zcl$APoeP=zyOkq--E)zL9I1S(SW1|V1Wh%X^VBEZ;?wuHOVhYA@-Lsv`0pV9zV<@g z)>FAcOH#U<*REaudGoie5haHgE`8dabNknS)dgF>{rPmMVe-kVg5FEIw7Np3X>5uS z(md&UbKkr^>4H63g|W|X{S)C4QAqf}YxKRkyg<_a6EN^pOI#yLl8aIkOHy@HfCPh) zfq|v2p`os!S%{I5m7#%^iJ7i}xs`#zGKbwyVH!XxtsuI98Vn6|4S*U9Lk!HUObx9J z%^@0oEUO4W(U6;;l9^VCTSMpX18;yDj6hEE$xKeoD^6v|C@Cqh($`PT(<{%+&MZhx z$xPJCFG|-3@$>^qlX5bX<5Ti;6EpMd|Gqj8vkqbt+(V|i1{S(TmLWiYm>2-Pq6>7W zfx(LM)U`kjk|67X^V3So6N^$A98>a>QWZRN6Vp?JQWH}u3s0un02N6?6qObwr!u%X z`a+O`TTWuSf@gAmUUBGok-b1=CJ1Hmp+P<{*O!-<>!l^;LXci^ey)B_Vv>F)NTYrl X(2QdJLRHthK>ZA!u6{1-oD!Mra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHjJY5_^G|tyfwDoch6lr<>O50__#63!` zyG$5wH%J%wYHn(pGA&QJ*ZPFmB(2a{0^0v4SQ|f&*t2KBB0l-UcXrNUo*vy${ean> zb-}&;LDl(E4@&L!GYd=<%v>%~=AqdtG3DrjrY}W5FEB73$@`wPTsGyFS~Jh3HS0>& zs@Y1#GQK}sQe`|dX8YUJl&Fino{CFzHT|}{J^J`@?#H_LTVf7rN)u1)5AmwJmow|# z#@JG>{aj01t|%=KX0wc}Mk#c++f?pLzX{N>>(rZ3=IqBk&s@i=~Ps_NC zPOdS{wrvYmb~;wUvw-tK&!K`DDk&Wb+?$H|UfC2@ zej6A-swJ)wCCNppi6yDJDL{h3$iTo-*U(Vc&@9Br$jZ>b%EV09z}(8fV41`2r!Wm5 zl~xd4Kn;clx&}ZEh9L%KR;Gqlh87SFeD64RqG-s?PsvQH#I2!z^9EL+1|yJ@d@_?$ z^NLd$GD=Dctn~F$^YqFyvoi})Q!*3v@{7{-K|K9{(xjZsohY z1ox1su7QQFk!1+bA0`Gsujm3DYGAOUJasKlgCxkh;QX|b^2DN42FH~Aq*MjZ+{EJ&%r>mdKI;Vst0OB7HKL7v# literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/cu.png b/test/fixtures/stylesheets/compass/images/flag/cu.png new file mode 100644 index 0000000000000000000000000000000000000000..40f26a6727d68a2a8358b0afda1d1c70383288a0 GIT binary patch literal 905 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHlJY5_^G|uNvJm?*gD01|?`93vS_k{*i zG9m>hp4M?<5qB175m0m#xa2m`EH_*7$+}iSQ7%D|zpRTQe)8Y2Q#uhV*z?3jvi9@c z&vS1-vW+ga{C+$(=3Qg);qnJ}zOY}Jt-+_zz|yMWA~&(a#Zg4?YgL)p3HAN^_8V+A zuekJd(&iMQr%NWKluVxS<=MgI8~Azb>ZbhvV_H*xZk->~yQ1=tx9aI*Pn4as4>|i za#h7Im;bxlvu8G}xq9eF#r%&qK7G3KUjJuW`PV242Ez~oGb>X= zD?ez3>hUQ1y=g{sd;+knc0~I zsVSL>dih1^`XHWuKxtA=W^#N=er{rBp8elf=V8`CY=V2pRM)^l*T^yi=noSEpjUK( z4mB`XQJ%UMs6i5BU2uL{NqJ&XDuZK6ep0G}XKrG8YEWuoN@d~6R2!foX^5iIqU2Nt zH%DIxQgF*jOjqzs&d)0jJuk8ssLTYREIu^I2j=?n@^Zbj#9Ro{OU}>L&q++u&je}I ZPXn4!tY4_=dKajl!PC{xWt~$(69Bu5RJ#BG literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/cv.png b/test/fixtures/stylesheets/compass/images/flag/cv.png new file mode 100644 index 0000000000000000000000000000000000000000..1e7dcd500cd074d079fe3cb38ab2575a7e5c0d2c GIT binary patch literal 901 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kH_JY5_^G|txs+Ivhb6tVsO+wL>}GiG7d zt;>0P1wSclbet=*)U~7Qfgne&p67Xf~1(R7g`( zQhE7%g5y8wNhUP@R z)9~UA*Go+1(`@rL=kh$xDsz>s@BFV{R_EvW=+>=_t*ei?VI%Q6>+sRACs9jR%f7o2 zZ7=FG=b!14#eMddS1DUvP+|DP(kKg%Xvob^$xN%nt)YJN23DX3BaoAPGLuvDic=XfN=gc>^z~Eo^vW}{GYe8vG86Uk zi_-N$JpF*uq@2v;_>}zI#LPVVzpu{2tb^DD_mHWsfrYM-WeCt8CI&#S=mH&TV6dV* zbuCbXB*?np{Irtt#G+IN$CUh}R0Yr6#Prml)Wnp^!jq{sKt<9JMWsc_sSIw8z7V9~ zmXnyS;F+ACR~&j?WG_&e2|`(XXpj%g_2uQ|dTEKd5Tuu!pR1pfn53Tx(x{&XG^1F* TP}TJ=P(OpGtDnm{r-UW|U7Sm# literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/cx.png b/test/fixtures/stylesheets/compass/images/flag/cx.png new file mode 100644 index 0000000000000000000000000000000000000000..40bf9f3f9e7e6b115d79a10b62a0b77bf3ec6f6b GIT binary patch literal 954 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIMdb&7)WJ-Zky5E2AsZjCmU31wYn)uPffM zGt+>3mE+aWSd|rQmK$A{*PS@?c_zmT2j#zi?*-oeeXnoNge$9ddJ24;_HxPQd7_-r z3p*Hg96s~)uHD~Fcl+#9_bpqObjYFbo`e8Dk0W2sgum(&S?-)U{q*0v60iEaXK%T~ zx2c|cQn79N^)e%~X?CCg$lSI3?yl#r#93h`-P;>FefryHYnzU|tSMitRkOi^e+l>8 z!?k}t%>FJe+NIL4aN(TD4kdZnwUa(xN=jSOUfxyMZe=U?Zn5S1YZ`h1OB#ZE-O~5! zH8<}}+L>?fRF=&e~tUUhV%YtgLLb|FQ4BPrG(5S~vSzZp^POQyAo?dR2>wg+0D8 z+gEumkCNa^CEhOYFX89!UTt2__0s8Sp(>L`((bbKHvMPEkMCc#O)j+6WBRJqWw$na zhgqjBSO4EUn@K9y;PyeG3tL4G*a+$WXPg{h>-5LD)B+fzswJ)wCCNppi6yDJDL{h3 z$iTo-*U(Vc&@9Br$jZ>b%EV09z}(8fV41`2r!Wm5l~xd4Kn;clx&}ZEh9L%KR;Gql zh87SFeD64RqG-s?PsvQH#I2!z^9EL+1|yJ@d@_?$^NLd$GD=Dctn~F$^YqFyvoi}) zQ!*3v@{7{-K|K9{(xjZsohY1ox1su7QQFk!1+bA0`Gsujm3D zYGAOUJasKlgCxkh;QX|b^2DN42FH~Aq*MjZ+{EJ&%r>mdKI;Vst0NU$nB>(^b literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/cy.png b/test/fixtures/stylesheets/compass/images/flag/cy.png new file mode 100644 index 0000000000000000000000000000000000000000..c975f51ac5dd2b49522bb2b883e429cfced0852d GIT binary patch literal 796 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI)JzX3_G|ra>ZuC2BAX3A(Y|4}fhZ_!$ zxEtn9Y~@_3EqtFT{(%1nZXF#DACI0;K_NE}NugV6fmZ|^pX^I6n7oTAuX0;y`L1d) z*T4zPX-Y|X$Mrolm%jh)!g3&sp*p**S;aHOxv4s0nV|zii@=#Tx|?UNQhX(G(KJnU zU);yK*6rR0&MZB%$(O(3lzYvc1@j(M_q-9i8@j@7+j++Gv!s%jyiMoL_{*SeYT(5F z;!Va$BcZ05s>bI0GcMk0E-w=aTUBl`r*Ho9%=+R$*DVvD)hIPAUR5LI`|axK z1QU*GYwq96R-O24!@*=8@kjE$>-Xi=>WSthtWF$jw|ZO-(R_OA&(=sKCc(_Ls>bP& zY4sO3Bp&{MQ13JQlohco31wT#fnlav;u=wsT$GwvlB$~mBp8eg3@mjG4RsC8LX3>8 z3=OPI%ybRRtqcs7IqZH4(*ROw10nxzsj$~Cp2_)n z#i8d#_5zieAe6<22Km5TUtV6WmzJ0dL3+vgx%xSYN&1-}jrwUoGm7;KRbB4_^)q<7 L`njxgN@xNA1)mYz literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/cz.png b/test/fixtures/stylesheets/compass/images/flag/cz.png new file mode 100644 index 0000000000000000000000000000000000000000..780400b4dd5fb94ada216271ec2f817beee3aa76 GIT binary patch literal 827 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI?JY5_^G|rb!+?X|`P~gb(eSbJJMEp89 zq`22#aTBd{rqqHR5|+{hH0x9LUM1Zt_@qg?)9#@ zk3Qb~dGflw^2USzr0w-`%%1F8xA1??&Cl(ZcR7hOURqalwXf~_e3zd;7rzW;oTQs^ zJH)fp_wdD)?`mx3-My!GGR1R(msY0H+(!=Msi?5=b$=OnBp42Ceg5O$)|U83=OPI%ybRRtqcs7IqZH4 z(*ROw10nxzsj$~Cp2_)n#i8d#_5zieAe6<22Km5T vUtV6WmzJ0dL3+vgx%xSYN&1-}jrwUoGm7;KRbB4_^)q<7`njxgN@xNA-up1V literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/de.png b/test/fixtures/stylesheets/compass/images/flag/de.png new file mode 100644 index 0000000000000000000000000000000000000000..25aa1a2764ead53fcac95bf78c8cd4d612316533 GIT binary patch literal 822 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kH%JzX3_G|rb!FkB_VDBzNvmVVGfM3}ig zYsCX|qmVOp882+>9_a4r*f8DT;+4f5Mt5WHhO%wWc*5Pa>_O;-(|7M$pW)+NzBcOU zHV%&eiOS!9|31&4;yLT(Oy%EPH!t5+soYs}_gX3Ihrh?qtM%_%rKPR?Ur12$QHmXa0=s#@m;yu1Q&DEV_~>UF%Twsz+z; zHJsHszu=T>`VOyf#W^c|-u`|#J2k<$;br~d(7u2pp|{J!{g$k@kx6(g{a|P9B=pOm%AZa+ymux?P^O#O~gjjjEh=n_k$OiQGBz^J-U=NtkZd zjB62FZprO_>-P1R^y#OkPqQYHHB>hZ~M*TFP8O8dAs;+l|`WZZ3{an^LB{Ts5NrNy1 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/dj.png b/test/fixtures/stylesheets/compass/images/flag/dj.png new file mode 100644 index 0000000000000000000000000000000000000000..55668b1256591e3aa2b846d2861507382af001c7 GIT binary patch literal 886 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kH#JzX3_G|v0>*n3}1lxSOj-_rg}vY4x{ zqR6EOtDK`Pq8HC!d~&_gEa&?R#KeV#R5Aryru}o+`QpMwjlQa$$G`2)*P5>oiMbPV z_~_j?H6Krxf2lXNV_U%@Bse9Y#ciRGmh0jGO{wh69Des2t0y0(GdegG-O>y?x8;d< zBfY`(qaEZbjbR>XekT*--U>9d!eSGz8_1jm!#=i{;b)Gmk!9#oH?YFn?S>27Yi?frGox1GL_t@3m zE82|aIA~`sIQaVD?75S_?>%=UB!AVau&V_zc^a2yo+=5-2>+$+J%74{13MEF3nOdE zTSkWi7WIrZm*bS<3Lm@y#)fK%YeY$MQEFmIs%{F9U@$T;u+%j))HO5Ewlp@FUeP=jHJfti)5p_QQpL<8SDj-4nPa`RI%(<*Um zsNcMS6{x`ogOaT>1Tp8>ZbwCDAq4jb-fGJ&*16m=d#Wz Gp$Pzg;8QsO literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/dk.png b/test/fixtures/stylesheets/compass/images/flag/dk.png new file mode 100644 index 0000000000000000000000000000000000000000..5f6606195b50aacc358eb8ef181cd063c30805a8 GIT binary patch literal 808 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJVJzX3_G|uM+S^F^u^33^O#?8{@(mEwc zI`4qv1BERYo`z`_cf=?%IXbcgO=DS7k;8v9dV)hwOvJzHH%3gIoSbvqpOo#MeO~y7 zG9SYWVT(u|1_j}nOQ%@Po_qKH)8otUxE_jKa%XZ)q+T^c!>5;$f?X4qblk9clBgf# zb}?mIifmhs?1Wj1JQ*fUnx;ENEqPX_&Jtfv!J_HbFD8Yo{#GsFIC-YWj7E`}4xJrA zT`Hby_ZVHBa$jR>-|pCcd3lzFPhZ-LXd3^{y?!S|{tLu5oe`}`p2UfOqkzb!EKM(_kpK6I~L`iZ{YGO&MZVHfK zFfuT()HO8JH8cw`GO{u>ure{zH88g_Fj(fW`zcHVNTn4-7f^$tfvy2igJFn)nU$%b zm7xVh1K&H2ohTY|^HVa@DsgM5-@JhpsKE&2B%jRW)V$(UhK!Pu0xNy})I7cN%|Ed8}R@D literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/dm.png b/test/fixtures/stylesheets/compass/images/flag/dm.png new file mode 100644 index 0000000000000000000000000000000000000000..71ca1d8aeead9c47999332227653baa6a6683137 GIT binary patch literal 964 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kH3d%8G=Xq*oXvdsuCl-ct=FgZt%<>;Z! zNBI0C*EDgJevEcm!N(_LB%&#%%q1nVQ0yXK|E{eT8WHU5YZsJFS}-2O*0R+k%Mmq?8F$#1Z4df+Q0b73Y^&|TR~}`{Y8C#! z`ROM9dHvQe7m}JgjArgVdA!m;lySz)g9#H(UYy=Oy=Z=P;=#84>%W_p+PwVy*wXlO z?f$s+)e_DhYc}4|*}Ta@?&mG5knDZdo`*T@ZB}2uzuoKZ!NtvLT7Pf<_AWfx?hxY9 zIn}dL>-D~z&+BVGz1EJFuj#PL3`%*T*}< zPqy|5hlU21ay7O~|L47VQG5Hw-xjN`W|e5(DzR2)_{ZQoSEq*|?zSf|ZdFTMBTABs zQWHy3byI)@gOP!OrLLi&uAy0ok&%_5ft87wu7SCgfx$9|-A`c}Kq{>ux_}xC4Rj5F z8Vo}W%&bfetqd(78u;FE>_pL!o1c=IR*73f{pJmGGvsL6jq^4vh>g5-u>w|du0i{VfnaS}f`MHUidG>!_orhTmu?g-WQ(XfKT_ej7 zpg&9ufL_rBI@G{mMS1F4paw~hb;0>*CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5X zq#=q*i;`0r+#G!&NWm>9Fs_FJ22WQ%mvv4FO#mL1ZmR$Q literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/do.png b/test/fixtures/stylesheets/compass/images/flag/do.png new file mode 100644 index 0000000000000000000000000000000000000000..7b815041c54762cfed9ededcc136b3de422d2489 GIT binary patch literal 824 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJNJzX3_G|ra>8fHyN6q)n>zI?Z6i$IUg z45i*jjC*=peP4x?SvI$-3p9y)Ouxsyq~oqvmSg1ZCujFacGoL!Ea-apaYiNc=VPzV zvdUdBI<=v`uKK^v?)U8NY&;4AMzJ9)ZdBQ}eD6XA*_sn5b z`SJ1fI`Puo)^pF~c`2<#nPO+F8gi2I`NH4;i^MLhM{WeK?isu>jJX# zXSf@!4SK3Ic_mk7(19244BaNFFnp@-$^5nVcCT(hMcK03w>LP= zv~rry&!^qXure{zH88g_Fj(fW`zcHV zNTn4-7f^$tfvy2igJFn)nU$%bm7xVh1K&H2ohTY|^HVa@DsgM5-@JhpsKE&2B%jRW z)V$(UhK!Pu0xNy})I7cN%?5gH>Cgo literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/dz.png b/test/fixtures/stylesheets/compass/images/flag/dz.png new file mode 100644 index 0000000000000000000000000000000000000000..7864df5ca5a3c9f25586b4028ff5ce65f4ae4e77 GIT binary patch literal 922 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI6db&7 zLA{=|-RI|g?~M}{5R~t9nc6z3NGa-{ZN2)I`_bUJ`*q9)?1gaV;l22boTU51sQYC{XfRQb;MaH?w#&LBSZDX ztmPlQGM}G&_D1Hyn*0po;vE${@q7Y}Qr&jUUVAG3eX98G!MrldnBfPr!E@h}eB2p3 zfib39;u=wsT$GwvlB$~mBp8eg3@mjG4RsC8LX3>83=OPI%ybRRtqcs7IqZH4(*ROw z10nxzsjstE3SVL}pN@iLmZVmODH?RV2FakNrCo?%U zuQ-(>PJF_4)B{NYkzbIWF#M2KbP0Gnkj!((YP0Y-*|NH7Z%zY4> z;2tv7HL%b%vJ3(G!^8mS6+HRkOWy5oS#-wo>-L1;Fyx1l&avFo0y&& zl$w}QS$Hzl2B=6HqNubeIhDc9(HDXg+;S4r6+Dyk^NK^yi|hp|GeIbe4-N8xxxT!- sTrVv#7lQPX^Kra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI~JY5_^G|uPt*?P@Q6lguae7!^-&nHhG9FJAP1j(qodZ7#m{hXv0P)7p+t*8jkJ zY|~r5%P-2zlbPFih0PdDe%ybwyq2M1f{sgvaIe!0fy6g0n;*~T&2Tud+VWuwXR=z0 zWJru*`_l98G7K2@dmo=FuyTgy!6g@OJxPnGagmFYoAG+4^mTR9Ex(^~-a3AFul)V} zfA{TMs?=?i>g5`!=PB}XlKHi8{%!iVzP^0+^v&U;^TUcxF6n+(a?(}QnEz|MaKfz* z30X3`edj^&!#La8`tKW^&~;Vs_U=CQWJZfure{zH88g_Fj(fW`zcHVNTn4-7f^$tfvy2igJFn) znU$%bm7xVh1K&H2ohTY|^HVa@DsgM5-@JhpsKE&2B%jRW)V$(UhK!Pu0xNy})I7cN z%|p)BnJQh literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ee.png b/test/fixtures/stylesheets/compass/images/flag/ee.png new file mode 100644 index 0000000000000000000000000000000000000000..ae4e1dbffe2ed95808d1301bef5723b1c6c3f0b5 GIT binary patch literal 755 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft*jCE{-7@=UXQldN~IQxSnrj*E^szHDV`= zxWc;Q*N(;RY*g6MprgnVe7kL?b-B*IpU0eR&PrE2kCRCIup{-TfSa3|%M1f`L8T)n zm#BUCRKk8^$L>2usjH(>MI*y3??(Rp^~G-btN!ykUYRYD-CmQL$p8eu7 zF*JKRZSAX7eVbMle|!?qKBsJ&ob;k6= z-`bV#I!p$QTAp1!#q};vQolzr_B{T$<7Un-=@ux_}xC4Rj5F8Vo}W%&bfetqd(7 z8u;FE>_pL!o1c=IR*73f{pJmGGvsL6jq^4vh z>g5-u>w|du0i{VfnaS}f`MHUidG>!_orhTmu?g-WQ(XfKT_ej7pg&9ufL_rBI@G{m zMS1F4paw~hb;0>*CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5Xq#=q*i;`0r+#G!& zNWm>9Fs_FJ22WQ%mvv4FO#q3z5vTwF literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/eg.png b/test/fixtures/stylesheets/compass/images/flag/eg.png new file mode 100644 index 0000000000000000000000000000000000000000..4cbfe4cc7ffd254d755a0204d85f4d8c04aab037 GIT binary patch literal 804 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIqJzX3_G|tcMSM+mE6li%~Zxf)hB1o&i zG-1^QnI`KAzpR9GRyq_h$cV3SENY8ez~!;vV2Hr4^KbYbi86WY%Tb$r@{L;by@n%g zf7ae#ET1_0z`Lia4CzXj1;Z>-I45~}dqy$+w3)q?f#>*RVI>*HOM+^?YA?Mur>#|( zeb|}t?YWbl#U(xW{ynQjDx9OgezvKNm{QkK!MpC^% zw-xQ|;qaW~F?asnTf27No;*czlG394@BNowW=gP;(--5Oq>{aM>$P(e-pp~)Y&-n0 z#x9?6f)o#%%F+qDT)kdxvA*9}|AF)0b-!efw~SW6uv0B@jVMVjN=+v@*1S zXyALtu@gl@ZhlH;S|x4`^_w@a0yP+coaB?4oSIjh%8*e~QedU8pPHvvo|&ClkeZU2 zsFz=qt`Fkr2b3n|WG2U_GE+97!W literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/eh.png b/test/fixtures/stylesheets/compass/images/flag/eh.png new file mode 100644 index 0000000000000000000000000000000000000000..cbd6b1e0b182cb2c66d0c88d99cc69fbe8e268e5 GIT binary patch literal 847 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ-JY5_^G|o@$vGtn6DADpf+FW6V!;dXD zADAVn?mQ58;F#JI4ly&$AlB2lm!7aWo)C1|#`B1gMbsraHfV;HqwpcUea7#tHLuNI z@?~aPS2|k-m+}He0~tQXkkGWWv{26}M#i39iy|%^fBEHT#uZkEAFp0jr@dm-($Msn zw5CIUvS)tfPxA}1{l{}}doexuzfy}??SD?r7iAx@3$ayOw|vM+Ogn7wX0fuo+^=WH zZr@hh&&&4rcJyQg#uBctKX`xtxnpe|7yrE^>-V|7f|jLBR-s=rZpTG`ezvUq`<;@U z@89{?rI)dsV4Btay1Q&&=&7=uX{T3dok=o&7RMjwb@tS${>hWs-f#Sx_WILx)yX<; zt|Ewlp@FUeP=jHJfti)5p_QQpL<8SDj-4nP za`RI%(<*UmsNcMS6{x`ogOaT>1Tp8>ZbwCDAq4jb-fGJ O&*16m=d#Wzp$P!9Uo*}C literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/england.png b/test/fixtures/stylesheets/compass/images/flag/england.png new file mode 100644 index 0000000000000000000000000000000000000000..65998bcf9397c680f7cdb2a513324e69855123f0 GIT binary patch literal 834 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHHJzX3_G|tCP+^gr3DA0D_-%h(@^PCj| zE=o~_%p%{cOrm;M7xGWp61{^#P&GP7>1I-@xtZY2x%10K(&x(DOX`}L{_k>%k)yN9 zkH25H?Dc){<1Mf2!TqNgx)w1A2!5XPbm`*P*|VlbM`vtZwD4fU1nm{el$B0o?)MMf z)x75Alu0w6)|aHNlv*@VNa`u$gfo9npT678{r}IB>IntUbKE8d{N1sWv*BF{|K^x! z=flG*YpQn_7AU-bzff#h$kMD8K`Axm?x9^5bX=x=`_AqVXK5R2Ynl1>?L@xfUBzaz zZEONc-~Oq&cTne!xVicD-FHo-dT+fgv#oV0u&RAqqEU3??X_^G2|=&ER?SQ)zN_US z*mc3y)Ql}5ZDxvZ_&t^_Wo0X7iHQYy?cY~vGFgVN{cQZHia!IUxW@TzqxEJJ|)Ftz}CMHlE$1A|Gk4Q>H7NP?^j&QB{TPb^Aha7@Wh zN>%X8O-xS>N=;0uEIgTN15_jpQB+!#oXX(l=nFv#ZaInR3ZBXNdBvgUMfL)fnIM$K zhX(n;Twh*Zu9udW3qg9x`MLTziAnmIAdUKIKr@Q<3sqh30`)U^y85}Sb4q9e0AQyu AG5`Po literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/er.png b/test/fixtures/stylesheets/compass/images/flag/er.png new file mode 100644 index 0000000000000000000000000000000000000000..9e48d4c51ec736a8843a389706bf06ec389e3501 GIT binary patch literal 954 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIMdb&7I=%-L|_ z<$a6vdC%+aT|PDSLv+k z-XfE^WMbUa$#GX##65p^cBe?k!^3BvZ8Yky-*B=cd;gcef_Cx~*LsL(i7Z@^X&TS^ zkby;2J~mw}^V{uDm9qDryolXxcD}#;=eAY(t9Hc+@P-((KC}_=4V;&`Vg5sd?e7hC zY6fk4GCA(frB2m<9Xld6hP!{gy(39lk3~TGdd_(h242Ez~oGb>X= zD?ez3>hUQ1y=g{sd;+knc0~I zsVSL>dih1^`XHWuKxtA=W^#N=er{rBp8elf=V8`CY=V2pRM)^l*T^yi=noSEpjUK( z4mB`XQJ%UMs6i5BU2uL{NqJ&XDuZK6ep0G}XKrG8YEWuoN@d~6R2!foX^5iIqU2Nt zH%DIxQgF*jOjqzs&d)0jJuk8ssLTYREIu^I2j=?n@^Zbj#9Ro{OU}>L&q++u&je}I ZPXn4!tY4_=dKajl!PC{xWt~$(699C|bL;>B literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/es.png b/test/fixtures/stylesheets/compass/images/flag/es.png new file mode 100644 index 0000000000000000000000000000000000000000..98a618739a7f2727cec484132b2b7a2351b5532e GIT binary patch literal 800 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJlJzX3_G|tyfT(Vk^+vgO>Ao$3E|j_eh-;(U4T)O6KvaY=8L z?x}76yIYItShB;+6d^_aLr?p5pZUT+y}VqP;nMkd7Xii1^O{$kT$MF7($dB!gENGM z@niW!eeSn!uV3u*RtsIpr`DVF(`PaR&L6h%k}T7yxAq6XET{?Ld>UcZ=Rg@EV7lHTbK7W@YRxCiBq*U`ONb9HAB9ifA{m! z+MBiW>!RzUayPLzdB5{}nNU(Xb+e?iuCqFG_2V{oOS^gg%X6KQ&mC+$^WgyR=A<@j z+q=Jyb$V#5e(V14`SHJdn98b%EV09z}(8fV41`2r!Wm5l~xd4Kn;clx&}ZEh9L%KR;Gqlh87SFeD64R zqG-s?PsvQH#I2!z^9EL+1|yJ@d@_?$^NLd$GD=Dctn~F$^YqFyvoi})Q!*3v@{7{- zK|K9{(xjZsohY1ox1su7QQFk!1+bA0`Gsujm3DYGAOUJasKl zgCxkh;QX|b^2DN42FH~Aq*MjZ+{EJ&%r>mdKI;Vst0IvZXK>z>% literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/et.png b/test/fixtures/stylesheets/compass/images/flag/et.png new file mode 100644 index 0000000000000000000000000000000000000000..c010f6c86e8de457ec5470f09ed0954e46419c36 GIT binary patch literal 901 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kH_JY5_^G|tC%Z_J*YC~@Td-%pa-V!T_t zq&POtZOQB7ll{Zb75nPRBc&Y{9Se4tSa9p*`T5;+DJT;y)Y6E^;`BPm5}Z7#uJV25 zyy6vIRe#!k7sed=rlpoVM}_C6faFYr0}Wg!9R9_M1tk4>`|qqfgOW&5|AvC?IS<8* z%6H9{KK!z#@ONS7D!ygs7dN(7vnW?@3fcC;aPGT}NoFa^C%+X5J9KV6Sd@G&Dea-4 znfkfdJ;AH5+9m~sw*O@ha$UaD^!)sztSaS8O2l7yv)!D${qDn@%*A)DEp~0O-f?M# z{Jq^(&ZmTeU-cYc&&|-_Jw>Bn)@$jv_YPiMHn*G;fDE&T(--WS^eb%MviKUYeY$MQEFmIs%{F9U@$T;u+%j) z)HO5Ewlp@FUeP=jHJfti)5p_QQpL<8SD zj-4nPa`RI%(<*UmsNcMS6{x`ogOaT>1Tp8>ZbwCDAq4j Sb-fGJ&*16m=d#Wzp$PyT5K6%S literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/europeanunion.png b/test/fixtures/stylesheets/compass/images/flag/europeanunion.png new file mode 100644 index 0000000000000000000000000000000000000000..ff4b8b4a1a7dc4ef1becd87458555d5f90502e70 GIT binary patch literal 859 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQk(@Ik;OpT1B~5HX4`=T%L*LR zfize(!`BaKkqiusS)MMAAsXj(C+y9-%qZiUpVT3^IIuvdEB=OK)65zsb;k=Q?=BQ| zoZ!bN>snAC(BdT`?^saqnb$?i>%ZuH+ zVkf;#t4RBN?(BQ*_0QF^ZPWGhCds^<@3dvI3ghvK4D;^R|1W%eM=RyytJ^bq zI7&|(WcO_OIQz3_V=}jb{=L}ACc-MWJdpYGw zohfBW=B%zo=IEOiYHbq&ozjEt-d4XjMebPdd{3=Ebz?0yQ<08(iM(FN3CXrOBV)LO9Okh)r-0nd=%D0i76PXl7+# zY-M5zao;a>QWZRN6Vp?JQWH}u3s0un02N6?6qObw zr!u%X`a+O`TTWuSf@gAmUUBGok-b1=CJ1Hmp+P<{*O!-<>!l^;LXci^ey)B_Vv>F) bNTYrl(2QdJLRHthK>ZA!u6{1-oD!Mra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kH&ZqL%fDY=J!WG$moCM}ZTb7) z*W78QuY8u4ypH#@w30giJcW5u$%=p$+wE#sHJ3g)loccg7C&rCJ0YK?Psc31sW zi*9{6n{s$dU{K1eGuF*z&*UT~-4yWETDfG}-GGZrbb3)xBvY7*81>a-7mgF3dMyFb%EV09z}(8fV41`2r!Wm5l~xd4Kn;clx&}ZEh9L%KR;Gql zhENT07mJ^uXvob^$xN%ntwF!%bOca?5y(kCnaQbn#ira@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJNJzX3_G|uNv+?zEeQK0pFP2HjvQ4uCC zPO(W!VO-m$#ksF@x|F5-(JP4Kni$&=FKcbqixW%)RT!N&xqjN0KF@RG=|^4s!Dr7m z8mss9oi|O7sQwno>)W<|cYk=^DUUOT49n9m7fyJ$)=wq$>guK@sOVDyFC1INyc~SDvnrS zc&e7TMwBEMr6!i7>ZSk*1|tIlOI<@lT|=`FBO@zA11l3VT?2C~1A}D_yPv`|fK*yR zbOALO8t57TH5i5%m|2+`S{YhEH1NIS*omScH$NpatrE9}`pp|yff|fJPV&i2PR%P$ zWymNgDX`MlPtDUS&&0>w@#sO3D+9QW+dm@{>{(JaZG%Q-e|y zQz{EjrrH1%NkbHs7A2=LxHV*Nr@*SkRd44$rjF6*2Ung9jyCcppy literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/fj.png b/test/fixtures/stylesheets/compass/images/flag/fj.png new file mode 100644 index 0000000000000000000000000000000000000000..4334dac11ba1e675d1702505027a5acb7702cdec GIT binary patch literal 973 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJPc)B=-Xq@+*XrD1TQR2vZ-+fyQRj*|T z-QIFEYhylJ09E- z`S#Khjb1fV&ilV@&Reql&nZ8A@cp|xmwwJ{H88J!e)&z`_s(f2o+f?2dG6GY9|t#{ z3Vp(plp%2>p>3AqgSKityLtmn>*C%+?$@%`DPNy=*DQX;`ep6S7ES>@Ng_)n^3Uh8 zl|Sv&{*qt$+bBvedhfkSURPP$Tf5oYCM?l9`eJI_&5O?jq9*wB%zb%#zQ+2it$EdI z_pa~$xHMwLwyLFC%Rf&~`kM7?$&`1MCEw4rUY@vhVzQoG{U6JSkGb*L8{6%7EA1}J z-*8o1(?ow}uoLIz?uXP>>GBDU20+KFQQbzi1%Mcqvi_-j`2Ku6%D(3v_s=xM6ILUzF2QPz#TTg>c zItMV4RZCnWN|K9G6H8KcQ-B16k%57wuA!l>p;?HLk(Hr=m5G_Ifw`4|!7_*4PhlEB zDy<;8fEo-9bPa$S3_}detV|893@soU_}+2sMA49&pOTqYiCaVc<_)Ys4Mrd*`D7-i z<`t(hWR#Q?Sn2Dh=INDZW@i?prer4S}eUBg+t=KTHgOUeN_Q)WBdxdFooA21$^0!TD(=<%vb942~)JNvR5+xryni zL8*x;m4zo$ZGeiTA&N?il2aMn9DN~3!7V2-UBNRsKd(6SyvSalG82Td_|PC9nCr{S s%k|O{b0J7CIX_oFCoxGs6Qof;4QNKOexa)CU7&sjPgg&ebxsLQ04Vf(B>(^b literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/fk.png b/test/fixtures/stylesheets/compass/images/flag/fk.png new file mode 100644 index 0000000000000000000000000000000000000000..3a850fb18521b6e40b7ce8e8d7968c601c7676e4 GIT binary patch literal 982 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI^db&7(8tG zuKF9b_f6T>`ePzp%l34;TOCRI;yGEF@x&hMx_1$3wfTj?ipp7!XMQ>OF!t)xB3lKe zixWz-%Jx~GTsw7&wwS_WKigedf@}VbgZsh)(66z}RwiQbb~E zV3K#?nXnmOFG&V`sj+$?UjAC{|H|F*)L>|!YXH<>7-C>%Wol?;XaUi{_l{#HiiX_$l+3hB+#2dPZ(s## zFakNrCo?%UuQ-(>PJF_4)B{NYkzbIWF#M2KbP0Gnkj!((YP0Y-* z|NH7Z%sPloa1WX48d&HWS%v`pVPXLEiZ0Nh1_mq2Q`Z7DNP?^j&QB{TPb^Aha7@Wh zN>%X8O-xS>N=;0uEIgTN15_jpQB+!#oXX(l=nFv#ZaInR3ZBXNdBvgUMfL)fnIM$K zhX(n;Twh*Zu9udW3qg9x`MLTziAnmIAdUKIKr@Q<3sqh30`)U^y85}Sb4q9e0A`ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIoJY5_^G|u}@+?y53DA4l#6{p}Hl{gny zrh`t3D|NPZCS~U9Hf{aEQ^}w`U&+;>h9Ou&Cu!kP(*?b1T^UaQ6grRFTHlYDBV8~v zsVi|tzpPC}T=(W?jT4KymKdE>+I(xxnk?Z|Q^Aja9;kSHDfDZ?W5(e;b+GC~a- zo}}wvpS|z*gC&RAxNrIOzdLuc?&Ggwo<%JVNhWjp)~IoCZ0IRaXA{(Zzpq*Loz(_! z1r?>$nuii4PjVL<&-i%lVgKG>MeDr#GeqzG*rYDdcV^kSZ>33@4>!I2w%)Gp_VkFT zJw?x-o%r_a8DE*_#H%Ty3}$u4_cs3AQX3Ibk^86m|Bkm@iPDZCrje@tC+uo$PfYr_ z^=9V7w|5_JpS`^qlX5bX<5Ti;6EpMd|Gqj8vkqbt+(V|i1{S(T zmLWiYm>2-Pq6>7Wfx(LM)U`kjk|67X^V3So6N^$A98>a>QWZRN6Vp?JQWH}u3s0un z02N6?6qObwr!u%X`a+O`TTWuSf@gAmUUBGok-b1=CJ1Hmp+P<{*O!-<>!l^;LXci^ jey)B_Vv>F)NTYrl(2QdJLRHthK>ZA!u6{1-oD!M<|5-%J literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/fo.png b/test/fixtures/stylesheets/compass/images/flag/fo.png new file mode 100644 index 0000000000000000000000000000000000000000..6db42e53737653368cdcfc2be5962895c78e3c41 GIT binary patch literal 833 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHHJY5_^G|uNvwDn>R6gd8TqkqmO%|m%S zn>ytMY+74e?;SW~&B66?@wUrh{s|8mZ5lc{dULrVMIxIyZ)z;@czo{6?2Q$ME|cO7 zZPM=5+nvoYX|g}$_P_K-j^47vb)hZ{4rv=00<@+wIE4D2f2?6|wdTmvqR7y_#k1np zr`P7mzk71#?wiF5bK4EmVh;XSV<=L3Ga+%^f%1&QOX`aROWFD&Z)gfkx;*!>zKW_? zimH%`;YIjr_YdX|idvxAMR(qq7=0YLPi9%cx1%4fON?u$0JH@Fj(7h8Z`zPNY0N9VqZe<*S9ku>2+-A5dXte zVG#dJ|6t2sV8E)DxJHyD7o{ear0S*s2?iqr14~^)LtR6&5F;ZiLjx-lGhG97D+7aN z4!fViG=NlEL39B%7#ipr05uqf7?@d^8d@1zKs4~ZOis-!PG!g_DJihh*H6vUE6>c%EJ#hsOw`LSO4kSR^aDzhax#~3AwYka7y!MZ3v{S~!HV+KwLlG$AnStj(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6-h%Bl@=wZGPpVVLXd)6PGY)(XL5dCap-xGy+CCq2xal1 yK|V0omzS68r6uMra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kICJY5_^G|uNvwCxHB6lrN*kAc)JkzghbseaCr&jy_l|s`U zz27l)YgVnYvay?`V;IHu?eom}`|kH#e17ouMgR4EclRF4Sh@SS#QFU-#_#gjKCr)A zTb*|5{fjfeKvgYqjVMVjN=+v@*1SXyALtu@gl@ZhlH;S|x4`^_w@a0yP+c zoaB?4oSIjh%8*e~QedU8pPHvvo|&ClkeZU2sFz=qt`Fkr2b3n|WG2U_GEra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJlJY5_^G|qqxsiGo2I zzXcepPw(;ZlHPcR`^FOQ`AV(_(t}zY6f{;Bo&OV2^KO_((j1dH|M&d+_4D6*VM#C5^X~$d#Rz3;P4Tyv`?urI z)sN4Ae60L`U&?g%3K891FLv(Cu$t1(H|>Du@dZ!(k5@l&*~>e-HN$etQjap8Jtk}F z9%m*rdr|}QIcGgnpl#mn*t;lj0_Acbqx)5 z4b4J~jI0a|tW3;w4a}_!43;_UehSk7QfURz1=L_@plblsU>IUxW@Tz!1s=0 zCyIvL{FKbJO57UiH*a7CYA^yh$tN>8HLp08A)}rSC{4=AOpZ^<&rQtCv;X_*Jj^hsH>Ka(+8d-(_{b6hg^olOfp#}!EkC#5QQ<|d}62BjvZR2H60wE-%UhA1j6N={{PbM%EE1-G2U zbOq1k{Ji4O^CEkJ%1jW-;zNUcV6HDOFV{;;%!MGm`0rLp08p_Qrcm4wPuW|9NB63;{pogUck&#XMY)AhjiR%`FY5 z&KUxESA1kHx!z@Y>vV=KP>N0HWI}J=5!ddHfLBS)W{2E@g8!J`H0YUiDePN%-S2bd z=PGxv&|Y}|Xz|Aw8+#+64$}yq&L5wu=8U_q&(vx8)t)F+X|sww?5G>S`nqKKtgl*+r!k8@t6)%SRu=9K z(ouF_?Kk0L!QbOccJH;D9?Zcw*5qn|iljez$=R?z}X+t0l`vTd8LAIF@y z2z5dK`#YVZW}IwT#kBOl28$NgVi8TzRazRX=S+LAmM^dW|NLN9>e=@HWr7on&shXZ zdY@bGY0I47=DgDH{pz2syg$Mg+!beJ=r+;<#@B=CkGEBPcsg&^g`e-lb>064tvpf| zo+Hm~k)`~-&W0ye>pN3JfXEUNfqoh3^*zVVr0A9!ux_}xC4Rj5F8Vo}W%&bfe ztqd(78u;FE>_pL!o1c=IR*73f{pJmGGvsL6j zq^4vh>g5-u>w|du0i{VfnaS}f`MHUidG>!_orhTmu?g-Wb6o=?pc6w3&8& zd+60KwGBWGk|67X^V3So6N^$A98>a>QWZRN6Vp?JQWH}u3s0un02N6?6qObwr!u%X z`a+O`TTWuSf@gAmUUBGok-b1=CJ1Hmp+P<{*O!-<>!l^;LXci^ey)B_Vv>F)NTYrl X(2QdJLRHthK>ZA!u6{1-oD!M<`lyLL literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/gd.png b/test/fixtures/stylesheets/compass/images/flag/gd.png new file mode 100644 index 0000000000000000000000000000000000000000..eb2d526fe12c88d59495d84348f6e451ef715b9c GIT binary patch literal 920 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI+d%8G=Xq z9n|e!nPfDhW6H|rBTfQEe;L^}N|Xe83Qy#_t0g9QFlogM9-+)LNfY^|D@@!~>iuL{ z=HBPE=d%M|p1e7KvdwapZHsmv;4|rPGz7GCxG>Bs zYEhr@f#=oo^Ew}IT@@E?nEKZ8@9Wz;t&Yu}$lRiIl%=>~=9vxOrOmecU14Vl;Z>MA z_v(z7$6U@DAKtiolg_-8OTL=DDeOOAwT(@Vl`(`##IW?ja=TxrL*xIP-K;#P<`To{ zL#)*|wyu9|BFXM4=)l|{p!?z8?n6&L$!`-A5dU4bbN_$KeK{8{`J^Sv=`CP#`1wcu zeb4OH_Zoi;GTr4&5>i**z5ny>wBBjQoW#H8PqL0bEK|2?+h^q*-l%&DN4(RHw^!`X z_OHKi*Yp?Jjp*V$t#*9YoON%%$lZI{`ZZ~?!L9GN7yp*>RbqDR zQ0*+~n6UWA$=t#uopt4h8aB1*c4slqUub@T<;ex55{_Hkdt3kQf2i+tP+w8efA$<; ze5sbWMwBEMr6!i7>ZSk*1|tIlOI<@lT|=`FBO@zA11l3VT?2C~1A}D_yPv`|fK*yR zbOALO8t57TH5i5%m|2+`S{YhEH1NIS*omScH$NpatrE9}`pp|yff|fJPV&i2PR%P$ zWymNgDX`MlPtDUS&&*CFO}lsSJ)O`AMk?p1FzXsX?iU zDV2pMQ*D5Xq#=q*i;`0r+#G!&NWm>9Fs_FJ22WQ%mvv4FO#reuUHSk3 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ge.png b/test/fixtures/stylesheets/compass/images/flag/ge.png new file mode 100644 index 0000000000000000000000000000000000000000..98bedf24e677aca13ebe84b119e295471306118e GIT binary patch literal 951 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ1dAc};Xq&QlmD_k3 zdp*K;^=+~0ZmKWW`_p`@^#^0jPhOUTp$nxKD*WKRQxeF^tb5J%g3#2gLg^Dqy-`BK zb3BbcKf7Dr-`!ayCa(9r=)s)%ufA4&30InQ{z1u98(%9~K|#T^f8|ClAuB@+WPYrV zFL^sBN`raI+O>^$W43ZJ99G<4y;`p&#P({|){=K`_sR0u)fce;X6SgZzx?mREBD^j zTisfFdoP=yVYi|Z!_n^WXZ>eq-74DGBs+(h;Xus3Fg;ea7)FIdS$|$6e*6~ur_Vz> zMRJe(q!0J1EtXH8COGARt>_k?HS_HMeLk5yId9K}r(O1M8YKHpT6P>i!(;RLweAv5 zneO6(bsKhAypoapoDe#n|K*v;Ag?v8-#yg+Y~)On;PU|Qk{KO#q;B@vodqCw%-n( z;N%p%!f~yd%i^@jGe7T-arwf2X`5fM2FKlMV05aMxJHyD7o{ear0S*s2?iqr14~^) zLtR6&5F;ZiLjx-lGhG97D+7aN4!fViG=NlEL39B%7#ipr05uqf7?@d^8d@1zKs4~Z zOis-!PG!g_DJihh*H6vUE6>c%EJ#hsOw`LS zO4kSR^aDzhax#~3AwYi^TLQhJ3v{S~L2YF8 z6QBl3kafZNX(i=}MX3yqDfvmM3ZA)%>8U}fi7AzZCsS>JiliZmN{f8UZ64)gtGY1ARn0P%gf94(h_qaNG~}*S3f5)Nk0>$Q9li6MzMaO Ss_R{#eg;ohKbLh*2~7ZdoNAE( literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/gf.png b/test/fixtures/stylesheets/compass/images/flag/gf.png new file mode 100644 index 0000000000000000000000000000000000000000..156c89321c36a929d7e416cc91093e02c51259ee GIT binary patch literal 829 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kICJY5_^G|uNvwCxHB6lrN*kAc)JkzghbseaCr&jy_l|s`U zz27l)YgVnYvay?`V;IHu?eom}`|kH#e17ouMgR4EclRF4Sh@SS#QFU-#_#gjKCr)A zTb*|5{fjfeKvgYqjVMVjN=+v@*1SXyALtu@gl@ZhlH;S|x4`^_w@a0yP+c zoaB?4oSIjh%8*e~QedU8pPHvvo|&ClkeZU2sFz=qt`Fkr2b3n|WG2U_GEra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJFJzX3_G|uPt*>;663bed_$=$-+Gd|Ti%p0uVJv-dtEL2e(2F4 zX@<;((xz0-2iI0`-~D%OdH)T{G?UW-6=Xqb;tRHeD zVB&Fq`QNYE*BHoXU&`o~%ql6-{BlCr-(ih{iJiT5_>)faq9+^O`eM~RCv&oKuVY|h zt5BLBQ*(vkKzy4~YO2OGpLf9UQY~?fC`m3#O)N>(O#u=NMg|6!x`u|jhGro~MplLf zRwib;2If`<2Fo0FKZR)kskDOV0%|Zc&@}*RFbpv;vobZbGPHnb;Csih6GcOAeoAIq zC2kG%n>VlmH5h@MV7$ml0P4U!=1g7ec# z$`gxH85~pclTsBta}(23gHjVyDhp4h+5i77f?G~vx`JnNeqM3t zd6B(9WhMw^@u5LJFxQutm+Pe^=0cEOa(=FUPGXXNCP<@x8qkbl{X$jOyFmR6p00i_ I>zopr0QtKcra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHXJY5_^G|tBco%UjO6j*aJN6uxUtBA<^ zSN;_u>*Mxx?qBfWB>NMUU#xN>E&}@xY_9mioz(Yifv1c4Yqj48=FZFGpX_U<+4gSc zvQ?`kqgWjqWX|Lye>7qfG~CR6;Ij>bQc|kYx2emSZoS<$d2*52X3wO3IWN}V>uLU4 zvaFiB)ViihWc#d|q6{l}V?LKB5idQ|Iu03d9e&=rG;x;O;e$O5Gu@j48H4I~tY!K4 z?RWIr_u=RIS~HyV`%-QyO?vZ|J!=24Nc+=l&&3~E2=C)C-knn&A-`bXzK3^g^7hG8 zM3*m%lI>6W-`siSe$mb=J09Ir?`ZM36!J*p&dYPQQ$^2rzvjwRWRl*x=~?{!-GA23 z4HI_jzNWx@>1E#9khsv!^_$`a9EEQ*@L0vNh42(SWKej(9x-QK@jl-FllKPo+%VI5 z1PoBs64!{5FYKdq!Zu_%?nF(p4KRlzeiF+DXX zH8G{K@MNkDP?0o5QE5?fDubJ&F9a#L0J88sr0WeR+Ag rURq)<1nDK`=j!JqCh2E_H0q}T%_!C{RCT=z)X(7Q>gTe~DWM4f)ki7x literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/gl.png b/test/fixtures/stylesheets/compass/images/flag/gl.png new file mode 100644 index 0000000000000000000000000000000000000000..19cc57c9d7d7e696bff7fee3df606b9aa5d2012d GIT binary patch literal 807 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJVJY5_^G|s2`@6KWh6tE2s=jJ}x%Cd&( zUsJDqQhIK7{`@VRQ7WyyQ9q;?shC~crX<#V_uZr0*5!U(u}6+SJYZn_{LJAag+0dj<0wC;@{{wZt`|B)KRxu_RSD1xPR$ z85mgV8XD>vnuQn{Ss5BwnV9Jsm|GbbEOXfX6s7^B(h8yrsKL-c*8r%&FvP&j%GA)x z&;p`??;XcZ6b-rgDVb@NxHZ&o-oOgfU<7iKPiAszUU4czMoCG5mA-yzo?dxoc4k3p zN@k*7eo?wUh^HS=nv|279G{Y(o0yqr|M%5-m~{}F;2tv7HL%b%vJ3(G!`Kq&6%X8O-xS>N=;0uEIgTN15_jpQB+!#oXX(l z=nFv#ZaInR3ZBXNdBvgUMfL)fnIM$KhX(n;Twh*Zu9udW3qg9x`MLTziAnmIAdUKI YKr@Q<3sqh30`)U^y85}Sb4q9e0KzyQEdT%j literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/gm.png b/test/fixtures/stylesheets/compass/images/flag/gm.png new file mode 100644 index 0000000000000000000000000000000000000000..882893201f3de498bec817149f1a3f7a8d7d2c32 GIT binary patch literal 819 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIiJY5_^G|q?i9rT)(DAMx$?{5wzUBxHI zkF-8mbh_}e?u$!nALxBx+9RsJ$jpgjYv#h)E}IOBroKNjC-dX4RNl=M=VZ<$-ePyC z2syhrZJnf>9p?=@E2f53AxGO{!j?>Om==<ppt(_~tg|H*ep?-if`i;0OybL8jy z3rOVJ++VPAlaE+rNT+LLSB`a=q%8061NjS>nSR+{o0Cz-$o+@$?!O$t1+rBafI+ER z;u=wsT$GwvlB$~mBp8eg3@mjG4RsC8LX3>83=OPI%ybRRtqcs7IqZH4(*ROw10nxzsj$YHHB>hZ~M*TFP8O8dAs;+l|`WZZ3{an^LB{Ts55Ns>o literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/gn.png b/test/fixtures/stylesheets/compass/images/flag/gn.png new file mode 100644 index 0000000000000000000000000000000000000000..b379ada3b916c65955c5894f8275a8495781fe88 GIT binary patch literal 776 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJZJzX3_G|tCPG|Zcl$m4Q<|87<%M-R;j zN>kdb3;IJs<}|B4KjB&=t`)VQv8hdD-bah0|2IY^My`8SdF+$fo{)z40^SJ|KK$@81uoL?3!BC$%TnPVVossdn|7l#gcF+S$xwnDO&pbKb7ythS5yTL1dC zTx;pIw^wzKa?UstlpTJ(C*362ICSl+AaC8S;Dp!5to2XsRuvyQuWom5t-P?s2OeX|^wzMw zF3iC2Q7v(eC`m3#O)N>(O#u=NMg|6!x`u|jhGro~MplLfRwib;2If`<2Fo0FKZR)k zskDOV0%|Zc&@}*RFbpv;vobZbGPHnb;Csih6GcOAeoAIqC2kG%n>VlmH5h@MV7$ml0P4U!=1g7ec#$`gxH85~pclTsBta}(23 zgHjVyDhp4h+5i77f?G~vx`JnNeqM3td6B(9WhMw^@u5LJFxQut sm+Pe^=0cEOa(=FUPGXXNCP<@x8qkbl{X$jOyFmR6p00i_>zopr06cmVfdBvi literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/gp.png b/test/fixtures/stylesheets/compass/images/flag/gp.png new file mode 100644 index 0000000000000000000000000000000000000000..902edaff872ca7b4fb817b213ce5a277e356bb83 GIT binary patch literal 812 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI~JzX3_G|rb!G|UcR6lh7mZ+lLGk<)CV zfWT+=OE1@NI354NJfgkCbJv9W35WdNu-taobw%@#;)&8(-4%C!mX#fQw3l7&g^^DD zMuXEnZ|aUS9S(TWAjIIX_=h-m?siMdnRA#7bUaoxrCibxk4+U)@%a4XpUt$*ub1n8 z&;71u`y*ah@bhZ_hv^?KDvA~VS<;*^%OrD|@!56kjT`rFw)lOcfNOu&hrGq}yweu8 zOwtTq5F_+7q)d&~VJq&NweS8n-^Xxn zrY%d^Ns8Kch_9dJASP?;{*Fo^GN@zHM3U$!%(%vHKHWBC^fMp zRW}7lFc=vaSn3)Y>KdAb7#Ud^8d#Z_=^B_@85k^c*!>iy0i@Cjq6?_O&_LG!sKGGA zz|6|j(8|yPqJi%n$4(Rtx%nxXX_dG&)NkIv3e;c(a*|JGa%x_2Dnmv|Nr9EVerldx zd1iKIL2627qF#Pcx;}`fA5fZm^)p?k85S!p0GSxM(&^59Q0s6z( z66h6OphFD|Y9phc05wR0tP9RhD=AMbN@Z|N$xljE@XSq2PYp^R0+pE{l*NYz`M_LXUS6)3mY54cddc~@`Z8 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/gq.png b/test/fixtures/stylesheets/compass/images/flag/gq.png new file mode 100644 index 0000000000000000000000000000000000000000..8a6e6dc0df8e9b33eed4a903e03f10fbbfe88034 GIT binary patch literal 861 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI2JY5_^G|s0^Jm_^LQRL|P?|ufR3buk?x!M+b>%$V`{ZuR-hhZYgC zbuxVIr|-_Wk~gRC!tu2nKjz+Fey`H;WW}bRuZ~M@(+J{eHEw!WwA}jap}A=#+_!Jv z)pnSf`;1?oO;C_$vTMsp9knYfOjot)p3{9Kb+ohPT-5Knzbl;uR5au3CrB9UtG?Pc zDadQF_~JJTo%;5deRWlRZ&+I0vifsnL1uuIN${?nvsXV>6S#El_)C4=rB_pJF55GC zq?P|Mt9zo zSyK~CwaGYE zu;a3h`-#|hN>A5y@QBRepMHOh%zyKbC0~9oWToQR-gtWkdu5elT-7GQyDT!N(!v>^;7fo z$}_Vw3sO@u6ZP_o()B?+{eaS>oXq6-l>FSp%sl(Qug=4)gV+T3kg2YLg|3lh2+$wK zmO!uQ0v&2#P#YQj1gJq0WL7^73-Mw8UHp(o4?I)z3*x e($55G)K3GNQLJC6>UtNbpTX1B&t;ucLK6Ud2R`Wl literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/gr.png b/test/fixtures/stylesheets/compass/images/flag/gr.png new file mode 100644 index 0000000000000000000000000000000000000000..ee6988418094669ba4790cd017a4e533555ba9d4 GIT binary patch literal 847 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ-JY5_^G|s0^wD)Fq6gYZ6*3TsA0f(UU z<%pM!u`UOl1Wu+4ezcC@78854T)>63yTpxE@Tdr*=aCid9$X*!Sxk?=s}`&7WK2w} z*vyk(Z~gk|v~!FxZ`v5VR_8DHJ~u+e#YshNtv#E)i_-}fhH2i3BCeCdp5-aN&GqvZ zVBjp$^c0bMEUw@8IBBB>Cj*1$bMyBi8WShEEVHtHG(T(}v-y?zYyrD}Z(Fi))3jr! zBqY6~o*qs}UjB|(f8Mm`pV_00Cr!KlYDwSr#Z#CxyLO-a{x{8-&*xHd2~SAnUO#uI zrHX-4r`fi?+Iu~3zZloUhKCCh>=}RVyPsvt`upm+Lpje@dw-qtWKXq$$Q%jTlXF6? z4xS9H&NBLb(R0nzrE5~-FKk`1RA=gW-ds7eJ;x3|uc(UG~j^ zen4qbPG)j^N`7u)W}f}uSLb2YL2QD1$W+(BLf6PL1n3WAOQ2VDfetk=sEv$%0@NT0 zvMxA3t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU38Nku*e6X;E@2gPWr-1Sz=XB&I8P zCggOaT>1Tp8>ZbwCDAq4jb-fGJ O&*16m=d#Wzp$PyTFf1|v literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/gs.png b/test/fixtures/stylesheets/compass/images/flag/gs.png new file mode 100644 index 0000000000000000000000000000000000000000..1ef34a8596ade105d0449745fb0cb8b5c3135cec GIT binary patch literal 982 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 HQ$iB}2ZJ+k literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/gw.png b/test/fixtures/stylesheets/compass/images/flag/gw.png new file mode 100644 index 0000000000000000000000000000000000000000..77100c30bf17e888c0250798a0c31a9793072cca GIT binary patch literal 803 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIqJY5_^G|tENZ|v)36lvN2|JT}HQO;FU zGp^h_Ae`w@vMGOodi2UETCL?D*tDdCS{FR%GB$p$@$KH5-pMDYYpN9+oi3>4z5RW| zLSOR@#&73tjAT4_uHj|eE`Pa{KIVCb6>i4U|NMIQmg~To=lUut!j5Sr3udj9)IGg- z-wy-Z$vP)JeA2S+@9K^dxRQ4HgL-9F{S-I3R|>!8Z@FFYu4eMQ+xkz;=WnrH=aISe z^xAi)rbKUF_w#0X*n_}7N9xu%)%|s}?_ag%RZz&y&87dB)$K{jwU`tamgqkTfX#TACGn%1-v=(`nZ4K6GzQR4%Tv5;}KRIClT4Zm+E})pJxP z``p;@r_Jud-1Y+I2Bzlk%M!V_|71^GU)Xo#<^3v@*1W zXjn0mnHNPvZhlH;S|x4`H;?Sz2-IK%a*|JGa%x_2Dnmv|Nr9EVerldxd1iKIL2627 zqF#Pcx;}`fA5fZm^)p?k85S!p0GSxM(&^59Q0s6z(66h6OphFD| zY9phc05wR0tP9RhD=AMbN@Z|N$xljE@XSq2PYp^R0+pE{l*NYz`M_LXUS6)3mY54cddc~@`Zra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHZc)B=-Xq*q7=;(1dQKG$m{_o^9Y0HG9 zubG^7?s+js;ot>tkt?noR-ALKSbT-D#1DEuag1vBdwW51gR=ySqsl}l**mVvxm&Mn zTR8jWk+=Kb*4}?#ZS9fp;e)m9boqWsiH=8kZ`!xVoD+S(%*UY6zM$TlAz@m>T=kU~ z3hvMRcVj-={&Rb^uYC%WViFV$Ow)ceWA28hH`6!YV?8jYY@t z690L=-cs)0ug{bkx%AyAG!bD{G+>-@@ZdeKqo*(ZJ|os{|84%PeirWVMcW_Ub>3I{ zv~7R%{lu(oTem&6d)~u(=7)uuS;&%epBVRCINsS_vuJK;^Q!V$mp<;!y0lvV^VPRA zUrHu3PL{a*)l`(Ro6BAyOa4)HvW&r!Q>&Iph1JGQPM+w#+?FAW|DE7wAEV>zE`2!5 zygT%(-OY7LXT8_^tPk~`(f*v_@ERA(i6Il#ssH@6RP5^KH*Vcq4|HGMUfk-l?UV0{ zs&$`rR(+7Upk#FX&$8oc^509^+`Ru?jQ{=bNz$v|@4~afBvlePBN|(qxAWwbm8^~7 zR?qLx`Dya?X=vGd^^5bGzsU7>2nTMw7Pa+Sq`;Yz3a5A#SW_C_Ixl_s{}P{oLd*X5 z>}HBref1iE5v^L{8c~v5l$uzQs+$5N7>o=IEOiYHbq&ozjEt-d4XjMebPdd{3=Ebz z?0yQ<08(iM(FN3CXrOBV)LZXVga5vaik z0cwy0Sr?q2R#Ki=l*-_klAn~S z;F+74o*I;zm{M7IGSvpCNE)K3v?w{1!OhVZf)w0x64Mntlk@Y6L(hxs1u8Q^D2opb y@`1U&yu4g5Eio5@^pf*)^>Y%F^fN&k_0xc66zdnNy50rqXYh3Ob6Mw<&;$UC*MEcn literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/hk.png b/test/fixtures/stylesheets/compass/images/flag/hk.png new file mode 100644 index 0000000000000000000000000000000000000000..351b5e8dd814a08532d3c3fa3ddaced0c30897f5 GIT binary patch literal 849 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kG?JY5_^G|q=k+^E-5C~)NY@B8jGGD?dA zF1!-)vg&tw&Z%P4dMLQ#(G)2m{e_Q;Ts&NU^ljL@d+`qC9JR^1YBTTtS(UC}IPcHL z{Y4B7%$y<%$`(`?FfhzK6~ba8(#J7T>FK}M&2j7X7#8f=9p0kkptWfC&ZRS7Zl65a zq)W|sVrnX@17pJ#3)w&~&AEML!P4*S>4twpFEPNu|E{V`Fc3iD${3&&v-!)SLBU z{qf_Q8_dk6tbDo5);9HaU%i5?24};RnJ+TUEbZ5SEuH!DlasIU#kYNziq79>+tKY4 z^yK>Eux_}xC4Rj5F8Vo}W%&bfetqd(88dl6? z=0(wvo1c=IR*74~%_F-v0yP+coaB?4oSIjh%8*e~QedU8pPHvvo|&ClkeZU2sFz=q zt`Fkr2b3n|WG2U_0>w@#sO3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%NkbHs7A2=LxHV*Nr@ R*SkRd44$rjF6*2UngF@}H>&^u literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/hm.png b/test/fixtures/stylesheets/compass/images/flag/hm.png new file mode 100644 index 0000000000000000000000000000000000000000..98180040baa7853f5e8049c34dc5e8bf07cbe0f2 GIT binary patch literal 1036 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85o$jJzX3_G|u}T_xA`clwtVr{`S2L@41(E zZp%Es?Wxl9WwJ@!n-6Vjys4z5@nVXo?BWF}?Ru^U9R#h?0xzg;aAPrS)mR(j!Yk~< zbXQE$^!BCPoa+7Gf8P%M5o34h_{7`B$NFAe`4wTPS6tWHzJB{Zn?2iWKh!aF+2U*C_YH9*w^^V^~{)6D=pG&0+tB5MHHH~eczodT&%Y=^V7W@@8W6om`WP&n5#TeU%X9W&o1&HB$~}gR4yg=hEc5eB zeCs{Fzu9!Q?$<(#GqaA(crb-a^kMdM=Y4Z;o1B^FtIw#wslepGD8O*9C2!sK|HnSv zj%JWy_{YrkLwbq*Wz|{0G@@GK8c~v5l$uzQs+$5N7>o=IEOiYHbq&ozjEt-d4XjMe zbPdd{3=Ebz?0yQ<08(iM(FN3CXrOBV)L zZXVga5vaikgOaT>1Tp8>ZbwCDAq4jb-fGJ&*16m=d#Wz Gp$P!zosOpf literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/hn.png b/test/fixtures/stylesheets/compass/images/flag/hn.png new file mode 100644 index 0000000000000000000000000000000000000000..bf13f4156d3d340876027faccb8422fa63d3c81c GIT binary patch literal 867 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIoJY5_^G|uNvG|Uz$6giUqSg1HoURlDG z?jT4PYR;;_P)NyhPb~if&Z1Grlqho=S!d!)K?Ms*Tin-}=Ma{Uo;dlM#G@WU$ zKmGVPUgVejuoZTL^yJlV zIaQbXa21@IG$rj+o65<@#b3YNJkE7v@Ba_awjVZgI;c~kDLJvVFJPha36Yn*-jDU! z{j(a!;@Fm1kyW7Nn+RChFxErR#%u`T?a$Iho1vDfzjHnR)hqU!8|p2eAq6AyZug z3tc125THMdErDLq1v=Egpf)o42~dM1$hzSCw370~qErUQl>DSr1<%~X^wgl##FWay zlc_d9MbZ#OrA5i93~r9T5TxLilbEjHnVg?j9C}`4FHo5YLRoxhkPpoD<>lpiX^FWI mq?eqZtDlpYq@M}WsGkNjqgcOC)%7k=KZB>MpUXO@geCw1f=oLA literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/hr.png b/test/fixtures/stylesheets/compass/images/flag/hr.png new file mode 100644 index 0000000000000000000000000000000000000000..411479ac86f965a15f62c68c0ff4704987f2f985 GIT binary patch literal 877 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIIJY5_^G|uNvG|UJtlsNMKXoz)*pi2Qq zm%@~HZ}0HM9tmX;7qoh*!@(-cy|n4V&7%u%oZLD4!6ZdzclPZ+PRw}n^zVJ|fA`D3 zTQ2G4u4Tqf>6d4_s3v*p;*3vnwbLX+u>(8I{7!)4)a|)%* z*jruqi2rbXyZxn?zpp1+7V&LfbY1uYqd=Ev?vsz#x6i+}eExo!IqUq-h)w)F^(;%n z5*1ICmpQku>FIyIcQ46c#``xRp;t|Oy;iP!J>^n{$u6l0CFSM$v((&_XSrCTI;p54BkyZ?SpZtwBOs62Rx z=NM&~{VDzS*Lj9*^{NPqQBlnO; zi=lMl)2?diY`=*{jZ=(0W;Tf^&soS3&Y-oSo>BZ+-*)L>|!YXH<>7-C>%Wol?;XbI7$iiX_$l+3hB+!}5k*}V~{!3g9e zpUmXcyy8@bjFOT9D}DXcJiYSF?977Hl*~lE{GxPy5Klj#G$|)DIX)#nH!(BM{_m^v zFzX;T!98TEYha;kWEleVhp{ElE4o038W_|@Mn3^+kOWy5oS#-wo>-L1;Fyx1l&avF zo0y&&l$w}QS$Hzl2B=6HqNubeIhDc9(HDXg+;S4r6+Dyk^NK^yi|hp|GeIbe4-N8x wxxT!-TrVv#7lQPX^Kra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ(JY5_^G|u}5I(oST@|>2xr_h(zez13e zbpLZkm-h>fe`H#;T!2MTvfy!2ji<2q`}!F{UKx|OZMppG+0g@B3<{P^yDsudvM-bt zR5;MUV8ZPGJ)ALUag8WRE=o--N!3jO5)4KL29~;phPsAkAx1`4h6Yw9X1WIERt5&k z9Ckm2X#lCTg6INjFf`CL0BSG{F)*_-HMBCcglJeXlbIJqLvDUbW?Cg~4L6VM-U!rS z1agv3W^!s?aVkSbNlAf~zJ6++UU_DAW~Cp2_)n#i8d#_5zieAe6<2 z2Km5TUtV6WmzJ0dL3+vgx%xSYN&1-}jrwUoGm7;KRbB4_^)q<7`njxgN@xNA@R<=+ literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/hu.png b/test/fixtures/stylesheets/compass/images/flag/hu.png new file mode 100644 index 0000000000000000000000000000000000000000..bad18553f5cc4d92c5a3319c0a17432dde137314 GIT binary patch literal 749 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft)v}sQHuftyIUxW@TzldoJ-UaGs N@O1TaS?83{1OW7y{GI>+ literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/id-2.png b/test/fixtures/stylesheets/compass/images/flag/id-2.png new file mode 100644 index 0000000000000000000000000000000000000000..3328dd4b0fce57d68c67ebc7c43b372d9408461b GIT binary patch literal 759 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft+uiE{-7@=WF|{y;uSTT;IQbcfcX>*a3&_ zN;{;SuO~iZ;@2~l53l}}_`AY{^#OsY8(@% zZ#g+3p*7XWHJtzS-a}a`jhzkq?Y@4Lp;?HLk(Hr=m5G_Ifw`4|!7_*4PhlEBDy<;8fEo-9bPa$S3_}detV|89 z3@srVR?KAPMbVI(pOTqYiCe?XBfB>OH5h@MV7$ml0P4U!=1g7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i77f?G~vx`JnNeqM3td6B(9WhMw^@u5LJFxQutm+Pe^=0cEOa(=FUPGXXNCP<@x Y8qkbl{X$jOyFmR6p00i_>zopr0Q!~+1^@s6 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ie.png b/test/fixtures/stylesheets/compass/images/flag/ie.png new file mode 100644 index 0000000000000000000000000000000000000000..8772d26e78143e5990b0643d08c45e43f317555d GIT binary patch literal 789 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHvJY5_^G|uPt+jfN{inyHrUeRRX^W?li zvs#n1U{6d#=fagUn+#SLXsd0On9TXc!QhgZ{Qb4jsTX=1ZQG@>;u!qTHNzqCCPSKl|E&t`R;qr0M#}=L;S>HldS6ThLzf!U*EXv9+EA;xqcRw7B zMe^<(IOP^OJ$?FB)vrck2|WiJQ=gtJ&e&Bb%_jd)ox|+Lj-Lg^Umu*>rgHmN;qNbB zrJMU%|FC);E?W81a$-F&uvAN2BTABsQWHy3byI)@gOP!OrLLi&uAy0ok&%_5ft87w zu7SCgfx$9|-A`c}Kq{>ux_}xC4Rj5F8Vo}W%&bfetqd(88dl6?=0(wvo1c=IR*74~ z%_F-v0yP+coaB?4oSIjh%8*e~QedU8pPHvvo|&ClkeZU2sFz=qt`Fkr2b3n|WG2U_ z0>w@#sO3D+9 zQW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%NkbHs7A2=LxHV*Nr@*SkRd44$rjF6*2U Fng9=89ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIOJzX3_G|uNv+~~y|DB$|MmF3{Eyo~~H z{&0G;?w)YUX^o43Ba>2DCX2Kn>slQVY1X%wGG52GIC!o8&TC!Vf3)pxuhrGsGdu6h ztkis-vv!ioO0h|I?w+}`w`$qaxi$7WXLJ~JQYN)_D5S{k;81U|zV3c`O0ixS(+VN2 zgY{E`X8EYymCCxjU7y46yBN>aId`)jS@zo28~jaMdOWNBp{#Va48K(K?(!_D0}?rp zRMmHX`8`GTcQm))B&$hTQWgIfl^jdXi_>ggeqN0K-MzKEq306iAH16QRE|I0<-$8N z>pxcKemd69JZ2DIRU18Be20$A^qsTYT~+vtBU@T^lv)M8nFY-{oA$QKYpA8k&U|8Ce+`SecmV8kk!d7%X$x z{S>AFq|yqa3#h@+K-U1M!7#+Y%*xcz%Fq&`VZ}^lUK9ez3>hUQ1y=g{sd;+knc0~IsVSL>dih1^`XHWuKxtA=W^#N=er{rBp8elf z=V8`CY=V2pRM)^l*T^yi=nrE{pjUK(4mB{Sjf{Q*)F276E;v7}q&%@GmBBG3KPgqg zGdD3kH7GSPrLyp3str()G(=HpQF1DSo1-rTDY)e%rYm?R=jRoNo)_5*RAz!u79Seq x19N?OdAVL%VlD*fCFker=OiZSXM!~9rvc3<)-P0by$jUO;OXk;vd$@?2>=$T4x#`6 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/in.png b/test/fixtures/stylesheets/compass/images/flag/in.png new file mode 100644 index 0000000000000000000000000000000000000000..edcad05b30f5a5edd249d55cc5f6433c1073d390 GIT binary patch literal 833 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHHJY5_^G|v0_?#&8G6tKPjb&*8(kIl;r z3_A=J#JZZ+E7~zUNdV2DVduj=j-8KkXuhuDxjy$23x3T_x&V3Pk!{L4grtK1e3Nv)~q?N6hQK;(k>izZewhRg@C6yvP6}z-o zmdZX-TvzsZVdp*T^|#NazbF?{cQW}~`~7!G{I%8Y&)X+Q9-6@yU4Nh7FWNIUn{!gn zeY?5;qT+PoZ1#RnuKM}zY_fXcoRYPFXU3PvHZYuI>puD^q5Spfn?Ii>%~bJo<7~Lw zyUyVPlgi1@&DQtp&Q;dFemeQKXV@#QydMpZw;$j9vqvpdby|1Q%8Y4UO0Ki2Z&$0k ztJ`)=y!Ga9ys7#0Eh&i({fs8++tn7IT{X)j)iX)MbE1v}@B2nZ1%nvI^#(DA89wm; zvhfw0!s5Ob7_h1(t`Q~4MX8A;sk$jZg2BkZz*5)HP}k5b#K_3X(7?*XOxM8N%D`Zm z!|tar4Iq_P5M4kGh6cI@Kn;c=24+^KhE|4_5DhD4GV`Kn$jwj5OsmAL;pUOu8-W^( zKu+?>Ois-!PG!g_DJihh*H6vUE6>c%EJ#hsOw`LSO4kSR^aDzhax#~3AwYi^TLQhJ3v{S~L2YF86QBl3kafZNX(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JiliZmN{f8UZ64)gtGY1 yARn0P%gf94(h_qaNG~}*S3f5)Nk0>$Q9li6MzMaOs_R{#eg;ohKbLh*2~7Y)+A4Yg literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/io.png b/test/fixtures/stylesheets/compass/images/flag/io.png new file mode 100644 index 0000000000000000000000000000000000000000..70f3d1cd2b9c458fb6d552fddebcf8da2d4e158c GIT binary patch literal 1049 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 k^Kra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft<&lE{-7@=UXTGdNC&oxZFRn{WFU)i^_!J zl&89zKJn$9(cI(pZlZ8Xww{7u+xpe3V|#k`zgYa@-j(Jyxr!!EhGvWV^Z!nrefHRf zC54Ig+u3t=+w>)i25en(cb$^gs*ckSFJw5_?w@yg=1lp$t(R9;t?x+OYGl$A`*KRK z&O3SA zKli8KW6%pLZ}GM@KM(Y-YKdz^NpewYVo9oQ3XothGBB{zH8j*UGz&2@vNANVGBMLN zFt;)=Smv<%DNF-Mr4>XMP=ld?t^rVkVTgg5m8qeXp(RAaikZy3C>nC}Q!>*kacj7F zWcNm(1|yJ@d@_?$^NLd$GD=Dctn~F$^YqFyvoi})Q!*3v@{7{-K|K9{(xjZs@=mH&TU{D(w{RC*8B*?np{Irtt#G+IN z$CUh}R0Yr6#Prml)Wnp^!jq{sKt<9JMWsc_sSIw8z7V9~mXnyS;F+ACR~&j?WG_&e z2|`(XXpj%g_2uQ|dTEKd5Tuu!pR1pfn53Tx(x{&XG^1F*P}TJ=P(OpGtDnm{r-UW| DZ$|zI literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/jm.png b/test/fixtures/stylesheets/compass/images/flag/jm.png new file mode 100644 index 0000000000000000000000000000000000000000..d520d791b6e6bc8698752b95c0865c432519577b GIT binary patch literal 969 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kH(c)B=-Xq*q7=Ibe{e~UiOs78KqkaIk_Sk zmYaGlvw!b<|9v~3@rvWtdrm+9aPRY#dx;Bsg5?e8vNKp5VEon3x`IJ)PrtHM!}AjH zNy*{Ya}SgpwAI@+Y1W}LE3bvj)!KP)_1|6_nM?7m@7`5Bm_Nhm``=p=kNo*(yX|iF z_kEwwZrbQ(HK~WaLQ&`9f;0P`-MF0V-N1j~-Z|&~IFYB@-)1M4pQ!P(TeG5AhU4VZ z6)Y!rKQ8*qw_5B>+U7cjw6K-0jtI~7eVrih|1ROT)U1uV3M;qt^c1P7s+dn^*uxOg zt8%iW?RuWk_t2>3OV<>3>KDCaOAiW~zG@v)+NxDfnSCdwZWg+&G;`4z(N!DQ8r5vv zwYpMNf%5==!;)2VUR*l(c$3+Qla)Ka_CBhx(@7VSxvQz{d2e1wu4m+sf4pKp{&}0mn*3FM zFIQYqn?H{`I{ye)W%t)5HrnSm1UNm?oo4)hzjl2wYrq0le*Ohp8S5GL9J3SKyC#AK z7{RI~t`Q~4MX8A;sk$jZg2BkZz*5)HP}k5b#K_3X(7?*XOxM8N%D`Zm!|tar4Iq_P z5M4kGh6cI@Kn;c=24+^KhE|4_5DhD4GV`Kn$jwj5OsmAL;pUOu8-W^(Ku+?>Ois-! zPG!g_DJihh*H6vUE6>c%EJ#hsOw`LSO4kSR^aDzhax#~3AwYi^TLQhJ3v{S~L2YF86QBl3kafZNX(i=}MX3yqDfvmM3ZA)%>8U}f zi7AzZCsS>JiliZmN{f8UZ64)gtGY1ARn0P%gf94 q(h_qaNG~}*S3f5)Nk0>$Q9li6MzMaOs_R{#eg;ohKbLh*2~7aQV0?Z6 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/jo.png b/test/fixtures/stylesheets/compass/images/flag/jo.png new file mode 100644 index 0000000000000000000000000000000000000000..0a267049fb9a8dfa0d9f16a770fa092db94fc92c GIT binary patch literal 809 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHfJY5_^G|o>wr|8|BD8l;S^I8AN3LUA5 z26z83XRltiP(g>YDM47LyDhZa^?I(h62~EdM2nWz(A#wf9A+zcH-EoVyxvj0O|oW3 zjGx8B2U7nhvwpaj_q}oB?%m!-lT+?{oU=a}w|+YF4F{Qh`)s|#yH2cu~gyg`8w9w?Cd-Yc8ojPqIW8656lM!plXS0L`iZ{YGO&MZVHfK zFfuT()HO8JH8cw`GO{u>ure{zH88g_Fj(fW`zcHVNTn4-7f^$tfvy2igJFn)nU$%b zm7yg>!-|>AyeJxS^HVa@DsgMLd1UuSpavt5lYBChQ}c>b88S*r3as??Q}gu7GqW=b zQd2S$_413-^+7!SfYPL#%;fl#{M^LMJo~?|&cm#O*aY{Gsjh*Au90O3&>zN@K(FWm z9co}u8yWoss6i5BU2uL{NqJ&XDuZK6ep0G}XKrG8YEWuoN@d~6R2!foX^5iIqU2Nt zH%DIxQgF*jOjqzs&d)0jJuk8ssLTYREIu^I2j=?n@^Zbj#9Ro{OU}>L&q++u&je}I ZPXn4!tY4_=dKajl!PC{xWt~$(699@Z8`}T? literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/jp.png b/test/fixtures/stylesheets/compass/images/flag/jp.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf1c582d066421985192bf3bb5b7f9c21b199b8 GIT binary patch literal 771 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIuJY5_^G|rb!G|Xc%6mUJhdhNCwY!?Fx zc)a)=oE^Ozr^N86%06NeF`1nmpwQv6*~24e;zm>b*1c)LPfl-2x2gZ~|Hiu4R+0zK zJhJ04YKqiU3JvY#5U5s2`)hdMZJBnp(E0}zOMV{G-YnVenr8i6N9#}G`|mm1TNws|`Q8WmzJ5IUv}$*YK$k_#w-b*iu80eK`twQ6vgrn!FP-@% zBiXOXwP%rB=pOf$lPYH!P6jsS;Q&~q#X2tusoXXKG%`*!TZD(F}=J}fI zl}Un}iaWODzTS0iyJm;o+~#ms7r*7fnQ7mD@BM!w;ov`Kk)Nz;lXK?J+iCy`7S$5h zh?3-@)Wnih-4r0fU}RumscUGcYiJf?WMpM%U}a*aYhZ3=V6e<#_fwb#kV-3vE}#ZO z16>242Ez~oGb>X=D?>|&h7~iJc~Lav=BH$)RpQog^T_UvKn+G9C;4P1r{)!>GGvsL z6jq^4vh>g5-u>w|du0i{VfnaS}f`MHUidG>!_orhTmu?g-WQ(XfK zT_ej7pg)W)fnL!CI@G|RHZuANP=h4My5Rh@lJdl&R0hYC{G?O`&)mfH)S%SFl*+=B zsWw1G(hxh*5iMbG@ lmzra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI=JY5_^G|o@$v-b~9lxaO*U479ht7PM= zAP;lr8DD~b2%btva6OzOm8z6jo}N^=wwwE6ZfA1$PNH|Z#ID#-A+-`#3z{@LZSf=vC-8?lwE zR+)$2)vJF}v3q{UwdnKjZC~w}y?b`$Ef0Iyz1$V8;^*V)_MTd?WYC2za`0>m5hoQbW@ajvH)R4h^AD^o)&LraK;6*HN6Q8eV{r(~v8 z;?{8U$nK3m4Mrd*`D7-i<`t(hWR#Q?Sn2Dh=INDZW@i?prer4S}eUBg+t=Ka4GbUeN_Q)WD!NGWrQngCxkh;QX|b z^2DN42FH~Aq*MjZ+{EJ&%r>mdK II;Vst0O5*8;Q#;t literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/kg.png b/test/fixtures/stylesheets/compass/images/flag/kg.png new file mode 100644 index 0000000000000000000000000000000000000000..a8ca53d8ecf63ffb2b33af92aa9aac7dd424d9db GIT binary patch literal 811 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI~JY5_^G|uM+8fHyR6qxh=w6HcOn-0@H zH|gfqN0vp4?;JU0{Df&*lHkEZQ7s-#u?mfQX5N(T{$JnOdU{jN#@)u7jq^T8>|Oug zj6aj%0Na7fn~fP>x|y$f_E&9+Z$0)vr zFXp}5=e(a9^ml=swzXSU^{u^nI!s|9=#a{uOhsn_@95Z`FIs9Y5~ewR)}M z)8$F$pG%#;^DU+>f;AzA@t*X}|Hb8nwHqs$>KVU14{4H`nf)IagsLU35hck*sfi`2 zx+y?{!N|bCQrFN>*U&7)$jHjjz{%(#R)&@k4J&3c^P*_T%}>cptHiD0=8@eSff|fJPV&i2PR%P$WymNgDX`MlPtDUS z&&*CFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5Xq#=q* zi;`0r+#G!&NWm>9Fs_FJ22WQ%mvv4FO#piCCc6Lt literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/kh.png b/test/fixtures/stylesheets/compass/images/flag/kh.png new file mode 100644 index 0000000000000000000000000000000000000000..ba7dda0e3f02bba9ad1a4e77a7befddea794a929 GIT binary patch literal 878 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIIJzX3_G|tCP+?W-TDA0QT@80t7ZKdn8 zBTlT^k&&z^#-?q}oR=tE!~Ry((RJen(+A2ND|z-c9&x&_WG1v#V6}pp_46}5M|~A6 zYIv4Qq*)Ye_1GU|s^$E^P*rltpZkizo?E-v6qw~+GJgNyq4}bq^~!6NeRA>U=jZkI)LiUwPtRX_cxqZEn~;N`z$XRQw9qhl z8=1SY3t}B_m(BjZyk9Q;?g^i?Nqr4c3^5ZXm8C7!j=i3HM|1M$%xk)0sYaU3&njx` z6&q9z^Sl$kpToFfmYVVAb*mp5H2(ZnHdQXjgGuYb-O1O@_t*aSZVT{GZ!Sp=aBQ`y z^w=4{)8^LQ%6R6xjO~vzoxjF49q;GYyc@i?!{!6aGSLr=8zw9Ke_V3O_Njc2iSb&7 z@}NdwEU1>aMwBEMr6!i7>ZSk*1|tIlOI<@lT|=`FBO@zA11l3VT?2C~1A}D_yPv`| zfK*yRbOALO8t57TH5i5%m|2+`S{YhGG_07(%!{HSH$NpatrE9}n@4tU1Zpq>Imst8 zIW@01l_8^~q`*pFKQ&LUJTp79AT=d3Q7^wJT_42L4=7E_$xMz<$O9Ok zh)r-0nd%x?=o(pu0R3TX3G|9C(4htfwUNGEra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJfd%8G=Xq-3g^7oirDAR8Le)rC&7o0j= zH^+7za(47^Wp!;2i)DNDMxOPgl2dbrI_px6rj7}LYwBB`x}I?U&!?y|lTB!<+#(I7 zxuSWoX4A8O?R)?J``_CAv0p50ZEUWY9AIFmj^yy(!N9;KvEb>u?TuHjS2H-c@NiGw zs9K<-qVPQM!9xrtCIgWo9ESBUu7Wv`~Is*pGr+wdkpV>KUKHlw63RzAv@OJa&oF6$#pDI@wnZ$X_?b-BDUHRyp@8M!*ch2;w z{hs%{U!E(y_}q!#i>}Sd=`-+t_A%e6=G})~>y4)_{OA;3^!MJfEmJe(?`%&$KF!xu ze*ct{1bHtmEI+yP`7dBPP%UwdC`m3#O)N>( zO#u=NMg|6!x`u|jhGro~MplLfRwib;2If`<2Fo0FKZR)kskDOV0%|Zc&@}*RFbpv; zvobZbGPHzfSTU2C7ezyEeoAIqC2kEjkL=zE)L;a1l22xGYF=?FLq literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/km.png b/test/fixtures/stylesheets/compass/images/flag/km.png new file mode 100644 index 0000000000000000000000000000000000000000..b3056cb3481687b06eb903508f7c2ee84986603b GIT binary patch literal 921 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI6c)B=-Xq?Xtw9OC+l$f)9x46EW%>?Ua z!*-Qc*9S^&2E7tn1=hH@xF*$h%ykS1=uXJYO!N{w;?`t;wadWYbvL zFoB6f^2GjGbrrJ~^yF)b$CZA6|7zac75Tne4)dp+1zFTru-()qqkR0>J9zQr*JQZ;lU>x|E}88@zZ`+ z=9k>gh_AEFxc`68rjn-*WO`XL*^G_5y`nE&_m*y5`B1a9Y}ed`e>dFgU-|z2y*Ki! z<56Q4?s-y^e*HN0dAgz0kI0wj-dGyh8rA;(_%zLWPTlj* z)L>|!YXH<>7-C>%Wol?;1muD=Z0>WkMbVI(pOTqYiCe>=%Rd`|8jL_r^2tn2%_~l2 z$S5f(u+rC0&C@H-%+4%GP038u%P&gT2l4a+N|SOjljBqJa}zW3?Ek(x53>$p6Wl|l zx&{`yMwTH!XBk@pU8W0ksDVLkWb_lD21$^0!TD(=<%vb942~)JNvR5+xryniL8*x; zm4zo$ZGeiTA&N?il2aMn9DN~3!7V2-UBNRsKd(6SyvSalG82Td_|PC9nCr{S%k|O{ ob0J7CIX_oFCoxGs6Qof;4QNKOexa)CU7&sjPgg&ebxsLQ029AhB>(^b literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/kn.png b/test/fixtures/stylesheets/compass/images/flag/kn.png new file mode 100644 index 0000000000000000000000000000000000000000..9f1d929c2cf77e9381daf56893009d5ebadbb297 GIT binary patch literal 936 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIsd%8G=Xq?ZT=-+asP^Rtv{V%iM9``$X zO~^Wu)R)19?{esJ3pyK>rT@u2)~ zxwk$%ZRfi4#_hNDhzt_?3E2)C(YVyy?kc9`h>?+%p@Ef& znXZAkm4U%Bhuu$M8bB(oAi97W3=MP*fEo-#49u)d4XuoTT#$y%eU7#$8glbfGSez? zYdCcIXCqL95y(kCnaQbn#iV@sgRbb$^vFsO};egf1W39>FYKdq!Z zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP?0o5QE5?fDubJ&F9a#L0J88sr0WeR+AgURq)<1nDK`=j!JqCh2E_H0q}T%_!C{RCT=z)X(7Q>gTe~ HDWM4fPL*q9 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/kp.png b/test/fixtures/stylesheets/compass/images/flag/kp.png new file mode 100644 index 0000000000000000000000000000000000000000..0ee0167cfb8b68f4c629c17fc8c9542419a0af52 GIT binary patch literal 880 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJzJzX3_G|u}@w9gI+6gYZ*@9#}c5iJL_ z+`3IB9a6jT%v(k0+a&%?r9m&*FBna|ojI{J#7vB_+IR7in>&^TR1|)nH`Ds~BisKx z!Dkw0Ce`i#QnIS7cb!cWAOC~}?6zl^|EzEKcyIsuV=Y62io%tCMNI|I02lGE4})jd zDc!C7skCnT3b_)K$XsrRXRGvzXSUAH`1$bLqpz#k0;2Sak0pH4dHZHbkj3nuKP@v1 z4sk>&C9%NSh;e2yv2NeHDTU%N47|A?MP4c!##Hy_dL31@&4^p^UZtq zufNFgcw>*_DW8-HN>AT8uq}AC>tEXYduHwJb!BZ=wZytLT$gyg+EC%w_>N?Vgop3%^AE69*}DD4oh!%OW}LM4;`@H% zRuuEuqsOmKcJE#AVrKajMNOx@0*WdepS#~@e)zNP-w)+W%-MfFziQmSO!>iq*gtH% zEfG%|^xPi+<3Y8=HKHWBC^fMpRW}7lFc=vaSn3)Y>KdAb7#Ud^8d#Z_=^B_@85k^c z*!>iy0i@Cjq6?_O&_LG!sKGGAz|6|j(8>tN1!>sa=V*(fAvZrIGp!Q0hC`QsHUc#m zft=)%nVgzeoXU_|6H_V+Po~-c6-h%Bl@=wZGPpVVLXd)6PGY)(XL5dCap-xGy+CCq2xal1 yK|V0omzS68r6uMra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kH(dAc};Xq@*A^!67{6xkaeJ)`W{w#$B! zm-Fv2K}1R z8N5}q)b4$vVUoqkleVji&z}_h`>^3$!_3YO%aH#STqn;6DtR5f8WNNH_HF(DKdC%Q zqSs48eY2z7yww(6%$K*5Gnp;?a?8r}nU-Qw->Yno7ygm2J77^XS{$AcSYabr8wTYZ>ramn^Eatjx)^HBdNa^->>@@v-k4*ovf=BT5e>^9y>IRp=hU!;NFs8 zRY_i@&gI?w(aNcRA6yP~y|{*nLCDGI_zX@4hV!4#WxhHPwZ@6MGRv;B-$3fwrVgCV&0&$I!3SDO7`*@ z;fqtbvt|?*Z3WOPtx&kSJPA#G!*>E*=i_h?iSwt4j9F% zC9V-A$wjG&C8@e8K!U-@z`#=1&`{UVEX2sj%Fw{d#7x(~+{(aUnZxd-L1;Fyx1l&avFo0y&&l$w}Q zS$Hzl2B=6HqNubeIhDc9(HDXg+;S4r6+Dyk^NK^yi|hp|GeIbe4-N8xxxT!-TrVv# o7lQPX^Kra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJVJY5_^G|txs+Iz_sO3b;tM(JbXN1r3= z9#Z}S_ZauI%u}43`(W+?yH~tL4dGANSwBzNG;f{i=xF|V4$!{D*)8rP-2wbQ(-Prcu?T+Bo3 zrFi%A-Mcj>v3>Z>z5mX=eOtoTibk$&tr1mv!k?aAFE7W&@bb&!%dck0JdIoP((l#D z%$|E~v1R-v404Ui5BMik#-B+lGMLTqk9lrJs;0J8-g98^sg}4#lq46WCYGe?rT_^B zBLf3VT|+}%L$eSgBP&A#D-$za19K|_gJll8pTabNR9ZoF0W}yJ=o$bu7={>_S(zGI z83DN<4V(KMZBaDj=BH$)RpQog=b88S*r3as??Q}gu7GqW=b zQd2S$_413-^+7!SfYPL#%;fl#{M^LMJo~?|&cm#O*aY{Gsjh*Au90O3&{@WoK$qzP z9co}u8yWoss6i5BU2uL{NqJ&XDuZK6ep0G}XKrG8YEWuoN@d~6R2!foX^5iIqU2Nt zH%DIxQgF*jOjqzs&d)0jJuk8ssLTYREIu^I2j=?n@^Zbj#9Ro{OU}>L&q++u&je}I ZPXn4!tY4_=dKajl!PC{xWt~$(6959@AX)$b literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ky.png b/test/fixtures/stylesheets/compass/images/flag/ky.png new file mode 100644 index 0000000000000000000000000000000000000000..fb3c46885341e1f745294e2a2792c33f48773220 GIT binary patch literal 991 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJvdAc};Xq+#d=<9L0P~!Oh|I@eaeCBhz z#8=piMU|^seb4oc98RyV?F@dlP~%XG#;c@uy+b{Gf~ngb1+FeU^QLuy(%aOXLgq2u z0kf-rzW;7>{{3~wCcRpI`5$xa+SixX7yKx;uq;V__NC3|z%dUsqaD%xcC(otH89yY zFv~qyyYlMZ>=y@LG+Y+@{OnoD&ZON(-c?;aZ@HT0<_*hjg;;E?W#2qZnQlMv zL4mN9nR(9Lpv*p@!l^w$HMt+JIe1^*m{PN+V6q3pMsMriZyXNqwR!fops!~8>A?8( z&2+owc+Pu ze3%OwwImlu%xIk<+G(WVJ$bpltnS*=aq`taLud5ozqcsYs59UdPe@Y~Q&JOhUDVMT zxiMzOhwoo!Devv%O02o{>)YY|VIMkDg0qz;rlqC%sw`>s?D+9ke9!#wBfH`@9T8*@ z+wk`N;{QP(=Kp16Uaxwt=a&CvV6>~2xJHyD7o{ear0S*s2?iqr14~^)LtR6&5F;Zi zLjx-lGhG97D+7aN4!fViG=NlEL39B%7#ipr05uqf7?@d^8d@0vxgZUj`y6diH00)| zWTsW()^O^z~Eo^vW}{GYe8vG86Uki_-N$JpF*u zq@2v;_>}zI#LPVVzpu{2tb^DD_mHWsfrYM-WeCt&#+E>r=>i>UU{D(w{RF5%5@cO) zep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK4Rpdx9AqSB(|R0cOkUkFlg%SlXE@J!Cn zD-Jy`vKOe#1feWGG{^_$`ttH}y|lz!2+~W=&(+UKOw!K;Y1B^xno+D@sOowbsGq^p L)z4*}Q$iB}U*3b) literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/kz.png b/test/fixtures/stylesheets/compass/images/flag/kz.png new file mode 100644 index 0000000000000000000000000000000000000000..1ed4b91582b9bbf1ec37ef24cb0490480754f5ec GIT binary patch literal 916 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHRd%8G=Xq@-Gct87Wq0I4**S}Zqi+WpN zwmYHIwD-!Upc7}iiWW}YU3gHnReGmL_`5s0TUU#!PLWnGzqDxaAFc2r$61BO+9h** zCl~L#|NZ&TqUJx0{j1%>vVS&j`grJXP{-8?PEK4bOsuB@7dR~46m@#;T;tPHl}lcx zB&u?1+<6=LdX*JRH?b{^WoS*#Nr7G?rm;0n9r-kR`cD|kb zK>kYmUW(4TrG7*mJ4*03hVBESlaq6$-CT35iC+GG3I$If^ zVJu=1u*p?KC^}-t3DJisx|<%$Ccpk^^>lW#&e^4>{cAOTGpmGX9Jso(^!jW&S&cPZ zth3{O@m%pR@DB7Z+;&|Mx!V>HX_J@}pL0KmEnKKQpS>B%|#QFs@Wf zTq8=7i&7IyQgu^+1cQ-*fu*jYp{}7>h>?+%p@Ef&nXZAkm4U%Bhuu$M8bB(oAi97W z3=MP*fEo-#49u)d4XuoTT#$y%eU7#$8glbfGSez?YdCcIXCqL95y(kCnaQbn#iV@sgRbb$^vFsO};egf1W39>FYKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K z@MNkDP?0o5QE5?fDubJ&F9a#L0J88sr0WeR+AgURq)< n1nDK`=j!JqCh2E_H0q}T%_!C{RCT=z)X(7Q>gTe~DWM4f>LF*b literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/la.png b/test/fixtures/stylesheets/compass/images/flag/la.png new file mode 100644 index 0000000000000000000000000000000000000000..2c11f0bd49376116e0c72b6d38d1ed089e4cac43 GIT binary patch literal 871 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJTJY5_^G|s0^+?zEeQK0qw@3-kKuD(7o zqE|%nX5PEz=dn<1icmy~p3K_+FCx;lYy+7OAJF zWvREhEaiw?;=%SjUq3JLPTqa_yU{Z5Rxb{A3g2pS->%x^#F_HPf9LM?WYiMI3t1C_!@a;Q(GT)ECukPqONB0HEVQR{Z+g29*0$UT1e>)L7g`2CtHT?egZ{!?h3Jw>B)(e!ET zi~HB#{{ExnZPr>m{>Sfj-X-Vxqi=4& z;8!hijVMVjN=+v@*1WXjn0mnHNPvZhlH;S|x4`H;?Sz2-IK%a*|JGa%x_2 zDnmv|Nr9EVerldxd1iKIL2627qF#Pcx;}`fA5fZm^)p?k85S!p0 zGSxM(&^59Q0s6z(66h6OphFD|Y9phc05wR0tP9RhD=AMbN@Z|N$xljE@XSq2PYp^< zOsOn9nQ8-6Bn?qiT9lm1;O6KHK?-g;iRlWS$@zK3q31>R0+pE{l*NYz`M_LXUS6)3 qmY54cddc~@`Zra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kG?JY5_^G|q9sjzQNN}yX z+PUu5<=8c$)q%e10ex|?y`iEE9+Mb$@7#aW?#@5+nu^b#a!unjgD0sN_vp!rYH-as z=##d=sqOD){o{Y{egAjy-pzg5tXneA=ooE&tLF$5dwzNE?e^QZ+IR1r8~<0hlrbgw z#TCt5*_<{fPX6_WukTy8`Legl>2nv>Z2Xw@`25|kpN=mL*fYC+ufb-Cmu(Z%xERW~ z_EhW_nl7F+_g&HXDh;dG3nwZ)6^T7qRQB%n^23uF*qCR}VA-3{k@s$q__-yEcNVos z?2>2LAb(zdroY^ssTqO?>IH&bp1GC%t^o$LYKdz^NpewYVo9oQ3XothGBB{zH8j*U zGz&2@vNANVGBMLNFt;)=Smv<%DNF-Mr4>XMP=ld?t^rVkVTgg5m8qeX5s(Ygu({9C z7DYpDeoAIqC2kFeF8^!8HLp08A)}rSC{4=AOpZ^<&rQtCv;X_*Jj^hsH>Ka(+8d-(_on>qZbeS&Dp#}!EkC#5QQ<|d}62BjvZR2H60wE-%UhA1j6N={{PbM%EE1-G2U zbOq1k{Ji4O^CEkJ%1jW-;zNUcV6HDOFV{;;%!MGm+}rLp08tp4pof5-7s@p!D3CBZWyU%1UCh8U%VAr8jb36BOAp zS)|Ez%jPedIYFFSVqMENZ8Yd}J#fe?K>DC~fB;joae3XlJDb19oj&!RabL;%!eHN^ z)vOFt4lyp6wN&U;*^9Pgl9PgaS6&aSw(u*@<6uzatF9)*PYr*ivJ}c#4VRqF~>IWtX??o4S8b_0{^n zDUZvt!whBK6)5>kFjD1w$kBCV$+IYN`ES4fHv7Mp4gD;lS1cMFps>kONknAn&zQT# zFW>u1PYsHe{Fl+UCc&<~bXz?qo4+|9ZmR1ArEzd2nf>EuI;@ua<tgDm(tC5R90|UDdi%Jux?muSJhR_|x{9${5@ugbg8c~v5l$uzQs+$5N7>o=I zEOiYHbq&ozjEt-d4XjMebPdd{3=Ebz?0yQ<08(iM(FN3CXrOBV)L9nO2Eg!=cMR8-W^(Ku+?>Ois-!PG!g_DJihh*H6vUE6>c%EJ#hs zOw`LSO4kSR^aDzhax#J&%r>mdKI;Vst03fMJnE(I) literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/li.png b/test/fixtures/stylesheets/compass/images/flag/li.png new file mode 100644 index 0000000000000000000000000000000000000000..990bd3d8d58684571da17fa9e30b97d37b87356c GIT binary patch literal 855 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJDJY5_^G|s2?7-mgLlxTVW|J!8&)o!;4 zj!jNVY&uL%r|uk3=D2r=o1?1JMDwWECDyGU7@AroCPW-@3v5bAnEqt$%AlgG(MFPHeJPF<4kKaJ6pA=2Wh4t)@6dd{bA15E?6wYp7m6%g&)F{g`g^&# z`t!%$oB1nsqPM6l&A2ql*K?Z9&a%&@WxsddymxB7VV%tM#VeG$Kh`g^$dc|icwL-u z^U9$xmB=m;Zy(o*OEoqwnOMqH!k{WT^T|=k#V7XsNHg^E*?p7q3yYVOTDEV?oF@rt zHnC}Q!>*kacekq`DY_ggAvF{KAFj>dBv#=86_nJR{Hv>d3xoU*_j2Y zDVd3S`9zH zqb~$0xaB0KD|ja7=M{&Z7ugF`W`a-_9~$HXbA5Svxn5dgE(GZ%=jZC@Bqr%+f;8%< Y0nI4ZFI08C3)Iix>FVdQ&MBb@02i=4xBvhE literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/lk.png b/test/fixtures/stylesheets/compass/images/flag/lk.png new file mode 100644 index 0000000000000000000000000000000000000000..bb955c3f372a4de093189d0f19d3652e80757ff1 GIT binary patch literal 921 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI6c)B=-Xq@+*c-BvtQKa>~Px_pNOQ)?0 z3_LRbNGqpatc2-7@q)*P#0%b^JN_Z_$kdOF28xP~N>^8`nBnBB@wa(q^*LKTgNvL0 z?W^gY9AbU`&3%bUhA9gdbSgPb&tAh9`E&8+#dll2mnH65Um)Pu z-mob;cBggD)cMB7t7DGWB`uj4v~BM-om;{_le5@Zr6NOpFYGb+y)7mz*RivVafDY&z`?3f_hrrgnUfSmC!UxcDdo9nPvW(R%1^(a zyzsf_wPemj?X!Ee*!TWC_bBmo&D0(}eUBg+t=vy3f)F4F}%)WD!NGWrQngCxkh;QX|b^2DN42FH~Aq*MjZ+{EJ&%r>mdKI;Vst079E(rvLx| literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/lr.png b/test/fixtures/stylesheets/compass/images/flag/lr.png new file mode 100644 index 0000000000000000000000000000000000000000..2e07be31e303094e0aea79aec9beeb716464ce11 GIT binary patch literal 831 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJtJY5_^G|sn9wDxum6li(=qBk?gMeyi? z2mKp9&0n&0^A_QYZpq3`xl$L89nx|ORGh28A}Ie+uzIq_L8aC?cXk(-=_b`E@g3fD z)tu*XgO1%&@f(Z_7#QEqiq~t%`MBUwZP1i4tx zzw@1_+CS6JeeJaP2%U4^r}vr!c?xfISiGX6(?xmlbm^ZQ4lBPH*xE+k*e%vJ@u}%= z=W{z(&b-O-;Og1O4?ps*Y+Pt(zWPnT?l%f*A)Y~tXKwzpZSwTA_XiT%84vuM_WEVz z%CNhZ6C%%h?#&ZX^<5z%94NSSMnLn7j!7#w`c!6L|M{#qE8#=D4a4(0!C%i!ZS1@g z6jN;?Sj+Dj@?+kGm(EhoRW*M~mOqG--nwt$LwVV{rHlp)y|=rpf7+?+{%7^=IP(ME zTZ$OUQG+~;VEq9HdwB{QuOw}wNPe>MU& z7=fJRlbM{FSDea_QBqQ1rLUiwr&petomr5Yl9{NNUzDy7;^_yJCgo%%$EW1yCT8Z@ z|9y2HW*x*PxQ9%24J>qxEJJ|KGPVS|Oc&@-1B2Sg=qEr8k|67X^V3So6N^$A98>a> zQWZRN6Vp?JQWH}u3s0un02N6?6qObwr!u%X`a+O`TTWuSf@gAmUUBGok-b1=CJ1Hm zp+P<{*O!-<>!l^;LXci^ey)B_Vv>F)NTYrl(2QdJLRHthK>ZA!u6{1-oD!Mra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kH3db&7(3F%GbO(n z&OGeW!6nH0_DJi6Rc3FQe=A41Y{`n3KDe-#n=|LKkz$5m+Y(ck87;{{R&@_M`?RSxw9QEmhYRfIHlFr z*qFmF^mp5_bNv0R%dQ&8)lbvEHdFVYNbq}+<@*DaQj!8cY6)0`@=lUn_A4v({l`CL zt96$=cxIKVelyf#W~WQ!mF{2r+vg{md@Ni1!~5La7gMG@Unf52mzE>{@5hf^efE66 zwOJnH7~;gj%LdeX1)#vMivDJ23D3A$K+*m10G2oT>TChv#KSo5hck* zsfi`2x+y?{!N|bCQrFN>*U&7)$jHjjz{%(#Rz^TBNW6o5vaik0cwy0Sr?q2R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGSvpC zNE)K3v?w{1!OhVZf)w0x64Mntlk@Y6L(hxs1u8Q^D2opb@`1U&yu4g5Eio5@^pf*) i^>Y%F^fN&k_0xc66zdnNy50rqXYh3Ob6Mw<&;$SoE_WLM literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/lt.png b/test/fixtures/stylesheets/compass/images/flag/lt.png new file mode 100644 index 0000000000000000000000000000000000000000..2089c091b40a55fbddfd26775b4b2b10ce448d0e GIT binary patch literal 801 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kH9JY5_^G|q?i8v4x%xFXv>kkd4c) z;l&O|6~7~_i|#1rcA2caT)^bAC?q66fpw{qcB9SXnIid-O{u+hx09sQ&7UA}&uyy3aJ2cI5){#&(nn$9efn>v$YuO5ANWimf|c)Y;} zrkyvZsCJ(%+UU7?*Q)#1t{jqLc5v@HwRE2Rsy&g~;_B@@j6M1D3#IJtPhGiUSB9_j z*;^ULSN?VGyPq(JnZ5pMy~L%IRY6-DbKQHY-h5{@;L6ZyZ&zH{Cn2PwGNGGA^RD;y zUGWW1#RMLNfBh}=|10mBhI&<{a_2=?);<6RoN9?{L`iZ{YGO&MZVHfKFfuT()HO8J zH8cw`GO{u>ure{zH88g_Fj(fW`zcHVNTn4-7f^$tfvy2igJFn)nU$%bl@X8&(y+PD z(H2ERZhlH;S|x4`hc5qY1Zpq>Imst8IW@01l_8^~q`*pFKQ&LUJTp79AT=d3Q7^wJ zT_42L4=7E_$xMz<$O9Okh)r-0nd%x?=o(pu0G(xQ33Qn*(4htfwUNGEra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI)JY5_^G|t!d8+tVd3bZ^|T_51`m_Lcd z(NQpG&ED3j6++y(%wqEn6~Exrv1yySzj1}&;c9DRv3eh=(ulVF_SD2l{{A2A7#SRd zycE(j76yf^;tEmJQBVHV^;(d@`=rwau@f#|PsW8zR+GK@q@-lFq4tWSZ@FCp`WOx` zY3_R^)%R+}I#b?qmXtYje?Q=ezP%u)$>`}KuaQ~E` ztlMVgrMoj2_j74_o;tnw|Nq-3r%ln9H`nX4{b|H{Yl>$3o(JptTGFnDfB#$aeaYdo z|30^C3l=TamMxi@%vi)x{ko#sf$fTOemQRNw7=6 z;b-Jh%hkmRtoI)tsmzW~-o^_IGSw2-h?3-@)Wnih-4r0fU}RumscUGcYiJf?WMpM% zU}a*aYhZ3=V6e<#_fwb#kV-3vE}#ZO16>242Ez~oGb>X=D4qg7)2-IK%a*|JGa%x_2Dnmv|Nr9EVerldxd1iKIL2627qF#Pcx;}`fA5fZ< zlbIZ!lAoKHnP>m^)p?k85S!p0GSxM(&^59Q0Xoar66i8rphFD|Y9phc05wR0tP9Rh zD=AMbN@Z|N$xljE@XSq2PYp^R0+pE{l*NYz`M_LXUS6)3mY54cddc~@`Zra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI)JY5_^G|rb!G|X}e6mWe%x!p-5h&$_H z+@%!FZ;Gwl9&?Ru7YHYP-k!kWDd@3qQp1_K){`Io*I#zRAm&~3O!LEYKJm=C=*n>K zb!pUk<^^@k<*!W}dQNmqIVAe2g#Ww3Q@NBK-8DCJvRE7bRQ~tST%r&yD!HU*QR~bT zA8X_sY?IZUXRyvp^GwU0^U{mc!BpX;`Q^+B4<~(}Yui#X{fgY(#!n1$ zswR}NUj3Jp_tC#0zDA?b^W(7tJAgr^TH+c}l3bLUSdyxn0wfrW3=AxF4Gnb-%|eWf ztPBmTOw4o*%&iOzmO1Qx3ex~mX$8>*)L>|!YXH<>7-C>%Wol?;1muD=Z0>WkMbVI( zpOTqYiCe>=%Rd`|8jL_r^2tn2%_~l2$S5f(u+rC0&C@H-%+4%GP038u%P&gT2l4a+ zN|SOjljBqJa}zW3?Ek(x53>$p6Wl|lx&{`yMwTH!XBk@pU8W0ksDVLkWb_lD21$^0 z!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$ZGeiTA&N?il2aMn9DN~3!7V2-UBNRs zKd(6SyvSalG82Td_|PC9nCr{S%k|O{b0J7CIX_oFCoxGs6Qof;4QNKOexa)CU7&sj MPgg&ebxsLQ0Mc9?iU0rr literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ly.png b/test/fixtures/stylesheets/compass/images/flag/ly.png new file mode 100644 index 0000000000000000000000000000000000000000..654896aafb009dac0d6bfbac57befdba26ab5492 GIT binary patch literal 733 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft)*@E{-7@=R*T;=N@+8NoJ^DBD}@H?PZDM zvKI`0PbAG;C?Nl;J?FR`M^lM=m(7bN`8j{CzRwg%{WFpWb-8S>l3AYl-2W+B;#bB{Ju2j`N64?e=Xm$qe(-6%k`;JAQaU zc)*E}+|r#HPR<=ylb&QWZwfNePRY`fUA)1eAUo&Hi;o2=r;~OFrCh#aZ}n<7$L!Bq z+>%bOQ~nz4b80n`+|8TVc;Lh5Ur#$GewsEZ)nl8|_PcHc2mfw4Vd_88*;_S(zGI85u$}i2n5IMA49&pOTqYiCaU;l24{U4Mrd* z`D7-i<`t(hWR#Q?Sn2Dh=INDZW@i?prer4S}eUBg+t=Ka4GbUeN_Q)WD!NGWrQngCxkh;QX|b^2DN42FH~Aq*MjZ z+{EJ&%r>mdKI;Vst0P0=;TmS$7 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ma.png b/test/fixtures/stylesheets/compass/images/flag/ma.png new file mode 100644 index 0000000000000000000000000000000000000000..12616153338778c9203dd8667ba8c94c4936291d GIT binary patch literal 749 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft)vw+~)St6qWkOQY zgU9c}zxOyhJ2D%e<$Wixd)029wEnxS8#TKUmvygOnRhH^tKI+3G=|@{4B-p8W`-%H za!&Hp|50MW!@%(SvGB|jCO0dcF7UX|$ax%bfZ@Q?&~g_~HNnKT=2(VJ4GSBlah?>? z=)V8#v#ocH#j&scGd43EU}Mtf{YR&Lj^5?o zJL5u{_Y!4=ukE~#KX$5hbK6f+Ej<|e|B=Y)DV@sCqy@cF7IB-2lvz&>aALXX;qgM} zE6>D82kZ6XKhO77|7H4lI_iMihj@OVzg0_IBTABsQWHy3byI)@gOP!OrLLi&uAy0o zk&%_5ft87wu7SCgfx$9|-A`c}Kq{>ux_}xC4Rj5F8Vo}W%&bfet&D(NkcQ2DjG~j^ zen4qbPG)j^N`7u)W}f}uSLb2YL2QD1$W+(BLf6PL1n4YdOQ6eifetk=sEv$%0@NT0 zvMxA3t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU38Nku*e6X;E@2gPWr-1Sz=XB&I8P zCggOaT>1Tp8>ZbwCDAq4jb-fGJ O&*16m=d#Wzp$Pz+c>*T@ literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/mc.png b/test/fixtures/stylesheets/compass/images/flag/mc.png new file mode 100644 index 0000000000000000000000000000000000000000..f941984e8ed9284a40809220bb812790f95f301a GIT binary patch literal 714 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft-_`E{-7@=Ue-|vzQ$Poa6c5a#v)|nEWej zU!(s+Zk2=&W~=kIPI2Y;YqRLo;1X56y1Yfd;(WXtXMr8_#*LE7Qar9sUhjWSv)7x> zy+ju9cj(JYW2OMZ@Kj*Rv~ac!^yE<7pBy>u_S>-B^HTqU&aZo$RW0^kiox@C z+w$~9Qx5U5Zp+(RyZ^qb=O$ZmyPYb@Jxfv}8~lUClJYhrYW)OyO0~o_q9nN}HL)aB zHw8#A7#SE?>KYpA8k&U|8Ce+`SecmV8kk!d7%X$x{S>AFq|yqa3#h@+K-U1M!7#+Y z%*xcz$_U5>Y1rK7Xp5pDH$NpatrE9}LzjOx0yP+coaB?4oSIjh%8*e~QedU8pPHvv zo|&ClkeZU2sFz=qt`Fkr2b3n|WG2U_0>w@#sO3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%NkbHs z7A2=LxHV*Nr@*SkRd44$rjF6*2UngB)7^SJ;3 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/md.png b/test/fixtures/stylesheets/compass/images/flag/md.png new file mode 100644 index 0000000000000000000000000000000000000000..0bf4eb09287c63a972efd7eb091b6ade4e5ae87f GIT binary patch literal 860 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/mk.png b/test/fixtures/stylesheets/compass/images/flag/mk.png new file mode 100644 index 0000000000000000000000000000000000000000..808028fcb033760087a50cd1ccf4fb2301f61fde GIT binary patch literal 905 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHlJY5_^G|tz~Va zwBKmkscjRr=RUuDBIkS#`3dTW^N%dh+EO|tZNmrky)$%{@Sk#j61el!>4)(TH7jlR zc=L3MZ`s4vb^YnqC)L09`c(LA`=fYga(>(Qw%@Mx*IsXtIVyfx{<3{j@0SU8IM1Kt ztDk)RaDPhs_SKeas@k`myV!FgzPa(s%@5)~JtHP&94d=(5ZQ16u+}>7? z@8soAp9@;rpXxqr|5W?4qQYyB?isNKYnQ*6?Xk8sp1otI)rJH1@B3Za>rXTu07j5%iEBhja#3nxNvduN zkYF$}FtF4$G}JXT3o$aXGBmI>P zJF_4)B{NYkzbIWF#M2KbP0Gnkj!((YP0Y-*|NH7Z%sPloa1WX48d&HWS%v_eWo!v_ znJ&ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHjJzX3_G|uNv+?XrMDByDcr@Rvr({i^> z8#0<_=q+Fua?fjQ35#LibzpCKz&2sxzOuA*&UYWoJFa@)KjX3c17{xt%bD-|durGw zOqj6#3Gc%rr)8{<@k1iPB z(mcC;)~boqPM<#D<+1Ft-|nd|XU_WAla>_}e2Znt0WOob8Xbe2Mdv>^?x}CRdTYkY{n93($q$!F zM_4ZU@#tr3RM~u8Cf)7>3iD=MUskQWp@7%^U_py=yj{`PN9Sid+fDxdyMOy{-ei*^ zqoanm3V|V{TH+c}l3bLUSdyxn0wfrW3=AxF4Gnb-%|eWftPBmTOw4o*%&iOzmO1Qx z3ex~mX$8>*)L>|!YXH<>7-C>%Wol?;1muD=Z0>WkMbVI(pOTqYiCe>=%Rd`|8jL_r z^2tn2%_~l2$S5f(u+rC0&C@H-%+4%GP038u%P&gT2l4a+N|SOjljBqJa}zW3?Ek(x z53>$p6Wl|lx&{`yMwTH!XBk@pU8W0ksDVLkWb_lD21$^0!TD(=<%vb942~)JNvR5+ zxryniL8*x;m4zo$ZGeiTA&N?il2aMn9DN~3!7V2-UBNRsKd(6SyvSalG82Td_|PC9 wnCr{S%k|O{b0J7CIX_oFCoxGs6Qof;4QNKOexa)CU7&sjPgg&ebxsLQ06G90o&W#< literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/mm.png b/test/fixtures/stylesheets/compass/images/flag/mm.png new file mode 100644 index 0000000000000000000000000000000000000000..2c60244e1d8c0d93924bf523867b7761e938e3c3 GIT binary patch literal 792 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJFJzX3_G|uNv+^FXgDA2aQIJVnki^jHq zfR74tuIul%-<)?$_{9-xj+5Jz9wn`}{y)dK>u|5D(af}e@8{PWapoOhoYCOeC}vd{ z^&o%igUvS&zPtD2NyX>K%Inte-si8W{qyFmYUS4In(y0JuNI4l&+p?iUv}A3^UL3F zHUD~aO5}rPIEkexE`7NrZ^4v?4iCYlE;FV+dFrjj9n3mG>%tdi^X+>(zo+ioQ8Q60 zZFxfF0zX=nHyPs+V3@_CZ*NBqjqSVBaRNWLH!C+)yV5w_psB35zVq|1x zXkcYxrfXnsWni$(VfRy*29QcCh%TT8Ljzp{pa#Pb12ZdALn|X77o=fxpQ9~`hTQy= z%(P0}8V+6l*$C8N1agv3W^!s?aVkSbNlAf~zJ6++UU_DAW~Cp2_)n z#i8d#_5zieAe6<22Km5TUtV6WmzJ0dL3+vgx%xSYN&1-}jrwUoGm7;KRbB4_^)q<7 L`njxgN@xNA^x`B{ literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/mn.png b/test/fixtures/stylesheets/compass/images/flag/mn.png new file mode 100644 index 0000000000000000000000000000000000000000..36349d9353dbb1de2c119ca35f1fc97dc505ab34 GIT binary patch literal 799 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJlJY5_^G|tCP+?X}hQKV)6-}mw&8#`25 z121(cd^}1v_3^-HG|UCVv*6@qwqR%bx`6Z~t3c|I2^r)*DCT79Ovz6W1(T^7ZOf9*3eY z&G&ol-|oI0?;bVb*6w}Fu6aEDvEwkyliVBmFpX21yQa|L#?N9?jGqSFT33A`$L(8DN!RCFGqpEeVK3cqvryxB$x-QA{wREl*@cBM z@BbvVGus{hJon%)Y4yjZujJ-Q`U%N-$F2Ydn`((`L`iZ{YGO&MZVHfKFfuT()HO8J zH8cw`GO{u>ure{zH88g_Fj(fW`zcHVNTn4-7f^$tfvy2igJFn)nU$%bl@X8&(y+PD z(H2ERZhlH;S|x4`hc5qY1Zpq>Imst8IW@01l_8^~q`*pFKQ&LUJTp79AT=d3Q7^wJ zT_42L4=7E_$xMz<$O9Okh)r-0nd%x?=o(pu0G(xQ33Qn*(4htfwUNGEra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ*JzX3_G|u}@G|Ubz6ghgn`XA>M@yu63 zQk_X^(K%O_das=Pm*Xyrqllv;%i^ZHf7o6$3ai=@P%2g1UwcznfU#k z?f1BLi5HS}bDkb(jBhh{X#HQ~o$iD#VNZ`)jc{Ao*7RCmjY%;7p6Sh#t6D#Kx|Zv% zFFW^W`nmkw!o85g)mQNZqePG6EVmDb?-#{<{&w{3zhB%NoAmPQ{acjOUTtP{G&c>s zZk@Yk+cvqFz58!PIUd>kRh>UPu2*}{o;lr|y$a_ZikVeOFRoJ2i$DJ9$F0R@zojYX z&zYirUH^{7{R}^H1#`<983=OPI%ybRRtqcs7IqZH4(*ROw1|6H_V+Po~-c6-h%B zl@=wZGPpVVLXd)6PGY)(XL5dCap-xGy+CCq2xal1K|V0omzS68r6uMra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kH>c)B=-Xq@*A+?zc)QD)Dc+Sz7Vm-!d_ zCPjH)(F-*QVNqY&^dP99uw0zWPs`#5e}_d!#{!F;*@EVd%M)aCbURpPiwSoxo3!s* z%k!PTZTSLU7Rs34m5t$2&wFg&Q^2My^N=UDUC)tSu)y{h!@GNXI22fno%LSxi~r3z znR?*Y`o`&@(f{WyV$$^bo`0vCks+}-+nuXbuzb&)53jQ(i3CZ^wFt7WFL{1)`=u!5 zPa$^O`3nRS4mOEs%+|Sevg!AUm+kXUufH68eZF7n+RX);7N;gJVGwUTCZJ)w`SQ%widum1*=)vQ0GvRWo%-|DC0 ztCjawoMbpwaPD%^;%XJ;r{?V9a_v7iOLFh}m9*>fFI&UBDKmWzGI%e1f9jnwBYVO0 zZ$ABO5BLqvJ4mYDc`F8tK-Ci0h?3-@)Wnih-4r0fU}RumscUGcYiJf?WMpM%U}a*a zYhZ3=V6e<#_fwb#kV-3vE}#ZO16>242Ez~oGb>X=DldoJ-UaGs@O1TaS?83{ F1OT`vU;Y39 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/mq.png b/test/fixtures/stylesheets/compass/images/flag/mq.png new file mode 100644 index 0000000000000000000000000000000000000000..42d7fb947abb97fb897a55fc29e30ee33a07f349 GIT binary patch literal 998 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 W6zdnNy50rqXYh3Ob6Mw<&;$Sra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft>fAE{-7@=W{1+%sUjo5M?R4qesZBO_igQo8UN$Lk=a4wL{`&K$mm2r0 zDt%H33cXtOw@rybfl*M7FZDKC=&X(JzdsJV^XBpE&35yBOE=%0#ByLth1JKh?d7={wG#u48A92Q+!Z|ZJI`H+<)Ggx+s_Oa7+=I3b|`vu zt|4;!!eXCK)d^b`o>2cQ|6ZoX+2(9c%_Wuv{*QbUIW-e+7<^f?NXKw~vRSj_nF&F9 z>|LjyCZ*k5J^S^q)cyazK3*elx-9DLw`V2)fnHZFag8WRE=o--N!3jO5)4KL29~;p zhPsAkAx1`4h6Yw9X1WIERt5&k9Ckm2X#lCTg6INjFf`CL0BSG{F)*_-HMBA^glG`` z>D7s%AvZrIGp!Q0hLk0rOo1AVKu+?>Ois-!PG!g_DJihh*H6vUE6>c%EJ#hsOw`LS zO4kSR^aDzhax#~3AwYi^TLQhJ3v{S~L2YF8 z6QBl3kafZNX(i=}MX3yqDfvmM3ZA)%>8U}fi7AzZCsS>JiliZmN{f8UZ64)gtGY1ARn0P%gf94(h_qaNG~}*S3f5)Nk0>$Q9li6MzMaO Ss_R{#eg;ohKbLh*2~7axr4JPV literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/mu.png b/test/fixtures/stylesheets/compass/images/flag/mu.png new file mode 100644 index 0000000000000000000000000000000000000000..fe0dec2a67f958370522b77399eea27c70f7e398 GIT binary patch literal 816 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ#JzX3_G|uNv*q=2uP~gaOnSP-o3Nel+ zSaq2m6~72xvU&5?O&pq+fAQRkUMA?$6xP(cUSY%e{6 zitln3lZp-me7kDx9NE3<$&GEN_upUekk#P&Ro?}oOeKGqkK9jP;O?yp3~UC~64!{5 zmWA4J!GnDV4-Vd z83Oc&u_e$ex;)<_K`4t44f27xzP!9#FD)?_g7lK} jbMSyqD^>bP0l+XkKJVGn* literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/mv.png b/test/fixtures/stylesheets/compass/images/flag/mv.png new file mode 100644 index 0000000000000000000000000000000000000000..5e600ffcd708bbdbcf0013aef67a07136b58c6c6 GIT binary patch literal 847 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/my.png b/test/fixtures/stylesheets/compass/images/flag/my.png new file mode 100644 index 0000000000000000000000000000000000000000..54b6832d3420b7974f209bb366a2d51f0e8db830 GIT binary patch literal 931 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHBdAc};Xq@+*XrCdHC~)-t^!&YVW(F50 zN!juU8uqg2ykXh;MQe3K*rL7CIy@0kOE(CrDk()Q=`d^SxZx5M`#|e|!-<7Et)2ID z&pKwW^3HtoXPvUeejk6F73nuO=F12>yQJyGVp9r^W%Tc@}mCLs;9r_ zTge?LO8)cXN7TwGcC~enoU8wzIm_H^r|e+-?#lW&{atmXf)@KP-6=0hTDqy4d)n3W z-zmn?DEr=o%Zm(>LSsiwJ)rC|Aq$*$L`*CetvF` z!saK(SOePs8bNk4YKZvz0=Yc08TwBEjUUBcB$T zne)bX@xyJ_b5}&^=9I1D+gvZtkijN&V0)N0m-OEIuV1I7ty=a=Jml(`3EyWm^D@*k z>=KK*xntsTVEi(umbgZgBp0P7mZa*Y00{;o0|QH4LqlCdvk)UAD?FcNF>6K?@XBMQUWG3q67p3cic=`dQNjaIx@hSPaiJ5u! ze_x%4SqHHR?jciM0}EXv%MhSHj4gp)(FHoxz@RoV`Uy~jB*?np{Irtt#G+IN$CUh} zR0Yr6#Prml)Wnp^!jq{sKt<9JMWsc_sSIw8z7V9~mXnyS;F+ACR~&j?WG_&e2|`(X zXpj%g_2uQ|dTEKd5Tuu!pR1pfn53Tx(x{&XG^1F*P}TJ=P(OpGtDnm{r-UW|?onMC literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/mz.png b/test/fixtures/stylesheets/compass/images/flag/mz.png new file mode 100644 index 0000000000000000000000000000000000000000..6eb8dcdf3b75f3d75e301ee9a2345b60a65bc0f7 GIT binary patch literal 902 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kH_JzX3_G|u}Tv(28IC~@>-v3Yq?ZtlxV zPA%@bB_dY8Sy>KxUhv&rE-W6nrmv~1xUir|ppdgef4+m&RlTd8;@z2(78!QFtX=my zhVN6uhv(&fRh#;vuQvoA5D`e&`ae9&IEdl?ynAogJU%`tbemY(%f(23tzI0Lf5rOG^$#1Y-;}lAJy^k@;NKXY|L5V?lNWd2ys7;E#o1hE zMJ`9@#6=4u7MW(~GQ5X%U&^G(kizXmRDI)Aw%kFw}Ol z6?SIajr$Ypq*)L>|!YXH<>7-C>%Wol?;WC+n9 z`qQfuMMG|WN@iLmZVf3*KA8eF7=fJRlbM{FSDea_QBqQ1rLUiwr&petomr5Yl9{NN zUzDy7;^_yJCgo%%$EW1yCT8Z@|9y2HW*x*PxQ9%24J>qxEJJ|)Ft!AGMHlE$1B2Sg z=qEr8k|67X^V3So6N^$A98>a>QWZRN6Vp?JQWH}u3s0un02N6?6qObwr!u%X`a+O` zTTWuSf@gAmUUBGok-b1=CJ1Hmp+P<{*O!-<>!l^;LXci^ey)B_Vv>F)NTYrl(2QdJ TLRHthK>ZA!u6{1-oD!Mra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ9d%8G=Xq@-Gc;5SRp#=Mf@8!R(%*|8v zRz9`LXcO~rJjB7pbh@rxU{dSE#oe(kAuD*UtVlS!NJ6k;g2EzaS63k?0k=0>_?{^m zZMu||wYf22_U!r3f7Z<76a4Z^JWfo2ovVTOh67_j1EWNO1Ec6iYxi$gSDjkM#w>Aw zX%X|^>Qj3v%L^6feta4(d&VvM@S5%I&1c)qE1spte3afaM|9Df7b|#o#JGxBemN04 zXTRB|@4vTiJ@VwE#cieNL#6LF&7S_G^pJ+?k+A;mZ~-CZ^{3yw^k9mye+z1Dii?mce~Zm^LS z4O%os#{T2yD;IaaT;BOadr1PbPfpOwOI=+FZ>nl7b$6aGJ#pPqQ7B)*{EBt#<|P-al-r#-wA*;?w>2MR?wm>Q4=w=8(d{WfpMh z?q=NwXQ~&8KfPP6D70Mt`u*8iD|T9mR$I>w2uSJR%|4uPBYv6E>vZ+C3$-VOI;ni+ z?Y4b;a*_N+^K_%u9;S(5IUT)eiw|zlJ{;ON&5V=f==*@RXS=Pp+0CoB`}c6^{kPwD z?O8Lkb?ddLEoM?&VSGQLf4qG7cH^q42Pb~^U}OvUU;24}t^7X*hxej0dE&pm2Brtq z64!{5%X8O-xS>N=;0u zEIgTN15_jpQB+!#oXX(l=nFv#ZaInR3ZBXNdBvgUMfL)fnIM$KhX(n;Twh*Zu9udW o3qg9x`MLTziAnmIAdUKIKr@Q<3sqh30`)U^y85}Sb4q9e0ONL#q5uE@ literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/nc.png b/test/fixtures/stylesheets/compass/images/flag/nc.png new file mode 100644 index 0000000000000000000000000000000000000000..0c64457a3aa9f8dc03a9907acbb906ad1229fc09 GIT binary patch literal 926 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJndb&7O@xAmBsDAD%*`;W3q`-0vG z1kMu@^v>GYGOH=8S8aQipvF&#YHq>{t+#3Ew({wR4lX;!VM}9SdgeC!&mI*A1U7K7cK4R$FZSK$Duza_ET`~Xc zxr>8(ee#~A`4vYkQk`YL?`qfV7pyg#_C>6(UCI0BjM2>-w|0Mdm-YCvrP0NhnO7zm z$x5za>e>GJdGK+!tmORPzq(pk&lb;~dv{0K!;>fPzy0>wFxe<7^Z&UD7s%AvZrIGp!Q0hLk0rOo1AVKu+?> zOis-!PG!g_DJihh*H6vUE6>c%EJ#hsOw`LSO4kSR^aDzhax#~3AwYi^TLQhJ3v{S~L2YF86QBl3kafZNX(i=}MX3yqDfvmM3ZA)% z>8U}fi7AzZCsS>JiliZmN{f8UZ64)gtGY1ARn0P u%gf94(h_qaNG~}*S3f5)Nk0>$Q9li6MzMaOs_R{#eg;ohKbLh*2~7apLty~` literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ne.png b/test/fixtures/stylesheets/compass/images/flag/ne.png new file mode 100644 index 0000000000000000000000000000000000000000..d0220a4882c2e144c007b74b70c686720f953419 GIT binary patch literal 849 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kG?JY5_^G|u}@+?zEeQKaSh-M=ZZ6BHJm z5ED{y4A`)F>!n-wxDD2tg_Xrkdcdl&HIKS8q%6Aqn{-=z5a+)T;tyDc^{7XF6p zY<{P+AIKXpF-X5?Xyg-*`M`STAz%D~=O1)=EST@rFbM2Ex*_S{)sWxG8b-Tn)cBM{;W(f4O~q zTh!WRmo*zyIGUdPp03ju^!kn6>B-Y~F4?**MvwjW?2<`q|NNTy^ZA;YA65F}V`LYY z-fn)oTI`0&&dsxzpFdps&i<5XRMKwQc{1hZIdjv*-EN?o?Ll2 zT4s+`#GlxJB{#0_wmQ4+T$1?9xHQk-+rRhQ%kfJzu1&Kx?n<5NF*$8##kei>9nO2EgL&}m*ra%owASd}`Ca2~Vr!r)eloVL$>!;@Fm1kyW7Nn+RChFxE zrR#%u`T?a$Iho1vDfzjHnR)hqU!8|p2eAq6AyZug3tc125THMdErDLq1v=Egpf)o4 z2~dM1$hzSCw370~qErUQl>DSr1<%~X^wgl##FWaylc_d9MbZ#OrA5i93~r9T5TxLi zlbEjHnVg?j9C}`4FHo5YLRoxhkPpoD<>lpiX^FWIq?eqZtDlpYq@M}WsGkNjqgcOC S)%7k=KZB>MpUXO@geCw9WIO5r literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/nf.png b/test/fixtures/stylesheets/compass/images/flag/nf.png new file mode 100644 index 0000000000000000000000000000000000000000..5941921f6743be9c240ebe702e01b10f74a1e24d GIT binary patch literal 934 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIsdb&7n0v-b}!lxRJ_R$RkV+H--S zsv=*>%E>2AwVd-&vy!l9;4D--Gnb>q;84dyW&u;RmZJ;f53D>Drq|KCcgpRe{QLIL zpEpz#U3+fBUeWpA*2enH(!DyT*_s{S`|JB&eqwd=-=5yc1zbK14m=6j$=nPlr>1Kg zU!58BCBx!e(dp-_KVOcE%U!oGcW>aVUGsA09ARiEn5gD={&*z^W8jUSn)deps7uJZMv0c4t5;uSVq)^!KmXaR{?s{lR1{ezB`sQ(#jf6jc5C3zn{NVv5TZf!r&lM6hTQy=%(P0}8d8>g zG6iZd0y)ViGdVS{IF%uzq@=(~Uq3ZZuRJq5vmiAkGf^+UC|w`K(+?<3%E?TQPsz_s z%*?a@`wH$Mh)r-0nd%x?=o(pu0R3TX0rZM4(4htflV%&-0$L{tvMxA3t)x7$D3!r6 zB|j-u!8128JvAsbF{QHbWU38Nku*e6X;E@2gPWr-1Sz=XB&I8PCggOaT>1Tp8>ZbwCDAq4jb-fGJ&*16m=d#Wzp$Py8 CPh+6~ literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ng.png b/test/fixtures/stylesheets/compass/images/flag/ng.png new file mode 100644 index 0000000000000000000000000000000000000000..00d8a20b0c32d97fc97f9b4e40ba6f7b0d45024c GIT binary patch literal 797 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI4JY5_^G|rb!+~^gXDA2OM*tUY1YvS#W z*4|!zrI()>t|{tIIHeZ)Yf2?={Gs*@8w`6}6ATJ|l&6^;RdiJH+j#bz(dUiA_Y)Zv z6yDk0m3=F($~ehJumAb|bAl{vXU^CZe|?x0yS#Xh^}W1%j^*YX*1mmu+&fTo>g!*} zznKP(3!|gf-KYT>tN! z%+vocaOJ5g1(E6A(-u7oZ8{d^DVF4B5oBVNvNv*Nyh_OR4--P==DriZ@RFzhRnU_^ zz7w_@U6sD@Dk$18DQ)4R$<33CJm)Rrj8NaO{ibzw{j+Vi`y_p88silr5*|K#eKxOt zdtKC}!=Dcyea_9)@L+=d<(e`DyVX}}fq|x4;u=wsT$GwvlB$~mBp8eg3@mjG4RsC8 zLX3>83=OPI%ybRRtqcs7IqZH4(*ROw1|6H_V+Po~-c6-h%Bl@=wZGPpVVLXd)6PGY)( zXL5dCap-xGy+CCq2xal1K|V0omzS68r6uMra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI?JzX3_G|tBcZp;c{6qvKOy77*t%)u58 zt<0XazAWBS%9qdEb9bia$9E6TB_<@! zOr1INz?BypnpzIca^k#e*2pHScaFhfn~X@t6d$+D88TC1N=~WP@0(+;ap1?rSxl{y zx;-p+UP|4$cygT;=bzBeuUL-%z9;R-c6I*DsGzA*;&3)MT+RPa$9?jdCS1u`wQ*O+c6aldZP__54^I=( zzyJJ8>7SU2w>MN>|1H~krN!xD>ST)=iT8H@vhw!7{B^RR?7527x0wp2CyS=-whP|X z@w~smKO?}4N6tT>L`YR-Vvkagz(hC0l<5o_1-lN^#HMim|4_fX_NgYrjf1xOhDp0$ zU2~lV3{%w-*NBqjqSVBaRNWLH!C+)yV5w_psB35zVq|1xXkcYxrfXnsWni$(VfRy* z29QcCh%TT8Ljzp{pa#Pb12ZdALn|Xghz8N0UY#f!a`RI%(<*UmNLlj96sW-n0cwy0Sr?q2R#Ki=l*-_klAn~S;F+74 zo*I;zm{M7IGSvpCNE)K3v?w{1!OhVZf)w0x64Mntlk@Y6L(hxs1u8Q^D2opb@`1U& uyu4g5Eio5@^pf*)^>Y%F^fN&k_0xc66zdnNy50rqXYh3Ob6Mw<&;$Te)-9X> literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/nl.png b/test/fixtures/stylesheets/compass/images/flag/nl.png new file mode 100644 index 0000000000000000000000000000000000000000..2379dc30a828d81591ab9959791950d7996db783 GIT binary patch literal 766 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPftbtKpw|~pp{=oa+$^CxZ4VQ}$+D`drB%0Y8yX~h*4X_!VzvVxr)J2B z3GxPVlW*KIxggekw8V;a0*m8>{a2!9pG|9iYdANBb3fPGi86b5{@$Ozg~j3U!=oo} zeti39YsRU$T02)fy5zfSN%Pv1XMa9z`2BqOb-VaIqOnEGt5>e@)1Pbd_T(?E4;Bk{ zKY82xbz^7I$)y{wE_vZGO}AJ7p~wpd_8+`Ia-9#%-}i~{rb83=OPI%ybRRtqcs7IqZgO0I9Ts=mKgmG|)8w zYA_5jFtai>v@$Y;Xb}DB)d{l!tRXi)B{QuOw}zA@pG<)oj6hEE$xKeoD^6v|C@Cqh z($`PT(<{%+&MZhx$xPJCFG|-3@$>^qlX5bX<5Ti;6EpMd|Gqj8vkqbt+(V|i1{S(T zmLWiY7+V6pq6>7WfkAC#^b?>4Nsx8H`DrEPiAAXljw$&`sS2LCiRr09sfj6-g(p*O zfQqCcib{);QyJVGeIZD}EhjNu!818OuQ>F)$X=i_6NIw(&>$a}>&wf__0ke^AxJMd jKUY5|F-boYq)|T&XhyMqp{na$pne8VS3j3^P6ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHNJzX3_G|rb!+?y2=DAIa;=l5F?9&Hzs zCiQffX&$-c_CfWHj>`t_WgRy>=P5MtCrnn#O*j$E!6>R&c1+M@hEfbiX3@1<)sc53 zH(XdB@g`|={f|@pIy-XX>wi5h`u}fFuCNEgfq)n5-!Sx)-DBAB_uJ1b&D1|xw-r66 z>CD9I9{l;qeIQc*_N?=|O+J^FL~afX-*)+B67!)jh7KQwFw>`An`fDN zUZ0iX%=O}$vX|yzPp;c>mNS0FPYE*9)ARcMzEB(LufFZ70;u=wsT$GwvlB$~m zBp8eg3@mjG4RsC8LX3>83=OPI%ybRRtqcs7IqZH4(*ROw1~Cp2_)n#i8d#_5zieAe6<22Km5TUtV6WmzJ0dL3+vgx%xSYN&1-} bjrwUoGm7;KRbB4_^)q<7`njxgN@xNAsANBI literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/np.png b/test/fixtures/stylesheets/compass/images/flag/np.png new file mode 100644 index 0000000000000000000000000000000000000000..38d85088cf8b9ea3a98a1cc80ee2515956717652 GIT binary patch literal 823 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRY!3HGPMlP2IQY`6?zK#qG>ra@ocD)4h*^<27 zU4S$Y{B+)352QE?JR*yMvQ&rh{l8=4QC4X$rK2QN`26F+}2WZvR2; z!-Wh-?eF*Y+%$;td9!4zimRoC^@Q%QTPIK6-x#Fl{gXK+=E%`di;SaN zAJ6)FyKevcV#nOduX*dg+nqnNH2y$ukJc#e&yS_&)PrwnCG$2b1&C9miV>d-@>Q%YL7Ou z-ff86968lkGPY6A@%Vy(l)y;_4;PAh>IMj(REnJ7%2fAkALECKE8frG+i(vUaH=J) z5hck*sfi`2x+y?{!N|bCQrFN>*U&7)$jHjjz{%(#Rz`*p4Wd82I#D#_=BH$)RpQo=vgDH~P=gW3Nj{m$sd>ez3>hUQ z1y=g{sd;+knc0~IsVSL>dih1^`XHWuKxtA=W^#N=er{rBp8elf=V8`CY=V2pRM)^l z*T^yi=nrE{pjUK(4mB{Sjf{Q*)F276E;v7}q&%@GmBBG3KPgqgGdD3kH7GSPrLyp3 zstr()G(=HpQF1DSo1-rTDY)e%rYm?R=jRoNo)_5*RAz!u79Seq19N?OdAVL%VlD*f lCFker=OiZSXM!~9rvc3<)-P0by$jUO;OXk;vd$@?2>@{~D}?|6 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/nr.png b/test/fixtures/stylesheets/compass/images/flag/nr.png new file mode 100644 index 0000000000000000000000000000000000000000..5424a5d5ca594b7fadae77eb13b45dc451d49129 GIT binary patch literal 850 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kG?JzX3_G|q=kH1rN<6ghhSvbl%ABF7)> z%_T(~QBf^R^e+f(VOz_W>#MtN7pLFD^a*w@Pu@IuBA}=`MX)L9{od;Hme(JCoo+Md z;i12=JLX(Y_#}43{w7D0ivU-H!=LAJ3EWB9&v_Y6>v>G_jWo;j@|^6Yxzhi(d=$e9 ztKYSn(^ax!tXD?68?AiW{@G!Rfl7dDq|wU>p6a$sr-lT~WLk98_T0GwvB+MoP}S3u zQaqphSdenj^+Epcw~wD6-70Q5C%EORL+Z3hzuBp`BA1;l%X^s;`1aK5^!MfJ_v_EC zwXZCxsHv*7bh>?+%p@Ef&nXZAkm4U%Bhuu$M8bB(oAi97W3=MP*fEo-#49u)d4Xum}AsR$~ zdUc{`$jwj5OsmALA!W%YQ=kSTkdu5elT-7GQyDT!N(!v>^;7fo$}_Vw3sO@u6ZP_o z()B?+{eaS>oXq6-l>FSp%sl(Qug=4)gV+T3kg2YLg|3lh2+$wKmO!uQ0v&2#P#YQj z1gJq0WL7^73-Mw8UHp(o4?I)z3*x($55G)K3GNQLJC6 S>UtNbpTX1B&t;ucLK6Tb4mnZ) literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/nu.png b/test/fixtures/stylesheets/compass/images/flag/nu.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6ed5b26b67b012a3caf7808b5a39bbc6ed3ee3 GIT binary patch literal 925 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 Mr>mdKI;Vst0Gy37T>t<8 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/pe.png b/test/fixtures/stylesheets/compass/images/flag/pe.png new file mode 100644 index 0000000000000000000000000000000000000000..ca6677cb66a1f0b14a354a75bedcfe4b8642cba2 GIT binary patch literal 720 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft>T6E{-7@=UXQp%ylvpaGC$`dxJ$mgWZc3 zzZYF@8V%V>QXYEuZqAkY!yM1)D9u&`yLnyANa|$V^!$J zn>QL}?`@m<_VP)=X)+%Rclt2g$bX+Q>1AU4tFq$veHpv&{%JbB+4|A)+hy;W6&59E zWz6)L#_@Bz7{h1zDaudn8@|YDrk=d`pY4`$P)oIY(fjp{9TOv&BfOOtDaSE$O-V6o z2<>=#O;E$VdF|Hpx$TEvnuQn{Ss5BwnV9Jsm|GbbEOXfX6s7^B(h8yrsKL-c z*8r%&FvP&j%GA)x$Pl7I^ru%RiiX_$l+3hB+!|7rd@==UFakNrCo?%UuQ-(>PJF_4)B{NYkzbIWF#M2KbP0Gnkj!((YP0Y-*|NH7Z%sPloa1WX48d&HW zS%v`pVQc~PiZ0Nh1_qO68{7hFkOWy5oS#-wo>-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B=6HqNubeIhDc9(HDXg+;S4r6+Dyk^NK^yi|hp|GeIbe4-N8xxxT!-TrVv#7lQPX k^Kra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIyJY5_^G|q)@E>QlB$r2i$IX(A|V59!)Mj@$rJDH;0xw4{`}xz zi`jx7&HtZkTx#+YiLkI?VJP2qxhKn@G<3x-j!;dfQ1MC&Yi}8j1vdLH@T7?>oY`G) zL__al@)D1r_3jEad-k3^cb1XCQ;6e8?XL={G_Byz)=${n3-}ekT-x&F=XaI{hduRQ z{eHP`KYV)km(Me5&hl+y@`|)Bwv?EYZT_|`>h*U&7)$jHjjz{%(#Rz`*p4Wd82I#D#_=BH$)RpQo=vgDH~ zP=gW3Nj{m$sd>ez3>hUQ1y=g{sd;+knc0~IsVSL>dih1^`XHWuKxtA=W^#N=er{rB zp8elf=V8`CY=V2pRM)^l*T^yi=nrEHpjUK(4mB{CG~3`7P=h4My5Rh@lJdl&R0hYC z{G?O`&)mfH)S%SFl*+=BsWw1G(hxh*5iMbG@mzra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJrJY5_^G|o@$+n6oPC~-7?lJ$h9E2a~y zN_HHqS6C3hv!io1pOd&I3sa!E(qxV8A^mIz#N?QuL&AksY9>!VNA z{onhl`JO*`_4xShy8d?W1Lh754L{hKR5!5HG4F3sexUwAHiKcu{=Kz=CsuKVwsKS| z#Jr0roVzq`2iK|Cl#To6GyGt@``7Az#}1*5PD)NoT;?t|%DTEGz3S|-TT!egj3HBP z9x3>~-x4*MV`k?Sw$g(oi>_n_pH~t78Q#HBzJJ@!o%defHLG^f%RJ@F?{nU_ecAVA z`#N28RXmL(c-*Y5{lCxq^84@c%&Ns(&ddAA`|iFHeYx_o@#JdOEes{QV;Lr&Y*9IR z*k-=G{C*SW%42Ij_F1J?9X)pP>eHHgEE^(pjy*1noHl8bj&|3fGkqtj)1se<8{4XQ zP2bJT$xyCtDZ`h(`DTWRk@2L`{fhdt?-s><&2U>F=8?bscI7<(<(K`I2g|PxzjOC) zxw4&WOuxs+`8zrPFxt(tlxBYuc^numswJ)wCCNppi6yDJDL{h3$iTo-*U(Vc&@9Br z$jZ>b%EV09z}(8fV41`2r!Wm5l~xd4Kn;clx&}ZEh9L%KR;GqlMurd#qCdSlQ8eV{ zr(~v8;?|I|dBv#=86_nJR{Hv>d3xoU*_j2YDVd3S`9J&% Mr>mdKI;Vst0Q&z%s{jB1 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ph.png b/test/fixtures/stylesheets/compass/images/flag/ph.png new file mode 100644 index 0000000000000000000000000000000000000000..b2bdc9ae0fdbffc4194988ace2aefdbf9e4413ef GIT binary patch literal 882 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kG~JzX3_G|s0^+?YL?QRIkzy#3Z6ktYL; zO}#~1wk_y*aHD=fcUkG%S6B8r|7Tq2sJ%o%@Yc2)qpd$zaw zz05u>$NtAV9+qD=Ei1EHz1sN!JA*S|VDa1wiEhTb)Dv9OnC3V3U5SjDaqGs8eOpYD#ge@@OZ2~X zoZ)J#(fIy=`pd;7VixOGt)4ym_T9Bd4?ky)y6{rWG21OjAwNV}+tFxb_~a zGOEx1{n6KWXSNde{Qb;RW=?pvN5km1ys>{s@OFK@TH;l8=ESoDtcJB2{?&W>B0Qx^r82VeyrAZkW6RIVy5hck*sfi`2x+y?{!N|bCQrFN>*U&7)$jHjjz{%(#Rz`*p4Wd82I#D#_=BH$)RpQo=vgDH~ zP=gW3Nj{m$sd>ez3>hUQ1y=g{sd;+knc0~IsVSL>dih1^`XHWuKxtA=W^#N=er{rB zp8elf=V8`CY=V2pRM)^l*T^yi=nrEHpjUK(4mB{CG~3`7P=h4My5Rh@lJdl&R0hYC z{G?O`&)mfH)S%SFl*+=BsWw1G(hxh*5iMbG@mzra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIQJzX3_G|s06p7n}O6qz%-dhY}^!Ax;g zUl#6JN_TIp6@A70gX0nRjak$?k?Ok5xSotVHl<7_(PlgxW{m*q}JBtBcU zj4M>QFjUx3bo#k=zpxX>CGPGue|NVny12We*X#4|vp0{ZiCogu`+T)hU@22f17@1eov}6=+Voy=t*6>9!Jlff1i#0Kd-$e z#w>Zr^Zyd-H(lK`93~$8%h*^VSJodkZ_llYeTE#(itXH6TbuLQkN-_BZdEG&Q{Aa& zVzlY+$JqKC@%7u{&aSSG|L#{m-!FGnTDe@;lu0Tp!(UC^q7-;!N%6It_V>-VD=5zO z6n`$JDe;EgcmEDq?wvpV!|VM`@?!rv>KWTlIrN-1Ig$*FCDjtwh?3-@)Wnih z-4r0fU}RumscUGcYiJf?WMpM%U}a*aYhZ3=V6e<#_fwb#kV-3vE}#ZO16>242Ez~o zGb>X=D|_tRu%vN literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/pl.png b/test/fixtures/stylesheets/compass/images/flag/pl.png new file mode 100644 index 0000000000000000000000000000000000000000..d461399f30e99494aaae64a04e9137a718e288e2 GIT binary patch literal 699 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft+2QE{-7@=X-k%^PC)cT;?ZcR~?zVli9ra z+4luYZhou^%K3DZ-{n+B&dpEKmNol7FOFKhYQepgj52%;Zy64-$$XP5yZ0hFQtJMM z`Rx0HT|&}+tK0gAUgb(!+WY?rZ-6NCqndAYOtL-nzhD#zGQ0)3%c;u=wsT$GwvlB$~mBp8eg3@mjG4RsC8 zLX3>83=OPI%ybRRtqcs7IqZH4(*ROw1Ois-!PG!g_DJihh*H6vUE6>c%EJ#hsOw`LSO4kSR z^aDzhax#~3AwYi^TL8VH3v{S~!KB#+w}2WX zLDmK5rYHHB>hZ~M*TFP8O8dAs;+l| P`WZZ3{an^LB{Ts5ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85o#YJY5_^G|rn|JnucZP=@`(_wT#U-eG%u z^I2N3pxd;R1+h*+M%~j`0+pNe9;&YJE?eR37~nX4frgDsV?g45Ke?uJfh8{<_21B# zc_C-^IbZqjzmI>e*?<1?&$3rv_4nNPrycQTzMvSd>a%h?TLzwn2DS$*B@GPx0n8Q& zj87u^&u>|OZ>h5Ic7ETR3t!x*FcItCQ~U4w%egh*m7ZVolbipdvSxkAa${z8x1iPc zEd@0-5@(g|opyHHHRH41!SYjL&ZnHddMRz|6koNdw{E*;+@GSx(Ct4hj;%QRq5a95 zk2Xz7neFpAH0Ip3l^d4^IP9JiU`?=d@Jt<4+L@%~Wj}IiFr0mA&tNy_vny*sAV6#4dg zr+A_WWVcda+Nd1l??HaY$bYyWp=cJ2sVRb~<`AXaIe?H0T*%3_+w+~}yf z6Py~~@}??VUNu|dD_wd2&hLvc=eEYCY~?atwM2a9rq=7h?D>p`G8wl$$@8C|y?%du z@uZ{IJ_(<<>)YmgY^DIyGER1L-h(@wnM}8_hA{Beu&ztw5@=xLX!y^swt%UGf%m{? z{+F|Ol8@RvC^AD^o)&BO{0g6~O=z6b-rgDVb@NxHW|OyjTI$ zU<7iKPiAszUU4czMoCG5mA-yzo?dxoc4k3pN@k*7eo?wUh^HS=nv|279G{Y(o0yqr z|M%5-m~{}F;2tv7HL%b%vJ3(G!`K4o6zHqb~$0xaB0KD|ja7=M{&Z7ugF`W`a-_ z9~$HXbA5Svxn5dgE(GZ%=jZC@Bqr%+f;8%<0nI4ZFI08C3)Iix>FVdQ&MBb@08(I( AasU7T literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/pn.png b/test/fixtures/stylesheets/compass/images/flag/pn.png new file mode 100644 index 0000000000000000000000000000000000000000..cc8b0dc9360cebfaf8ed510b134651ef2a8c05ab GIT binary patch literal 1003 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kH}dAc};Xq@-G=$kDZD01v$ak|>%Sw5Gp zEL+mHCH9AtYjaP}h;Ra4`c)#vs;Rubjnudn;ves_M1M{mtctzPx0=zfjb)n6?*e=gZqx!ocy z?LNZ|2AKwi3h6iJ4#)d1S9+f8m)Sj^CqmkUi&>( zZa%!}{VjvlGcHc`&&gaF9T8WX|DZhZ%%1w)_n+PhJG^q<>+)w^zRF8PiY-&w4>^4` zbY(sMb(PqT8&mAK`y!l@FIm?8jWzglcfI*~zEr>1lS~t``j(yNVXIayy6F35!?BY0 zzK_p8Yd`UV>%Hdnva;=8lW(os8Sb+Gew4iC6R|A^&O06YVtbnJSZZwK_I+HD3mY$Y zpFe#}V(S+%*|o>5dS5JE6)CWd>A=?T_0JzoKdwFXkdDzJ?pH5{4!zB6V{yEcssZaj-YWu>cLGlcl3^Ja_7BMP0Ith7+FnLZAXu0?2RjEwlp@FUeP=jHJfti)5p_P#l zM1zW8fC!3)-29Zxv`X9>LVaGW0BSG-Imst8IW@01l_8^~q`*pFKQ&LUJTp79AT=d3 zQ7^wJT_42L4=7E_$xMz<$O9Okh)r-0nd%x?=o(pu0R3TX0rZM4(4htf zlV%&-0&0*1Sr?q2R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGSvpCNE)K3v?w{1!OhVZ zf)w0x64Mntlk@Y6L(hxs1u8Q^D2opb@`1U&yu4g5Eio5@^pf*)^>Y%F^fN&k_0xc6 W6zdnNy50rqXYh3Ob6Mw<&;$TTYIkM; literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/pr.png b/test/fixtures/stylesheets/compass/images/flag/pr.png new file mode 100644 index 0000000000000000000000000000000000000000..bd5b2687552edfa8d813b47257e23d3760dcaa62 GIT binary patch literal 908 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ5JzX3_G|uNvJnuavQKa?!@4f3E_s=}o z+c_c1gJo$#$FqI^8vivYG=((<+-?(FD|%;Z?!{wfn}tldVtl%~CoF6=(c@~H)!Nbe z!2EOV_kG`YNSKPt%{zKGrh@M{V=sS&L2DWN3C7(`Ok58h1t>5w6>N{Rlyb_|y7{(n zX3E5@kc|>6Zyj~MG_R%bK3$-_w)bw~A*uUYHJ6b;7`~M!l;HBY5cI{1mBPl6)|6W54`{~mx%+5WjzyFz`;M~@4 z-p;?HLk(Hr=m5G_Ifw`4|!7_*4PhlEBDy<;8fEo-9bPa$S3_}detV|89 zjEo=}R0IP=P&DM`r(~v8;?@xA^I`>1gAvF{KAFj>dBv#=86_nJR{Hv>d3xoU*_j2Y zDVd3S`9J&%r>mdKI;Vst0K*ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIqJzX3_G|o@$-{{4hDA4l!QKl+K(qtt8 z-hCaR0RlmsLI?dmu0em6Y{@%&b`SLT3F((jKi{j8?9Em5hPJYzio>d`sfwdjQGfs84P595}*{#VlyeEaP_6GQp>KYKpgaT>K9 zeo^-Lhsr6bv}yHikH4Nhd{AWK@igsk-@Vja8CF;bELqNZ>~WIa(W=cRyb4NpY|9gl z>72M7I?wF+iq$2xjuVrD7R|QQoV9x61|tiZCwzO(+VVROW$F8Se0!PM804QU2r>Me{@)T9cB&<=5hck*sfi`2x+y?{!N|bC zQrFN>*U&7)$jHjjz{%(#Rz^k; z4Jv{GA}AVi^HVa@DsgKF^?9)ZsKE&2B%jRW)V$(UhK!Pu0xNy})I7cN%L&q++u&je}IPXn4! VtY4_=dKajl!PC{xWt~$(69Aig8#Mp` literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/pt.png b/test/fixtures/stylesheets/compass/images/flag/pt.png new file mode 100644 index 0000000000000000000000000000000000000000..f48a3181a15e98f5a1b1fa388e0eaf7aec95dc9c GIT binary patch literal 863 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 XXhyMqp{na$pne8VS3j3^P6ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kICJY5_^G|uNvwCxHB6lrN*kAc)JkzghbseaCr&jy_l|s`U zz27l)YgVnYvay?`V;IHu?eom}`|kH#e17ouMgR4EclRF4Sh@SS#QFU-#_#gjKCr)A zTb*|5{fjfeKvgYqjVMVjN=+v@$Y+XiyOh5JAz9o1c=IR*73fsLzWPKn+G9 zC;4P1r{)!>GGvsL6jq^4vh>g5-u>w|du0i{VfnaS}f`MHUidG>!_ zorhTmu?g-WQ(XfKT_ej7pg&9ufL_rBI@G{mMS1F4paw~hb;0>*CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xq#=q*i;`0r+#G!&NWm>9Fs_FJ22WQ%mvv4FO#spkHgo_0 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ro.png b/test/fixtures/stylesheets/compass/images/flag/ro.png new file mode 100644 index 0000000000000000000000000000000000000000..4941caff626598a85c62bd74436f3899d74b6258 GIT binary patch literal 789 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHvJY5_^G|tCPH1vv16lmRF{n_5LYPN#d ztz8V_lMbnIbKXex2Oh z%kwXIxoq}Fr}-E6qA%_4*XGZ4?)tJ37+9($t`Q~4MX8A;sk$jZg2BkZz*5)HP}k5b#K_3X(7?*X zOxM8N%D`Zm!|tar4Iq_P5M4kGh6cI@Kn;c=24+^KhE_&K5DhAV0U{_Ga`RI%(<*Um z2=#ff0;s_V7^73-Mw8UHp(o4?I)z3*x($55G)K3GNQLJC6>UtNbpTX1B&t;uc GLK6UKc^7j4 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/rs.png b/test/fixtures/stylesheets/compass/images/flag/rs.png new file mode 100644 index 0000000000000000000000000000000000000000..9108bb58d00ac40b9e1ef0774b717e34c0a0a2bb GIT binary patch literal 816 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQk(@Ik;OpT1B~5HX4`=T%L*LR zfize(!`BaKkqius_MR?|AsXjPC+ziN4isoTpO!Bsa=GJ&u&I#Y%HYUbTCapVB7U(& zu~;9x&ar4h7|T(kD6S?27L}yM8jh;kvqcNbpGDkxvq?d2*$m5?^mnOq(j6FCRWdgz z|NG(Au<vmI%L7>w3@XVr?#Iy?{p*B!DCX{_VBr~ zdlp=o5pqCQQt!-M$*cGE6K=5j=?d*5dk$H2-d5W=u^ z=Aqn;DGp0DLL5wmCr|wxe5CM7Uh_8@A0q~i0}NhV8VmMqUw7!Sn&)~8)+uivIVwyP zZcDVfvvy55-?yoI*1x~1cWwqp!>X!z&wuZ`{QkS_@r{k|&mF$}aAKEVelB0AxK36k z!@AdOjt_q9n}7cKL_tsQl$SAj>R12?f)!~pWXSd_5F8ccVM`xmbgZg zBp0P7mZa*Y00{;o0|QH4LqlCdvk)UAD? z^z~Eo^vW}{GYe8vG86Uki_-N$JpF*uq@2v;_>}zI#LPVVzpu{2tb^DD_mH`+0nkl` zA%l)Y*z@>APKTAI6tkVJh3R1!7(L2DOJHUH!(dmC^a#qvhZZ84N#FZ zL{Vu`aw>zHqb~$0xaB0KD|ja7=M{&Z7ugF`W`a-_9~$HXbA5Svxn5dgE(GZ%=jZC@ gBqr%+f;8%<0nI4ZFI08C3)Iix>FVdQ&MBb@0F6)}aR2}S literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ru.png b/test/fixtures/stylesheets/compass/images/flag/ru.png new file mode 100644 index 0000000000000000000000000000000000000000..f10a79333fc2efffeca49f408ec88dcfef765721 GIT binary patch literal 755 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft*jCE{-7@=X3jQ{SE~R9I5C3Ct7CG7IEQ5 zLVsQug{EJIb7U_uXjCoe)&$2c(+a)DCGrq!l`Q=Sf zwY;-^ZS1GN6|>fTG9~C#)cU_Qd^z~Eo^vW}{GYe8vG86Uk zi_-N$JpF*uq@2v;_>}zI#LPVVzpu{2tb^DD_mHWsfrYM-WeCt8#uh-Y=mH&TU@&R6 z!7ZQ$Nsx8H`DrEPiAAXljw$&`sS2LCiRr09sfj6-g(p*OfQqCcib{);QyJVGeIZD} zEhjNu!818OuQ>F)$X=i_6NIw(&>$a}>&wf__0ke^AxJMdKUY5|F-boYq)|T&XhyMq Tp{na$pne8VS3j3^P6ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kH{JzX3_G|uPt7Iss;P9 zrq8o#`Kckw$jGAM!O`gSrpLgkqK=s%XZma&PSxqrnO>#c?x)4ie*E=%@8juGpTC{V zpRU+gB$~0=r*ihb;vXsYb|txe(+Ycj$2L3_@>+1l=~iT#<>@K+*S!0e_+N}Y-#=f` z#K>j4#uOW4)$q#Q$@`8RT-?82L;t(_n(J?$$LlO>zn0!yc5BOFKa00hlKae}_iy|4 zFE2)h!R+1so`!U_f2;S#@7>d`xNz$h<_AA7?KE?kt#a&G(%S)FTX>V2%*?iK= zYID=nmAmSe-m^b^fYWdL9s|DiqKjR&-?cWYTNitYS#Aso{hAycvGAeU2G&PsKKHOK zh!rvT!2e@s#zB60wFY45s+PD$lq46WCYGe?rT_^BBLf3VT|+}%L$eSgBP&A#D-$za z19K|_gJll8pTabNR9ZoF0W}yJ=o$bu7={>_S(zGI85uz|s0ap#plHa=PsvQH#H}IJ z=fw)31|yJ@d@_?$^NLd$GD=Dctn~F$^YqFyvoi})Q!*3v@{7{-K|K9{(xjZsohY1ox1su7QQFk!1+bAI26yujm3DYG5#Fw!tl+21$^0!TD(=<%vb9 z42~)JNvR5+xryniL8*x;m4zo$ZGeiTA&N?il2aMn9DN~3!7V2-UBNRsKd(6SyvSal zG82Td_|PC9nCr{S%k|O{b0J7CIX_oFCoxGs6Qof;4QNKOexa)CU7&sjPgg&ebxsLQ E04*gh8vpra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIgJzX3_G|tyf+?y3rD01X^UCQR!2b2oC z8w}l?vet%*UUzC3zcynH?*Pf*dXi#fOEzFr%%>yma=`{TpY-j3fF9}Cvsn(Xm$jpM;78-9Nboo2-5 zo0g{{y{&SZzn|KY>G^ML@~#@`F_o}wzn^0) z!Zq3QZc6m`?cesl+5PAH1qLsZ4-bm!XFl``dRNpX=U4druy^2U@9Pph91N1z{#y#^ z{#ze!P-QOO`J9m#7#FG~t`Q~4MX8A;sk$jZg2BkZz*5)HP}k5b#K_3X(7?*XOxM8N z%D`Zm!|tar4Iq_P5M4kGh6cI@Kn;c=24+^KhE_&K5DhAV0U{_Ga`RI%(<*Um2=#ff z0;s_V7^73-Mw8UHp(o4?I)z3*x($55G)K3GNQLJC6>UtNbpTX1B&t;ucLK6Ty C5=$}w literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/sb.png b/test/fixtures/stylesheets/compass/images/flag/sb.png new file mode 100644 index 0000000000000000000000000000000000000000..118c5c7dca4d6c1bd184cbced44e3d98b26265d9 GIT binary patch literal 976 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJPd%8G=Xq<2Db@Z5=D06K7*7v_XRPP*W z;?(61V|VuCX*udACK%X$ilZqacF&WQ93O)=WK8D^WRZYBR$K}r{`Eq@kfy>c*mnRS z%I3p|V_$ypzaF}F+QnPSye}tilb>y_Z*PAkJ|=Q|{`5C*zOG@7__~Xe?e8Mr^6%Ty zf~S0PsR=pv^2Y4q>xwD%U7&)xj13g+eXEOQ-tk5Z`z-K zljYR<{cm>!mt@`$+kRVV(bxOz*(FPadUV~tiS2iux3~P0cKpl0m)mBGsJ1QID#3eT zSH+Vsje>3E^-qIszpVJvnuQn{Ss5BwnV9Jsm|GbbEOXfX z6s7^B(h8yrsKL-c*8r%&FvP&j%GA)x$OxiAMKC}FMMG|WN@iLmZVjP6FIE6G7=fJR zlbM{FSDea_QBqQ1rLUiwr&petomr5Yl9{NNUzDy7;^_yJCgo%%$EW1yCT8Z@|9y2H zW*x*PxQ9%24J>qxEJJ|)Ftz}CMHlE$1A|Gk4Q>H7NP?^j&QB{TPb^Aha7@WhN>%X8 zO-xS>N=;0uEIgTN15_jpQB+!#oXX(l=nFv#ZaInR3ZBXNdBvgUMfL)fnIM$KhX(n; wTwh*Zu9udW3qg9x`MLTziAnmIAdUKIKr@Q<3sqh30`)U^y85}Sb4q9e0GjxG-~a#s literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/sc.png b/test/fixtures/stylesheets/compass/images/flag/sc.png new file mode 100644 index 0000000000000000000000000000000000000000..d108075253253f06686471b54ab0b3ba41495eb0 GIT binary patch literal 941 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJXc)B=-XqNv}%VHWIr(!b?3>EjK?EvA8fqudS1~_2ooUdH_jo&n_Vs-_7aO*EPeo!z=<@2Dai8;zW4)9W zwD12rWZvcabm!+aArZ9)HZQL#vHw?-{U_(j_t)9KvuE!&e_YdZy`$*hsi$9G|EcTl zpWOUt>a&wM&#y0Ed-rSaJGb4}-^qVFJG;62^TyA7>H;>t=YL$@R$=_FOV^}-oFBTABsQWHy3byI)@gOP!OrLLi&uAy0ok&%_5 zft87wu7SCgfx$9|-A`c}Kq{>ux_}xC4Rj5F8Vo}W%&bfet&EHy8dL-WL{K#3=BH$) zRpQnV>hod+P=gW3Nj{m$sd>ez3>hUQ1y=g{sd;+knc0~IsVSL>dih1^`XHWuKxtA= zW^#N=er{rBp8elf=V8`CY=V2pRM)^l*T^yi=nrEHpjUK(4mB{CG~3`7P=h4My5Rh@ zlJdl&R0hYC{G?O`&)mfH)S%SFl*+=BsWw1G(hxh*5iMbG@mzra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIUdb&71Ef063V)P(TZ8@_^qPhCBZOxm)0QFn(%$0G3-g)Sp*O=Z_0gYt!r zPTOwGe5yBx$9((c&wtK;ey_x2fBpXYv{`Bm#)qdaylu>}Q}Dwfr3p<66PlPVo&K>= z$WP6#v^7jyRM&FO+w6RX0JYuu8rjcvSC!sm&=e5V4NK{LeeGk%^$Rn0{`EU0G5c=t z{gCT2-z-bt1|*+lTDh__CT>N|!KhjKZ|-m3xPS4%g^e?J$EU~5sY-ir;%3Ex&lz9J zOS<&~o_4gax>d$LzhCdvroUevonscXH(oC0C3`(+RnGF|-h2}_t)3e)aqsu%N!8cm zvpBEr>ODA5;{SEq8IqN=CraPhbdPoQn&ysLe>|)VKX= zJ*}`(!INE6+Gn*&-8z$P?e}9cqO5&Xg+C_WKC(SEaEcI@0=vh_RPQIJr|({LHc{VL zy!GxidtJ}kJ(E6IZegE0k$>Z^$=8Fo2{){JT)fWeMdelD|Ka!Np4j@$hb#7Xa>m)` z$MSprCOy0M_TQPk&5dX66xNp7&5^YbOif$3BRgTKYpA8k&U|8Ce+`SecmV8kk!d7%X$x{S>AFq|yqa z3#h@+K-U1M!7#+Y%*xcz%E$zw!Tn&W9*TzC{FKbJO57UE=G>hG)L;a1l22xGYF=?F zLq`}ekN*Gw literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/sd.png b/test/fixtures/stylesheets/compass/images/flag/sd.png new file mode 100644 index 0000000000000000000000000000000000000000..968716c829b847420a391c77ed2e58946a69408d GIT binary patch literal 826 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHXJzX3_G|o@$-{|F3DAHbkubMOXi zj-L#=y^h(rc8>Z1(atWxtd6`}zp?20I%NmsKM=NfG2yO~sq3Hl_brz@8aGd~v)lKQ zy}kLBoJ?`4C*!gMEE3G~4>0^-xYsDNu5feV&i@u283xU(f)|zuE$RLd3&x-y>CCDFu{H-02w8)c!zeXVlpSmKN6cVVe%SRc);mt2}r24|_CAVb0q!7Kd2L z8@gZl=Ji=?C+kn2?z4AJ)hr-f`DN01cZCcsEu~AIR_grjzg`~_YMAM&aK$5e!-jRQ zms>BlJbu5r+}PXU%s;JtqWWd}i!!gw|8n-s-Sk+2;~xtwd=eIHzM!2_9{G5ipc98; z$B8{kLQI-VuD$*mwt8wp%b(X-4|fK{uHLj}$r%MpZO^}K3>#YOKeFb#`ImC<@pA)) zsA`F8L`iZ{YGO&MZVHfKFfuT()HO8JH8cw`GO{u>ure{zH88g_Fj(fW`zcHVNTn4- z7f^$tfvy2igJFn)nU$%bm5~udgNk5)2#SW>{FKbJO57SkeO{~pYA^yh$tN>8HLp08 zA)}rSC{4=AOpZ^<&rQtCv;X_*Jj^hsH z>Ka(+8d-(_{b6hY^olOfp#}z%W*giBYLEn37o49~Ql40p%HWuipOmWLnVXoN8kCxt zQdxL1)dr|Y8ltGQC^?nE&CwTv6x?zW(-l0E^Ye;B&x`B@DlldoJ-UaGs@O1TaS?83{1OVR0BJ}_O literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/se.png b/test/fixtures/stylesheets/compass/images/flag/se.png new file mode 100644 index 0000000000000000000000000000000000000000..a3eee573af7b4f8f7ee97066a633420b71017a9f GIT binary patch literal 845 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kISJY5_^G|u}@w9mRyD01Za?tdn(E{=g5 zLM+7$-rCyS8wKAd2nuX7%2U=5n`U;as@0@vsVm3@l%jCZS zBSX=jVoi2+cTZ)jKi`%=T^6Oa>PcR1{C$?Jrd($}f4zU%$4z^$PTD+aw$`c@+oIUA zUNAg9$5c8+An{J2x@>t&;oP<_H+KB}efl5^Q{bhKQXX@Y(%*JTFYDxVJ2b=d;Pb}f zd0o{ze0lEF{>%CJuq9W6F27C> zO$pQ$U!}-boOaHv;W1~ZZ+`6E9IokkioD;yZ9P3@_A*!ZO({1U*tgC5C;#dA@mc}3 zyf^pQIj;QT5in@je`jZ9hue)n5nv#zmbgZgBp0P7mZa*Y00{;o0|QH4LqlCdvk)UA zD?C#5QQ<|d}62BjvZR2H60wE-%UhA1j6N={{PbM%EE1-G2UbOq1k z{Ji4O^CEkJ%1jW-;zNUcV6HDOFV{;;%!MGmra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJVJzX3_G|u-+0~&z7(^INZF~ z7J0>#k%{3)G801p$D1?HuYTNkHf_(|vw!WbzuvJcs72|)IgXv$PVdSW2QmhH{asfn zIoZ?F@+MFF&kqJ~-~RsM^v-Cy^w}qIvN9|I3@g^Hj>|8uKmW1f^&1~S{pZh(me0PE zqG!DG@?3{ft}SfMH6<*X>+);Ns%86U=j<|Fb>_vq-FJ^)T_v(0PAA7oRLDx!MSJ`0 zo`&kO{3gMPHkaPzF-}^4edpzgDjZF9>d*gdi4kM+oW$}c)%-RC*GaA)=NTDXL?+EQ zv-8k=$juq>`7Be>=Rar4n-1nT@Cc<`ZZLn7;K%by^?p4t{8UR^BTABsQWHy3byI)@ zgOP!OrLLi&uAy0ok&%_5ft87wu7SCgfx$9|-A`c}Kq{>ux_}xC4Rj5F8Vo}W%&bfe zt&EHy8dL-WL{K#3=BH$)RpQnV>hod+P=gW3Nj{m$sd>ez3>hUQ1y=g{sd;+knc0~I zsVSL>dih1^`XHWuKxtA=W^#N=er{rBp8elf=V8`CY=V2pRM)^l*T^yi=nrEHpjUK( z4mB{CG~3`7P=h4My5Rh@lJdl&R0hYC{G?O`&)mfH)S%SFl*+=BsWw1G(hxh*5iMbG@mzra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHZd%8G=Xq-2_XzwwlQ0Dl@^Phjbm>ZrU zuQHtwJ2M2Su=H#X}Ih{{j zCNH$kZ$7uj{`}{^-?Lv%GvD)Ud-#pg2iHzsOwae)xw4qsP%q_uN|_pef9$(>8HTI| z1{Mhi2FAwevU4Qt^)~NqFFRwSxNZIKzFh4ZiSpa`+g(GCuk!IbawWt?{{Ft_J6$I4 zHfp->Iwd^uRgh-*+UXV&pEgajNNW}B4t;%Nli}3e)%F$Xv&)w6j{3JQLSW~zmid0u zn}0cNwT!zO^(0=lW{2L+HCo=2Gk$XSyWi7vW4ylZ~xIxHqT02{dJ`r>k0M~ zD>qrh-waMOdp;-KY0VLvpN~CuD7I{Uw%m9TQvgFphoN?-k@jXm?ae~kn`{5wCK3ZELf9hMqSlFDA{n0#5JNMxhOTUBvm&BNH7=~7+C5W8tNLFg%}xG85&rbnCTjrTNxNE zbJ+b9rU9hV3Ze_B!O%e00I0z*#K6qT)X>Vv2%~Cp2_)n#i8d#_5zieAe6<2 z2Km5TUtV6WmzJ0dL3+vgx%xSYN&1-}jrwUoGm7;KRbB4_^)q<7`njxgN@xNA&YX7G literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/si.png b/test/fixtures/stylesheets/compass/images/flag/si.png new file mode 100644 index 0000000000000000000000000000000000000000..3e35926bab558277a66113441ddb9ff7231050d4 GIT binary patch literal 839 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJdJY5_^G|uPtY|IKt6lgtP|DOMpSmS~O zG3$+2ymZ&ruyPB^J8uZqVJg$&Qo6CiwaPlWmRVYQW2b9GYs=ZayZ$^sBiX&XE%cAX zK1*Zf;A4eH*tV(Xw+W|&Gi<)8BfL6v!IL*7{0t|~#BAqnOI&gJ@$vKD`Ni7zCVzjJ zS`z!OKd9^NrTqGuPcIIA+?aRY=JTt!NfL)RPcB+H#b@T0Cv%IJ$JzZ2cwBJf|F&KA zZ@qJ3_m{u?y!N`ai~r7xIe8{8ulXFiIO#w?S45|Ib@%4?-;N~A%byt%baP5B*F+H! zhL}dFclW-B-=64dJh>$JIup+pjcn->_A9%(t<8_IpMKi7G{flsjGko^?xbi+MBo0L zUJ>~IQT6}Vlk4kPXQphMws!5|lWr}G*677Cu4?Q%R5MRSM8Hu@NJ!1QW5y{5NydDU ze{%mV8GrD`b;KB+&aQq93|`d|*NBqjqSVBaRNWLH!C+)yV5w_psB35zVq|1xXkcYx zrfXnsWni$(VfRy*29QcCh%TT8Ljzp{pa#Pb12ZdALn|XAhz1qG01*@ox%nxXX_dG& zg!;T#0n}gwa*|JGa%x_2Dnmv|Nr9EVerldxd1iKIL2627qF#Pcx;}`fA5fZm^)p?k85S!p0GSxM(&^59Q0s6z(0_YW8phFD|Ce1du1=Ju3vMxA3t)x7$ zD3!r6B|j-u!8128JvAsbF{QHbWU38Nku*e6X;E@2gPWr-1Sz=XB&I8PCggOaT>1Tp8>ZbwCDAq4jb-fGJ&*16m=d#Wz Gp$Pyg$25Wf literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/sj.png b/test/fixtures/stylesheets/compass/images/flag/sj.png new file mode 100644 index 0000000000000000000000000000000000000000..c9e8904175c25bdcd6f891210682d51e73e9517d GIT binary patch literal 858 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHNJzX3_G|rb!+?y2=DAIa;=l5F?9&Hzs zCiQffX&$-c_CfWHj>`t_WgRy>=P5MtCrnn#O*j$E!6>R&c1+M@hEfbiX3@1<)sc53 zH(XdB@g`|={f|@pIy-XX>wi5h`u}fFuCNEgfq)n5-!Sx)-DBAB_uJ1b&D1|xw-r66 z>CD9I9{l;qeIQc*_N?=|O+J^FL~afX-*)+B67!)jh7KQwFw>`An`fDN zUZ0iX%=O}$vX|yzPp;c>mNS0FPYE*9)ARcMzEB(LufFZ70;u=wsT$GwvlB$~m zBp8eg3@mjG4RsC8LX3>83=OPI%ybRRtqcs7IqZH4(*ROw1Ois-!PG!g_DJihh*H6vUE6>c% zEJ#hsOw`LSO4kSR^aDzhax#~3AwYi^TL8VH z3v{S~!KB#+w}2WXLDmK5rYHHB>hZ~ bM*TFP8O8dAs;+l|`WZZ3{an^LB{Ts587@97 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/sk.png b/test/fixtures/stylesheets/compass/images/flag/sk.png new file mode 100644 index 0000000000000000000000000000000000000000..ec9ee781b463c4a35e03ad1e0a4858a5e7ff3d59 GIT binary patch literal 897 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHFJY5_^G|s2??f0HqC~|E6`|9}os$LzJ z7@0-?l@yf%vtID8IJltTl#J9Xr;AsvT~W9a;=E$9itJyvEAP<^GoH19g=k9 z-+8(DZ~Nz8Q>XrUy877-kN*+7*PfpI!g|Tak2~rfKd*Z2yjl9)vn>;(t!?ztz2 z9a0|)-(UCW`m4K-mtWd!epUT5bK0wtlx0CX4l2v$$T0>nJ`vYH>6`Z9hG<$*_|Chc zjT|mD@o|2)8U9PX+5X>!;U9zdefOOoH<$YYBSy8vHKHWBC^fMpRW}7lFc=vaSn3)Y z>KdAb7#Ud^8d#Z_=^B_@85k^c*!>iy0i@Cjq6?_O&_LG!sKGGAz|6|j(8|aNqCrJ4 zKmR0+pE{l*NYz`M_LXUS6)3mY54cddc~@`Zra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHjJY5_^G|tyfwDoch6lgtf8t!~RZ9&_N zOV`slBSWVNoQO)A7|OA6Vj%j$I=+*Uhb5xZ~72c!5k>#x78*m7_IyMmGc$B}q1&9~pzM>?JD>)`(p z>fw2*bIG}m|E(OJnO3!P&L3}QzPo#^WL)|3J6Emb7GJzs^mD@Y+jrB7_ubw*^Q6zx z6;s5{ESj+xX-0`>O@%anlD;moig9^Wy zC;03J29RorYeY$MQEFmIs%{F9U@$T;u+%j))HO5Ewlp@FUeP=jHJfti)5p_P#lM1zW8fC!3)-29Zxv`X9>LVaGW0BSG-Imst8 zIW@01l_8^~q`*pFKQ&LUJTp79AT=d3Q7^wJT_42L4=7E_$xMz<$O9Ok zh)r-0nd%x?=o(pu0R3TX0rZM4(4htflV%&-0&0*1Sr?q2R#Ki=l*-_klAn~S;F+74 zo*I;zm{M7IGSvpCNE)K3v?w{1!OhVZf)w0x64Mntlk@Y6L(hxs1u8Q^D2opb@`1U& uyu4g5Eio5@^pf*)^>Y%F^fN&k_0xc66zdnNy50rqXYh3Ob6Mw<&;$UH))RIB literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/sm.png b/test/fixtures/stylesheets/compass/images/flag/sm.png new file mode 100644 index 0000000000000000000000000000000000000000..e2ac02860fb27216483ec4f8479c1f0d2c2d058c GIT binary patch literal 852 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIYJzX3_G|s2`TYE$&O4$BCE85bsWr0RY zv7k<@b(c4L{A};?@Vl)FdRCmRPA`Ml)!Uue(?4#s;8wc0bj1Q8g9Qg&&ivi~eh%OD z6RiB~`>y|tTX|F8ZeYLmuS>BBLyE*2~Ld6B| z?mu_>?CB=?F?CDe?mwkwM)!MX?YOsh-5Hs0%NC!G*_yR!@5dPj9)z5EX|?yq%&^Iy zP6sY6zVM1q=Ki0)buYT61R5+e*wwVN#~{4CAk+T$hpE|l`qoc>T`qnU6j#cXrrGmM zwb=DgjI8{BlO?_TgZKJu=1va(FY@^HRzC&juAXBlJ9_>J#cVM!`+0Wd=V@7@Gaksr z6fvb7ND`M!beSf+{$cd7Un&fL*tfa(FXTHE#tsZ?)e_f;lH{V)#FA9q6d=K1WME*a zYiOuzXcl5*WMybzWn!jlU~Xk#u*_liQ^AD^o)&BO{0g z6~O=z6b-rgDVb@NxHW|OyjTI$U<7iKPiAszUU4czMoCG5mA-yzo?dxoc4k3pN@k*7 zeo?wUh^HS=nv|279G{Y(o0yqr|M%5-m~{}F;2tv7HL%b%vJ3(G!`K4o6zHqb~$0 zxaB0KD|ja7=M{&Z7ugF`W`a-_9~$HXbA5Svxn5dgE(GZ%=jZC@Bqr%+f;8%<0nI4Z UFI08C3)Iix>FVdQ&MBb@0Kl0!lmGw# literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/sn.png b/test/fixtures/stylesheets/compass/images/flag/sn.png new file mode 100644 index 0000000000000000000000000000000000000000..e48d2fa5887eaf2471b24f62f02e4ab18ac57099 GIT binary patch literal 812 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI~JzX3_G|q=kG|ZZoD9|$B{HLQMi?pF& z(nP(fbIZ!a%H$3>ZTP~mvWPifX~{>WvZmGy)f*C`x zO(=B=|I}3;ub-qO95}50Ls$+ul)T>Ii%gMh?zdBhtb)Ej2 zTGhoXcG-l53#`1J?sa8l&%dL`zp?FDJIyUi)m1AnNZV`5s)!vg*~&zuKdAb7#Ud^8d#Z_=^B_@85k^c*!>iy0i@Cjq6?_O&_LG!sKGGA zz|6|j(8|aNqCrJ4KmR0+pE{l*NYz`M_LXUS6)3mY54cddc~@`Zra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJtJzX3_G|u}@+?X{rP@v`co!`+e`Yx^k zB8w^+y}h{)9{*ri!skd4w+$UalTV+uwEi6V=iiak$YnR~&P=@Z zP}{G3*6K-GUo)nJ?0mEDjOXQ(GvjQgsvOv|z=hA%``Xk{$#$;8dunRUd?%~?wK=X4 z$Qs?2s5M10t;J}&x$j9W!GjYQa~=Lwd+;&yJevn8r`JiOi7eJwJa47QYRQ`=uP@r> zy(_GruQt#2$q)Yb`z8b|Qz~6sb#h`l%)cTku?Kw)UR?yH*&bt~3fgnb^YB zx2@UV-eM15LCKl*x|g#)3STkanRM$+gxbS|`R491GY(4|>^2v*T#*&DbdR3#wC3&e zUmoR<-+$TV|M$4QkXc*2Q%hgZ5}RbX+ARNuR*HGE@>dgE`|B@-Qu=r4ef)2zu9dlX z|MuL9w<`=2LV)3_TH+c}l3bLUSdyxn0wfrW3=AxF4Gnb-%|eWftPBmTOw4o*%&iOz zmO1Qx3ex~mX$8>*)L>|!YXH<>7-C>%Wol?;WCYQmA{Zcoq9HdwB{QuOw}w!k7b}1o zj6hEE$xKeoD^6v|C@Cqh($`PT(<{%+&MZhx$xPJCFG|-3@$>^qlX5bX<5Ti;6EpMd z|Gqj8vkqbt+(V|i1{S(TmLWiY7+V0nq6>7Wfx)EN2DgA3Btg~%=ckpFCl;kLIHu$$ zr7C#lCZ?wbr6#6S7M@JC0Vra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI?JY5_^G|u}@+?#c!P{8%Qexz$hWNX6a z7q>mQYWY~RH(oyG<$8j7$(3_zzHts4u7!6faKC2nRM=%){w(6nKj*f?20VA3-C3yo za{jiwIfk_M# z8qRW>FeInX`TNUiLdEB>(@R%roIdvKpykw>9gUNHlnVQfK6>sX|OE=m-zm|K`g7dT0@|vOzJA?iB-bKus`~T;@`r3Qa!neFU*)L397RLRy z@9x!CIWK0)+1AW?`)1FUcjwlW+@5ke&pb3XKCV`-O6%{ut{&~BZCAqWX8+26W&gQ1 zljqy#lg_{(RV{IiC`m3#O)N>(O#u=NMg|6!x`u|jhGro~MplLfRwib;2If`<2Fo0F zKZR)kskDOV0%|Zc&@}*RFbpv;vobZbGBSc_P!S9eLD7(#pOTqYiCaUc&x;j64Mrd* z`D7-i<`t(hWR#Q?Sn2Dh=INDZW@i?prer4S}eUBg+t=Ka4GaUeN_Q)WBfUY=c`s4U!=1g7ec#$`gxH85~pclTsBt za}(23gHjVyDhp4h+5i77f?G~vx`JnNeqM3td6B(9WhMw^@u5LJ wFxQutm+Pe^=0cEOa(=FUPGXXNCP<@x8qkbl{X$jOyFmR6p00i_>zopr0RFN#{Qv*} literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/st.png b/test/fixtures/stylesheets/compass/images/flag/st.png new file mode 100644 index 0000000000000000000000000000000000000000..76ca2d23e7256a6c4e53c2a445a177b6b54d256e GIT binary patch literal 891 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI=JY5_^G|u}@+?y4WDB}8k@8{IKv>7`U zH98*nC%zWG!TrzWNT)_m@6z6>t*!kF%%UPV-E!SJCOCKq=IGQiaBFinD;T;6&YiRO zyro#7%7%zHRqM03E&hxA;AP-&FqS`-rl;||;qH8Xxp;@Cf`WYC3tDZKPMG6!@}xj> z{`|Gm?Iz4C58w8_|IS^}kR44tmrg1iK6CbnaP#C9fec^%r(FFpxqsev$(J+PG!Al{ z-oj$6J7?}JY4<>OhVS>pdG{6mh{;XPJr-OC57*1TC zalbV;HE7exmdWN*-dqx0w`arj^=Es`k4*|-SfU+!(|k^t+Ur|x%4V_AyH5E?-%nbf zem!64B!d@&sHJUERLGr;H`14de%`a^jC`=SfbDLxXZJ#uEl02l8?Y-!NEzt}6Zb!*KDlIewOsQ@j_%aB12cdf6AhBCPRg^#QpA zoc+BTABsQWHy3byI)@gOP!OrLLi&uAy0ok&%_5 zft87wu7SCgfx$9|-A`c}Kq{>ux_}xC4Rj5F8Vo}W%&bfet&EHz8k*9g7ocd!%}>cp ztHiD0v-M*cpavt5lYBChQ}c>b88S*r3as??Q}gu7GqW=bQd2S$_413-^+7!SfYPL# z%;fl#{M^LMJo~?|&cm#O*aY{Gsjh*Au90O3&>zMYK(FWm9co}OX|};Fpaw~hb;0>* zCFO}lsSJ)O`AMk?p1FzXsX?iUDV2pMQ*D5Xq#=q*i;`0r+#G!&NWm>9Fs_FJ22WQ% Jmvv4FO#oD=NwWX| literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/sv.png b/test/fixtures/stylesheets/compass/images/flag/sv.png new file mode 100644 index 0000000000000000000000000000000000000000..96764f36190678473b8fd1b3598ceb7996011ec9 GIT binary patch literal 829 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kICJY5_^G|q=k+@CciP~hnKQv2_hzX*nP zaC9#5P-G1L6}M;tyT@cRyH3}x1_39bpnOF$F~t=edTl568t+do-0UsW_R!$W{^DgX zzQ%-pXIrHaFjZ^S!Y(PHpf46HUVS*cIgW=(X{v={uwY*ai>%Ds^X!g`X3u9lSF%KT z?n|-01+CFLSl1dx*Xvv@DyrPQ({Qb5^tP9LZrctd@KnsP`&ILAZ%Ue`>!jSsX}SM@ zZK^;0qvrKo`3TL_jS)O^bNx#TO!r&=|D~Lf|L)(Lw`V_HSrz`deEah5Z)PX= z&RzaLcSB=Q&9~oIyFcc$=IoZ2^_!qmklye&Wsc1JIPu=;@A=L4-Mz9@?MlJ2=*3&# zXt@f#oWA+x@_zB=1J`nDGam9N$v&LsB4l`S&vmIe9*Z)HR$X~D@w9~Z8Rmv1^-Cgh ze9Nw+@B;%?wZt`|B)KRxu_RSD1xPR$85mgV8XD>vnuQn{Ss5BwnV9Jsm|GbbEOXfX z6s7^B(h8yrsKL-c*8r%&FvP&j%GA)x$QYubDJ^;diiX_$l+3hB+!{VxKb8S%FakNr zCo?%UuQ-(>PJF_4)B{NYkzbIWF#M2KbP0Gnkj!((YP0Y-*|NH7Z z%sPloa1WX48d&HWS%v`pVQc~PiZ0Nh1_qO68{7hFkOWy5oS#-wo>-L1;Fyx1l&avF zo0y&&l$w}QS$Hzl2B=6HqNubeIhDc9(HDXg+;S4r6+Dyk^NK^yi|hp|GeIbe4-N8x wxxT!-TrVv#7lQPX^Kra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIOJY5_^G|tcUv-M_n6q&<&z3qx-(2Dl` z?ydqCt?HHRRhA|!Z5Qy6bgVxt8fNLIB$%soN08@cY5`+YfxF{qo`TO8$#T*8PGtbs@Fe*w&RtC>=%fBc6vdWfq(ympv z-kO=&b?*@_c$aLJZMyJm&eGRw_C!lQZrxsBx_4db&5Dq%OIMv;z4-aX$A1)O-#cQa zo%cRo?eOx4-?%$G7WuN>IC(E{?>ayJzQ+%0{=fPA`R%6lV*_uL(gv;@0aOng7v_%lqn^tQ~ii)CWQk`5QKi5pn|HR{{4 z`^xrCKIjGvB-Ikvh?3-@)Wnih-4r0fU}RumscUGcYiJf?WMpM%U}a*aYhZ3=V6e<# z_fwb#kV-3vE}#ZO16>242Ez~oGb>X=DL&q++u&je}IPXn4!tY4_=dKajl!PC{xWt~$(696V#6j}fP literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/sz.png b/test/fixtures/stylesheets/compass/images/flag/sz.png new file mode 100644 index 0000000000000000000000000000000000000000..7464eadec2412ebf8a524702591fae343df32b07 GIT binary patch literal 967 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIkdAc};Xq;EQ=<7WtQH1Tm@7m`xPtIDT zp6eZP)-?yx+&(yut&VAo3HU9Lfwx8~YD%-d0V zs!H#S-uW{-B0v1totZBan40tC;i>KV^WWcz_+y$KxG611cj~)-WmSQ*6Eb#Y-+k76 z^!gID%*~p?m+hmi%HGS!yt3H1xA@6H{)rNgnI>pWIN&ukclGRTeEVm;e{Eg$#-qGv zW88ZFIqUaH)W^TEvHtt%(L>|k&J&qfSQ|=|tW|bi%bQvA=SAnN)JQR>6@0wc)a+|z zR@B)SY}&YRPx-@5Op2^Nxu-u@zlu;k>(%q#MJ(xz^yHQ6i?6Tyv-a%P-q=ef)3mtQ`*niIZh{r|Urg1*@s35zaV?If~jffI*fh@(^I*N5^d?-Knq9NP~9qgS=W zHKHWBC^fMpRW}7lFc=vaSn3)Y>KdAb7#Ud^8d#Z_=^B_@85k^c*!>iy0i@Cjq6?_O z&_LG!sKGGAz|6|j(8|adqM<1*dI5@t-29Zxv`X9>K3hMQ0ctP;Imst8IW@01l_8^~ zq`*pFKQ&LUJTp79AT=d3Q7^wJT_42L4=7E_$xMz<$O9Okh)r-0nd%x? z=o(pu0R3TX0rZM4(4htflV%&-0&0*1Sr?q2R#Ki=l*-_klAn~S;F+74o*I;zm{M7I zGSvpCNE)K3v?w{1!OhVZf)w0x64Mntlk@Y6L(hxs1u8Q^D2opb@`1U&yu4g5Eio5@ m^pf*)^>Y%F^fN&k_0xc66zdnNy50rqXYh3Ob6Mw<&;$SqP<0vr literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/tc.png b/test/fixtures/stylesheets/compass/images/flag/tc.png new file mode 100644 index 0000000000000000000000000000000000000000..a2743ab55d688149c6836ca3ee0195b291b1edf0 GIT binary patch literal 965 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIkc)B=-Xq*qdXqyqtD01}U?@QC)FX_#U zx^%3|^|g{l#|n!G!MiS6k2D@VyLND=-rTOfM~@bD$S-DTS6WnhF@$BJQ^pc6j-<=W zuGXx0zqk7Q-t&sy-1U6v|1I;=pNk2%i;3;tzU%3nZp;6Fw#Jk`yYXVGd#;i|V@Ekl z`lBa*F8zs=(q~=0`pWB@6`2JUFH&Q}_vJhC8ZjKW%ZS zui9STq+@Sie)=%aaeeIHO>w)TclsTf_-m&3#E@5+=_$Hqw>XUZh253dmq+CtOYY`7 z^62R4jkTL!D2Bu@aC!46`03A-yr0WWb)P!i+rO?>&Rf2eL#E_!WBk|l*SC8zY+n6( zFrnkF`ujhJe0VPX>rgy!WJlQdumx-S3NE~Kown&`&biq+n>afDa0s#-lX7xBpd-~` zw3=hap6aQW#p}%db93x|6gZt!H=527AR5@%rQsYI@@w_3YhL$i$}Wa5w{-e=9MKcx zKD5!vE1`i=%OLQre1_PnRnIb3EOU7#5PLUw=jqb+Enk208>!kIs>xsR7Z|y!C9V-A z$wjG&C8@e8K!U-@z`#=1&`{UVEX2sj%Fw{d#7x(~+{(aUnZxdz>U2;?N6%;eO(;#7u=l9B=| zef`utz4FZL%!1UE%tXEXqI7)_Pd}hEDJL^IJ|#alF*DEp@2m4L>mWA4J!GnDV4-Vd z83Oc&u?5g8x3VtQ&&YGO)d;mK4R zpdx9AqSB(|R0cOkUkFlg%SlXE@J!CnD-Jy`vKOe#1feWGG{^_$`ttH}y|lz!2+~W= j&(+UKOw!K;Y1B^xno+D@sOowbsGq^p)z4*}Q$iB}C6jtZ literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/td.png b/test/fixtures/stylesheets/compass/images/flag/td.png new file mode 100644 index 0000000000000000000000000000000000000000..fca8258ebb6be0aabf9aeaef122416b0a33d81ee GIT binary patch literal 834 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHHJzX3_G|t;jwCCYj;Ddi&K=PA=P7Zhyq@ly79%zdfFsbN)VZII6{CYhU|0gPd5c1+@u(0;u|^x~98#+^@smUNsAJ9NbGvevSbGnVc8$JiIT%&7Ir ze#ge7w#%wh6gVX!mN2Di3MHxeXib|fQ}rq0;p9XwBhgdA8$^w_^-uN^OkS!L%ErdG z>eJ7~x>HM!KD#%0no=IEOiYHbq&ozjEt-d4XjMebPdd{ z3=Ebz?0yQ<08(iM(FN3CXrOBV)LGEra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJDJY5_^G|s0^T-!a3QQ*k)k8=JdKN<@Z z+SQuBo|>z+`RS3A4H*{Qj=YcR6~t_L#a)|EDoJeN4u8^gu_8;5M=d_CJgto9ytWL7 z@U+zL+pTvq_t~*9C~Q7{mzTlYn?cH=C%U2G*K*4ZHcSiD`eTp5Nq9IMF|Uzj(1w&0T)UqW|ahgI$BuD!-m7T;R6g_J%zx*n&hgT`w*2 z6xW?;WFQ}SH*@!71rDQ!!8%?cQ$0O(C07VeyIUmoLnSnr-@D9P>1|(%gR(*D-meel zUYSz*&n)%Q=}$*{H<#zFD>s^b^|bl?`^k1psqLGt%=weK(dy~lz3&ec{JgZ&{k;7t z#$N&#wyab$ZCvd$OXOv+dSA}n2=8Aeo{*lP4{`Fzr^<4xMke`Qz8c z?%eSC)#Z2h%pI5u{vOc(KfS?DVE!NOr?+FoV>2yo1A|+JNMxhOTUBvm&BNH7=~ z7+C5W8tNLFg%}xG85&rbnCTjrTNxNEbJ+b9rU9hV3Ze_B!O%e00I0z*#K6qT)X>Vv z2%~Cp2_)n#i8d#_5zieAe6<22Km5TUtV6WmzJ0dL3+vgx%xSYN&1-}jrwUo XGm7;KRbB4_^)q<7`njxgN@xNAV*5Av literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/tg.png b/test/fixtures/stylesheets/compass/images/flag/tg.png new file mode 100644 index 0000000000000000000000000000000000000000..76f5aa0de5a24abbffe6315e542b82a9ad89c29c GIT binary patch literal 872 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJTJzX3_G|u}@+?XAbC~)NY>Drx7Z2cbU zoKY2M`nJqlcEgwd8w8IY@?t8Rbnf1z>`M_HH`IMM1WUV4$e5{i^s>OC+c)oStgt+@ ziD&cevwyli)E6bX{dQpgk(9eoRFvV{H--!ot=j&msZ~|~=j^TCrEWXNb6NF=yRW~C zGK7Vj&Q45c&wplR>w2X7<$I}+phcIaOgp)B>e=c18(19DZrnZkZQDE>x0VyLd1oJ5 z77_dlh}Y;|6S*g~SS{d}oVt2ebj{yo>n>OP`P2SU-}dZb8@9t+Ipb?3jC__`SzM^$ zE1$?@H&0qWBT+16Myp|kx{Q4w_o9>!-LTzp3giN`V8S3Uya`)XH8lJkQ z{B^%V_$-&5nI3b>mMUF3ed_M!!~S1?OQvO?^G*{wc_ma`Qq6Gk;gvmwo#$m=?Nzqf z^YBcmn(g6cpQ;Hj^{RMGl#HD|KGo%#$5=0>@K!2>`O__RMs~Fy?1g#GhL_cSlY!x{ zTH+c}l3bLUSdyxn0wfrW3=AxF4Gnb-%|eWftPBmTOw4o*%&iOzmO1Qx3ex~mX$8>* z)L>|!YXH<>7-C>%Wol?;WCYQmA{Zcoq9HdwB{QuOw}w!k7b}1oj6hEE$xKeoD^6v| zC@Cqh($`PT(<{%+&MZhx$xPJCFG|-3@$>^qlX5bX<5Ti;6EpMd|Gqj8vkqbt+(V|i z1{S(TmLWiY7+V0nq6>7Wfx)EN2DgA3Btg~%=ckpFCl;kLIHu$$r7C#lCZ?wbr6#6S z7M@JC0Vra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ(JY5_^G|txsZuD{v6gj<>zbiy`Rd=v> zX;I;Yy9fIPWmeliIA0>V%d=3w&h@+16|QgdRE|G%%w8zv#F5VNaEXf9hi&&yPGXoh zpK%GR`iYXJi9#n-jFprp`4m}7O+CYM;nl4tdQ*bLx?Okft*+d$|Id$zlbK6%E{1e1 z(up!Uyruv5Z~y+s&)$Ch`|DMT*>9Dz1s4Rn0@n5gtc`k|P{7h7eIVE0NK*1l)a_gA zu9_OHy3NgbfcJy$#2%@%4B7wIyTe>97BQV(R$ft9cF*48%_L8)j7vNd`DTe^UYg|Z zUw!$dZ{*srxqipL#h=e)TrkCG{(0&0-PMN`Z}kZ^33#)d;LY`zU^8>d`nQVzZ|*qC zAOAnKM=Iyrc3?26mbgZgBp0P7mZa*Y00{;o0|QH4LqlCdvk)UAD?FcNF>6K?@XBMQUWG3q67p3cic=`dQNjaIx@hSPaiJ5u! ze_x%4SqHHR?jciM0}EXv%MhSHj4gm((FHoxz+lpBgIhoik|67X^V3So6N^$A98>a> zQWZRN6Vp?JQWH}u3s0un02N6?6qObwr!u%X`a+O`TTWuSf@gAmUUBGok-b1=CJ1Hm zp+P<{*O!-<>!l^;LXci^ey)B_Vv>F)NTYrl(2QdJLRHthK>ZA!u6{1-oD!Mra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI?JzX3_G|u<-@AZog6li%KGh4xX8jt9s z!_B|s-`ZBJC=KP?|c1NlILw-nPf;y6Hidcs=HjSZZ0lt3<>NKjI)3E$1y1KS*cvB zy(0$242Ez~oGb>X=DL&q++u&je}IPXn4!tY4_=dKajl!PC{xWt~$(696O|CIkQg literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/tk.png b/test/fixtures/stylesheets/compass/images/flag/tk.png new file mode 100644 index 0000000000000000000000000000000000000000..e778334aab8ffb88645543062fbc21e13c81c66c GIT binary patch literal 979 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHZdAc};Xq=C|c;5SRq0I4**Z0-jUhy|0 z*<^;rbjz;-${Te%`WgkNh`+qB)_eN~Kfw~7&J}!()ALvxCzNP#@GhDk65=L3TXkbk zR?o6*zvtJ!RsR1`a?;yh?*GBd%>T6|{&b6OW0pu@HgI4lU|{|rw&TTvN4<3ntFC27 z&wTjEBTG|gMfB4s;}8EXKRA8o-qmA#NvhlU^X!TrGC1tavYDpu|IPQl-f^e1&yT81 z7JYj0N$|hTCE4!^mWp|O`N2@SAYh}?w#$>auX{~i&gXaEUa~AZ@qX6%bD!3i*00(= zMe>w%m=f!a#uX)GEV&`j^8D~ngYHWm(lKS!hPwdk~+t$$zsJAX`LBhxX) zTW6+4Y<6a?Px$=h$C;Ze``dIT+EkezIwLn@-;HwTQ#p)f3}Rc){8}t!=*FIOy8RM& zTh8==%!@gjx5-q`)mP==oXGHo$t#C9^I>+<{RfY#s&9XM^Z3oY?e^hH;c|UfwRbyx z)GybLQxo0TV8vjpy>VZp%)h%g)}8sh^Gww3=il?^*q5E(vR5T$#(afsIt*7>XGAt<0`eKTWMwY8c0>8oU``!t{D;T(17{v`5@(TYk zeT!CY{QYvPATX*`OI#yLl8aIkOHy@HfCPh)fq|v2p`os!S%{I5m7#%^iJ7i}xs`#z zGKbwyVH!XxtsuI98Vn6|4S*U9Lk!HUObxA!j3FAD(xMljXvob^$xN%nt>LrvV;P_Z zBaoAPGLuvDic=XfN=gc>^z~Eo^vW}{GYe8vG86Uki_-N$JpF*uq@2v;_>}zI#LPVV zzpu{2tb^DD_mHWsfrYM-WeCt8#uh-Y=mH&TU@&R6!7ZQ$Nsx8H`DrEPiAAXljw$&` zsS2LCiRr09sfj6-g(p*OfQqCcib{);QyJVGeIZD}EhjNu!818OuQ>F)$X=i_6NIw( z&>$a}>&wf__0ke^AxJMdKUY5|F-boYq)|T&XhyMqp{na$pne8VS3j3^P6ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHdJY5_^G|s2?8)kuWy{0Afp=fl+ z!7UqaaAZxG;pLLU^1p$jsrN<)qvz&K(VQ)zN=aL}Zp{#Ba^-5)*l6%SF;d5A%7b;U z_uju_E%v@u$3n(#nZ^AB8)}5|A3m6%Ccq+bn4|8n-Jd2~jfURstFL=?>Cd$9oN`C# zTy*?JkfHVLg`7{`%(q*1(ctdR z^vlsFt3Tak4!yW|6;n_f+l7}UyY9Yw?py!IWw-aI_D|lQ+HBnTFFs}zGGN^k5uLsL zHaGY4_`QD&Zf)ldXY&4J`+4qzOABMC)&KshnegvS&Fa#U)YQ_vyqe$Z`uLxofAYS$ zKWpp1g*wNZ9ffb)`*-d2Uc2oX{O?}hnD+DYi@(n6?ed?ch1tqF?Wl-6eckl$i5g>{ zs;^0hgfs(1#m?XA6*lf&{%Cojmq%-hWazAkL9T6&wDvG7IM0jtw|rLp!yQh~5AOV- z0E__D64!{5PwCDvW8glbfGSez?Yxr#aSO%!U2;?N6%;eO( z;#7u=l9B=|ef`utz4FZL%!1UE%tXEXqI7)_Pd}hEDJL^IJ|#alF*DEp@2m4L>mWA4 zJ!GnDV4-Vd83Oc&u?5g8x3VtQ&& zYGO)d;mK4Rpdx9AqSB(|R0cOkUkFlg%SlXE@J!CnD-Jy`vKOe#1feWGG{^_$`ttH} ry|lz!2+~W=&(+UKOw!K;Y1B^xno+D@sOowbsGq^p)z4*}Q$iB}`{hqh literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/tm.png b/test/fixtures/stylesheets/compass/images/flag/tm.png new file mode 100644 index 0000000000000000000000000000000000000000..85eda0481090aba05a837c4d5b0fa5bc99498c35 GIT binary patch literal 912 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ*JzX3_G|sp7*=GkAO0@dxeZO~S$+z<= zYb`Rw*$Xv1j-CuGn9`@G^ozAgWXbNuR${++=dd_lIC^m97Cv8YsoYBmCK0RD)J%82 zw|xKJN@d3{o^)#)f6nWS56+%ndhhr|$&eBWIRE*u=L9+wu~mtE?4BUARy?v2}OcWkeF?HJOf<$2R( z@yy9e4HAr8c5)v|rlc=*>bw56-2Z*fg}*<)t-j`Y+(TG1h)LkEK$Cjsf62C+Sq3Zb zW!|}8Rgzh_v+~o^9sipbb*lMJO5)(MlZr5Y95Y|!%-JP(zu9>f2N_MAG$*+EN#>)O zhO5QYX0y!bo+YPo>FGg67l~%aV(shemYvXx*_O%Rn`X3F&9>;|-}#QshuvzvE&96a z`7|-ri=NA4J}FFRFE3|h)JT+*cpTaH`9OMt?Ei=Q+!q|xVsnmW0pm%v#5JNMxhOTU zBvm&BNH7=~7+C5W8tNLFg%}xG85&rbnCTjrTNxNEbJ+b9rU9hV3Ze_B!O%e00I0z* z#K6qT)X>Vv7^0ymEqVcphTQy=%(P0}8a`V;mH}!o0y)ViGdVS{IF%uzq@=(~Uq3ZZ zuRJq5vmiAkGf^+UC|w`K(+?<3%E?TQPsz_s%*?a@`|3Q*I*3hh51Hy3Sm+vAh5-Fx zYytF&F3_O{29stR+yZKl1X&lHpH@;)<_K`4t44f27xzP!9#FD)?_g7lK}bMSyqD^>bP0l+XkK=I2z& literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/tn.png b/test/fixtures/stylesheets/compass/images/flag/tn.png new file mode 100644 index 0000000000000000000000000000000000000000..fd04bbe25b72d38cf3e5ca4a69c5c7507276a406 GIT binary patch literal 824 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJNJzX3_G|tyf-00<;$kTd$Z7i#!hDbE~ z^1iadPmEUjVP!*S>w0ccfEUd_dC7I>St1>Es2^WGI6`Ms+|1Gk{vq| ziYIS+@<5U)^z!D z9=0i}@891)aNaX=lI6QM??3->+JC;{%ssiyk^lPd6qc`?w`8l%Ohc){x^p)rd)W@$ zmHqzR#^!+LrvV;P_ZBaoAPGLuvD zic=XfN=gc>^z~Eo^vW}{GYe8vG86Uki_-N$JpF*uq@2v;_>}zI#LPVVzpu{2tb^DD z_mHWsfrYM-WeCt8#uh-Y=mH&TU@&R6!7ZQ$Nsx8H`DrEPiAAXljw$&`sS2LCiRr09 zsfj6-g(p*OfQqCcib{);QyJVGeIZD}EhjNu!818OuQ>F)$X=i_6NIw(&>$a}>&wf_ r_0ke^AxJMdKUY5|F-boYq)|T&XhyMqp{na$pne8VS3j3^P6ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft+uiE{-7@=Szbe^Oy_;il^Czbz2lYIMMt3 z1MiY;HI3iIzc9*F@(aBc4qMdTH+M(7PDXf^^64Ov+l3~cwfB>^crga-I=YCVei7@1 zQdvFm`F=O@HpbmPkT-qF%qtV7)jYrb^Uk#ddA<{p`S1T(D5=J;SM#;XXjArCc6Aj4 zFT?E{?=Nnvt6X>6Q7ZADMG}K$2vft^W5<KYpA8k&U|8Ce+`SecmV8kk!d7%X$x{S>AFq|yqa3#h@+K-U1M!7#+Y%*xcz z%E%a^p(!nT0g8s){FKbJO57SgTR)ZoYA^yh$tN>8HLp08A)}rSC{4=AOpZ^<&rQtCv;X_*Jj^hsH>Ka(+8d-(_{b6hY^olOf zp#}z%W*giBYLEn37o49~Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)dr|Y8ltGQC^?nE z&CwTv6x?zW(-l0E^Ye;B&x`B@DlldoJ-UaGs@O1TaS?83{1ORF!2hIQh literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/tr.png b/test/fixtures/stylesheets/compass/images/flag/tr.png new file mode 100644 index 0000000000000000000000000000000000000000..f64e102f1b99f48ba07c5cde6d606766a209ef91 GIT binary patch literal 826 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHXJzX3_G|tyfwDoch6lgu)y)l@1eh10Fm{+wF(S4dyV6XO zvZalKj9r4fC)w>cc>JY@Bh5JI(bLxB?z>{=&3o}x>VU0yL&2TMeTs!OJ*s_u6}71r zDH{{4bR8mB&Ru${XUdlk2hQK`jUFE!*2?+L+8gz2?^4(B;a;J5TTZ6CfD5>Q$-o|BpLfNXI(Z`B$8% zRR)HrYKdz^NpewYVo9oQ3XothGBB{zH8j*UGz&2@vNANVGBMLNFt;)=Smv<%DNF-M zr4>XMP=ld?t^rVkVTgg5m8qeXkugL=Q(E)_6b-rgDVb@NxHWvXek=pjU<7iKPiAsz zUU4czMoCG5mA-yzo?dxoc4k3pN@k*7eo?wUh^HS=nv|279G{Y(o0yqr|M%5-m~{}F z;2tv7HL%b%vJ3(G!`K4o6zHqb~$0xaB0KD|ja7=M{&Z7ugF`W`a-_9~$HXbA5Sv sxn5dgE(GZ%=jZC@Bqr%+f;8%<0nI4ZFI08C3)Iix>FVdQ&MBb@0JyU#=Kufz literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/tt.png b/test/fixtures/stylesheets/compass/images/flag/tt.png new file mode 100644 index 0000000000000000000000000000000000000000..73f52178016f3390e11ca773a3bfa69361b3bdbd GIT binary patch literal 978 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHZdb&7XK^j=g+VFb-k-sYIWtM#w@cUnXe2BQiS&I-m>oY)~MZgpUsKx*?Z@Pg67JYMF9a4 zlLThWmcIJ>Rk(xa^1@2aMbERdulE$5vwWVm^ix%K_Y#%EKk6$oOs>>ARQ~E|YS7_! znfbMJb5N$)>|VFUUoM|}_ioaZ5S>W^9Y@{ftp3d~ZJGv$N6U}IrWaSArQO_Sd;YV{ z`3-B#=i5zE*|j4eX=CE*rFD!Oc6jXT|2X5&gj1#WBjzMpID`aM!2G*(n9e0pJ+wpgS$ zDXe*!<7JWKjf?i2eR^x3y#!Cy-gzf)d^+d%|3kn_<{~bi=Vy9sY<<&=ewc@8{9&EP zV!B|J{47xFP%UwdC`m3#O)N>(O#u=NMg|6!x`u|jhGro~MplLfRwib;2If`<2Fo0F zKZR)kskDOV0%|Zc&@}*RFbpv;vobZbGBSo}XiAG-fTAHcKP5A*61RrW){kX?8jL_r z^2tn2%_~l2$S5f(u+rC0&C@H-%+4%GP038u%P&gT2l4a+N|SOjljBqJa}zW3?Ek(x z53>$p6Wl|lx&{`yMwTH!e;8W;y`l?rsDZ(x*#@_O8YDs11?Q)glqVLYGB~E>C#5QQ z<|d}62BjvZR2H60wE-%UhA1j6N={{PbM%EE1-G2UbOq1k{Ji4O^CEkJ%1jW-;zNUc xV6HDOFV{;;%!MGmra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJbJY5_^G|rb!I^TV!P~!Og`ExBbS}o6X zwq2bkW8xagZtA)12eU}7bZX%4u1$C5oJgCx_>znXd*=6Ly16%#lqZTjP0|l4lbAef z{h2eLAOE$eIa~DL>h9&`w$s0VR-SuUo(Ansoatdh6&e8h5supz4Ef8t8(|%tJ3=WN;a*V_{yZMa)t49 zi|60x?EC-qPwUEW0-h%8r$h^zXGi;oopuWkx_i|3&QVRj(tB~XAD={vCOI>R&1RRH z-=~mNa(mfL=fkn4%10ID9*HcrP}lzMwtY{F$EU5?8hL!V$Bx~)o%8}~1-2Zr!fBC)d$K~Q{ zX8ihFw=h8A=l-Wp7(6t$-hNvmVo_Xq>1@WUER#}W^U}+w^lom9wqO5i_frMiGs~yn zTe5L~->lW_90tZcuN?2JOlCAtV7vc;TkUmlK%8>n9$@sSmbgZgBp0P7mZa*Y00{;o z0|QH4LqlCdvk)UAD?FcNF>6K?@XBMQU zWG3q67p3cic=`dQNjaIx@hSPaiJ5u!e_x%4SqHHR?jciM0}EXv%MhSHj4gm((FHox zz+lpBgIhoik|67X^V3So6N^$A98>a>QWZRN6Vp?JQWH}u3s0un02N6?6qObwr!u%X z`a+O`TTWuSf@gAmUUBGok-b1=CJ1Hmp+P<{*O!-<>!l^;LXci^ey)B_Vv>F)NTYrl X(2QdJLRHthK>ZA!u6{1-oD!M<2gq8I literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/tw.png b/test/fixtures/stylesheets/compass/images/flag/tw.png new file mode 100644 index 0000000000000000000000000000000000000000..5808bdf5f622684aa23cc1a9a180078d6943e7cb GIT binary patch literal 786 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kG^JzX3_G|uNv+~~_3DB$w^T)L$z6Q_)Y zn&KkXtPL8>Tn#;X3%G)rL=plUN?F=i8XdOf{5x|_{YOGg)76YgbGJ)nYRlY9GB!$4 zNnU$=`(@?>^;Z~n?6P4h*kk?T>es(Df^IHve9l)#T}zqvsb61h^0GPiqJO3Ax&J== z?bk=|QdJ{2U;A^SbEf9r7g%jQHdOkk7p5S+2Dve0<) z-!K1G8sz5Ry~n^HrE-(+=;zfc#zih3as?k}>oue-==>?cpT0BKSa^j`-t`;bR)rV^ zOte(>m>XcutLd%f;IAdRox8+9kjrHOgK6tSgUJC7ERho@1jIPGOl-`$S*!Bz_q#OK z2i%^)X%8OS-Q)*`lxm4ure{zH88g_ zFj(fW`zcHVNTn4-7f^$tfvy2igJFn)nU$%bm60(-LsMGx0u&9o`6-!cmAEy0wtg%F z)L;a1l22xGYF=?FLq@I1 B4;ugg literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/tz.png b/test/fixtures/stylesheets/compass/images/flag/tz.png new file mode 100644 index 0000000000000000000000000000000000000000..b966c8c4601e1f65c7b61e3c7cd8e1b8f8dbdb46 GIT binary patch literal 975 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJPdAc};Xq-2lXqh2gAk!K@Yro-=Oh@V7 zjbSEnTQ&H!Di$m_8pYfs&?OeM_Nq{GQ+T1~ii1a84?41UKYu60A$!D8#HMY5-Y&1+ zWg8vaBPQMdTAuN{?YOzkzNf4O{22*$Y$u$!4Y*wjSMeWiV&3~%xZUa)e=oB^{xjdb zT`OmGco?Z2pH_V4e#6+1^&{{=M?I-3*Yfw%{p?% z{rB!~c1_I(&#YcqA)1;RE4%oj=_Rw%{OT{BYG;{QUU9mqBQMjj|0f^2!@@_d5o=s8 z+1`*kjUbZDAaJ{3B-Zu&MW`+BFNo_QuW zX1E#ER2W=4vgpt8(^H?xUHNZivOsNRZ_$#u|NczUu3YCMET|rS@#n?|yWV9KX5Bx_ ze_f*?WjFiG!(30yio-kP?o5BABDh%~wXgVof_td&^m~1KR_CcZh-Aqry(_lgqH}or zj;PeMzVZu4SBt%WS@XB}`;qBBGm~=S&U8ES2<*s}HmC|a^w34=;P3LxS1#EaYs&3o zHLh-RQ>uHLq%XIM@oOBf0=Lebo*KE8lXt`(>OLN?=vnuQn{Ss5BwnV9Jsm|GbbEOXfX6s7^B z(h8yrsKL-c*8r%&FvP&j%GA)x$QYubDJ^;diiX_$l+3hB+!{VxKb8S%FakNrCo?%U zuQ-(>PJF_4)B{NYkzbIWF#M2KbP0Gnkj!((YP0Y-*|NH7Z%sPlo za1WX48d&HWS%v`pVQc~PiZ0Nh1_qO68{7hFkOWy5oS#-wo>-L1;Fyx1l&avFo0y&& zl$w}QS$Hzl2B=6HqNubeIhDc9(HDXg+;S4r6+Dyk^NK^yi|hp|GeIbe4-N8xxxT!- sTrVv#7lQPX^KSVgLXD literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ua.png b/test/fixtures/stylesheets/compass/images/flag/ua.png new file mode 100644 index 0000000000000000000000000000000000000000..7a187e6a801ffc75034d209bfc623103b223ca61 GIT binary patch literal 760 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft>H2E{-7@=W}};y_^GiT+jcm<>)%>H-+m_ zT1+2z!5gJJZP@}X?+(mtDwd77F#Sm!``@)(O#Q`xY!Bskxic|lcdiR^~y|16uElwJx=7Cu*Y zyCFkYA@TH_T(3pB^CkwIOPRmD@xCDA9|n*1ycfZ*`BQ;GpjzS@QIcGgnpl#mn*t;l zj0_Acbqx)54b4J~jI0a|tW3;w4a}_!43;_UehSk7QfURz1=L_@plblsU>IUxW@Tz< zWn>J|(3BRv07XM?eoAIqC2kF$tslz(H5h@MTWvkh(mHAsT23(ij~DNig)WpGT%PfAtr%uP&B4N6T+sVqF1Y6Dax4N+8Dl$^@o z=I9GS3T`=x=?b37`FX{m=SB7cm6;%v#fJv@z+7KmUapsxmra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ7JzX3_G|o?*VCa3VQ0B<{<@LPLcb2T+ zxFa>|$WieNVa>^Q>koWX6pfn2a`fQ#4-FO_-2yLGonJ6p-=Re*W7ATHS3mF7?tea^ zaa*O#@#j0S+386#eeU5DCA0YF7jck3aScr2r^@EjXwbF=nsvwo;~FVIQK&HeuA z)89)%ZO&`fG`O^!{5I(>=Pv#O(NFz1Em;y2GiUz!?(Vw%`?v1g>73@`redkPmg%lp zz{>SO1}+olSlYh*TE$&mef;plYZ)#^N*?DXg*)8--*bKawEutp1ub2ru~}_S(zGI85u(~G^Ir^K+%w! zpOTqYiCe>G>&G%c4Mrd*`D7-i<`t(hWR#Q?Sn2Dh=INDZW@i?prer4S}eUBg+t=Ka4GaUeN_Q)WBfUY=c`s4U!=1 zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i77f?G~vx`JnN zeqM3td6B(9WhMw^@u5LJFxQutm+Pe^=0cEOa(=FUPGXXNCP<@x8qkbl{X$jOyFmR6 Mp00i_>zopr0E$02eEra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHBdb&7E@w}X*D#XomqA}p{ zjeozg?|+wVzN+D$|HJ3~yL*v$|IK;VqHFm1xBhycX)}*HF*t|J-u2hA;bBQ?f}Q_A zgU?U5r$$Z_kFVEU`pL%svWe#;70*W&@4i-rZMU!gxMgCBj*=3S1B+5pL;AsJuWKia z0xi1^eUtlVvA@7kU}4{T-eddc|GuZtWA$&bLQhghbrI8oxGQ2ewr!T+i)EUaAfV@( zBH-4*l32p6qgYiR-{sWhw8bsd(%Smo)v4Ui)Yq~f)Ohvdo^qlX5bX<5Ti;6EpMd|Gqj8 zvkqbt+(V|i1{S(TmLWiY7+V0nq6>7Wfx)EN2DgA3Btg~%=ckpFCl;kLIHu$$r7C#l zCZ?wbr6#6S7M@JC0Vra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIMdb&7bqpYQQx-w+>-066HSptQr<>BrYVx-aCK!A?P_p~(NnMA_0?PD`OD+hKfZKo|J$_9lE(`dU;N>kSozbJ@4?T|hqmX=zEMB#o)%(o z^`kYTsg;H4(Wt``5{IMY_f>D*6)L***0mcq44=yg8X60}J$fN>n(X=HZ*O1Ux%hMW zqd!w8PBl7iIEf|5$t&Zm*TE>cLzY^1Ew=oP&dK|yBjWev^H1h5P*~!iOg^^X`0AtnmzuXxONvj@-q-OwQRJFu4q9nN}HL)aBHw8#A z7#SE?>KYpA8k&U|8Ce+`SecmV8kk!d7%X$x{S>AFq|yqa3#h@+K-U1M!7#+Y%*xcz z%E%a^p(!nT0g8s){FKbJO57SgTR)ZoYA^yh$tN>8HLp08A)}rSC{4=AOpZ^<&rQtCv;X_*Jj^hsH>Ka(+8d-(_{b6hY^olOf zp#}z%W*giBYLEn37o49~Ql40p%HWuipOmWLnVXoN8kCxtQdxL1)dr|Y8ltGQC^?nE z&CwTv6x?zW(-l0E^Ye;B&x`B@DlldoJ-UaGs@O1TaS?83{1OTlYa~%Kx literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/uy.png b/test/fixtures/stylesheets/compass/images/flag/uy.png new file mode 100644 index 0000000000000000000000000000000000000000..8a174a4db0f74707a0bbc5ac7c9fdda85dd1b6a2 GIT binary patch literal 867 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kIoJY5_^G|s0^+}JfaP^9Jj-km#-Ic@4b zB(~`X$F^xr`Wx~S)K}bX>gC_CuW4J?0<%M19dlb-BQg>@xHdUPdT#u4s$anT=lPoB zNs~1!&d#*FdfX@L_O&x-cy!X4jhnyz^gntgt2EPIHLL#kZ|LQ_?nD**=qNaMa5RG&r6c3H~YP>^>jab{_MkojW3iI z#d90XZvH6VsTy(e=ie8_H*1S3z82-B>p3wfwsNpCP3LrBkY0YecQ^afgNyTTM;|^c z-z|E0R!eBe@(GU)-3F$tb8pTF$n^_7oLOZv~T>`Q*|ZU$qUb=u80{AVUlS?S^%$_os7)e_f; zlH{V)#FA9q6d=K1WME*aYiOuzXcl5*WMybzWn!jlU~Xk#u*_liQ^AD^o)&BV&k$rnKknC}Q!>*kaclT&{a6O5!3g9epUmXcyy8@bjFOT9 zD}DXcJiYSF?977Hl*~lE{GxPy5Klj#G$|)DIX)#nH!(BM{_m^vFzX;T!98TEYha;k zWEleVhp`3FE4o038W>EPZEy>yK@wzLaDG}zd16s2gJVj5QmTSyZen_BP-ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kH-JY5_^G|tyfwDpcj6lrm}9=Us`E}10q@{**7@YJK>G$m=fAe7cPDWtg(I zzP>yB_}+r)flFq0i)b#soLWC?R&>>l(5>CqjHme5%f!wLSdx*awm8GcO4nm%x1R2F zNl~sI$DdBgjf=eHN`EZ*TQJ=_Xqpp)(5%Ut`TSAYdy9_c)-hYzure{zH88g_Fj(fW`zcHVNTn4-7f^$t zfvy2igJFn)nU$%bm60(-LsMGx0u&9o`6-!cmAEy0wtft9k`c&BKAFj>dBv#=86_nJ zR{Hv>d3xoU*_j2YDVd3S`9J&%r>mdKI;Vst0C_1q-v9sr literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/va.png b/test/fixtures/stylesheets/compass/images/flag/va.png new file mode 100644 index 0000000000000000000000000000000000000000..a8c15e840ce826ac34338906061f748de14a4a30 GIT binary patch literal 876 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI|JzX3_G|q=k+~^mQDAMx$&-eWs*6ms? zy-mPGEsJL6C7E_$}|-Q3olYpvuI#KtncK1*aan{1}l(~lRgy?giia^&8s?}6*L>u7qm z*q+xDTYD_)&7b7|6`wD!-sK{19esbke|^33OohWGtILwj&E6hMt*U+cY4dV@zi;2% z;(vWNzgPCVUp1A{ZD#eYA2Syh>CBVa_tUhpeD(JN)pfQ1ek5+FNnW^WGsljIUdQfq z=Lu_d-X)6r*}GMrKlwe zUlmB3;o)NGTB0PR#1JFFlf#hryZ>VK3x1Xk0Y|5n2Ji1?txNykza#aJDR`Qj-iy9{ zD}ZsJTH+c}l3bLUSdyxn0wfrW3=AxF4Gnb-%|eWftPBmTOw4o*%&iOzmO1Qx3ex~m zX$8>*)L>|!YXH<>7-C>%Wol?;WDL>Jloq`JMMG|WN@iLmZVjKUAIktW7=fJRlbM{F zSDea_QBqQ1rLUiwr&petomr5Yl9{NNUzDy7;^_yJCgo%%$EW1yCT8Z@|9y2HW*x*P zxQ9%24J>qxEJJ|)Ftz}CMHlE$1A|Gk4Q>H7NP?^j&QB{TPb^Aha7@WhN>%X8O-xS> zN=;0uEIgTN15_jpQB+!#oXX(l=nFv#ZaInR3ZBXNdBvgUMfL)fnIM$KhX(n;Twh*Z su9udW3qg9x`MLTziAnmIAdUKIKr@Q<3sqh30`)U^y85}Sb4q9e0C&hj%>V!Z literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/vc.png b/test/fixtures/stylesheets/compass/images/flag/vc.png new file mode 100644 index 0000000000000000000000000000000000000000..212e211de9e131808cba9a5ad7e3e20ed149daa7 GIT binary patch literal 868 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 lmzra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI^d%8G=Xq-j&;C=@lrHs|)2c58hdvSh44Em3jL7NM-qJWiE!v zua3=iI{4t}Cx6Yv(qyTha)urYd2YS?HvRk3SC1Y(+iu|czR4ltX7bEGZ!QI0{LH4s z{^O%k=*orvKmm9J=>)XZ5wMt8e$qEi>6EdhhR!ijuTrlL{L;_B>f)tG`XB zx8a=qJ`vXFo`(WTQ+PJlx|+{gEq?3myk(4nN=lz=@0<84F*W#oKGVIb@Z*V_y;IHi zznc4~W%A~^H6M%W^pUNeuVF$ppT zDyfD4;C=B>?X%&j1Khy)RxNRjC`m3#O)N>(O#u=NMg|6!x`u|jhGro~MplLfRwib; z2If`<2Fo0FKZR)kskDOV0%|Zc&@}*RFbpv;vobZbGBSo}XiAG-fTAHcKP5A*61RrW z){kX?8jL_r^2tn2%_~l2$S5f(u+rC0&C@H-%+4%GP038u%P&gT2l4a+N|SOjljBqJ za}zW3?Ek(x53>$p6Wl|lx&{`yMwTH!e;8W;y`l?rsDZ(x*#@_O8YDs11?Q)glqVLY zGB~E>C#5QQ<|d}62BjvZR2H60wE-%UhA1j6N={{PbM%EE1-G2UbOq1k{Ji4O^CEkJ z%1jW-;zNUcV6HDOFV{;;%!MGmra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ3JzX3_G|tyfRP?)>C~)Mt|9l2VVUn|uc90A^3zyRVLgnX{+Oh+o#zt@S2#uiPasq2}JV zT78Gt{fyk9;otN|ac$d{5^cr6cJ9yTYm8=`PFnxtkJE)c3%-vnuQn{Ss5BwnV9Jsm|GbbEOXfX z6s7^B(h8yrsKL-c*8r%&FvP&j%GA)x$QYubDJ^;diiX_$l+3hB+!{VxKb8S%FakNr zCo?%UuQ-(>PJF_4)B{NYkzbIWF#M2KbP0Gnkj!((YP0Y-*|NH7Z z%sPloa1WX48d&HWS%v`pVQc~PiZ0Nh1_qO68{7hFkOWy5oS#-wo>-L1;Fyx1l&avF zo0y&&l$w}QS$Hzl2B=6HqNubeIhDc9(HDXg+;S4r6+Dyk^NK^yi|hp|GeIbe4-N8x wxxT!-TrVv#7lQPX^Kra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHRdb&7aO!4eS=;kM>`yv>QfZf%JT1*rZ1G~oD-12q zXS43VzE&?*cis;BrM$tLpD3Jdo4`1Q;hfy}wX?VWi7l6Veab{HF4^5=`5m7$zg;tn zr+>b=-#PT>+23<^Etvj!mDas|dg+3VJxYtj0#mLWuD!dg>b;;B!~A`(ZnR7bUvo2H zcj%mbF*5^AlrxB(NaW*qtf zOafPPHr&-ZR~nXkXjSvEF0o?^SZ6LgTn`?#L%l+>D-TU^5n3;$A^Ewlp@FUe zP=jHJfti)5p_P#dM1%XmR6P_8x%nxXX_dG&n9aF638=vc7^73-Mw8UHp(o4?I i)z3*x($55G)K3GNQLJC6>UtNbpTX1B&t;ucLK6U`aaSM! literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/wales.png b/test/fixtures/stylesheets/compass/images/flag/wales.png new file mode 100644 index 0000000000000000000000000000000000000000..05838f9f9b2bbd097bce92a50cf04a9670844b74 GIT binary patch literal 1013 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ9c)B=-Xq-`Fiv& zc{FA6=QVqZ-`^=d|8str4$RB(|yjxSjgJlKV0i5+8{88dE>gt&vxc{ceKgw)>3xP+sI~| zQjzz1?{541d-Rsrzw%agS;7<$>dSLyV$h}T^weW(&d-1I(Xe-h{_p0pywF**_J1!q z&ad)EaB{~M-R0M=U)Sfd_YeP;r}gE&!JoSKA2)n1)w+=3G5cguVBcQ;m&g82D=9wy zE#%qKpzGcHY^Q&^dh^`AppcK(ot8Y0of@ne5N+^d7N_m^)p?k85S!p0GSxM(&^59Q z0s6z(0_YW8phFD|Ce1du1=Ju3vMxA3t)x7$D3!r6B|j-u!8128JvAsbF{QHbWU38N zku*e6X;E@2gPWr-1Sz=XB&I8PCggOaT>1Tp8>ZbwCDAq4jb-fGJ&*16m=d#Wzp$P!ch>Yw2 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/wf.png b/test/fixtures/stylesheets/compass/images/flag/wf.png new file mode 100644 index 0000000000000000000000000000000000000000..6434e110b8882d599944a78fe0eb4d1350a8361b GIT binary patch literal 895 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJrJY5_^G|s0^wD*o?6glcI#~+xyB39*^ zmtzn+r&3vgwpi(h>=lX^azY;|JQ6>lRZ{XY>c~;0DSm$$^71oYcZa^Xa`xAr=l@=Q z5E5uH{Y*zV?R@&IwEw78TqIN@Cx?U(G2>O|AJ? z$`O0@WB~7_khy<~%BC@C++}#Te*M%nW>QB(^Z5DwW(8;pa2A!6iKRAMvl(7Gd*_U& zxZ2jvor@Q5Y;9e1|9q6S-?Z?ZGpDQi`A$+%TB8y2n8Fo znVvoWb^fwE`#S!u>F>i1$Gm^%bL7Oww9l@~KX1OhcKhwguU}WLU+(bh_3P~$pFOIb zXMJ>~pViS;y`V3@_gC+&TK)C;lO?;humm-RFsjEM35`uTpmHK7J3B4^{m)}=rInW1 z+ugIaIx1|5Inx+@#8dd;S>J0fcX((loMtA)wS>u{G^NVQBfMBvEws5LG@N&H5Np6s zmOs^Byz7q`&G{kV*7$##qitaok1iW9T2xD1BTABsQWHy3byI)@gOP!OrLLi&uAy0o zk&%_5ft87wu7SCgfx$9|-A`c}Kq{>ux_}xC4Rj5F8Vo}W%&bfet&B_{8r%=2>Y-@J z%}>cptHiCrY|hGGvsL6jq^4vh>g5-u>w|du z0i{VfnaS}f`MHUidG>!_orhTmu?g-WQ(XfKT_ej7pg)W)fL_rBI@G{m(rklUKn;>0 z>w@#sO3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrH1%NkbHs7A2=LxHV*Nr@*SkRd N44$rjF6*2UngBw1P{;rP literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ws.png b/test/fixtures/stylesheets/compass/images/flag/ws.png new file mode 100644 index 0000000000000000000000000000000000000000..47c0eb03e1720f81b52b7796bd120e653f1910aa GIT binary patch literal 810 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHfJzX3_G|s0^Jm}>VDB}A4^7LjmCtsO} zD;pMCaQtGlUl6(f;u-ms_X{E#1rh~3OeS~)FH&%lQW3E^fA9M|Hvizy8*WbCE%yA7 zXM?hi8k5=koUTNcf2yn(a^}5zn}7ZF?(pgTTcft#u9e>3*PIk+&U#68{`d0LQ<)fQ z%F|!}d2>r=%IVp2&lPtD8@ce^ePLo=Y_u{=Ie;OlCu943waIHPTD0FBd*W!!MKc0LT{_O9+87#ggyJq_5Mlwubnx>^~xO;bn1fQLmNP^;7fo$}_Vw z3sO@u6ZP_o()B?+{eaS>oXq6-l>FSp%sl(Qug=4)gV+T3kg2YLg|3lh2+$wK7C^7) z0v&2#Fln~IEuaQTkafZNX(i=}MX3yqDfvmM3ZA)%>8U}fi7AzZCsS>JiliZmN{f8UZ64)gtGY1ARn0P%gf94(h_qaNG~}*S3f5)Nk0>$ aQ9li6MzMaOs_R{#eg;ohKbLh*2~7Z)Z5U<% literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/ye.png b/test/fixtures/stylesheets/compass/images/flag/ye.png new file mode 100644 index 0000000000000000000000000000000000000000..54b83d0cc140276174e78844a41db0dc1ed1abcd GIT binary patch literal 761 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGPft(+nE{-7@=co4DdN~IQw4R@O+s4CT4O7zO z-X)xoer5@|Gu_1=a>clo337CliFxY0n`wFc(ZqBv(LWMt=l&d;!e6tvd%xIXR)qyj zFXqWH-f-gba#uPm*;jBukfZD2gWsRMSs5bo*Pkd^)|_DVVu2_7-B~w$?%lEHSh0O} zuQ>M{zYV&Mo1XYA&#}DhePH#5JNMxhOTUBvm&B zNH7=~7+C5W8tNLFg%}xG85&rbnCTjrTNxNEbJ+b9rU9hV3Ze_B!O%e00I0z*#K6qT z)X>Vv1fs$HV5%O9hTQy=%(P0}8qDV0odnci1agv3W^!s?aVkSbNlAf~zJ6++UU_DA zWFYKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP?0o5QE5?f zDubJ&F9a#L0J88sr0WeR+AgURq)<1nDK`=j!JqCh2E_ bH0q}T%_!C{RCT=z)X(7Q>gTe~DWM4fKXeE3 literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/yt.png b/test/fixtures/stylesheets/compass/images/flag/yt.png new file mode 100644 index 0000000000000000000000000000000000000000..045a76f97deb78ab6c4a9ba9487885f81d18e3e5 GIT binary patch literal 916 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHRd%8G=Xq-1aZ=W5UD0B4V=Rb;^=2FU% zGO;{b+d{iCWSjPhgx|IL#l})tSa5awBaKU3PFtHNlyP%jKN3;&`0VFD?=1ON-v4{x z`HoeqHuSQ1GARTv`tH%GlDy=*il>w$qlhb`!)D38z6)k$H73g>D9~e; z-|}^>Wq^g!YHm4Jh*7X}5bRy|;8KGR2u!E?gDHDPQqZ_E1o)lc8=4Epe` zq~x=b>bkJMb@!{!>vA5r`SWMd#)1oLZ+QLHPi2x#jLqktuiiUv$oDZF=(m%p^%&)k$e?3Rg>eE*|&hXsD0P*4PvCX5)QeT&b40 zMwBEMr6!i7>ZSk*1|tIlOI<@lT|=`FBO@zA11l3VT?2C~1A}D_yPv`|fK*yRbOALO z8t57TH5i5%m|2+`S{a!@G`Js3)kD#co1c=IR*74K*_^wRfEtWIPV&i2PR%P$WymNg zDX`MlPtDUS&&GEra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kHZd%8G=Xq@*w=I=4NQ0Dl@^PB%}+xA>i zY8J28!~|3RQVpk;NlO+iP*}KNU1_J173b$5w~m1AYw{drtvv$V1YBK0nlul-3Xt1W zd1Bri%arPG&%giu{93{B!=tm(GhQ5V`Q2&0nEU9?EIa)JY)nxO%pDC{8~8#R>>J7- z%jP_io3dH(Zt7{ST*KT=?1g zwW+c3bFc2c6OlzJbGP=Lc>OZ)0JFjGvK;ri)IY2Lug-LlQm)p2HtDTw_i4SZIje#T z7x`WF{{1>QSgyfo;fCG%GEzrUH2+Q(&fccVx3a=(il>=?<-2n!^Y6?wVVLps<>wVK zo#K9Gd4D~oUd=Ds8^ybJf~dDsSZ9m5C$}OGgP>iNMcI=H_w-f0*SbtrE_=m3*E3K^ zDKSjxY0rLENePC-$M@{By?3_tLGjfH>ASWSwjHdi?>ATZx&WP0x@Z=s&-ZoQ&mLNQ z`upru&h4xt9v4phD_$?BI?r}p%hOb)txry9Z8pl*o31AoFJ;@e`sjiFqwH0?&*ezh zeN?dhzfx?=!t4IRnwyiu1l1QQFux_}xC4Rj5F8Vo}W%&bfet&B_{8r%=2>Y-@J%}>cptHiCrY|hGGvsL6jq^4vh>g5-u>w|du0i{VfnaS}f`MHUidG>!_ zorhTmu?g-WQ(XfKT_ej7pg)W)fL_rBI@G{m(rklUKn;>0>w@#sO3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%NkbHs7A2=LxHV*Nr@*SkRd44$rjF6*2UngGmvbx8mK literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/images/flag/zm.png b/test/fixtures/stylesheets/compass/images/flag/zm.png new file mode 100644 index 0000000000000000000000000000000000000000..c6ab90f56cfb56b6658e54254c10213a6b7bf5a5 GIT binary patch literal 815 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!2~3KHq6QcQY`6?zK#qG>ra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kJ#JY5_^G|q=kwD!82C~)+A@BH2-7sCZ& z)4HZsdx#f^YX+tADyDMD?_l=ct{CC9YRMK4O{Xa;3D0cQj@p0kI&9$c(fad)Gt=z! z6Xp5@9U2-KSUFaRpJgcc_fE#4eD_>Gq2qbh_o^yve*HZV61jS5^W@WpXZQUseqJWz zy6wuewI6Q3SUq*Q{&xFmq3PA__T>fwCAT(O_ob{$SZi|elx2(7z0#W0B9JL`;{5arb1tlGyBaFO>C9vh5U^$EF3b2uM_>0H zf44sTb$$7*_3GUXlK1wPlssJBaOf+qSpze}f$#+0AM9t>mwPL&5Z?j}M%5D6h?3-@ z)Wnih-4r0fU}RumscUGcYiJf?WMpM%U}a*aYhZ3=V6e<#_fwb#kV-3vE}#ZO16>24 z2Ez~oGb>X=Dez3>hUQ1y=g{ zsd;+knc0~IsVSL>dih1^`XHWuKxtA=W^#N=er{rBp8elf=V8`CY=V2pRM)^l*T^yi z=nrEHpjUK(4mB{CG~3`7P=h4My5Rh@lJdl&R0hYC{G?O`&)mfH)S%SFl*+=BsWw1G z(hxh*5iMbG@mzra@ocD)4hISV`@ zi-EKU7`vU!wgU;46*#5?X|QgFuOHGP85kI6dAc};Xq@+*XrD2;P{j4V{@+pUEt?B-AC4HXN0n0 z{Nz2q@9pL@71~j7zQ!*rfBW<4&r>~*xHze}v*~%==_xZxH#3$^72EsE8NFjz>Iud_7esUh>&~`;1GAF#l)q zr`@MlXMfL&>2OrkJj=8|)Az7LhQub#E%Kh%YWD=KkY6A3^V9E_>yN&Cc|Cr+-%y)7&F`(&^EKv%duo8qa;cU3$7&Rb&vG z(}5)u1w3aSXcFx~Cp2_)n#i8d#_5zieAe6<22Km5TUtV6W rmzJ0dL3+vgx%xSYN&1-}jrwUoGm7;KRbB4_^)q<7`njxgN@xNA*kM=H literal 0 HcmV?d00001 diff --git a/test/fixtures/stylesheets/compass/sass/sprites.scss b/test/fixtures/stylesheets/compass/sass/sprites.scss new file mode 100644 index 00000000..9bcbe251 --- /dev/null +++ b/test/fixtures/stylesheets/compass/sass/sprites.scss @@ -0,0 +1,13 @@ +@import "flag/*.png"; + +$flag-sprite-dimensions: true; + +#flags { + @each $flag in us au ca es eg ly { + .#{$flag} { + @include flag-sprite($flag); + } + } +} + +@include all-flag-sprites; From c4a315af3c3b7adf4c4c0d8df3678e6f75e946f5 Mon Sep 17 00:00:00 2001 From: Andrei Bocan Date: Mon, 28 Mar 2011 09:51:27 -0400 Subject: [PATCH 148/223] Check if Rails module responds to env and root before using them --- lib/compass/app_integration/rails.rb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/compass/app_integration/rails.rb b/lib/compass/app_integration/rails.rb index cbd48b99..8e41d3db 100644 --- a/lib/compass/app_integration/rails.rb +++ b/lib/compass/app_integration/rails.rb @@ -21,13 +21,19 @@ module Compass end def env - if rails_env = (defined?(::Rails) ? ::Rails.env : (defined?(RAILS_ENV) ? RAILS_ENV : nil)) - rails_env.production? ? :production : :development + env_production? ? :production : :development + end + + def env_production? + if defined?(::Rails) && ::Rails.respond_to?(:env) + ::Rails.env.production? + elsif defined?(RAILS_ENV) + RAILS_ENV == "production" end end def root - if defined?(::Rails) + if defined?(::Rails) && ::Rails.respond_to?(:root) ::Rails.root elsif defined?(RAILS_ROOT) RAILS_ROOT From af10edd7a971a5146601dd8b2f7f15267e71b5fe Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 2 Apr 2011 10:40:32 -0700 Subject: [PATCH 149/223] [Rails Integration] Print a warning if compass is booted more than once. Closes GH-282. --- lib/compass/app_integration/rails.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/compass/app_integration/rails.rb b/lib/compass/app_integration/rails.rb index 8e41d3db..06bc7764 100644 --- a/lib/compass/app_integration/rails.rb +++ b/lib/compass/app_integration/rails.rb @@ -11,6 +11,14 @@ module Compass extend self + def booted! + Compass::AppIntegration::Rails.const_set(:BOOTED, true) + end + + def booted? + defined?(Compass::AppIntegration::Rails::BOOTED) && Compass::AppIntegration::Rails::BOOTED + end + def installer(*args) Installer.new(*args) end @@ -41,6 +49,11 @@ module Compass end def initialize!(config = nil) + if booted? + Compass::Util.compass_warn("Warning: Compass was booted twice. Compass has a Railtie now; please remove your intializer.") + else + booted! + end config ||= Compass.detect_configuration_file(root) Compass.add_project_configuration(config, :project_type => :rails) Compass.discover_extensions! From 727c025881a380879f3b327d30dbd689e8909d61 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 2 Apr 2011 11:59:54 -0700 Subject: [PATCH 150/223] Fix some edge case uses of color stops with list arguments. --- .../sass_extensions/functions/gradient_support.rb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/compass/sass_extensions/functions/gradient_support.rb b/lib/compass/sass_extensions/functions/gradient_support.rb index faa31f34..a1f466e9 100644 --- a/lib/compass/sass_extensions/functions/gradient_support.rb +++ b/lib/compass/sass_extensions/functions/gradient_support.rb @@ -237,8 +237,8 @@ module Compass::SassExtensions::Functions::GradientSupport position_and_angle = nil if position_and_angle && !position_and_angle.to_bool # Support legacy use of the color-stops() function - if color_stops.size == 1 && list_of_color_stops?(color_stops.first) - color_stops = color_stops.first.value + if color_stops.size == 1 && (stops = list_of_color_stops?(color_stops.first)) + color_stops = stops end LinearGradient.new(position_and_angle, send(:color_stops, *color_stops)) end @@ -261,8 +261,8 @@ module Compass::SassExtensions::Functions::GradientSupport stop = pos.stop stop = stop.div(max).times(Sass::Script::Number.new(100,["%"])) if stop.numerator_units == max.numerator_units && max.numerator_units != ["%"] # Make sure the color stops are specified in the right order. - if last_value && last_value.value > stop.value - raise Sass::SyntaxError.new("Color stops must be specified in increasing order") + if last_value && stop.numerator_units == last_value.numerator_units && stop.denominator_units == last_value.denominator_units && stop.value < last_value.value + raise Sass::SyntaxError.new("Color stops must be specified in increasing order. #{stop.value} came after #{last_value.value}.") end last_value = stop [stop, pos.color] @@ -392,7 +392,11 @@ module Compass::SassExtensions::Functions::GradientSupport end def list_of_color_stops?(arg) - arg.value.is_a?(Array) && arg.value.all?{|a| a.is_a?(ColorStop)} + if arg.respond_to?(:value) + arg.value.is_a?(Array) && arg.value.all?{|a| color_stop?(a)} ? arg.value : nil + elsif arg.is_a?(Array) + arg.all?{|a| color_stop?(a)} ? arg : nil + end end def linear_svg(color_stops, x1, y1, x2, y2) From 73a01b367763d8bdc6d19b41b34e300bde67ae1a Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Thu, 7 Apr 2011 15:51:22 -0400 Subject: [PATCH 151/223] fixed issue with gem spec in rubygems 1.7 closes #331 --- Gemfile.lock | 2 +- compass.gemspec | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 646539a5..a9b34e1f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.5.428e5b5) + compass (0.11.beta.5.727c025) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/compass.gemspec b/compass.gemspec index be58ca9b..00e54352 100644 --- a/compass.gemspec +++ b/compass.gemspec @@ -4,7 +4,6 @@ require File.join(path, 'compass/version') Gem::Specification.new do |gemspec| gemspec.name = "compass" gemspec.version = Compass::VERSION # Update the VERSION.yml file to set this. - gemspec.date = "#{Time.now.year}-#{Time.now.month}-#{Time.now.day}" # Automatically update for each build gemspec.description = "Compass is a Sass-based Stylesheet Framework that streamlines the creation and maintainance of CSS." gemspec.homepage = "http://compass-style.org" gemspec.authors = ["Chris Eppstein", "Eric A. Meyer", "Brandon Mathis", "Nico Hagenburger", "Scott Davis"] From ad0e172ec38676cbcb98606d8623c9d78841c938 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 10 Apr 2011 14:14:44 -0700 Subject: [PATCH 152/223] Allow degrees for linear and radial gradients. Currently no support for SVG gradients using degrees. Partial fix for #303 --- doc-src/Gemfile | 2 +- doc-src/Gemfile.lock | 4 +- .../sass_extensions/functions/constants.rb | 7 ++ .../functions/gradient_support.rb | 99 ++++++++++++------- .../stylesheets/compass/css/gradients.css | 20 ++-- .../stylesheets/compass/sass/gradients.sass | 4 +- 6 files changed, 81 insertions(+), 55 deletions(-) diff --git a/doc-src/Gemfile b/doc-src/Gemfile index 5eebcc3e..5ad23a24 100644 --- a/doc-src/Gemfile +++ b/doc-src/Gemfile @@ -16,6 +16,6 @@ gem 'compass', :path => ".." gem 'compass-susy-plugin', ">=0.7.0.pre8" gem 'css-slideshow', "0.2.0" gem 'json' -gem 'css_parser' +gem 'css_parser', "1.0.1" gem 'ruby-prof' diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index c2090be9..6af6a34d 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -23,7 +23,7 @@ GEM cri (1.0.1) css-slideshow (0.2.0) compass (>= 0.10.0.rc3) - css_parser (1.1.9) + css_parser (1.0.1) fssm (0.1.2) haml (3.1.0.alpha.147) i18n (0.4.2) @@ -51,7 +51,7 @@ DEPENDENCIES compass! compass-susy-plugin (>= 0.7.0.pre8) css-slideshow (= 0.2.0) - css_parser + css_parser (= 1.0.1) fssm (= 0.1.2) haml (>= 3.1.0.alpha.36) json diff --git a/lib/compass/sass_extensions/functions/constants.rb b/lib/compass/sass_extensions/functions/constants.rb index 846787f6..02be8ef8 100644 --- a/lib/compass/sass_extensions/functions/constants.rb +++ b/lib/compass/sass_extensions/functions/constants.rb @@ -1,5 +1,12 @@ module Compass::SassExtensions::Functions::Constants if defined?(Sass::Script::List) + POSITIONS = /top|bottom|left|right|center/ + def is_position(position) + Sass::Script::Bool.new(position.is_a?(Sass::Script::String) && !!(position.value =~ POSITIONS)) + end + def is_position_list(position_list) + Sass::Script::Bool.new(position_list.is_a?(Sass::Script::List) && position_list.value.all?{|p| is_position(p).to_bool}) + end # returns the opposite position of a side or corner. def opposite_position(position) position = unless position.is_a?(Sass::Script::List) diff --git a/lib/compass/sass_extensions/functions/gradient_support.rb b/lib/compass/sass_extensions/functions/gradient_support.rb index a1f466e9..2c2bc207 100644 --- a/lib/compass/sass_extensions/functions/gradient_support.rb +++ b/lib/compass/sass_extensions/functions/gradient_support.rb @@ -34,15 +34,15 @@ module Compass::SassExtensions::Functions::GradientSupport end class RadialGradient < Sass::Script::Literal - attr_accessor :position_and_angle, :shape_and_size, :color_stops + attr_accessor :position_or_angle, :shape_and_size, :color_stops def children - [color_stops, position_and_angle, shape_and_size].compact + [color_stops, position_or_angle, shape_and_size].compact end - def initialize(position_and_angle, shape_and_size, color_stops) + def initialize(position_or_angle, shape_and_size, color_stops) unless color_stops.value.size >= 2 raise Sass::SyntaxError, "At least two color stops are required for a radial-gradient" end - self.position_and_angle = position_and_angle + self.position_or_angle = position_or_angle self.shape_and_size = shape_and_size self.color_stops = color_stops end @@ -51,22 +51,31 @@ module Compass::SassExtensions::Functions::GradientSupport end def to_s(options = self.options) s = "radial-gradient(" - s << position_and_angle.to_s(options) << ", " if position_and_angle + s << position_or_angle.to_s(options) << ", " if position_or_angle s << shape_and_size.to_s(options) << ", " if shape_and_size s << color_stops.to_s(options) s << ")" end def supports?(aspect) - GRADIENT_ASPECTS.include?(aspect) + if aspect == "svg" + if position_or_angle.nil? || is_position(position_or_angle).to_bool || is_position_list(position_or_angle).to_bool + true + else + Compass::Util.compass_warn("Warning: Angle-based gradients are not yet supported in SVG. Found: #{position_or_angle}") + false + end + else + GRADIENT_ASPECTS.include?(aspect) + end end def has_aspect? true end def to_webkit(options = self.options) args = [ - grad_point(position_and_angle || _center_position), + grad_point(position_or_angle || _center_position), Sass::Script::String.new("0"), - grad_point(position_and_angle || _center_position), + grad_point(position_or_angle || _center_position), grad_end_position(color_stops, Sass::Script::Bool.new(true)), grad_color_stops(color_stops) ] @@ -82,7 +91,7 @@ module Compass::SassExtensions::Functions::GradientSupport end def to_svg(options = self.options) # XXX Add shape support if possible - radial_svg_gradient(color_stops, position_and_angle || _center_position) + radial_svg_gradient(color_stops, position_or_angle || _center_position) end def to_pie(options = self.options) Compass::Logger.new.record(:warning, "PIE does not support radial-gradient.") @@ -94,15 +103,15 @@ module Compass::SassExtensions::Functions::GradientSupport end class LinearGradient < Sass::Script::Literal - attr_accessor :color_stops, :position_and_angle + attr_accessor :color_stops, :position_or_angle def children - [color_stops, position_and_angle].compact + [color_stops, position_or_angle].compact end - def initialize(position_and_angle, color_stops) + def initialize(position_or_angle, color_stops) unless color_stops.value.size >= 2 raise Sass::SyntaxError, "At least two color stops are required for a linear-gradient" end - self.position_and_angle = position_and_angle + self.position_or_angle = position_or_angle self.color_stops = color_stops end def inspect @@ -110,20 +119,29 @@ module Compass::SassExtensions::Functions::GradientSupport end def to_s(options = self.options) s = "linear-gradient(" - s << position_and_angle.to_s(options) << ", " if position_and_angle + s << position_or_angle.to_s(options) << ", " if position_or_angle s << color_stops.to_s(options) s << ")" end def supports?(aspect) - GRADIENT_ASPECTS.include?(aspect) + if aspect == "svg" + if position_or_angle.nil? || is_position(position_or_angle).to_bool || is_position_list(position_or_angle).to_bool + true + else + Compass::Util.compass_warn("Warning: Angle-based gradients are not yet supported in SVG. Found: #{position_or_angle}") + false + end + else + GRADIENT_ASPECTS.include?(aspect) + end end def has_aspect? true end def to_webkit(options = self.options) args = [] - args << grad_point(position_and_angle || Sass::Script::String.new("top")) - args << grad_point(opposite_position(position_and_angle || Sass::Script::String.new("top"))) + args << grad_point(position_or_angle || Sass::Script::String.new("top")) + args << grad_point(opposite_position(position_or_angle || Sass::Script::String.new("top"))) args << grad_color_stops(color_stops) args.each{|a| a.options = options} Sass::Script::String.new("-webkit-gradient(linear, #{args.join(', ')})") @@ -135,7 +153,7 @@ module Compass::SassExtensions::Functions::GradientSupport Sass::Script::String.new("-o-#{to_s(options)}") end def to_svg(options = self.options) - linear_svg_gradient(color_stops, position_and_angle || Sass::Script::String.new("top")) + linear_svg_gradient(color_stops, position_or_angle || Sass::Script::String.new("top")) end def to_pie(options = self.options) # PIE just uses the standard rep, but the property is prefixed so @@ -150,13 +168,18 @@ module Compass::SassExtensions::Functions::GradientSupport module Functions # given a position list, return a corresponding position in percents + # otherwise, returns the original argument def grad_point(position) + original_value = position position = unless position.is_a?(Sass::Script::List) Sass::Script::List.new([position], :space) else Sass::Script::List.new(position.value.dup, position.separator) end - position.value.reject!{|p| p.is_a?(Sass::Script::Number) && p.numerator_units.include?("deg")} + # Handle unknown arguments by passing them along untouched. + unless position.value.all?{|p| is_position(p).to_bool } + return original_value + end if (position.value.first.value =~ /top|bottom/) or (position.value.last.value =~ /left|right/) # browsers are pretty forgiving of reversed positions so we are too. position.value.reverse! @@ -198,7 +221,7 @@ module Compass::SassExtensions::Functions::GradientSupport end, :comma) end - def radial_gradient(position_and_angle, shape_and_size, *color_stops) + def radial_gradient(position_or_angle, shape_and_size, *color_stops) # Have to deal with variable length/meaning arguments. if color_stop?(shape_and_size) color_stops.unshift(shape_and_size) @@ -209,38 +232,38 @@ module Compass::SassExtensions::Functions::GradientSupport shape_and_size = nil end shape_and_size = nil if shape_and_size && !shape_and_size.to_bool # nil out explictly passed falses - # ditto for position_and_angle - if color_stop?(position_and_angle) - color_stops.unshift(position_and_angle) - position_and_angle = nil - elsif list_of_color_stops?(position_and_angle) - color_stops = position_and_angle.value + color_stops - position_and_angle = nil + # ditto for position_or_angle + if color_stop?(position_or_angle) + color_stops.unshift(position_or_angle) + position_or_angle = nil + elsif list_of_color_stops?(position_or_angle) + color_stops = position_or_angle.value + color_stops + position_or_angle = nil end - position_and_angle = nil if position_and_angle && !position_and_angle.to_bool + position_or_angle = nil if position_or_angle && !position_or_angle.to_bool # Support legacy use of the color-stops() function if color_stops.size == 1 && list_of_color_stops?(color_stops.first) color_stops = color_stops.first.value end - RadialGradient.new(position_and_angle, shape_and_size, send(:color_stops, *color_stops)) + RadialGradient.new(position_or_angle, shape_and_size, send(:color_stops, *color_stops)) end - def linear_gradient(position_and_angle, *color_stops) - if color_stop?(position_and_angle) - color_stops.unshift(position_and_angle) - position_and_angle = nil - elsif list_of_color_stops?(position_and_angle) - color_stops = position_and_angle.value + color_stops - position_and_angle = nil + def linear_gradient(position_or_angle, *color_stops) + if color_stop?(position_or_angle) + color_stops.unshift(position_or_angle) + position_or_angle = nil + elsif list_of_color_stops?(position_or_angle) + color_stops = position_or_angle.value + color_stops + position_or_angle = nil end - position_and_angle = nil if position_and_angle && !position_and_angle.to_bool + position_or_angle = nil if position_or_angle && !position_or_angle.to_bool # Support legacy use of the color-stops() function if color_stops.size == 1 && (stops = list_of_color_stops?(color_stops.first)) color_stops = stops end - LinearGradient.new(position_and_angle, send(:color_stops, *color_stops)) + LinearGradient.new(position_or_angle, send(:color_stops, *color_stops)) end # returns color-stop() calls for use in webkit. diff --git a/test/fixtures/stylesheets/compass/css/gradients.css b/test/fixtures/stylesheets/compass/css/gradients.css index b8c6c077..2fd5b247 100644 --- a/test/fixtures/stylesheets/compass/css/gradients.css +++ b/test/fixtures/stylesheets/compass/css/gradients.css @@ -43,20 +43,16 @@ background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } .bg-linear-gradient-with-angle { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); - background-size: 100%; - background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); - background-image: -moz-linear-gradient(top left -45deg, #dddddd, #aaaaaa); - background-image: -o-linear-gradient(top left -45deg, #dddddd, #aaaaaa); - background-image: linear-gradient(top left -45deg, #dddddd, #aaaaaa); } + background-image: -webkit-gradient(linear, -45deg, -45deg, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -moz-linear-gradient(-45deg, #dddddd, #aaaaaa); + background-image: -o-linear-gradient(-45deg, #dddddd, #aaaaaa); + background-image: linear-gradient(-45deg, #dddddd, #aaaaaa); } .bg-radial-gradient-with-angle-and-shape { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); - background-size: 100%; - background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); - background-image: -moz-radial-gradient(center center 45deg, ellipse cover, #dddddd, #aaaaaa 100px); - background-image: -o-radial-gradient(center center 45deg, ellipse cover, #dddddd, #aaaaaa 100px); - background-image: radial-gradient(center center 45deg, ellipse cover, #dddddd, #aaaaaa 100px); } + background-image: -webkit-gradient(radial, 45deg, 0, 45deg, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -moz-radial-gradient(45deg, ellipse cover, #dddddd, #aaaaaa 100px); + background-image: -o-radial-gradient(45deg, ellipse cover, #dddddd, #aaaaaa 100px); + background-image: radial-gradient(45deg, ellipse cover, #dddddd, #aaaaaa 100px); } .bg-all-gradient-types { background-image: url('/images/4x6.png?busted=true'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); diff --git a/test/fixtures/stylesheets/compass/sass/gradients.sass b/test/fixtures/stylesheets/compass/sass/gradients.sass index f521aede..747f25b3 100644 --- a/test/fixtures/stylesheets/compass/sass/gradients.sass +++ b/test/fixtures/stylesheets/compass/sass/gradients.sass @@ -23,10 +23,10 @@ $experimental-support-for-svg: true +background-image(radial-gradient(center center, #ddd, #aaa 100px)) .bg-linear-gradient-with-angle - +background-image(linear-gradient(top left -45deg, #ddd, #aaa)) + +background-image(linear-gradient(-45deg, #ddd, #aaa)) .bg-radial-gradient-with-angle-and-shape - +background-image(radial-gradient(center center 45deg, ellipse cover, #ddd, #aaa 100px)) + +background-image(radial-gradient(45deg, ellipse cover, #ddd, #aaa 100px)) .bg-all-gradient-types +background-image(image-url("4x6.png"), linear-gradient(top left, #ddd, #aaa), radial-gradient(center center, #ddd, #aaa 100px)) From db9b7ada1475c6ad21a252b68bac4e5131fe4284 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 10 Apr 2011 14:54:15 -0700 Subject: [PATCH 153/223] Update changelog for v0.11.beta.6 --- doc-src/content/CHANGELOG.markdown | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index edc19255..2ccb2710 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -14,8 +14,9 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/ The Documentation for the [latest preview release](http://beta.compass-style.org/) -0.11.beta.6 (3/27/2011) +0.11.beta.6 (04/10/2011) ------------------------ +* Added support for degree-based linear and radial gradients (not yet supported for SVG gradients) * Added opera prefix support for linear and radial gradients. * The CSS3 `background` mixin's "simple" background that came before the prefixed versions has been removed. If you @@ -23,6 +24,9 @@ The Documentation for the [latest preview release](http://beta.compass-style.org the background property before calling the `background` mixin or you can call the `background-with-css2-fallback` if you want keep using compass's automatic simplification of the arguments. +* Bug fixes +* Fixed and issue with the compass gemspec in rubygems 1.7 +* Fixed a bug with sprite imports 0.11.beta.5 (03/27/2011) ------------------------ From 7c5f831352481f161fbb8dc3aac61e856d34b1de Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 10 Apr 2011 14:55:10 -0700 Subject: [PATCH 154/223] Bump version --- VERSION.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.yml b/VERSION.yml index 7dd62e62..796e7c9b 100644 --- a/VERSION.yml +++ b/VERSION.yml @@ -2,4 +2,4 @@ :major: 0 :minor: 11 :state: beta -:build: 5 +:build: 6 From e66c822503d32d9b4e87a1fb0ccfec35dedda983 Mon Sep 17 00:00:00 2001 From: Eric Meyer Date: Mon, 11 Apr 2011 19:26:55 -0600 Subject: [PATCH 155/223] add grid-background mixins to layout module, with docs and tests --- Gemfile.lock | 2 +- doc-src/Gemfile.lock | 2 +- doc-src/content/reference/compass/layout.haml | 5 +- .../compass/layout/grid_background.haml | 16 ++ .../compass/stylesheets/compass/_layout.scss | 1 + .../compass/layout/_grid-background.scss | 164 ++++++++++++++++++ .../compass/css/grid_background.css | 28 +++ .../compass/sass/grid_background.scss | 13 ++ 8 files changed, 226 insertions(+), 5 deletions(-) create mode 100644 doc-src/content/reference/compass/layout/grid_background.haml create mode 100644 frameworks/compass/stylesheets/compass/layout/_grid-background.scss create mode 100644 test/fixtures/stylesheets/compass/css/grid_background.css create mode 100644 test/fixtures/stylesheets/compass/sass/grid_background.scss diff --git a/Gemfile.lock b/Gemfile.lock index a9b34e1f..72a7ccab 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.5.727c025) + compass (0.11.beta.6.7c5f831) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index 6af6a34d..1355f1a0 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,7 +8,7 @@ GIT PATH remote: .. specs: - compass (0.11.beta.5.04ab1e3) + compass (0.11.beta.6.7c5f831) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/doc-src/content/reference/compass/layout.haml b/doc-src/content/reference/compass/layout.haml index 50694755..f1c0b7d5 100644 --- a/doc-src/content/reference/compass/layout.haml +++ b/doc-src/content/reference/compass/layout.haml @@ -1,10 +1,10 @@ ---- +--- title: Compass Layout crumb: Layout framework: compass sidebar: true stylesheet: compass/_layout.scss -meta_description: Page layout module. So far, this is just the sticky-footer mixin. +meta_description: Page layout module. layout: core classnames: - reference @@ -14,4 +14,3 @@ classnames: - render 'reference' do %p This module provides tools to help you with page layout. - So far, it's just the sticky-footer mixin. diff --git a/doc-src/content/reference/compass/layout/grid_background.haml b/doc-src/content/reference/compass/layout/grid_background.haml new file mode 100644 index 00000000..2d660bad --- /dev/null +++ b/doc-src/content/reference/compass/layout/grid_background.haml @@ -0,0 +1,16 @@ +--- +title: Compass Grid Backgrounds +crumb: Grid Background +framework: compass +stylesheet: compass/layout/_grid-background.scss +layout: core +classnames: + - reference + - core + - layout +--- +- render 'reference' do + %p + The grid-background mixins allow you to generate fixed, fluid and elastic + grid-images on-the-fly using css3 gradients. These can be used for testing + both horizontal and vertical grids. diff --git a/frameworks/compass/stylesheets/compass/_layout.scss b/frameworks/compass/stylesheets/compass/_layout.scss index fbbf7aad..55bf9ee7 100644 --- a/frameworks/compass/stylesheets/compass/_layout.scss +++ b/frameworks/compass/stylesheets/compass/_layout.scss @@ -1,2 +1,3 @@ +@import "layout/grid-background"; @import "layout/sticky-footer"; @import "layout/stretching"; diff --git a/frameworks/compass/stylesheets/compass/layout/_grid-background.scss b/frameworks/compass/stylesheets/compass/layout/_grid-background.scss new file mode 100644 index 00000000..3e46da83 --- /dev/null +++ b/frameworks/compass/stylesheets/compass/layout/_grid-background.scss @@ -0,0 +1,164 @@ +@import "compass/css3/images"; +@import "compass/css3/background-size"; + +// Set the color of your columns +$grid-background-column-color : rgba(100, 100, 225, 0.25) !default; +// Set the color of your gutters +$grid-background-gutter-color : rgba(0, 0, 0, 0) !default; + +// Set the total number of columns in your grid +$grid-background-total-columns : 24 !default; +// Set the width of your columns +$grid-background-column-width : 30px !default; +// Set the width of your gutters +$grid-background-gutter-width : 10px !default; +// Set the offset, if your columns are padded in from the container edge +$grid-background-offset : 0px !default; + +// Set the color of your baseline +$grid-background-baseline-color : rgba(0, 0, 0, 0.5) !default; +// Set the height of your baseline grid +$grid-background-baseline-height : 1.5em !default; + +// optionally force your grid-image to remain fluid +// no matter what units you used to declared your grid. +$grid-background-force-fluid : false !default; + + +// Create the gradient needed for baseline grids +@function get-baseline-gradient( + $color : $grid-background-baseline-color +) { + $gradient: linear-gradient(bottom, $color 5%, rgba($color,0) 5%); + @return $gradient; +} + +// Create the color-stops needed for horizontal grids +@function build-grid-background( + $total : $grid-background-total-columns, + $column : $grid-background-column-width, + $gutter : $grid-background-gutter-width, + $offset : $grid-background-offset, + $column-color : $grid-background-column-color, + $gutter-color : $grid-background-gutter-color +) { + $grid: compact(); + $grid: append($grid, $gutter-color $offset, comma); + @for $i from 0 to $total { + + // $a represents the start of this column, initially equal to the offset + $a: $offset; + @if $i > 0 { $a: $a + (($column + $gutter) * $i); } + + // $g represents the start of this gutter, equal to $a plus one column-width + $g: $a + $column; + + // $z represents the end of a gutter, equal to $g plus one gutter-width + $z: $g + $gutter; + + // make sure we are building towards 100% + @if unit($a) == "%" { + $a: $a + .001; + @if $i == ($total - 1) { + $z: 100%; + } + } + + // and we add this column/gutter pair to our grid + $grid: join($grid, ($column-color $a, $column-color $g, $gutter-color $g, $gutter-color $z)); + } + + @return $grid; +} + +// Return the gradient needed for horizontal grids +@function get-column-gradient( + $total : $grid-background-total-columns, + $column : $grid-background-column-width, + $gutter : $grid-background-gutter-width, + $offset : $grid-background-offset, + $column-color : $grid-background-column-color, + $gutter-color : $grid-background-gutter-color, + $force-fluid : $grid-background-force-fluid +) { + $grid: unquote(""); + + // don't force fluid grids when they are already fluid. + @if unit($column) == "%" { $force-fluid: false; } + + @if $force-fluid { + $grid: get-column-fluid-grid($total,$column,$gutter,$offset,$column-color,$gutter-color); + } @else { + $grid: build-grid-background($total,$column,$gutter,$offset,$column-color,$gutter-color); + } + + // return the horizontal grid as a gradient + $gradient: linear-gradient(left, $grid); + @return $gradient; +} + +// Convert a grid from fixed units into percentages. +@function get-column-fluid-grid( + $total : $grid-background-total-columns, + $column : $grid-background-column-width, + $gutter : $grid-background-gutter-width, + $offset : $grid-background-offset, + $column-color : $grid-background-column-color, + $gutter-color : $grid-background-gutter-color +) { + $context: ($column * $total) + ($gutter * ($total - 1) + ($offset * 2)); + $offset: $offset / $context * 100%; + $column: $column / $context * 100%; + $gutter: $gutter / $context * 100%; + + // return the horizontal grid as a set of color-stops + $grid: build-grid-background($total,$column,$gutter,$offset,$column-color,$gutter-color); + @return $grid; +} + + +// Add just the baseline grid to an element's background +@mixin baseline-grid-background( + $baseline : $grid-background-baseline-height, + $color : $grid-background-baseline-color +) { + @include background-image(get-baseline-gradient($color)); + @include background-size(100% $baseline); + background-position: left top; +} + +// Add just the horizontal grid to an element's background +@mixin column-grid-background( + $total : $grid-background-total-columns, + $column : $grid-background-column-width, + $gutter : $grid-background-gutter-width, + $offset : $grid-background-offset, + $column-color : $grid-background-column-color, + $gutter-color : $grid-background-gutter-color, + $force-fluid : $grid-background-force-fluid +) { + @include background-image( + get-column-gradient($total,$column,$gutter,$offset,$column-color,$gutter-color, $force-fluid) + ); + background-position: left top; +} + +// Add both horizontal and baseline grids to an element's background +@mixin grid-background( + $total : $grid-background-total-columns, + $column : $grid-background-column-width, + $gutter : $grid-background-gutter-width, + $baseline : $grid-background-baseline-height, + $offset : $grid-background-offset, + $column-color : $grid-background-column-color, + $gutter-color : $grid-background-gutter-color, + $baseline-color : $grid-background-baseline-color, + $force-fluid : $grid-background-force-fluid +) { + @include background-image( + get-baseline-gradient($baseline-color), + get-column-gradient($total,$column,$gutter,$offset,$column-color,$gutter-color, $force-fluid) + ); + @include background-size("100% #{$baseline}, auto"); + background-position: left top; +} diff --git a/test/fixtures/stylesheets/compass/css/grid_background.css b/test/fixtures/stylesheets/compass/css/grid_background.css new file mode 100644 index 00000000..66ec57ec --- /dev/null +++ b/test/fixtures/stylesheets/compass/css/grid_background.css @@ -0,0 +1,28 @@ +.baseline { + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(5%, rgba(0, 0, 0, 0.5)), color-stop(5%, rgba(0, 0, 0, 0))); + background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%); + background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%); + background-image: linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%); + -moz-background-size: 100% 1.5em; + -webkit-background-size: 100% 1.5em; + -o-background-size: 100% 1.5em; + background-size: 100% 1.5em; + background-position: left top; } + +.columns { + background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(0%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0))); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); + background-image: linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); + background-position: left top; } + +.combined { + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(5%, rgba(0, 0, 0, 0.5)), color-stop(5%, rgba(0, 0, 0, 0))), -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(0%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0))); + background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -moz-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); + background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -o-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); + background-image: linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); + -moz-background-size: 100% 1.5em, auto; + -webkit-background-size: 100% 1.5em, auto; + -o-background-size: 100% 1.5em, auto; + background-size: 100% 1.5em, auto; + background-position: left top; } diff --git a/test/fixtures/stylesheets/compass/sass/grid_background.scss b/test/fixtures/stylesheets/compass/sass/grid_background.scss new file mode 100644 index 00000000..25986868 --- /dev/null +++ b/test/fixtures/stylesheets/compass/sass/grid_background.scss @@ -0,0 +1,13 @@ +@import "compass/layout/grid-background"; + +.baseline { + @include baseline-grid-background; +} + +.columns { + @include column-grid-background; +} + +.combined { + @include grid-background; +} From bc4e3eeb44a2cd0f151776eaab31625e3f84adb3 Mon Sep 17 00:00:00 2001 From: Eric Meyer Date: Tue, 12 Apr 2011 15:13:42 -0600 Subject: [PATCH 156/223] vertical rhythm function for calculating rhythms without returning a property --- Gemfile.lock | 2 +- .../compass/typography/_vertical_rhythm.scss | 47 +++++++++++-------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 72a7ccab..120a1b12 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.6.7c5f831) + compass (0.11.beta.6.e66c822) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss b/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss index af66dcbc..636ae77e 100644 --- a/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss +++ b/frameworks/compass/stylesheets/compass/typography/_vertical_rhythm.scss @@ -25,16 +25,16 @@ $base-half-leader: $base-leader / 2; @mixin establish-baseline($font-size: $base-font-size) { body { font-size: $font-size / $ie-font-ratio; - @include adjust-leading-to(1, $font-size); + @include adjust-leading-to(1, $font-size); } html>body { - font-size: $font-size; - } + font-size: $font-size; + } } // Show a background image that can be used to debug your alignments. @mixin debug-vertical-alignment($img: 'underline.png') { - background: url($img); + background: url($img); } // Adjust a block to have a different font size and leading to maintain the rhythm. @@ -44,37 +44,46 @@ $base-half-leader: $base-leader / 2; // Use $from_size to adjust from a non-base font-size. @mixin adjust-font-size-to($to-size, $lines: ceil($to-size / $base-line-height), $from-size: $base-font-size) { font-size: 1em * $to-size / $from-size; - @include adjust-leading-to($lines, $to-size); + @include adjust-leading-to($lines, $to-size); } @mixin adjust-leading-to($lines, $font-size: $base-font-size) { - line-height: 1em * $lines * $base-line-height / $font-size; + line-height: 1em * $lines * $base-line-height / $font-size; +} + +// Calculate rhythm units +@function rhythm( + $lines: 1, + $font-size: $base-font-size +) { + $rhythm: 1em * $lines * $base-line-height / $font-size; + @return $rhythm; } // Apply leading whitespace @mixin leader($lines: 1, $font-size: $base-font-size, $property: margin) { - #{$property}-top: 1em * $lines * $base-line-height / $font-size; + #{$property}-top: rhythm($lines, $font-size); } @mixin padding-leader($lines: 1, $font-size: $base-font-size) { - @include leader($lines, $font-size, padding); + @include leader($lines, $font-size, padding); } @mixin margin-leader($lines: 1, $font-size: $base-font-size) { - @include leader($lines, $font-size, margin); + @include leader($lines, $font-size, margin); } // Apply trailing whitespace @mixin trailer($lines: 1, $font-size: $base-font-size, $property: margin) { - #{$property}-bottom: 1em * $lines * $base-line-height / $font-size; + #{$property}-bottom: rhythm($lines, $font-size); } @mixin padding-trailer($lines: 1, $font-size: $base-font-size) { - @include trailer($lines, $font-size, padding); + @include trailer($lines, $font-size, padding); } @mixin margin-trailer($lines: 1, $font-size: $base-font-size) { - @include trailer($lines, $font-size, margin); + @include trailer($lines, $font-size, margin); } // Whitespace application shortcut @@ -90,9 +99,9 @@ $base-half-leader: $base-leader / 2; @mixin apply-side-rhythm-border($side, $width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { border-#{$side}: { style: $border-style; - width: 1em * $width / $font-size; + width: 1em * $width / $font-size; }; - padding-#{$side}: 1em / $font-size * ($lines * $base-line-height - $width); + padding-#{$side}: 1em / $font-size * ($lines * $base-line-height - $width); } // Aplly rhythm borders equally to all sides @@ -100,25 +109,25 @@ $base-half-leader: $base-leader / 2; border: { style: $border-style; width: 1em * $width / $font-size; }; - padding: 1em / $font-size * ($lines * $base-line-height - $width); + padding: 1em / $font-size * ($lines * $base-line-height - $width); } // Apply a leading rhythm border @mixin leading-border($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { - @include apply-side-rhythm-border(top, $width, $lines, $font-size, $border-style); + @include apply-side-rhythm-border(top, $width, $lines, $font-size, $border-style); } // Apply a trailing rhythm border @mixin trailing-border($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { - @include apply-side-rhythm-border(bottom, $width, $lines, $font-size, $border-style); + @include apply-side-rhythm-border(bottom, $width, $lines, $font-size, $border-style); } // Apply both leading and trailing rhythm borders @mixin horizontal-borders($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { @include leading-border($width, $lines, $font-size, $border-style); - @include trailing-border($width, $lines, $font-size, $border-style); + @include trailing-border($width, $lines, $font-size, $border-style); } @mixin h-borders($width: 1px, $lines: 1, $font-size: $base-font-size, $border-style: $default-rhythm-border-style) { - @include horizontal-borders($width, $lines, $font-size, $border-style); + @include horizontal-borders($width, $lines, $font-size, $border-style); } From d192c648899f3fb7975c350f4ab03d329af5af93 Mon Sep 17 00:00:00 2001 From: Eric Meyer Date: Tue, 12 Apr 2011 15:16:08 -0600 Subject: [PATCH 157/223] use parens instead of quotes to pass complex argument --- Gemfile.lock | 2 +- .../compass/stylesheets/compass/layout/_grid-background.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 120a1b12..0dc7c833 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.6.e66c822) + compass (0.11.beta.6.bc4e3ee) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/frameworks/compass/stylesheets/compass/layout/_grid-background.scss b/frameworks/compass/stylesheets/compass/layout/_grid-background.scss index 3e46da83..43677ac5 100644 --- a/frameworks/compass/stylesheets/compass/layout/_grid-background.scss +++ b/frameworks/compass/stylesheets/compass/layout/_grid-background.scss @@ -159,6 +159,6 @@ $grid-background-force-fluid : false !default; get-baseline-gradient($baseline-color), get-column-gradient($total,$column,$gutter,$offset,$column-color,$gutter-color, $force-fluid) ); - @include background-size("100% #{$baseline}, auto"); + @include background-size((100% #{$baseline}, auto)); background-position: left top; } From 10dd6c1c63e635c7796b16c6302fc9d2c39b1a16 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Wed, 13 Apr 2011 16:46:01 -0400 Subject: [PATCH 158/223] updated docs to be correct for magic selectors --- .../content/help/tutorials/spriting.markdown | 46 ++++++++++++++----- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/doc-src/content/help/tutorials/spriting.markdown b/doc-src/content/help/tutorials/spriting.markdown index 193f6c52..d758917f 100644 --- a/doc-src/content/help/tutorials/spriting.markdown +++ b/doc-src/content/help/tutorials/spriting.markdown @@ -107,32 +107,54 @@ the section on [performance considerations](#performance) for more details. If you want to add selectors for your sprites, it's easy todo by adding `_active` `_target` or `_hover` to the file name, In the example below we have a sprite directory that looks like: -* `link/icon.png` -* `link/icon_hover.png` -* `link/icon_active.png` -* `link/icon_target.png` +* `selectors/ten-by-ten.png` +* `selectors/ten-by-ten_hover.png` +* `selectors/ten-by-ten_active.png` +* `selectors/ten-by-ten_target.png` Now in our sass file we add: - @import "link/*.png"; + @import "selectors/*.png"; - @include link_sprite(icon); + a { + @include selectors-sprite(ten-by-ten) + } And your stylesheet will compile to: - .link-icon { + .selectors-sprite, a { + background: url('/selectors-edfef809e2.png') no-repeat; + } + + a { background-position: 0 0; } - - .link-icon:hover, .link-icon_hover, .link-icon-hover { + a:hover, a.ten-by-ten_hover, a.ten-by-ten-hover { background-position: 0 -20px; } - - .link-icon:target, .link-icon_target, .link-icon-target { + a:target, a.ten-by-ten_target, a.ten-by-ten-target { background-position: 0 -30px; } + a:active, a.ten-by-ten_active, a.ten-by-ten-active { + background-position: 0 -10px; + } - .link-icon:active, .link-icon_active, .link-icon-active { +Alternatively you can use the `@include all-selectors-sprites;` after the import and get the following output: + + .selectors-sprite, .selectors-ten-by-ten { + background: url('/selectors-edfef809e2.png') no-repeat; + } + + .selectors-ten-by-ten { + background-position: 0 0; + } + .selectors-ten-by-ten:hover, .selectors-ten-by-ten.ten-by-ten_hover, .selectors-ten-by-ten.ten-by-ten-hover { + background-position: 0 -20px; + } + .selectors-ten-by-ten:target, .selectors-ten-by-ten.ten-by-ten_target, .selectors-ten-by-ten.ten-by-ten-target { + background-position: 0 -30px; + } + .selectors-ten-by-ten:active, .selectors-ten-by-ten.ten-by-ten_active, .selectors-ten-by-ten.ten-by-ten-active { background-position: 0 -10px; } From 72434be1375ecce208eee90796f3b99a4ad40485 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 15 Apr 2011 23:16:43 -0700 Subject: [PATCH 159/223] Webkit now supports the css3 official gradient syntax. --- doc-src/content/CHANGELOG.markdown | 6 ++ .../compass/stylesheets/compass/_support.scss | 18 +++-- .../stylesheets/compass/css3/_images.scss | 72 ++++++++++--------- .../functions/cross_browser_support.rb | 2 +- .../functions/gradient_support.rb | 10 ++- .../stylesheets/compass/css/gradients.css | 63 +++++++++++++++- .../compass/css/grid_background.css | 3 + test/fixtures/stylesheets/compass/css/pie.css | 1 + 8 files changed, 130 insertions(+), 45 deletions(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 2ccb2710..d2b9b8b8 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -14,6 +14,12 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/ The Documentation for the [latest preview release](http://beta.compass-style.org/) +0.11.beta.7 (UNRELEASED) +------------------------ +* Added support for the new webkit gradient syntax that matches the css3 specification. + Support for older webkit browsers remains enabled at this time. + To disable it, set `$support-for-original-webkit-gradients` to false. + 0.11.beta.6 (04/10/2011) ------------------------ * Added support for degree-based linear and radial gradients (not yet supported for SVG gradients) diff --git a/frameworks/compass/stylesheets/compass/_support.scss b/frameworks/compass/stylesheets/compass/_support.scss index b6cb2f19..c2a51688 100644 --- a/frameworks/compass/stylesheets/compass/_support.scss +++ b/frameworks/compass/stylesheets/compass/_support.scss @@ -17,18 +17,22 @@ $legacy-support-for-ie8: $legacy-support-for-ie !default; $legacy-support-for-ie: $legacy-support-for-ie6 or $legacy-support-for-ie7 or $legacy-support-for-ie8; // Support for mozilla in experimental css3 properties. -$experimental-support-for-mozilla : true !default; +$experimental-support-for-mozilla : true !default; // Support for webkit in experimental css3 properties. -$experimental-support-for-webkit : true !default; +$experimental-support-for-webkit : true !default; +// Support for webkit in experimental css3 properties. +$experimental-support-for-webkit : true !default; +// Support for webkit's original (non-standard) gradient syntax. +$support-for-original-webkit-gradients : true !default; // Support for opera in experimental css3 properties. -$experimental-support-for-opera : true !default; +$experimental-support-for-opera : true !default; // Support for microsoft in experimental css3 properties. -$experimental-support-for-microsoft : true !default; +$experimental-support-for-microsoft : true !default; // Support for khtml in experimental css3 properties. -$experimental-support-for-khtml : true !default; +$experimental-support-for-khtml : true !default; // Support for svg in experimental css3 properties. // Setting this to true might add significant size to your // generated stylesheets. -$experimental-support-for-svg : false !default; +$experimental-support-for-svg : false !default; // Support for CSS PIE in experimental css3 properties. -$experimental-support-for-pie : false !default; +$experimental-support-for-pie : false !default; diff --git a/frameworks/compass/stylesheets/compass/css3/_images.scss b/frameworks/compass/stylesheets/compass/css3/_images.scss index 79f9ba02..d292521b 100644 --- a/frameworks/compass/stylesheets/compass/css3/_images.scss +++ b/frameworks/compass/stylesheets/compass/css3/_images.scss @@ -16,12 +16,14 @@ $backgrounds: compact($background-1, $background-2, $background-3, $background-4, $background-5, $background-6, $background-7, $background-8, $background-9, $background-10); $mult-bgs: -compass-list-size($backgrounds) > 1; - @if $experimental-support-for-svg and prefixed(-svg, $backgrounds) { background: -svg($backgrounds); } - @if $experimental-support-for-webkit and prefixed(-webkit, $backgrounds) { background: -webkit($backgrounds); } - @if $experimental-support-for-mozilla and prefixed(-moz, $backgrounds) { background: -moz($backgrounds); } - @if $experimental-support-for-opera and prefixed(-o, $backgrounds) { background: -o($backgrounds); } - @if $experimental-support-for-pie and (prefixed(-pie, $backgrounds) or $mult-bgs) { -pie-background: -pie($backgrounds); } - background: $backgrounds; + $add-pie-bg: prefixed(-pie, $backgrounds) or $mult-bgs; + @if $experimental-support-for-svg and prefixed(-svg, $backgrounds) { background: -svg($backgrounds); } + @if $support-for-original-webkit-gradients and prefixed(-owg, $backgrounds) { background: -owg($backgrounds); } + @if $experimental-support-for-webkit and prefixed(-webkit, $backgrounds) { background: -webkit($backgrounds); } + @if $experimental-support-for-mozilla and prefixed(-moz, $backgrounds) { background: -moz($backgrounds); } + @if $experimental-support-for-opera and prefixed(-o, $backgrounds) { background: -o($backgrounds); } + @if $experimental-support-for-pie and $add-pie-bg { -pie-background: -pie($backgrounds); } + background: $backgrounds ; } @mixin background-with-css2-fallback( @@ -60,13 +62,15 @@ $image-10: false ) { $images: compact($image-1, $image-2, $image-3, $image-4, $image-5, $image-6, $image-7, $image-8, $image-9, $image-10); + $add-pie-bg: prefixed(-pie, $images) or -compass-list-size($images) > 1; - @if $experimental-support-for-svg and prefixed(-svg, $images) { background-image: -svg($images); background-size: 100%; } - @if $experimental-support-for-webkit and prefixed(-webkit, $images) { background-image: -webkit($images); } - @if $experimental-support-for-mozilla and prefixed(-moz, $images) { background-image: -moz($images); } - @if $experimental-support-for-opera and prefixed(-o, $images) { background-image: -o($images); } - @if $experimental-support-for-pie and (prefixed(-pie, $images) or -compass-list-size($images) > 1) { @warn "PIE does not support background-image. Use @include background(#{$images}) instead." } - background-image: $images ; + @if $experimental-support-for-svg and prefixed(-svg, $images) { background-image: -svg($images); background-size: 100%; } + @if $support-for-original-webkit-gradients and prefixed(-owg, $images) { background-image: -owg($images); } + @if $experimental-support-for-webkit and prefixed(-webkit, $images) { background-image: -webkit($images); } + @if $experimental-support-for-mozilla and prefixed(-moz, $images) { background-image: -moz($images); } + @if $experimental-support-for-opera and prefixed(-o, $images) { background-image: -o($images); } + @if $experimental-support-for-pie and $add-pie-bg { @warn "PIE does not support background-image. Use @include background(#{$images}) instead." } + background-image: $images ; } // Emit a IE-Specific filters that renders a simple linear gradient. @@ -87,38 +91,42 @@ // Border image property support for vendor prefixing properties and values. @mixin border-image($value) { - @if $experimental-support-for-mozilla { -moz-border-image: -moz(-compass-list($value)); } - @if $experimental-support-for-webkit { -webkit-border-image: -webkit(-compass-list($value)); } - @if $experimental-support-for-opera { -o-border-image: -o(-compass-list($value)); } - @if $experimental-support-for-svg { border-image: -svg(-compass-list($value)); } - border-image: $value; + @if $experimental-support-for-mozilla { -moz-border-image: -moz(-compass-list($value)); } + @if $support-for-original-webkit-gradients { -webkit-border-image: -owg(-compass-list($value)); } + @if $experimental-support-for-webkit { -webkit-border-image: -webkit(-compass-list($value)); } + @if $experimental-support-for-opera { -o-border-image: -o(-compass-list($value)); } + @if $experimental-support-for-svg { border-image: -svg(-compass-list($value)); } + border-image: $value; } // List style image property support for vendor prefixing within values. @mixin list-style-image($image) { - @if $experimental-support-for-mozilla and prefixed(-moz, $image) { list-style-image: -moz($image); } - @if $experimental-support-for-webkit and prefixed(-webkit, $image) { list-style-image: -webkit($image); } - @if $experimental-support-for-opera and prefixed(-o, $image) { list-style-image: -o($image); } - @if $experimental-support-for-svg and prefixed(-svg, $image) { list-style-image: -svg($image); } - list-style-image: $image ; + @if $experimental-support-for-mozilla and prefixed(-moz, $image) { list-style-image: -moz($image); } + @if $support-for-original-webkit-gradients and prefixed(-owg, $image) { list-style-image: -owg($image); } + @if $experimental-support-for-webkit and prefixed(-webkit, $image) { list-style-image: -webkit($image); } + @if $experimental-support-for-opera and prefixed(-o, $image) { list-style-image: -o($image); } + @if $experimental-support-for-svg and prefixed(-svg, $image) { list-style-image: -svg($image); } + list-style-image: $image ; } // List style property support for vendor prefixing within values. @mixin list-style($value) { $value: -compass-list($value); - @if $experimental-support-for-mozilla and prefixed(-moz, $value) { list-style-image: -moz($value); } - @if $experimental-support-for-webkit and prefixed(-webkit, $value) { list-style-image: -webkit($value); } - @if $experimental-support-for-opera and prefixed(-o, $value) { list-style-image: -o($value); } - @if $experimental-support-for-svg and prefixed(-svg, $value) { list-style-image: -svg($value); } - list-style-image: $value ; + @if $experimental-support-for-mozilla and prefixed(-moz, $value) { list-style-image: -moz($value); } + @if $support-for-original-webkit-gradients and prefixed(-owg, $value) { list-style-image: -owg($value); } + @if $experimental-support-for-webkit and prefixed(-webkit, $value) { list-style-image: -webkit($value); } + @if $experimental-support-for-opera and prefixed(-o, $value) { list-style-image: -o($value); } + @if $experimental-support-for-svg and prefixed(-svg, $value) { list-style-image: -svg($value); } + list-style-image: $value ; } // content property support for vendor prefixing within values. @mixin content($value) { $value: -compass-list($value); - @if $experimental-support-for-mozilla and prefixed(-moz, $value) { content: -moz($value); } - @if $experimental-support-for-webkit and prefixed(-webkit, $value) { content: -webkit($value); } - @if $experimental-support-for-opera and prefixed(-o, $value) { content: -o($value); } - @if $experimental-support-for-svg and prefixed(-svg, $value) { content: -svg($value); } - content: $value ; + @if $experimental-support-for-mozilla and prefixed(-moz, $value) { content: -moz($value); } + @if $support-for-original-webkit-gradients and prefixed(-owg, $value) { content: -owg($value); } + @if $experimental-support-for-webkit and prefixed(-webkit, $value) { content: -webkit($value); } + @if $experimental-support-for-opera and prefixed(-o, $value) { content: -o($value); } + @if $experimental-support-for-svg and prefixed(-svg, $value) { content: -svg($value); } + content: $value ; } diff --git a/lib/compass/sass_extensions/functions/cross_browser_support.rb b/lib/compass/sass_extensions/functions/cross_browser_support.rb index beb2356d..ae82761f 100644 --- a/lib/compass/sass_extensions/functions/cross_browser_support.rb +++ b/lib/compass/sass_extensions/functions/cross_browser_support.rb @@ -33,7 +33,7 @@ module Compass::SassExtensions::Functions::CrossBrowserSupport Sass::Script::Bool.new(needed) end - %w(webkit moz o ms svg pie css2).each do |prefix| + %w(webkit moz o ms svg pie css2 owg).each do |prefix| class_eval <<-RUBY, __FILE__, __LINE__ + 1 # Syntactic sugar to apply the given prefix # -moz($arg) is the same as calling prefix(-moz, $arg) diff --git a/lib/compass/sass_extensions/functions/gradient_support.rb b/lib/compass/sass_extensions/functions/gradient_support.rb index 2c2bc207..6a4e3f59 100644 --- a/lib/compass/sass_extensions/functions/gradient_support.rb +++ b/lib/compass/sass_extensions/functions/gradient_support.rb @@ -1,6 +1,6 @@ module Compass::SassExtensions::Functions::GradientSupport - GRADIENT_ASPECTS = %w(webkit moz svg pie css2 o).freeze + GRADIENT_ASPECTS = %w(webkit moz svg pie css2 o owg).freeze class ColorStop < Sass::Script::Literal attr_accessor :color, :stop @@ -72,6 +72,9 @@ module Compass::SassExtensions::Functions::GradientSupport true end def to_webkit(options = self.options) + Sass::Script::String.new("-webkit-#{to_s(options)}") + end + def to_owg(options = self.options) args = [ grad_point(position_or_angle || _center_position), Sass::Script::String.new("0"), @@ -81,7 +84,6 @@ module Compass::SassExtensions::Functions::GradientSupport ] args.each {|a| a.options = options} Sass::Script::String.new("-webkit-gradient(radial, #{args.join(', ')})") - end def to_moz(options = self.options) Sass::Script::String.new("-moz-#{to_s(options)}") @@ -139,6 +141,10 @@ module Compass::SassExtensions::Functions::GradientSupport true end def to_webkit(options = self.options) + Sass::Script::String.new("-webkit-#{to_s(options)}") + end + # Output the original webkit gradient syntax + def to_owg(options = self.options) args = [] args << grad_point(position_or_angle || Sass::Script::String.new("top")) args << grad_point(opposite_position(position_or_angle || Sass::Script::String.new("top"))) diff --git a/test/fixtures/stylesheets/compass/css/gradients.css b/test/fixtures/stylesheets/compass/css/gradients.css index 2fd5b247..8781733b 100644 --- a/test/fixtures/stylesheets/compass/css/gradients.css +++ b/test/fixtures/stylesheets/compass/css/gradients.css @@ -4,6 +4,7 @@ .bg-shortcut-linear-gradient { background: white url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background: white -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background: white -webkit-linear-gradient(top left, #dddddd, #aaaaaa); background: white -moz-linear-gradient(top left, #dddddd, #aaaaaa); background: white -o-linear-gradient(top left, #dddddd, #aaaaaa); background: white linear-gradient(top left, #dddddd, #aaaaaa); } @@ -11,6 +12,7 @@ .bg-shortcut-radial-gradient { background: white url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background: white -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background: white -webkit-radial-gradient(center center, #dddddd, #aaaaaa 100px); background: white -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); background: white -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background: white radial-gradient(center center, #dddddd, #aaaaaa 100px); } @@ -19,6 +21,7 @@ background: #ffcc00; background: url('/images/4x6.png?busted=true'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'), #ffcc00; background: url('/images/4x6.png?busted=true'), -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)), -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)), #ffcc00; + background: url('/images/4x6.png?busted=true'), -webkit-linear-gradient(top left, #dddddd, #aaaaaa), -webkit-radial-gradient(center center, #dddddd, #aaaaaa 100px), #ffcc00; background: url('/images/4x6.png?busted=true'), -moz-linear-gradient(top left, #dddddd, #aaaaaa), -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px), #ffcc00; background: url('/images/4x6.png?busted=true'), -o-linear-gradient(top left, #dddddd, #aaaaaa), -o-radial-gradient(center center, #dddddd, #aaaaaa 100px), #ffcc00; background: url('/images/4x6.png?busted=true'), linear-gradient(top left, #dddddd, #aaaaaa), radial-gradient(center center, #dddddd, #aaaaaa 100px), #ffcc00; } @@ -30,6 +33,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(top left, #dddddd, #aaaaaa); background-image: -moz-linear-gradient(top left, #dddddd, #aaaaaa); background-image: -o-linear-gradient(top left, #dddddd, #aaaaaa); background-image: linear-gradient(top left, #dddddd, #aaaaaa); } @@ -38,18 +42,21 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } .bg-linear-gradient-with-angle { background-image: -webkit-gradient(linear, -45deg, -45deg, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(-45deg, #dddddd, #aaaaaa); background-image: -moz-linear-gradient(-45deg, #dddddd, #aaaaaa); background-image: -o-linear-gradient(-45deg, #dddddd, #aaaaaa); background-image: linear-gradient(-45deg, #dddddd, #aaaaaa); } .bg-radial-gradient-with-angle-and-shape { background-image: -webkit-gradient(radial, 45deg, 0, 45deg, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(45deg, ellipse cover, #dddddd, #aaaaaa 100px); background-image: -moz-radial-gradient(45deg, ellipse cover, #dddddd, #aaaaaa 100px); background-image: -o-radial-gradient(45deg, ellipse cover, #dddddd, #aaaaaa 100px); background-image: radial-gradient(45deg, ellipse cover, #dddddd, #aaaaaa 100px); } @@ -58,6 +65,7 @@ background-image: url('/images/4x6.png?busted=true'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: url('/images/4x6.png?busted=true'), -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)), -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: url('/images/4x6.png?busted=true'), -webkit-linear-gradient(top left, #dddddd, #aaaaaa), -webkit-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: url('/images/4x6.png?busted=true'), -moz-linear-gradient(top left, #dddddd, #aaaaaa), -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: url('/images/4x6.png?busted=true'), -o-linear-gradient(top left, #dddddd, #aaaaaa), -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: url('/images/4x6.png?busted=true'), linear-gradient(top left, #dddddd, #aaaaaa), radial-gradient(center center, #dddddd, #aaaaaa 100px); } @@ -65,6 +73,7 @@ .border-image-gradient { -moz-border-image: -moz-radial-gradient(#00ff00, #ff0000 100px) 100 stretch; -webkit-border-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #00ff00), color-stop(100%, #ff0000)) 100 stretch; + -webkit-border-image: -webkit-radial-gradient(#00ff00, #ff0000 100px) 100 stretch; -o-border-image: -o-radial-gradient(#00ff00, #ff0000 100px) 100 stretch; border-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjMDBmZjAwIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjZmYwMDAwIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g') 100 stretch; border-image: radial-gradient(#00ff00, #ff0000 100px) 100 stretch; } @@ -78,6 +87,7 @@ .direct-list-image-with-gradient { list-style-image: -moz-radial-gradient(#00ff00, #ff0000 10px); list-style-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 10, color-stop(0%, #00ff00), color-stop(100%, #ff0000)); + list-style-image: -webkit-radial-gradient(#00ff00, #ff0000 10px); list-style-image: -o-radial-gradient(#00ff00, #ff0000 10px); list-style-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAiPjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiMwMGZmMDAiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZjAwMDAiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); list-style-image: radial-gradient(#00ff00, #ff0000 10px); } @@ -85,6 +95,7 @@ .shorthand-list-image-with-gradient { list-style-image: outside -moz-radial-gradient(#00ff00, #ff0000 10px); list-style-image: outside -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 10, color-stop(0%, #00ff00), color-stop(100%, #ff0000)); + list-style-image: outside -webkit-radial-gradient(#00ff00, #ff0000 10px); list-style-image: outside -o-radial-gradient(#00ff00, #ff0000 10px); list-style-image: outside url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAiPjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiMwMGZmMDAiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZjAwMDAiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); list-style-image: outside radial-gradient(#00ff00, #ff0000 10px); } @@ -95,156 +106,182 @@ .content-with-gradient { content: -moz-radial-gradient(#00ff00, #ff0000 10px); content: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 10, color-stop(0%, #00ff00), color-stop(100%, #ff0000)); + content: -webkit-radial-gradient(#00ff00, #ff0000 10px); content: -o-radial-gradient(#00ff00, #ff0000 10px); content: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAiPjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiMwMGZmMDAiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZjAwMDAiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); content: radial-gradient(#00ff00, #ff0000 10px); } .bg-linear-gradient-no-position { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(#dddddd, #aaaaaa); background-image: -moz-linear-gradient(#dddddd, #aaaaaa); background-image: -o-linear-gradient(#dddddd, #aaaaaa); background-image: linear-gradient(#dddddd, #aaaaaa); } .bg-radial-gradient-no-position { background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(#dddddd, #aaaaaa 100px); background-image: -moz-radial-gradient(#dddddd, #aaaaaa 100px); background-image: -o-radial-gradient(#dddddd, #aaaaaa 100px); background-image: radial-gradient(#dddddd, #aaaaaa 100px); } .image-fallback { - background-image: image(-webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)), url('/images/4x6.png?busted=true'), #cc0000); + background-image: image(radial-gradient(#dddddd, #aaaaaa 100px), url('/images/4x6.png?busted=true'), #cc0000); + background-image: image(-webkit-radial-gradient(#dddddd, #aaaaaa 100px), url('/images/4x6.png?busted=true'), #cc0000); background-image: image(-moz-radial-gradient(#dddddd, #aaaaaa 100px), url('/images/4x6.png?busted=true'), #cc0000); background-image: image(-o-radial-gradient(#dddddd, #aaaaaa 100px), url('/images/4x6.png?busted=true'), #cc0000); background-image: image(radial-gradient(#dddddd, #aaaaaa 100px), url('/images/4x6.png?busted=true'), #cc0000); } .cross-fade { - background-image: cross-fade(-webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)), url('/images/4x6.png?busted=true')); + background-image: cross-fade(radial-gradient(#dddddd, #aaaaaa 100px), url('/images/4x6.png?busted=true')); + background-image: cross-fade(-webkit-radial-gradient(#dddddd, #aaaaaa 100px), url('/images/4x6.png?busted=true')); background-image: cross-fade(-moz-radial-gradient(#dddddd, #aaaaaa 100px), url('/images/4x6.png?busted=true')); background-image: cross-fade(-o-radial-gradient(#dddddd, #aaaaaa 100px), url('/images/4x6.png?busted=true')); background-image: cross-fade(radial-gradient(#dddddd, #aaaaaa 100px), url('/images/4x6.png?busted=true')); } .unknown-function-wrapper { - background: foo(-webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa))); + background: foo(radial-gradient(#dddddd, #aaaaaa 100px)); + background: foo(-webkit-radial-gradient(#dddddd, #aaaaaa 100px)); background: foo(-moz-radial-gradient(#dddddd, #aaaaaa 100px)); background: foo(-o-radial-gradient(#dddddd, #aaaaaa 100px)); background: foo(radial-gradient(#dddddd, #aaaaaa 100px)); } .linear-1 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(top, #dddddd, #aaaaaa); background-image: -moz-linear-gradient(top, #dddddd, #aaaaaa); background-image: -o-linear-gradient(top, #dddddd, #aaaaaa); background-image: linear-gradient(top, #dddddd, #aaaaaa); } .linear-2 { background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(left, #dddddd, #aaaaaa); background-image: -moz-linear-gradient(left, #dddddd, #aaaaaa); background-image: -o-linear-gradient(left, #dddddd, #aaaaaa); background-image: linear-gradient(left, #dddddd, #aaaaaa); } .linear-3 { background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(top left, #dddddd, #aaaaaa); background-image: -moz-linear-gradient(top left, #dddddd, #aaaaaa); background-image: -o-linear-gradient(top left, #dddddd, #aaaaaa); background-image: linear-gradient(top left, #dddddd, #aaaaaa); } .linear-4 { background-image: -webkit-gradient(linear, 100% 0%, 0% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(top right, #dddddd, #aaaaaa); background-image: -moz-linear-gradient(top right, #dddddd, #aaaaaa); background-image: -o-linear-gradient(top right, #dddddd, #aaaaaa); background-image: linear-gradient(top right, #dddddd, #aaaaaa); } .linear-5 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(50%, #cccccc), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(top, #dddddd, #cccccc, #aaaaaa); background-image: -moz-linear-gradient(top, #dddddd, #cccccc, #aaaaaa); background-image: -o-linear-gradient(top, #dddddd, #cccccc, #aaaaaa); background-image: linear-gradient(top, #dddddd, #cccccc, #aaaaaa); } .linear-6 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(20%, #cccccc), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(top, #dddddd, #cccccc 20%, #aaaaaa); background-image: -moz-linear-gradient(top, #dddddd, #cccccc 20%, #aaaaaa); background-image: -o-linear-gradient(top, #dddddd, #cccccc 20%, #aaaaaa); background-image: linear-gradient(top, #dddddd, #cccccc 20%, #aaaaaa); } .linear-7 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(20%, #cccccc), color-stop(60%, #eeeeee), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(top, #dddddd, #cccccc 20%, #eeeeee, #aaaaaa); background-image: -moz-linear-gradient(top, #dddddd, #cccccc 20%, #eeeeee, #aaaaaa); background-image: -o-linear-gradient(top, #dddddd, #cccccc 20%, #eeeeee, #aaaaaa); background-image: linear-gradient(top, #dddddd, #cccccc 20%, #eeeeee, #aaaaaa); } .linear-8 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(80%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(top, #dddddd 80%, #aaaaaa); background-image: -moz-linear-gradient(top, #dddddd 80%, #aaaaaa); background-image: -o-linear-gradient(top, #dddddd 80%, #aaaaaa); background-image: linear-gradient(top, #dddddd 80%, #aaaaaa); } .linear-9 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(20%, #aaaaaa)); + background-image: -webkit-linear-gradient(top, #dddddd, #aaaaaa 20%); background-image: -moz-linear-gradient(top, #dddddd, #aaaaaa 20%); background-image: -o-linear-gradient(top, #dddddd, #aaaaaa 20%); background-image: linear-gradient(top, #dddddd, #aaaaaa 20%); } .linear-10 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #dddddd), color-stop(50%, #aaaaaa)); + background-image: -webkit-linear-gradient(top, #dddddd 40%, #aaaaaa 50%); background-image: -moz-linear-gradient(top, #dddddd 40%, #aaaaaa 50%); background-image: -o-linear-gradient(top, #dddddd 40%, #aaaaaa 50%); background-image: linear-gradient(top, #dddddd 40%, #aaaaaa 50%); } .linear-11 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #dddddd), color-stop(45%, #000000), color-stop(50%, #aaaaaa)); + background-image: -webkit-linear-gradient(top, #dddddd 40%, #000000, #aaaaaa 50%); background-image: -moz-linear-gradient(top, #dddddd 40%, #000000, #aaaaaa 50%); background-image: -o-linear-gradient(top, #dddddd 40%, #000000, #aaaaaa 50%); background-image: linear-gradient(top, #dddddd 40%, #000000, #aaaaaa 50%); } .linear-12 { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(33%, #0000ff), color-stop(67%, #000000)); + background-image: -webkit-linear-gradient(top, #ffffff, #0000ff 33%, #000000 67%); background-image: -moz-linear-gradient(top, #ffffff, #0000ff 33%, #000000 67%); background-image: -o-linear-gradient(top, #ffffff, #0000ff 33%, #000000 67%); background-image: linear-gradient(top, #ffffff, #0000ff 33%, #000000 67%); } .radial-1 { background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } .radial-2 { background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } .radial-3 { background-image: -webkit-gradient(radial, 50% 0%, 0, 50% 0%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(top center, #dddddd, #aaaaaa 100px); background-image: -moz-radial-gradient(top center, #dddddd, #aaaaaa 100px); background-image: -o-radial-gradient(top center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(top center, #dddddd, #aaaaaa 100px); } .radial-4 { background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } .radial-5 { background-image: -webkit-gradient(radial, 50% 0%, 0, 50% 0%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(top center, #dddddd, #aaaaaa 100px); background-image: -moz-radial-gradient(top center, #dddddd, #aaaaaa 100px); background-image: -o-radial-gradient(top center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(top center, #dddddd, #aaaaaa 100px); } .radial-6 { background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 50, color-stop(40%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(center center, #dddddd 20px, #aaaaaa 50px); background-image: -moz-radial-gradient(center center, #dddddd 20px, #aaaaaa 50px); background-image: -o-radial-gradient(center center, #dddddd 20px, #aaaaaa 50px); background-image: radial-gradient(center center, #dddddd 20px, #aaaaaa 50px); } .radial-7 { background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 50, color-stop(20%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(center center, #dddddd 20%, #aaaaaa 50px); background-image: -moz-radial-gradient(center center, #dddddd 20%, #aaaaaa 50px); background-image: -o-radial-gradient(center center, #dddddd 20%, #aaaaaa 50px); background-image: radial-gradient(center center, #dddddd 20%, #aaaaaa 50px); } .alpha-linear { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, rgba(255, 255, 255, 0)), color-stop(45%, rgba(255, 127, 127, 0.5)), color-stop(50%, #ffffff)); + background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 40%, rgba(255, 127, 127, 0.5), #ffffff 50%); background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0) 40%, rgba(255, 127, 127, 0.5), #ffffff 50%); background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0) 40%, rgba(255, 127, 127, 0.5), #ffffff 50%); background-image: linear-gradient(top, rgba(255, 255, 255, 0) 40%, rgba(255, 127, 127, 0.5), #ffffff 50%); } @@ -253,6 +290,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(top, #dddddd, #aaaaaa); background-image: -moz-linear-gradient(top, #dddddd, #aaaaaa); background-image: -o-linear-gradient(top, #dddddd, #aaaaaa); background-image: linear-gradient(top, #dddddd, #aaaaaa); } @@ -261,6 +299,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSI1MCUiIHgyPSIxMDAlIiB5Mj0iNTAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(left, #dddddd, #aaaaaa); background-image: -moz-linear-gradient(left, #dddddd, #aaaaaa); background-image: -o-linear-gradient(left, #dddddd, #aaaaaa); background-image: linear-gradient(left, #dddddd, #aaaaaa); } @@ -269,6 +308,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(top left, #dddddd, #aaaaaa); background-image: -moz-linear-gradient(top left, #dddddd, #aaaaaa); background-image: -o-linear-gradient(top left, #dddddd, #aaaaaa); background-image: linear-gradient(top left, #dddddd, #aaaaaa); } @@ -277,6 +317,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMTAwJSIgeTE9IjAlIiB4Mj0iMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: -webkit-gradient(linear, 100% 0%, 0% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(top right, #dddddd, #aaaaaa); background-image: -moz-linear-gradient(top right, #dddddd, #aaaaaa); background-image: -o-linear-gradient(top right, #dddddd, #aaaaaa); background-image: linear-gradient(top right, #dddddd, #aaaaaa); } @@ -285,6 +326,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSI1MCUiIHN0b3AtY29sb3I9IiNjY2NjY2MiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNhYWFhYWEiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(50%, #cccccc), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(top, #dddddd, #cccccc, #aaaaaa); background-image: -moz-linear-gradient(top, #dddddd, #cccccc, #aaaaaa); background-image: -o-linear-gradient(top, #dddddd, #cccccc, #aaaaaa); background-image: linear-gradient(top, #dddddd, #cccccc, #aaaaaa); } @@ -293,6 +335,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIyMCUiIHN0b3AtY29sb3I9IiNjY2NjY2MiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNhYWFhYWEiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(20%, #cccccc), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(top, #dddddd, #cccccc 20%, #aaaaaa); background-image: -moz-linear-gradient(top, #dddddd, #cccccc 20%, #aaaaaa); background-image: -o-linear-gradient(top, #dddddd, #cccccc 20%, #aaaaaa); background-image: linear-gradient(top, #dddddd, #cccccc 20%, #aaaaaa); } @@ -301,6 +344,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIyMCUiIHN0b3AtY29sb3I9IiNjY2NjY2MiLz48c3RvcCBvZmZzZXQ9IjYwJSIgc3RvcC1jb2xvcj0iI2VlZWVlZSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(20%, #cccccc), color-stop(60%, #eeeeee), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(top, #dddddd, #cccccc 20%, #eeeeee, #aaaaaa); background-image: -moz-linear-gradient(top, #dddddd, #cccccc 20%, #eeeeee, #aaaaaa); background-image: -o-linear-gradient(top, #dddddd, #cccccc 20%, #eeeeee, #aaaaaa); background-image: linear-gradient(top, #dddddd, #cccccc 20%, #eeeeee, #aaaaaa); } @@ -309,6 +353,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjgwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(80%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-linear-gradient(top, #dddddd 80%, #aaaaaa); background-image: -moz-linear-gradient(top, #dddddd 80%, #aaaaaa); background-image: -o-linear-gradient(top, #dddddd 80%, #aaaaaa); background-image: linear-gradient(top, #dddddd 80%, #aaaaaa); } @@ -317,6 +362,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIyMCUiIHN0b3AtY29sb3I9IiNhYWFhYWEiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(20%, #aaaaaa)); + background-image: -webkit-linear-gradient(top, #dddddd, #aaaaaa 20%); background-image: -moz-linear-gradient(top, #dddddd, #aaaaaa 20%); background-image: -o-linear-gradient(top, #dddddd, #aaaaaa 20%); background-image: linear-gradient(top, #dddddd, #aaaaaa 20%); } @@ -325,6 +371,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjQwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #dddddd), color-stop(50%, #aaaaaa)); + background-image: -webkit-linear-gradient(top, #dddddd 40%, #aaaaaa 50%); background-image: -moz-linear-gradient(top, #dddddd 40%, #aaaaaa 50%); background-image: -o-linear-gradient(top, #dddddd 40%, #aaaaaa 50%); background-image: linear-gradient(top, #dddddd 40%, #aaaaaa 50%); } @@ -333,6 +380,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjQwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iNDUlIiBzdG9wLWNvbG9yPSIjMDAwMDAwIi8+PHN0b3Agb2Zmc2V0PSI1MCUiIHN0b3AtY29sb3I9IiNhYWFhYWEiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #dddddd), color-stop(45%, #000000), color-stop(50%, #aaaaaa)); + background-image: -webkit-linear-gradient(top, #dddddd 40%, #000000, #aaaaaa 50%); background-image: -moz-linear-gradient(top, #dddddd 40%, #000000, #aaaaaa 50%); background-image: -o-linear-gradient(top, #dddddd 40%, #000000, #aaaaaa 50%); background-image: linear-gradient(top, #dddddd 40%, #000000, #aaaaaa 50%); } @@ -341,6 +389,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZmZmZmZmIi8+PHN0b3Agb2Zmc2V0PSIzMyUiIHN0b3AtY29sb3I9IiMwMDAwZmYiLz48c3RvcCBvZmZzZXQ9IjY3JSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(33%, #0000ff), color-stop(67%, #000000)); + background-image: -webkit-linear-gradient(top, #ffffff, #0000ff 33%, #000000 67%); background-image: -moz-linear-gradient(top, #ffffff, #0000ff 33%, #000000 67%); background-image: -o-linear-gradient(top, #ffffff, #0000ff 33%, #000000 67%); background-image: linear-gradient(top, #ffffff, #0000ff 33%, #000000 67%); } @@ -349,6 +398,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } @@ -357,6 +407,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } @@ -365,6 +416,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjAlIiByPSIxMDAiPjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiNkZGRkZGQiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNhYWFhYWEiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); background-size: 100%; background-image: -webkit-gradient(radial, 50% 0%, 0, 50% 0%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(top center, #dddddd, #aaaaaa 100px); background-image: -moz-radial-gradient(top center, #dddddd, #aaaaaa 100px); background-image: -o-radial-gradient(top center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(top center, #dddddd, #aaaaaa 100px); } @@ -373,6 +425,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } @@ -381,6 +434,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjAlIiByPSIxMDAiPjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiNkZGRkZGQiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNhYWFhYWEiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); background-size: 100%; background-image: -webkit-gradient(radial, 50% 0%, 0, 50% 0%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(top center, #dddddd, #aaaaaa 100px); background-image: -moz-radial-gradient(top center, #dddddd, #aaaaaa 100px); background-image: -o-radial-gradient(top center, #dddddd, #aaaaaa 100px); background-image: radial-gradient(top center, #dddddd, #aaaaaa 100px); } @@ -389,6 +443,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iNTAiPjxzdG9wIG9mZnNldD0iNDAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 50, color-stop(40%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(center center, #dddddd 20px, #aaaaaa 50px); background-image: -moz-radial-gradient(center center, #dddddd 20px, #aaaaaa 50px); background-image: -o-radial-gradient(center center, #dddddd 20px, #aaaaaa 50px); background-image: radial-gradient(center center, #dddddd 20px, #aaaaaa 50px); } @@ -397,6 +452,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iNTAiPjxzdG9wIG9mZnNldD0iMjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 50, color-stop(20%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(center center, #dddddd 20%, #aaaaaa 50px); background-image: -moz-radial-gradient(center center, #dddddd 20%, #aaaaaa 50px); background-image: -o-radial-gradient(center center, #dddddd 20%, #aaaaaa 50px); background-image: radial-gradient(center center, #dddddd 20%, #aaaaaa 50px); } @@ -405,6 +461,7 @@ background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjQwJSIgc3RvcC1jb2xvcj0icmdiYSgyNTUsIDI1NSwgMjU1LCAwKSIvPjxzdG9wIG9mZnNldD0iNDUlIiBzdG9wLWNvbG9yPSJyZ2JhKDI1NSwgMTI3LCAxMjcsIDAuNSkiLz48c3RvcCBvZmZzZXQ9IjUwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, rgba(255, 255, 255, 0)), color-stop(45%, rgba(255, 127, 127, 0.5)), color-stop(50%, #ffffff)); + background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 40%, rgba(255, 127, 127, 0.5), #ffffff 50%); background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0) 40%, rgba(255, 127, 127, 0.5), #ffffff 50%); background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0) 40%, rgba(255, 127, 127, 0.5), #ffffff 50%); background-image: linear-gradient(top, rgba(255, 255, 255, 0) 40%, rgba(255, 127, 127, 0.5), #ffffff 50%); } diff --git a/test/fixtures/stylesheets/compass/css/grid_background.css b/test/fixtures/stylesheets/compass/css/grid_background.css index 66ec57ec..2878ef0d 100644 --- a/test/fixtures/stylesheets/compass/css/grid_background.css +++ b/test/fixtures/stylesheets/compass/css/grid_background.css @@ -1,5 +1,6 @@ .baseline { background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(5%, rgba(0, 0, 0, 0.5)), color-stop(5%, rgba(0, 0, 0, 0))); + background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%); background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%); background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%); background-image: linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%); @@ -11,6 +12,7 @@ .columns { background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(0%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0))); + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); @@ -18,6 +20,7 @@ .combined { background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(5%, rgba(0, 0, 0, 0.5)), color-stop(5%, rgba(0, 0, 0, 0))), -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(0%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0))); + background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -webkit-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -moz-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -o-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); diff --git a/test/fixtures/stylesheets/compass/css/pie.css b/test/fixtures/stylesheets/compass/css/pie.css index ec8ac289..82d21475 100644 --- a/test/fixtures/stylesheets/compass/css/pie.css +++ b/test/fixtures/stylesheets/compass/css/pie.css @@ -12,6 +12,7 @@ .gradient { background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ff0000), color-stop(100%, #0000ff)); + background: -webkit-linear-gradient(#ff0000, #0000ff); background: -moz-linear-gradient(#ff0000, #0000ff); background: -o-linear-gradient(#ff0000, #0000ff); -pie-background: linear-gradient(#ff0000, #0000ff); From 0a33bc14b2d6b6f2a30e671e2b6fbbb4d54bac20 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 15 Apr 2011 23:39:46 -0700 Subject: [PATCH 160/223] The background-size property accepts multiple sizes corresponding to each background. --- .../compass/css3/_background-size.scss | 20 ++++++++++++++----- .../compass/layout/_grid-background.scss | 2 +- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/frameworks/compass/stylesheets/compass/css3/_background-size.scss b/frameworks/compass/stylesheets/compass/css3/_background-size.scss index a9b7a04f..9d364470 100644 --- a/frameworks/compass/stylesheets/compass/css3/_background-size.scss +++ b/frameworks/compass/stylesheets/compass/css3/_background-size.scss @@ -8,9 +8,19 @@ $default-background-size: 100% auto !default; // // * percentages are relative to the background-origin (default = padding-box) // * mixin defaults to: `$default-background-size` -@mixin background-size($size: $default-background-size) { - @if type-of($size) == string { - $size: unquote($size); - } - @include experimental(background-size, $size, -moz, -webkit, -o, not -ms, not -khtml); +@mixin background-size( + $size-1: $default-background-size, + $size-2: false, + $size-3: false, + $size-4: false, + $size-5: false, + $size-6: false, + $size-7: false, + $size-8: false, + $size-9: false, + $size-10: false +) { + $size-1: if(type-of($size-1) == string, unquote($size-1), $size-1); + $sizes: compact($size-1, $size-2, $size-3, $size-4, $size-5, $size-6, $size-7, $size-8, $size-9, $size-10); + @include experimental(background-size, $sizes, -moz, -webkit, -o, not -ms, not -khtml); } diff --git a/frameworks/compass/stylesheets/compass/layout/_grid-background.scss b/frameworks/compass/stylesheets/compass/layout/_grid-background.scss index 43677ac5..188dfa37 100644 --- a/frameworks/compass/stylesheets/compass/layout/_grid-background.scss +++ b/frameworks/compass/stylesheets/compass/layout/_grid-background.scss @@ -159,6 +159,6 @@ $grid-background-force-fluid : false !default; get-baseline-gradient($baseline-color), get-column-gradient($total,$column,$gutter,$offset,$column-color,$gutter-color, $force-fluid) ); - @include background-size((100% #{$baseline}, auto)); + @include background-size(100% $baseline, auto); background-position: left top; } From 8a8d625a7de5060a0664e1c2660573469544c6c4 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 15 Apr 2011 23:49:49 -0700 Subject: [PATCH 161/223] Add a percent-based test case for grid-backgrounds, remove unnecessary 0.001 increment. --- .../compass/layout/_grid-background.scss | 8 ++--- .../compass/css/grid_background.css | 32 +++++++++++++++++++ .../compass/sass/grid_background.scss | 17 ++++++++++ 3 files changed, 51 insertions(+), 6 deletions(-) diff --git a/frameworks/compass/stylesheets/compass/layout/_grid-background.scss b/frameworks/compass/stylesheets/compass/layout/_grid-background.scss index 188dfa37..ec73e0e7 100644 --- a/frameworks/compass/stylesheets/compass/layout/_grid-background.scss +++ b/frameworks/compass/stylesheets/compass/layout/_grid-background.scss @@ -56,12 +56,8 @@ $grid-background-force-fluid : false !default; // $z represents the end of a gutter, equal to $g plus one gutter-width $z: $g + $gutter; - // make sure we are building towards 100% - @if unit($a) == "%" { - $a: $a + .001; - @if $i == ($total - 1) { - $z: 100%; - } + @if (unit($a) == "%") and ($i == ($total - 1)) { + $z: 100%; } // and we add this column/gutter pair to our grid diff --git a/test/fixtures/stylesheets/compass/css/grid_background.css b/test/fixtures/stylesheets/compass/css/grid_background.css index 2878ef0d..445a1283 100644 --- a/test/fixtures/stylesheets/compass/css/grid_background.css +++ b/test/fixtures/stylesheets/compass/css/grid_background.css @@ -29,3 +29,35 @@ -o-background-size: 100% 1.5em, auto; background-size: 100% 1.5em, auto; background-position: left top; } + +.percent-baseline { + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(5%, rgba(0, 0, 0, 0.5)), color-stop(5%, rgba(0, 0, 0, 0))); + background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%); + background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%); + background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%); + background-image: linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%); + -moz-background-size: 100% 1.5em; + -webkit-background-size: 100% 1.5em; + -o-background-size: 100% 1.5em; + background-size: 100% 1.5em; + background-position: left top; } + +.percent-columns { + background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(11%, rgba(0, 0, 0, 0)), color-stop(11%, rgba(100, 100, 225, 0.25)), color-stop(16%, rgba(100, 100, 225, 0.25)), color-stop(16%, rgba(0, 0, 0, 0)), color-stop(17%, rgba(0, 0, 0, 0)), color-stop(17%, rgba(100, 100, 225, 0.25)), color-stop(22%, rgba(100, 100, 225, 0.25)), color-stop(22%, rgba(0, 0, 0, 0)), color-stop(23%, rgba(0, 0, 0, 0)), color-stop(23%, rgba(100, 100, 225, 0.25)), color-stop(28%, rgba(100, 100, 225, 0.25)), color-stop(28%, rgba(0, 0, 0, 0)), color-stop(29%, rgba(0, 0, 0, 0)), color-stop(29%, rgba(100, 100, 225, 0.25)), color-stop(34%, rgba(100, 100, 225, 0.25)), color-stop(34%, rgba(0, 0, 0, 0)), color-stop(35%, rgba(0, 0, 0, 0)), color-stop(35%, rgba(100, 100, 225, 0.25)), color-stop(40%, rgba(100, 100, 225, 0.25)), color-stop(40%, rgba(0, 0, 0, 0)), color-stop(41%, rgba(0, 0, 0, 0)), color-stop(41%, rgba(100, 100, 225, 0.25)), color-stop(46%, rgba(100, 100, 225, 0.25)), color-stop(46%, rgba(0, 0, 0, 0)), color-stop(47%, rgba(0, 0, 0, 0)), color-stop(47%, rgba(100, 100, 225, 0.25)), color-stop(52%, rgba(100, 100, 225, 0.25)), color-stop(52%, rgba(0, 0, 0, 0)), color-stop(53%, rgba(0, 0, 0, 0)), color-stop(53%, rgba(100, 100, 225, 0.25)), color-stop(58%, rgba(100, 100, 225, 0.25)), color-stop(58%, rgba(0, 0, 0, 0)), color-stop(59%, rgba(0, 0, 0, 0)), color-stop(59%, rgba(100, 100, 225, 0.25)), color-stop(64%, rgba(100, 100, 225, 0.25)), color-stop(64%, rgba(0, 0, 0, 0)), color-stop(65%, rgba(0, 0, 0, 0)), color-stop(65%, rgba(100, 100, 225, 0.25)), color-stop(70%, rgba(100, 100, 225, 0.25)), color-stop(70%, rgba(0, 0, 0, 0)), color-stop(71%, rgba(0, 0, 0, 0)), color-stop(71%, rgba(100, 100, 225, 0.25)), color-stop(76%, rgba(100, 100, 225, 0.25)), color-stop(76%, rgba(0, 0, 0, 0)), color-stop(77%, rgba(0, 0, 0, 0)), color-stop(77%, rgba(100, 100, 225, 0.25)), color-stop(82%, rgba(100, 100, 225, 0.25)), color-stop(82%, rgba(0, 0, 0, 0)), color-stop(83%, rgba(0, 0, 0, 0)), color-stop(83%, rgba(100, 100, 225, 0.25)), color-stop(88%, rgba(100, 100, 225, 0.25)), color-stop(88%, rgba(0, 0, 0, 0)), color-stop(89%, rgba(0, 0, 0, 0)), color-stop(89%, rgba(100, 100, 225, 0.25)), color-stop(94%, rgba(100, 100, 225, 0.25)), color-stop(94%, rgba(0, 0, 0, 0)), color-stop(95%, rgba(0, 0, 0, 0)), color-stop(95%, rgba(100, 100, 225, 0.25)), color-stop(100%, rgba(100, 100, 225, 0.25)), color-stop(100%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0))); + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0) 11%, rgba(100, 100, 225, 0.25) 11%, rgba(100, 100, 225, 0.25) 16%, rgba(0, 0, 0, 0) 16%, rgba(0, 0, 0, 0) 17%, rgba(100, 100, 225, 0.25) 17%, rgba(100, 100, 225, 0.25) 22%, rgba(0, 0, 0, 0) 22%, rgba(0, 0, 0, 0) 23%, rgba(100, 100, 225, 0.25) 23%, rgba(100, 100, 225, 0.25) 28%, rgba(0, 0, 0, 0) 28%, rgba(0, 0, 0, 0) 29%, rgba(100, 100, 225, 0.25) 29%, rgba(100, 100, 225, 0.25) 34%, rgba(0, 0, 0, 0) 34%, rgba(0, 0, 0, 0) 35%, rgba(100, 100, 225, 0.25) 35%, rgba(100, 100, 225, 0.25) 40%, rgba(0, 0, 0, 0) 40%, rgba(0, 0, 0, 0) 41%, rgba(100, 100, 225, 0.25) 41%, rgba(100, 100, 225, 0.25) 46%, rgba(0, 0, 0, 0) 46%, rgba(0, 0, 0, 0) 47%, rgba(100, 100, 225, 0.25) 47%, rgba(100, 100, 225, 0.25) 52%, rgba(0, 0, 0, 0) 52%, rgba(0, 0, 0, 0) 53%, rgba(100, 100, 225, 0.25) 53%, rgba(100, 100, 225, 0.25) 58%, rgba(0, 0, 0, 0) 58%, rgba(0, 0, 0, 0) 59%, rgba(100, 100, 225, 0.25) 59%, rgba(100, 100, 225, 0.25) 64%, rgba(0, 0, 0, 0) 64%, rgba(0, 0, 0, 0) 65%, rgba(100, 100, 225, 0.25) 65%, rgba(100, 100, 225, 0.25) 70%, rgba(0, 0, 0, 0) 70%, rgba(0, 0, 0, 0) 71%, rgba(100, 100, 225, 0.25) 71%, rgba(100, 100, 225, 0.25) 76%, rgba(0, 0, 0, 0) 76%, rgba(0, 0, 0, 0) 77%, rgba(100, 100, 225, 0.25) 77%, rgba(100, 100, 225, 0.25) 82%, rgba(0, 0, 0, 0) 82%, rgba(0, 0, 0, 0) 83%, rgba(100, 100, 225, 0.25) 83%, rgba(100, 100, 225, 0.25) 88%, rgba(0, 0, 0, 0) 88%, rgba(0, 0, 0, 0) 89%, rgba(100, 100, 225, 0.25) 89%, rgba(100, 100, 225, 0.25) 94%, rgba(0, 0, 0, 0) 94%, rgba(0, 0, 0, 0) 95%, rgba(100, 100, 225, 0.25) 95%, rgba(100, 100, 225, 0.25) 100%, rgba(0, 0, 0, 0) 100%, rgba(0, 0, 0, 0) 100%); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0) 11%, rgba(100, 100, 225, 0.25) 11%, rgba(100, 100, 225, 0.25) 16%, rgba(0, 0, 0, 0) 16%, rgba(0, 0, 0, 0) 17%, rgba(100, 100, 225, 0.25) 17%, rgba(100, 100, 225, 0.25) 22%, rgba(0, 0, 0, 0) 22%, rgba(0, 0, 0, 0) 23%, rgba(100, 100, 225, 0.25) 23%, rgba(100, 100, 225, 0.25) 28%, rgba(0, 0, 0, 0) 28%, rgba(0, 0, 0, 0) 29%, rgba(100, 100, 225, 0.25) 29%, rgba(100, 100, 225, 0.25) 34%, rgba(0, 0, 0, 0) 34%, rgba(0, 0, 0, 0) 35%, rgba(100, 100, 225, 0.25) 35%, rgba(100, 100, 225, 0.25) 40%, rgba(0, 0, 0, 0) 40%, rgba(0, 0, 0, 0) 41%, rgba(100, 100, 225, 0.25) 41%, rgba(100, 100, 225, 0.25) 46%, rgba(0, 0, 0, 0) 46%, rgba(0, 0, 0, 0) 47%, rgba(100, 100, 225, 0.25) 47%, rgba(100, 100, 225, 0.25) 52%, rgba(0, 0, 0, 0) 52%, rgba(0, 0, 0, 0) 53%, rgba(100, 100, 225, 0.25) 53%, rgba(100, 100, 225, 0.25) 58%, rgba(0, 0, 0, 0) 58%, rgba(0, 0, 0, 0) 59%, rgba(100, 100, 225, 0.25) 59%, rgba(100, 100, 225, 0.25) 64%, rgba(0, 0, 0, 0) 64%, rgba(0, 0, 0, 0) 65%, rgba(100, 100, 225, 0.25) 65%, rgba(100, 100, 225, 0.25) 70%, rgba(0, 0, 0, 0) 70%, rgba(0, 0, 0, 0) 71%, rgba(100, 100, 225, 0.25) 71%, rgba(100, 100, 225, 0.25) 76%, rgba(0, 0, 0, 0) 76%, rgba(0, 0, 0, 0) 77%, rgba(100, 100, 225, 0.25) 77%, rgba(100, 100, 225, 0.25) 82%, rgba(0, 0, 0, 0) 82%, rgba(0, 0, 0, 0) 83%, rgba(100, 100, 225, 0.25) 83%, rgba(100, 100, 225, 0.25) 88%, rgba(0, 0, 0, 0) 88%, rgba(0, 0, 0, 0) 89%, rgba(100, 100, 225, 0.25) 89%, rgba(100, 100, 225, 0.25) 94%, rgba(0, 0, 0, 0) 94%, rgba(0, 0, 0, 0) 95%, rgba(100, 100, 225, 0.25) 95%, rgba(100, 100, 225, 0.25) 100%, rgba(0, 0, 0, 0) 100%, rgba(0, 0, 0, 0) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0) 11%, rgba(100, 100, 225, 0.25) 11%, rgba(100, 100, 225, 0.25) 16%, rgba(0, 0, 0, 0) 16%, rgba(0, 0, 0, 0) 17%, rgba(100, 100, 225, 0.25) 17%, rgba(100, 100, 225, 0.25) 22%, rgba(0, 0, 0, 0) 22%, rgba(0, 0, 0, 0) 23%, rgba(100, 100, 225, 0.25) 23%, rgba(100, 100, 225, 0.25) 28%, rgba(0, 0, 0, 0) 28%, rgba(0, 0, 0, 0) 29%, rgba(100, 100, 225, 0.25) 29%, rgba(100, 100, 225, 0.25) 34%, rgba(0, 0, 0, 0) 34%, rgba(0, 0, 0, 0) 35%, rgba(100, 100, 225, 0.25) 35%, rgba(100, 100, 225, 0.25) 40%, rgba(0, 0, 0, 0) 40%, rgba(0, 0, 0, 0) 41%, rgba(100, 100, 225, 0.25) 41%, rgba(100, 100, 225, 0.25) 46%, rgba(0, 0, 0, 0) 46%, rgba(0, 0, 0, 0) 47%, rgba(100, 100, 225, 0.25) 47%, rgba(100, 100, 225, 0.25) 52%, rgba(0, 0, 0, 0) 52%, rgba(0, 0, 0, 0) 53%, rgba(100, 100, 225, 0.25) 53%, rgba(100, 100, 225, 0.25) 58%, rgba(0, 0, 0, 0) 58%, rgba(0, 0, 0, 0) 59%, rgba(100, 100, 225, 0.25) 59%, rgba(100, 100, 225, 0.25) 64%, rgba(0, 0, 0, 0) 64%, rgba(0, 0, 0, 0) 65%, rgba(100, 100, 225, 0.25) 65%, rgba(100, 100, 225, 0.25) 70%, rgba(0, 0, 0, 0) 70%, rgba(0, 0, 0, 0) 71%, rgba(100, 100, 225, 0.25) 71%, rgba(100, 100, 225, 0.25) 76%, rgba(0, 0, 0, 0) 76%, rgba(0, 0, 0, 0) 77%, rgba(100, 100, 225, 0.25) 77%, rgba(100, 100, 225, 0.25) 82%, rgba(0, 0, 0, 0) 82%, rgba(0, 0, 0, 0) 83%, rgba(100, 100, 225, 0.25) 83%, rgba(100, 100, 225, 0.25) 88%, rgba(0, 0, 0, 0) 88%, rgba(0, 0, 0, 0) 89%, rgba(100, 100, 225, 0.25) 89%, rgba(100, 100, 225, 0.25) 94%, rgba(0, 0, 0, 0) 94%, rgba(0, 0, 0, 0) 95%, rgba(100, 100, 225, 0.25) 95%, rgba(100, 100, 225, 0.25) 100%, rgba(0, 0, 0, 0) 100%, rgba(0, 0, 0, 0) 100%); + background-image: linear-gradient(left, rgba(0, 0, 0, 0) 11%, rgba(100, 100, 225, 0.25) 11%, rgba(100, 100, 225, 0.25) 16%, rgba(0, 0, 0, 0) 16%, rgba(0, 0, 0, 0) 17%, rgba(100, 100, 225, 0.25) 17%, rgba(100, 100, 225, 0.25) 22%, rgba(0, 0, 0, 0) 22%, rgba(0, 0, 0, 0) 23%, rgba(100, 100, 225, 0.25) 23%, rgba(100, 100, 225, 0.25) 28%, rgba(0, 0, 0, 0) 28%, rgba(0, 0, 0, 0) 29%, rgba(100, 100, 225, 0.25) 29%, rgba(100, 100, 225, 0.25) 34%, rgba(0, 0, 0, 0) 34%, rgba(0, 0, 0, 0) 35%, rgba(100, 100, 225, 0.25) 35%, rgba(100, 100, 225, 0.25) 40%, rgba(0, 0, 0, 0) 40%, rgba(0, 0, 0, 0) 41%, rgba(100, 100, 225, 0.25) 41%, rgba(100, 100, 225, 0.25) 46%, rgba(0, 0, 0, 0) 46%, rgba(0, 0, 0, 0) 47%, rgba(100, 100, 225, 0.25) 47%, rgba(100, 100, 225, 0.25) 52%, rgba(0, 0, 0, 0) 52%, rgba(0, 0, 0, 0) 53%, rgba(100, 100, 225, 0.25) 53%, rgba(100, 100, 225, 0.25) 58%, rgba(0, 0, 0, 0) 58%, rgba(0, 0, 0, 0) 59%, rgba(100, 100, 225, 0.25) 59%, rgba(100, 100, 225, 0.25) 64%, rgba(0, 0, 0, 0) 64%, rgba(0, 0, 0, 0) 65%, rgba(100, 100, 225, 0.25) 65%, rgba(100, 100, 225, 0.25) 70%, rgba(0, 0, 0, 0) 70%, rgba(0, 0, 0, 0) 71%, rgba(100, 100, 225, 0.25) 71%, rgba(100, 100, 225, 0.25) 76%, rgba(0, 0, 0, 0) 76%, rgba(0, 0, 0, 0) 77%, rgba(100, 100, 225, 0.25) 77%, rgba(100, 100, 225, 0.25) 82%, rgba(0, 0, 0, 0) 82%, rgba(0, 0, 0, 0) 83%, rgba(100, 100, 225, 0.25) 83%, rgba(100, 100, 225, 0.25) 88%, rgba(0, 0, 0, 0) 88%, rgba(0, 0, 0, 0) 89%, rgba(100, 100, 225, 0.25) 89%, rgba(100, 100, 225, 0.25) 94%, rgba(0, 0, 0, 0) 94%, rgba(0, 0, 0, 0) 95%, rgba(100, 100, 225, 0.25) 95%, rgba(100, 100, 225, 0.25) 100%, rgba(0, 0, 0, 0) 100%, rgba(0, 0, 0, 0) 100%); + background-position: left top; } + +.percent-combined { + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(5%, rgba(0, 0, 0, 0.5)), color-stop(5%, rgba(0, 0, 0, 0))), -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(11%, rgba(0, 0, 0, 0)), color-stop(11%, rgba(100, 100, 225, 0.25)), color-stop(16%, rgba(100, 100, 225, 0.25)), color-stop(16%, rgba(0, 0, 0, 0)), color-stop(17%, rgba(0, 0, 0, 0)), color-stop(17%, rgba(100, 100, 225, 0.25)), color-stop(22%, rgba(100, 100, 225, 0.25)), color-stop(22%, rgba(0, 0, 0, 0)), color-stop(23%, rgba(0, 0, 0, 0)), color-stop(23%, rgba(100, 100, 225, 0.25)), color-stop(28%, rgba(100, 100, 225, 0.25)), color-stop(28%, rgba(0, 0, 0, 0)), color-stop(29%, rgba(0, 0, 0, 0)), color-stop(29%, rgba(100, 100, 225, 0.25)), color-stop(34%, rgba(100, 100, 225, 0.25)), color-stop(34%, rgba(0, 0, 0, 0)), color-stop(35%, rgba(0, 0, 0, 0)), color-stop(35%, rgba(100, 100, 225, 0.25)), color-stop(40%, rgba(100, 100, 225, 0.25)), color-stop(40%, rgba(0, 0, 0, 0)), color-stop(41%, rgba(0, 0, 0, 0)), color-stop(41%, rgba(100, 100, 225, 0.25)), color-stop(46%, rgba(100, 100, 225, 0.25)), color-stop(46%, rgba(0, 0, 0, 0)), color-stop(47%, rgba(0, 0, 0, 0)), color-stop(47%, rgba(100, 100, 225, 0.25)), color-stop(52%, rgba(100, 100, 225, 0.25)), color-stop(52%, rgba(0, 0, 0, 0)), color-stop(53%, rgba(0, 0, 0, 0)), color-stop(53%, rgba(100, 100, 225, 0.25)), color-stop(58%, rgba(100, 100, 225, 0.25)), color-stop(58%, rgba(0, 0, 0, 0)), color-stop(59%, rgba(0, 0, 0, 0)), color-stop(59%, rgba(100, 100, 225, 0.25)), color-stop(64%, rgba(100, 100, 225, 0.25)), color-stop(64%, rgba(0, 0, 0, 0)), color-stop(65%, rgba(0, 0, 0, 0)), color-stop(65%, rgba(100, 100, 225, 0.25)), color-stop(70%, rgba(100, 100, 225, 0.25)), color-stop(70%, rgba(0, 0, 0, 0)), color-stop(71%, rgba(0, 0, 0, 0)), color-stop(71%, rgba(100, 100, 225, 0.25)), color-stop(76%, rgba(100, 100, 225, 0.25)), color-stop(76%, rgba(0, 0, 0, 0)), color-stop(77%, rgba(0, 0, 0, 0)), color-stop(77%, rgba(100, 100, 225, 0.25)), color-stop(82%, rgba(100, 100, 225, 0.25)), color-stop(82%, rgba(0, 0, 0, 0)), color-stop(83%, rgba(0, 0, 0, 0)), color-stop(83%, rgba(100, 100, 225, 0.25)), color-stop(88%, rgba(100, 100, 225, 0.25)), color-stop(88%, rgba(0, 0, 0, 0)), color-stop(89%, rgba(0, 0, 0, 0)), color-stop(89%, rgba(100, 100, 225, 0.25)), color-stop(94%, rgba(100, 100, 225, 0.25)), color-stop(94%, rgba(0, 0, 0, 0)), color-stop(95%, rgba(0, 0, 0, 0)), color-stop(95%, rgba(100, 100, 225, 0.25)), color-stop(100%, rgba(100, 100, 225, 0.25)), color-stop(100%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0))); + background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -webkit-linear-gradient(left, rgba(0, 0, 0, 0) 11%, rgba(100, 100, 225, 0.25) 11%, rgba(100, 100, 225, 0.25) 16%, rgba(0, 0, 0, 0) 16%, rgba(0, 0, 0, 0) 17%, rgba(100, 100, 225, 0.25) 17%, rgba(100, 100, 225, 0.25) 22%, rgba(0, 0, 0, 0) 22%, rgba(0, 0, 0, 0) 23%, rgba(100, 100, 225, 0.25) 23%, rgba(100, 100, 225, 0.25) 28%, rgba(0, 0, 0, 0) 28%, rgba(0, 0, 0, 0) 29%, rgba(100, 100, 225, 0.25) 29%, rgba(100, 100, 225, 0.25) 34%, rgba(0, 0, 0, 0) 34%, rgba(0, 0, 0, 0) 35%, rgba(100, 100, 225, 0.25) 35%, rgba(100, 100, 225, 0.25) 40%, rgba(0, 0, 0, 0) 40%, rgba(0, 0, 0, 0) 41%, rgba(100, 100, 225, 0.25) 41%, rgba(100, 100, 225, 0.25) 46%, rgba(0, 0, 0, 0) 46%, rgba(0, 0, 0, 0) 47%, rgba(100, 100, 225, 0.25) 47%, rgba(100, 100, 225, 0.25) 52%, rgba(0, 0, 0, 0) 52%, rgba(0, 0, 0, 0) 53%, rgba(100, 100, 225, 0.25) 53%, rgba(100, 100, 225, 0.25) 58%, rgba(0, 0, 0, 0) 58%, rgba(0, 0, 0, 0) 59%, rgba(100, 100, 225, 0.25) 59%, rgba(100, 100, 225, 0.25) 64%, rgba(0, 0, 0, 0) 64%, rgba(0, 0, 0, 0) 65%, rgba(100, 100, 225, 0.25) 65%, rgba(100, 100, 225, 0.25) 70%, rgba(0, 0, 0, 0) 70%, rgba(0, 0, 0, 0) 71%, rgba(100, 100, 225, 0.25) 71%, rgba(100, 100, 225, 0.25) 76%, rgba(0, 0, 0, 0) 76%, rgba(0, 0, 0, 0) 77%, rgba(100, 100, 225, 0.25) 77%, rgba(100, 100, 225, 0.25) 82%, rgba(0, 0, 0, 0) 82%, rgba(0, 0, 0, 0) 83%, rgba(100, 100, 225, 0.25) 83%, rgba(100, 100, 225, 0.25) 88%, rgba(0, 0, 0, 0) 88%, rgba(0, 0, 0, 0) 89%, rgba(100, 100, 225, 0.25) 89%, rgba(100, 100, 225, 0.25) 94%, rgba(0, 0, 0, 0) 94%, rgba(0, 0, 0, 0) 95%, rgba(100, 100, 225, 0.25) 95%, rgba(100, 100, 225, 0.25) 100%, rgba(0, 0, 0, 0) 100%, rgba(0, 0, 0, 0) 100%); + background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -moz-linear-gradient(left, rgba(0, 0, 0, 0) 11%, rgba(100, 100, 225, 0.25) 11%, rgba(100, 100, 225, 0.25) 16%, rgba(0, 0, 0, 0) 16%, rgba(0, 0, 0, 0) 17%, rgba(100, 100, 225, 0.25) 17%, rgba(100, 100, 225, 0.25) 22%, rgba(0, 0, 0, 0) 22%, rgba(0, 0, 0, 0) 23%, rgba(100, 100, 225, 0.25) 23%, rgba(100, 100, 225, 0.25) 28%, rgba(0, 0, 0, 0) 28%, rgba(0, 0, 0, 0) 29%, rgba(100, 100, 225, 0.25) 29%, rgba(100, 100, 225, 0.25) 34%, rgba(0, 0, 0, 0) 34%, rgba(0, 0, 0, 0) 35%, rgba(100, 100, 225, 0.25) 35%, rgba(100, 100, 225, 0.25) 40%, rgba(0, 0, 0, 0) 40%, rgba(0, 0, 0, 0) 41%, rgba(100, 100, 225, 0.25) 41%, rgba(100, 100, 225, 0.25) 46%, rgba(0, 0, 0, 0) 46%, rgba(0, 0, 0, 0) 47%, rgba(100, 100, 225, 0.25) 47%, rgba(100, 100, 225, 0.25) 52%, rgba(0, 0, 0, 0) 52%, rgba(0, 0, 0, 0) 53%, rgba(100, 100, 225, 0.25) 53%, rgba(100, 100, 225, 0.25) 58%, rgba(0, 0, 0, 0) 58%, rgba(0, 0, 0, 0) 59%, rgba(100, 100, 225, 0.25) 59%, rgba(100, 100, 225, 0.25) 64%, rgba(0, 0, 0, 0) 64%, rgba(0, 0, 0, 0) 65%, rgba(100, 100, 225, 0.25) 65%, rgba(100, 100, 225, 0.25) 70%, rgba(0, 0, 0, 0) 70%, rgba(0, 0, 0, 0) 71%, rgba(100, 100, 225, 0.25) 71%, rgba(100, 100, 225, 0.25) 76%, rgba(0, 0, 0, 0) 76%, rgba(0, 0, 0, 0) 77%, rgba(100, 100, 225, 0.25) 77%, rgba(100, 100, 225, 0.25) 82%, rgba(0, 0, 0, 0) 82%, rgba(0, 0, 0, 0) 83%, rgba(100, 100, 225, 0.25) 83%, rgba(100, 100, 225, 0.25) 88%, rgba(0, 0, 0, 0) 88%, rgba(0, 0, 0, 0) 89%, rgba(100, 100, 225, 0.25) 89%, rgba(100, 100, 225, 0.25) 94%, rgba(0, 0, 0, 0) 94%, rgba(0, 0, 0, 0) 95%, rgba(100, 100, 225, 0.25) 95%, rgba(100, 100, 225, 0.25) 100%, rgba(0, 0, 0, 0) 100%, rgba(0, 0, 0, 0) 100%); + background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -o-linear-gradient(left, rgba(0, 0, 0, 0) 11%, rgba(100, 100, 225, 0.25) 11%, rgba(100, 100, 225, 0.25) 16%, rgba(0, 0, 0, 0) 16%, rgba(0, 0, 0, 0) 17%, rgba(100, 100, 225, 0.25) 17%, rgba(100, 100, 225, 0.25) 22%, rgba(0, 0, 0, 0) 22%, rgba(0, 0, 0, 0) 23%, rgba(100, 100, 225, 0.25) 23%, rgba(100, 100, 225, 0.25) 28%, rgba(0, 0, 0, 0) 28%, rgba(0, 0, 0, 0) 29%, rgba(100, 100, 225, 0.25) 29%, rgba(100, 100, 225, 0.25) 34%, rgba(0, 0, 0, 0) 34%, rgba(0, 0, 0, 0) 35%, rgba(100, 100, 225, 0.25) 35%, rgba(100, 100, 225, 0.25) 40%, rgba(0, 0, 0, 0) 40%, rgba(0, 0, 0, 0) 41%, rgba(100, 100, 225, 0.25) 41%, rgba(100, 100, 225, 0.25) 46%, rgba(0, 0, 0, 0) 46%, rgba(0, 0, 0, 0) 47%, rgba(100, 100, 225, 0.25) 47%, rgba(100, 100, 225, 0.25) 52%, rgba(0, 0, 0, 0) 52%, rgba(0, 0, 0, 0) 53%, rgba(100, 100, 225, 0.25) 53%, rgba(100, 100, 225, 0.25) 58%, rgba(0, 0, 0, 0) 58%, rgba(0, 0, 0, 0) 59%, rgba(100, 100, 225, 0.25) 59%, rgba(100, 100, 225, 0.25) 64%, rgba(0, 0, 0, 0) 64%, rgba(0, 0, 0, 0) 65%, rgba(100, 100, 225, 0.25) 65%, rgba(100, 100, 225, 0.25) 70%, rgba(0, 0, 0, 0) 70%, rgba(0, 0, 0, 0) 71%, rgba(100, 100, 225, 0.25) 71%, rgba(100, 100, 225, 0.25) 76%, rgba(0, 0, 0, 0) 76%, rgba(0, 0, 0, 0) 77%, rgba(100, 100, 225, 0.25) 77%, rgba(100, 100, 225, 0.25) 82%, rgba(0, 0, 0, 0) 82%, rgba(0, 0, 0, 0) 83%, rgba(100, 100, 225, 0.25) 83%, rgba(100, 100, 225, 0.25) 88%, rgba(0, 0, 0, 0) 88%, rgba(0, 0, 0, 0) 89%, rgba(100, 100, 225, 0.25) 89%, rgba(100, 100, 225, 0.25) 94%, rgba(0, 0, 0, 0) 94%, rgba(0, 0, 0, 0) 95%, rgba(100, 100, 225, 0.25) 95%, rgba(100, 100, 225, 0.25) 100%, rgba(0, 0, 0, 0) 100%, rgba(0, 0, 0, 0) 100%); + background-image: linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), linear-gradient(left, rgba(0, 0, 0, 0) 11%, rgba(100, 100, 225, 0.25) 11%, rgba(100, 100, 225, 0.25) 16%, rgba(0, 0, 0, 0) 16%, rgba(0, 0, 0, 0) 17%, rgba(100, 100, 225, 0.25) 17%, rgba(100, 100, 225, 0.25) 22%, rgba(0, 0, 0, 0) 22%, rgba(0, 0, 0, 0) 23%, rgba(100, 100, 225, 0.25) 23%, rgba(100, 100, 225, 0.25) 28%, rgba(0, 0, 0, 0) 28%, rgba(0, 0, 0, 0) 29%, rgba(100, 100, 225, 0.25) 29%, rgba(100, 100, 225, 0.25) 34%, rgba(0, 0, 0, 0) 34%, rgba(0, 0, 0, 0) 35%, rgba(100, 100, 225, 0.25) 35%, rgba(100, 100, 225, 0.25) 40%, rgba(0, 0, 0, 0) 40%, rgba(0, 0, 0, 0) 41%, rgba(100, 100, 225, 0.25) 41%, rgba(100, 100, 225, 0.25) 46%, rgba(0, 0, 0, 0) 46%, rgba(0, 0, 0, 0) 47%, rgba(100, 100, 225, 0.25) 47%, rgba(100, 100, 225, 0.25) 52%, rgba(0, 0, 0, 0) 52%, rgba(0, 0, 0, 0) 53%, rgba(100, 100, 225, 0.25) 53%, rgba(100, 100, 225, 0.25) 58%, rgba(0, 0, 0, 0) 58%, rgba(0, 0, 0, 0) 59%, rgba(100, 100, 225, 0.25) 59%, rgba(100, 100, 225, 0.25) 64%, rgba(0, 0, 0, 0) 64%, rgba(0, 0, 0, 0) 65%, rgba(100, 100, 225, 0.25) 65%, rgba(100, 100, 225, 0.25) 70%, rgba(0, 0, 0, 0) 70%, rgba(0, 0, 0, 0) 71%, rgba(100, 100, 225, 0.25) 71%, rgba(100, 100, 225, 0.25) 76%, rgba(0, 0, 0, 0) 76%, rgba(0, 0, 0, 0) 77%, rgba(100, 100, 225, 0.25) 77%, rgba(100, 100, 225, 0.25) 82%, rgba(0, 0, 0, 0) 82%, rgba(0, 0, 0, 0) 83%, rgba(100, 100, 225, 0.25) 83%, rgba(100, 100, 225, 0.25) 88%, rgba(0, 0, 0, 0) 88%, rgba(0, 0, 0, 0) 89%, rgba(100, 100, 225, 0.25) 89%, rgba(100, 100, 225, 0.25) 94%, rgba(0, 0, 0, 0) 94%, rgba(0, 0, 0, 0) 95%, rgba(100, 100, 225, 0.25) 95%, rgba(100, 100, 225, 0.25) 100%, rgba(0, 0, 0, 0) 100%, rgba(0, 0, 0, 0) 100%); + -moz-background-size: 100% 1.5em, auto; + -webkit-background-size: 100% 1.5em, auto; + -o-background-size: 100% 1.5em, auto; + background-size: 100% 1.5em, auto; + background-position: left top; } diff --git a/test/fixtures/stylesheets/compass/sass/grid_background.scss b/test/fixtures/stylesheets/compass/sass/grid_background.scss index 25986868..58e5230a 100644 --- a/test/fixtures/stylesheets/compass/sass/grid_background.scss +++ b/test/fixtures/stylesheets/compass/sass/grid_background.scss @@ -11,3 +11,20 @@ .combined { @include grid-background; } + +$grid-background-total-columns: 15; +$grid-background-offset: 11%; +$grid-background-column-width: 5%; +$grid-background-gutter-width: 1%; + +.percent-baseline { + @include baseline-grid-background; +} + +.percent-columns { + @include column-grid-background; +} + +.percent-combined { + @include grid-background; +} From 7db7e019ab731c4624853a761f989bd70cd4e643 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 16 Apr 2011 00:16:37 -0700 Subject: [PATCH 162/223] Add a yellow block method for logging warnings in yellow. --- lib/compass/logger.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/compass/logger.rb b/lib/compass/logger.rb index e1be0f55..760c4867 100644 --- a/lib/compass/logger.rb +++ b/lib/compass/logger.rb @@ -48,6 +48,15 @@ module Compass $stdout.write(color(:clear)) end + def yellow + $stderr.write(color(:yellow)) + $stdout.write(color(:yellow)) + yield + ensure + $stderr.write(color(:clear)) + $stdout.write(color(:clear)) + end + def color(c) if Compass.configuration.color_output && c && COLORS.has_key?(c.to_sym) if defined?($boring) && $boring From 26fe7f1074927103e77eadd3819e465b8fa83335 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 16 Apr 2011 00:17:19 -0700 Subject: [PATCH 163/223] Tell people who generate a grid background image that there's a better way. --- lib/compass/commands/generate_grid_background.rb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/compass/commands/generate_grid_background.rb b/lib/compass/commands/generate_grid_background.rb index 426fbc1e..b8a06e35 100644 --- a/lib/compass/commands/generate_grid_background.rb +++ b/lib/compass/commands/generate_grid_background.rb @@ -16,7 +16,10 @@ Description: By default, the image generated will be named "grid.png" and be found in the images directory. - This command requires that you have both ImageMagick and RMagick installed. + Unless you need to check layouts in legacy browsers, it's preferable + to use the pure CSS3-based grid background mixin: + + http://compass-style.org/reference/compass/layout/grid_background/ Examples: @@ -76,6 +79,12 @@ Options: puts "where 30 is the column width, 10 is the gutter width, and 20 is the (optional) height." return end + logger.yellow do + $stderr.puts "Unless you need to check layouts in legacy browsers, it's preferable" + $stderr.puts "to use the pure CSS3-based grid background mixin:" + $stderr.puts + $stderr.puts "http://compass-style.org/reference/compass/layout/grid_background/" + end column_width = $1.to_i gutter_width = $2.to_i height = $3.to_i if $3 From 196abb2a2817f4fb375bb45ea618cda0b6d2aef0 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 16 Apr 2011 00:21:35 -0700 Subject: [PATCH 164/223] Default the blueprint grid image to the pure CSS version in compass. --- .../stylesheets/blueprint/_debug.scss | 19 ++++++++++++++++--- .../stylesheets/blueprint/css/screen.css | 11 ++++++++++- .../blueprint/css/single-imports/debug.css | 11 ++++++++++- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/frameworks/blueprint/stylesheets/blueprint/_debug.scss b/frameworks/blueprint/stylesheets/blueprint/_debug.scss index 1628a2a7..0037b6ed 100644 --- a/frameworks/blueprint/stylesheets/blueprint/_debug.scss +++ b/frameworks/blueprint/stylesheets/blueprint/_debug.scss @@ -1,8 +1,21 @@ -@mixin showgrid($image: "grid.png") { - background: image-url($image); +@import "compass/layout/grid-background"; +@import "blueprint/grid"; + +@mixin showgrid($image: false) { + @if $image { + background: image-url($image); + } + @else { + @include grid-background( + $total : $blueprint-grid-columns, + $column : $blueprint-grid-width, + $gutter : $blueprint-grid-margin, + $baseline : 20px + ); + } } -@mixin blueprint-debug($grid-image: "grid.png") { +@mixin blueprint-debug($grid-image: false) { // Use this class on any column or container to see the grid. // TODO: prefix this with the project path. .showgrid { diff --git a/test/fixtures/stylesheets/blueprint/css/screen.css b/test/fixtures/stylesheets/blueprint/css/screen.css index fc0e522e..990f6636 100644 --- a/test/fixtures/stylesheets/blueprint/css/screen.css +++ b/test/fixtures/stylesheets/blueprint/css/screen.css @@ -666,7 +666,16 @@ input.span-24, textarea.span-24, select.span-24 { margin-bottom: 1.5em; } .showgrid { - background: url('/images/grid.png?busted=true'); } + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(5%, rgba(0, 0, 0, 0.5)), color-stop(5%, rgba(0, 0, 0, 0))), -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(0%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0))); + background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -webkit-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); + background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -moz-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); + background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -o-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); + background-image: linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); + -moz-background-size: 100% 20px, auto; + -webkit-background-size: 100% 20px, auto; + -o-background-size: 100% 20px, auto; + background-size: 100% 20px, auto; + background-position: left top; } .feedback, .error, .alert, .notice, .success, .info { padding: 0.8em; diff --git a/test/fixtures/stylesheets/blueprint/css/single-imports/debug.css b/test/fixtures/stylesheets/blueprint/css/single-imports/debug.css index 9b1b4040..166ecc08 100644 --- a/test/fixtures/stylesheets/blueprint/css/single-imports/debug.css +++ b/test/fixtures/stylesheets/blueprint/css/single-imports/debug.css @@ -1,2 +1,11 @@ .showgrid { - background: url('/images/grid.png?busted=true'); } + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(5%, rgba(0, 0, 0, 0.5)), color-stop(5%, rgba(0, 0, 0, 0))), -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(0%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0))); + background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -webkit-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); + background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -moz-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); + background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -o-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); + background-image: linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); + -moz-background-size: 100% 20px, auto; + -webkit-background-size: 100% 20px, auto; + -o-background-size: 100% 20px, auto; + background-size: 100% 20px, auto; + background-position: left top; } From 09868f4359d4a17a4eaced9ba440529a67f7a6c0 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 16 Apr 2011 00:25:35 -0700 Subject: [PATCH 165/223] Comment the showgrid mixin. --- frameworks/blueprint/stylesheets/blueprint/_debug.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/frameworks/blueprint/stylesheets/blueprint/_debug.scss b/frameworks/blueprint/stylesheets/blueprint/_debug.scss index 0037b6ed..414fa1a5 100644 --- a/frameworks/blueprint/stylesheets/blueprint/_debug.scss +++ b/frameworks/blueprint/stylesheets/blueprint/_debug.scss @@ -1,6 +1,10 @@ @import "compass/layout/grid-background"; @import "blueprint/grid"; +// Shows a background that can be used to check grid alignment. +// By default this is a pure css version that only works in browsers +// that support gradients and multiple backgrounds, but you can pass +// an image url if you prefer. @mixin showgrid($image: false) { @if $image { background: image-url($image); From c252d4b6d7de1b1276ad0543faa9197dd01ec8a1 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 16 Apr 2011 00:35:18 -0700 Subject: [PATCH 166/223] Note the new grid background module in the changelog. --- doc-src/content/CHANGELOG.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index d2b9b8b8..22a103e0 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -19,6 +19,9 @@ The Documentation for the [latest preview release](http://beta.compass-style.org * Added support for the new webkit gradient syntax that matches the css3 specification. Support for older webkit browsers remains enabled at this time. To disable it, set `$support-for-original-webkit-gradients` to false. +* There is a new mixin for creating + [pure-css grid backgrounds](/reference/compass/layout/grid_background/) + for verifying grid alignment for both fixed and fluid grids. 0.11.beta.6 (04/10/2011) ------------------------ From fc380ca203c9a3d13f7d60e362849eaaad48ae8c Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 16 Apr 2011 00:49:17 -0700 Subject: [PATCH 167/223] It turns out that we didn't need to change the compile method's signature. Closes GH-335. --- lib/compass/compiler.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/compass/compiler.rb b/lib/compass/compiler.rb index 5ee4d542..d8a24fcf 100644 --- a/lib/compass/compiler.rb +++ b/lib/compass/compiler.rb @@ -106,7 +106,7 @@ module Compass def compile_if_required(sass_filename, css_filename) if should_compile?(sass_filename, css_filename) - compile sass_filename, css_filename, :time => options[:time] + compile sass_filename, css_filename else logger.record :unchanged, basename(sass_filename) unless options[:quiet] end @@ -124,14 +124,14 @@ module Compass end # Compile one Sass file - def compile(sass_filename, css_filename, additional_options = {}) + def compile(sass_filename, css_filename) start_time = end_time = nil css_content = logger.red do timed do engine(sass_filename, css_filename).render end end - duration = additional_options[:time] ? "(#{(css_content.__duration * 1000).round / 1000.0}s)" : "" + duration = options[:time] ? "(#{(css_content.__duration * 1000).round / 1000.0}s)" : "" write_file(css_filename, css_content, options.merge(:force => true, :extra => duration)) Compass.configuration.run_callback(:stylesheet_saved, css_filename) end From 6dc7e0685775ea25d9c2d1732f888a08f4b09592 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 16 Apr 2011 00:58:24 -0700 Subject: [PATCH 168/223] Add import for the has-layout dependency in filter-gradient. Closes GH-339. --- frameworks/compass/stylesheets/compass/css3/_images.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/frameworks/compass/stylesheets/compass/css3/_images.scss b/frameworks/compass/stylesheets/compass/css3/_images.scss index d292521b..7b36e48b 100644 --- a/frameworks/compass/stylesheets/compass/css3/_images.scss +++ b/frameworks/compass/stylesheets/compass/css3/_images.scss @@ -1,4 +1,5 @@ @import "shared"; +@import "compass/utilities/general/hacks"; // Background property support for vendor prefixing within values. @mixin background( From 9ce85222611128a721a397564efe8367084ebd05 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 16 Apr 2011 01:09:22 -0700 Subject: [PATCH 169/223] Changelog note for the pixel-based gradients in old webkits. --- doc-src/content/CHANGELOG.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 22a103e0..b5a0e8dc 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -22,6 +22,7 @@ The Documentation for the [latest preview release](http://beta.compass-style.org * There is a new mixin for creating [pure-css grid backgrounds](/reference/compass/layout/grid_background/) for verifying grid alignment for both fixed and fluid grids. +* Add support for pixel-based gradients in the original webkit gradient syntax. 0.11.beta.6 (04/10/2011) ------------------------ From 791943e0890a3f6d6c01cd93c09bdeed1070f0e2 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 16 Apr 2011 01:23:39 -0700 Subject: [PATCH 170/223] Note the new vertical rhythm function in the changelog --- doc-src/content/CHANGELOG.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index b5a0e8dc..0e2db03a 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -14,7 +14,7 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/ The Documentation for the [latest preview release](http://beta.compass-style.org/) -0.11.beta.7 (UNRELEASED) +0.11.beta.7 (04/16/2011) ------------------------ * Added support for the new webkit gradient syntax that matches the css3 specification. Support for older webkit browsers remains enabled at this time. @@ -23,6 +23,7 @@ The Documentation for the [latest preview release](http://beta.compass-style.org [pure-css grid backgrounds](/reference/compass/layout/grid_background/) for verifying grid alignment for both fixed and fluid grids. * Add support for pixel-based gradients in the original webkit gradient syntax. +* Added a vertical rhythm function for calculating rhythms without returning a property. 0.11.beta.6 (04/10/2011) ------------------------ From 86788e5ee2911b14585b36ee0558823f026901dc Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sat, 16 Apr 2011 01:24:13 -0700 Subject: [PATCH 171/223] Version bump --- VERSION.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.yml b/VERSION.yml index 796e7c9b..899da300 100644 --- a/VERSION.yml +++ b/VERSION.yml @@ -2,4 +2,4 @@ :major: 0 :minor: 11 :state: beta -:build: 6 +:build: 7 From d845c4d48614fb57302054914d722850e4290bf8 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Sat, 16 Apr 2011 22:09:42 -0400 Subject: [PATCH 172/223] gradient rounding issue tentative fix --- Gemfile.lock | 2 +- lib/compass/sass_extensions/functions/gradient_support.rb | 3 ++- test/fixtures/stylesheets/compass/sass/grid_background.scss | 4 ++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 0dc7c833..af65ce14 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.6.bc4e3ee) + compass (0.11.beta.7.86788e5) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/sass_extensions/functions/gradient_support.rb b/lib/compass/sass_extensions/functions/gradient_support.rb index 96ce26a9..0e901462 100644 --- a/lib/compass/sass_extensions/functions/gradient_support.rb +++ b/lib/compass/sass_extensions/functions/gradient_support.rb @@ -1,3 +1,4 @@ +require 'bigdecimal' module Compass::SassExtensions::Functions::GradientSupport GRADIENT_ASPECTS = %w(webkit moz svg pie css2 o owg).freeze @@ -289,7 +290,7 @@ module Compass::SassExtensions::Functions::GradientSupport stop = pos.stop stop = stop.div(max).times(Sass::Script::Number.new(100,["%"])) if stop.numerator_units == max.numerator_units && max.numerator_units != ["%"] # Make sure the color stops are specified in the right order. - if last_value && stop.numerator_units == last_value.numerator_units && stop.denominator_units == last_value.denominator_units && stop.value < last_value.value + if last_value && stop.numerator_units == last_value.numerator_units && stop.denominator_units == last_value.denominator_units && BigDecimal.new(stop.value.to_s) < BigDecimal.new(last_value.value.to_s) raise Sass::SyntaxError.new("Color stops must be specified in increasing order. #{stop.value} came after #{last_value.value}.") end last_value = stop diff --git a/test/fixtures/stylesheets/compass/sass/grid_background.scss b/test/fixtures/stylesheets/compass/sass/grid_background.scss index 58e5230a..4f50ed4a 100644 --- a/test/fixtures/stylesheets/compass/sass/grid_background.scss +++ b/test/fixtures/stylesheets/compass/sass/grid_background.scss @@ -28,3 +28,7 @@ $grid-background-gutter-width: 1%; .percent-combined { @include grid-background; } + +.forced-fluid { + @include column-grid-background(12, 2em, 1em, 1em, $grid-background-column-color, $grid-background-gutter-color, true); +} \ No newline at end of file From 3c86dfa0b3dcb4bae422fd80a26c595fd565a992 Mon Sep 17 00:00:00 2001 From: Eric Meyer Date: Sat, 16 Apr 2011 23:48:28 -0600 Subject: [PATCH 173/223] fixed tests related to grid-background --- Gemfile.lock | 2 +- test/fixtures/stylesheets/blueprint/css/screen.css | 2 +- .../stylesheets/blueprint/css/single-imports/debug.css | 2 +- test/fixtures/stylesheets/compass/css/grid_background.css | 8 ++++++++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index af65ce14..4ed79c1f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.7.86788e5) + compass (0.11.beta.7.d845c4d) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/test/fixtures/stylesheets/blueprint/css/screen.css b/test/fixtures/stylesheets/blueprint/css/screen.css index 990f6636..277f8a73 100644 --- a/test/fixtures/stylesheets/blueprint/css/screen.css +++ b/test/fixtures/stylesheets/blueprint/css/screen.css @@ -666,7 +666,7 @@ input.span-24, textarea.span-24, select.span-24 { margin-bottom: 1.5em; } .showgrid { - background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(5%, rgba(0, 0, 0, 0.5)), color-stop(5%, rgba(0, 0, 0, 0))), -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(0%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0))); + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(5%, rgba(0, 0, 0, 0.5)), color-stop(5%, rgba(0, 0, 0, 0))), -webkit-gradient(linear, 0% 50%, 960 50%, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(0%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0))); background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -webkit-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -moz-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -o-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); diff --git a/test/fixtures/stylesheets/blueprint/css/single-imports/debug.css b/test/fixtures/stylesheets/blueprint/css/single-imports/debug.css index 166ecc08..d3dea644 100644 --- a/test/fixtures/stylesheets/blueprint/css/single-imports/debug.css +++ b/test/fixtures/stylesheets/blueprint/css/single-imports/debug.css @@ -1,5 +1,5 @@ .showgrid { - background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(5%, rgba(0, 0, 0, 0.5)), color-stop(5%, rgba(0, 0, 0, 0))), -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(0%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0))); + background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(5%, rgba(0, 0, 0, 0.5)), color-stop(5%, rgba(0, 0, 0, 0))), -webkit-gradient(linear, 0% 50%, 960 50%, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(0%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(100, 100, 225, 0.25)), color-stop(3.125%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(0, 0, 0, 0)), color-stop(4.167%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(100, 100, 225, 0.25)), color-stop(7.292%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(0, 0, 0, 0)), color-stop(8.333%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(100, 100, 225, 0.25)), color-stop(11.458%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(0, 0, 0, 0)), color-stop(12.5%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(100, 100, 225, 0.25)), color-stop(15.625%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(0, 0, 0, 0)), color-stop(16.667%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(100, 100, 225, 0.25)), color-stop(19.792%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(0, 0, 0, 0)), color-stop(20.833%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(100, 100, 225, 0.25)), color-stop(23.958%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(0, 0, 0, 0)), color-stop(25%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(100, 100, 225, 0.25)), color-stop(28.125%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(0, 0, 0, 0)), color-stop(29.167%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(100, 100, 225, 0.25)), color-stop(32.292%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(0, 0, 0, 0)), color-stop(33.333%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(100, 100, 225, 0.25)), color-stop(36.458%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(0, 0, 0, 0)), color-stop(37.5%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(100, 100, 225, 0.25)), color-stop(40.625%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(0, 0, 0, 0)), color-stop(41.667%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(100, 100, 225, 0.25)), color-stop(44.792%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(0, 0, 0, 0)), color-stop(45.833%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(100, 100, 225, 0.25)), color-stop(48.958%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(0, 0, 0, 0)), color-stop(50%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(100, 100, 225, 0.25)), color-stop(53.125%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(0, 0, 0, 0)), color-stop(54.167%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(100, 100, 225, 0.25)), color-stop(57.292%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(0, 0, 0, 0)), color-stop(58.333%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(100, 100, 225, 0.25)), color-stop(61.458%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(0, 0, 0, 0)), color-stop(62.5%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(100, 100, 225, 0.25)), color-stop(65.625%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(0, 0, 0, 0)), color-stop(66.667%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(100, 100, 225, 0.25)), color-stop(69.792%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(0, 0, 0, 0)), color-stop(70.833%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(100, 100, 225, 0.25)), color-stop(73.958%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(0, 0, 0, 0)), color-stop(75%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(100, 100, 225, 0.25)), color-stop(78.125%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(0, 0, 0, 0)), color-stop(79.167%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(100, 100, 225, 0.25)), color-stop(82.292%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(0, 0, 0, 0)), color-stop(83.333%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(100, 100, 225, 0.25)), color-stop(86.458%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(0, 0, 0, 0)), color-stop(87.5%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(100, 100, 225, 0.25)), color-stop(90.625%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(0, 0, 0, 0)), color-stop(91.667%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(100, 100, 225, 0.25)), color-stop(94.792%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(0, 0, 0, 0)), color-stop(95.833%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(100, 100, 225, 0.25)), color-stop(98.958%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0))); background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -webkit-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -moz-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5) 5%, rgba(0, 0, 0, 0) 5%), -o-linear-gradient(left, rgba(0, 0, 0, 0) 0px, rgba(100, 100, 225, 0.25) 0px, rgba(100, 100, 225, 0.25) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 40px, rgba(100, 100, 225, 0.25) 40px, rgba(100, 100, 225, 0.25) 70px, rgba(0, 0, 0, 0) 70px, rgba(0, 0, 0, 0) 80px, rgba(100, 100, 225, 0.25) 80px, rgba(100, 100, 225, 0.25) 110px, rgba(0, 0, 0, 0) 110px, rgba(0, 0, 0, 0) 120px, rgba(100, 100, 225, 0.25) 120px, rgba(100, 100, 225, 0.25) 150px, rgba(0, 0, 0, 0) 150px, rgba(0, 0, 0, 0) 160px, rgba(100, 100, 225, 0.25) 160px, rgba(100, 100, 225, 0.25) 190px, rgba(0, 0, 0, 0) 190px, rgba(0, 0, 0, 0) 200px, rgba(100, 100, 225, 0.25) 200px, rgba(100, 100, 225, 0.25) 230px, rgba(0, 0, 0, 0) 230px, rgba(0, 0, 0, 0) 240px, rgba(100, 100, 225, 0.25) 240px, rgba(100, 100, 225, 0.25) 270px, rgba(0, 0, 0, 0) 270px, rgba(0, 0, 0, 0) 280px, rgba(100, 100, 225, 0.25) 280px, rgba(100, 100, 225, 0.25) 310px, rgba(0, 0, 0, 0) 310px, rgba(0, 0, 0, 0) 320px, rgba(100, 100, 225, 0.25) 320px, rgba(100, 100, 225, 0.25) 350px, rgba(0, 0, 0, 0) 350px, rgba(0, 0, 0, 0) 360px, rgba(100, 100, 225, 0.25) 360px, rgba(100, 100, 225, 0.25) 390px, rgba(0, 0, 0, 0) 390px, rgba(0, 0, 0, 0) 400px, rgba(100, 100, 225, 0.25) 400px, rgba(100, 100, 225, 0.25) 430px, rgba(0, 0, 0, 0) 430px, rgba(0, 0, 0, 0) 440px, rgba(100, 100, 225, 0.25) 440px, rgba(100, 100, 225, 0.25) 470px, rgba(0, 0, 0, 0) 470px, rgba(0, 0, 0, 0) 480px, rgba(100, 100, 225, 0.25) 480px, rgba(100, 100, 225, 0.25) 510px, rgba(0, 0, 0, 0) 510px, rgba(0, 0, 0, 0) 520px, rgba(100, 100, 225, 0.25) 520px, rgba(100, 100, 225, 0.25) 550px, rgba(0, 0, 0, 0) 550px, rgba(0, 0, 0, 0) 560px, rgba(100, 100, 225, 0.25) 560px, rgba(100, 100, 225, 0.25) 590px, rgba(0, 0, 0, 0) 590px, rgba(0, 0, 0, 0) 600px, rgba(100, 100, 225, 0.25) 600px, rgba(100, 100, 225, 0.25) 630px, rgba(0, 0, 0, 0) 630px, rgba(0, 0, 0, 0) 640px, rgba(100, 100, 225, 0.25) 640px, rgba(100, 100, 225, 0.25) 670px, rgba(0, 0, 0, 0) 670px, rgba(0, 0, 0, 0) 680px, rgba(100, 100, 225, 0.25) 680px, rgba(100, 100, 225, 0.25) 710px, rgba(0, 0, 0, 0) 710px, rgba(0, 0, 0, 0) 720px, rgba(100, 100, 225, 0.25) 720px, rgba(100, 100, 225, 0.25) 750px, rgba(0, 0, 0, 0) 750px, rgba(0, 0, 0, 0) 760px, rgba(100, 100, 225, 0.25) 760px, rgba(100, 100, 225, 0.25) 790px, rgba(0, 0, 0, 0) 790px, rgba(0, 0, 0, 0) 800px, rgba(100, 100, 225, 0.25) 800px, rgba(100, 100, 225, 0.25) 830px, rgba(0, 0, 0, 0) 830px, rgba(0, 0, 0, 0) 840px, rgba(100, 100, 225, 0.25) 840px, rgba(100, 100, 225, 0.25) 870px, rgba(0, 0, 0, 0) 870px, rgba(0, 0, 0, 0) 880px, rgba(100, 100, 225, 0.25) 880px, rgba(100, 100, 225, 0.25) 910px, rgba(0, 0, 0, 0) 910px, rgba(0, 0, 0, 0) 920px, rgba(100, 100, 225, 0.25) 920px, rgba(100, 100, 225, 0.25) 950px, rgba(0, 0, 0, 0) 950px, rgba(0, 0, 0, 0) 960px); diff --git a/test/fixtures/stylesheets/compass/css/grid_background.css b/test/fixtures/stylesheets/compass/css/grid_background.css index fbfcd7df..4db8a053 100644 --- a/test/fixtures/stylesheets/compass/css/grid_background.css +++ b/test/fixtures/stylesheets/compass/css/grid_background.css @@ -61,3 +61,11 @@ -o-background-size: 100% 1.5em, auto; background-size: 100% 1.5em, auto; background-position: left top; } + +.forced-fluid { + background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(2.703%, rgba(0, 0, 0, 0)), color-stop(2.703%, rgba(100, 100, 225, 0.25)), color-stop(8.108%, rgba(100, 100, 225, 0.25)), color-stop(8.108%, rgba(0, 0, 0, 0)), color-stop(10.811%, rgba(0, 0, 0, 0)), color-stop(10.811%, rgba(100, 100, 225, 0.25)), color-stop(16.216%, rgba(100, 100, 225, 0.25)), color-stop(16.216%, rgba(0, 0, 0, 0)), color-stop(18.919%, rgba(0, 0, 0, 0)), color-stop(18.919%, rgba(100, 100, 225, 0.25)), color-stop(24.324%, rgba(100, 100, 225, 0.25)), color-stop(24.324%, rgba(0, 0, 0, 0)), color-stop(27.027%, rgba(0, 0, 0, 0)), color-stop(27.027%, rgba(100, 100, 225, 0.25)), color-stop(32.432%, rgba(100, 100, 225, 0.25)), color-stop(32.432%, rgba(0, 0, 0, 0)), color-stop(35.135%, rgba(0, 0, 0, 0)), color-stop(35.135%, rgba(100, 100, 225, 0.25)), color-stop(40.541%, rgba(100, 100, 225, 0.25)), color-stop(40.541%, rgba(0, 0, 0, 0)), color-stop(43.243%, rgba(0, 0, 0, 0)), color-stop(43.243%, rgba(100, 100, 225, 0.25)), color-stop(48.649%, rgba(100, 100, 225, 0.25)), color-stop(48.649%, rgba(0, 0, 0, 0)), color-stop(51.351%, rgba(0, 0, 0, 0)), color-stop(51.351%, rgba(100, 100, 225, 0.25)), color-stop(56.757%, rgba(100, 100, 225, 0.25)), color-stop(56.757%, rgba(0, 0, 0, 0)), color-stop(59.459%, rgba(0, 0, 0, 0)), color-stop(59.459%, rgba(100, 100, 225, 0.25)), color-stop(64.865%, rgba(100, 100, 225, 0.25)), color-stop(64.865%, rgba(0, 0, 0, 0)), color-stop(67.568%, rgba(0, 0, 0, 0)), color-stop(67.568%, rgba(100, 100, 225, 0.25)), color-stop(72.973%, rgba(100, 100, 225, 0.25)), color-stop(72.973%, rgba(0, 0, 0, 0)), color-stop(75.676%, rgba(0, 0, 0, 0)), color-stop(75.676%, rgba(100, 100, 225, 0.25)), color-stop(81.081%, rgba(100, 100, 225, 0.25)), color-stop(81.081%, rgba(0, 0, 0, 0)), color-stop(83.784%, rgba(0, 0, 0, 0)), color-stop(83.784%, rgba(100, 100, 225, 0.25)), color-stop(89.189%, rgba(100, 100, 225, 0.25)), color-stop(89.189%, rgba(0, 0, 0, 0)), color-stop(91.892%, rgba(0, 0, 0, 0)), color-stop(91.892%, rgba(100, 100, 225, 0.25)), color-stop(97.297%, rgba(100, 100, 225, 0.25)), color-stop(97.297%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0))); + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0) 2.703%, rgba(100, 100, 225, 0.25) 2.703%, rgba(100, 100, 225, 0.25) 8.108%, rgba(0, 0, 0, 0) 8.108%, rgba(0, 0, 0, 0) 10.811%, rgba(100, 100, 225, 0.25) 10.811%, rgba(100, 100, 225, 0.25) 16.216%, rgba(0, 0, 0, 0) 16.216%, rgba(0, 0, 0, 0) 18.919%, rgba(100, 100, 225, 0.25) 18.919%, rgba(100, 100, 225, 0.25) 24.324%, rgba(0, 0, 0, 0) 24.324%, rgba(0, 0, 0, 0) 27.027%, rgba(100, 100, 225, 0.25) 27.027%, rgba(100, 100, 225, 0.25) 32.432%, rgba(0, 0, 0, 0) 32.432%, rgba(0, 0, 0, 0) 35.135%, rgba(100, 100, 225, 0.25) 35.135%, rgba(100, 100, 225, 0.25) 40.541%, rgba(0, 0, 0, 0) 40.541%, rgba(0, 0, 0, 0) 43.243%, rgba(100, 100, 225, 0.25) 43.243%, rgba(100, 100, 225, 0.25) 48.649%, rgba(0, 0, 0, 0) 48.649%, rgba(0, 0, 0, 0) 51.351%, rgba(100, 100, 225, 0.25) 51.351%, rgba(100, 100, 225, 0.25) 56.757%, rgba(0, 0, 0, 0) 56.757%, rgba(0, 0, 0, 0) 59.459%, rgba(100, 100, 225, 0.25) 59.459%, rgba(100, 100, 225, 0.25) 64.865%, rgba(0, 0, 0, 0) 64.865%, rgba(0, 0, 0, 0) 67.568%, rgba(100, 100, 225, 0.25) 67.568%, rgba(100, 100, 225, 0.25) 72.973%, rgba(0, 0, 0, 0) 72.973%, rgba(0, 0, 0, 0) 75.676%, rgba(100, 100, 225, 0.25) 75.676%, rgba(100, 100, 225, 0.25) 81.081%, rgba(0, 0, 0, 0) 81.081%, rgba(0, 0, 0, 0) 83.784%, rgba(100, 100, 225, 0.25) 83.784%, rgba(100, 100, 225, 0.25) 89.189%, rgba(0, 0, 0, 0) 89.189%, rgba(0, 0, 0, 0) 91.892%, rgba(100, 100, 225, 0.25) 91.892%, rgba(100, 100, 225, 0.25) 97.297%, rgba(0, 0, 0, 0) 97.297%, rgba(0, 0, 0, 0) 100%); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0) 2.703%, rgba(100, 100, 225, 0.25) 2.703%, rgba(100, 100, 225, 0.25) 8.108%, rgba(0, 0, 0, 0) 8.108%, rgba(0, 0, 0, 0) 10.811%, rgba(100, 100, 225, 0.25) 10.811%, rgba(100, 100, 225, 0.25) 16.216%, rgba(0, 0, 0, 0) 16.216%, rgba(0, 0, 0, 0) 18.919%, rgba(100, 100, 225, 0.25) 18.919%, rgba(100, 100, 225, 0.25) 24.324%, rgba(0, 0, 0, 0) 24.324%, rgba(0, 0, 0, 0) 27.027%, rgba(100, 100, 225, 0.25) 27.027%, rgba(100, 100, 225, 0.25) 32.432%, rgba(0, 0, 0, 0) 32.432%, rgba(0, 0, 0, 0) 35.135%, rgba(100, 100, 225, 0.25) 35.135%, rgba(100, 100, 225, 0.25) 40.541%, rgba(0, 0, 0, 0) 40.541%, rgba(0, 0, 0, 0) 43.243%, rgba(100, 100, 225, 0.25) 43.243%, rgba(100, 100, 225, 0.25) 48.649%, rgba(0, 0, 0, 0) 48.649%, rgba(0, 0, 0, 0) 51.351%, rgba(100, 100, 225, 0.25) 51.351%, rgba(100, 100, 225, 0.25) 56.757%, rgba(0, 0, 0, 0) 56.757%, rgba(0, 0, 0, 0) 59.459%, rgba(100, 100, 225, 0.25) 59.459%, rgba(100, 100, 225, 0.25) 64.865%, rgba(0, 0, 0, 0) 64.865%, rgba(0, 0, 0, 0) 67.568%, rgba(100, 100, 225, 0.25) 67.568%, rgba(100, 100, 225, 0.25) 72.973%, rgba(0, 0, 0, 0) 72.973%, rgba(0, 0, 0, 0) 75.676%, rgba(100, 100, 225, 0.25) 75.676%, rgba(100, 100, 225, 0.25) 81.081%, rgba(0, 0, 0, 0) 81.081%, rgba(0, 0, 0, 0) 83.784%, rgba(100, 100, 225, 0.25) 83.784%, rgba(100, 100, 225, 0.25) 89.189%, rgba(0, 0, 0, 0) 89.189%, rgba(0, 0, 0, 0) 91.892%, rgba(100, 100, 225, 0.25) 91.892%, rgba(100, 100, 225, 0.25) 97.297%, rgba(0, 0, 0, 0) 97.297%, rgba(0, 0, 0, 0) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0) 2.703%, rgba(100, 100, 225, 0.25) 2.703%, rgba(100, 100, 225, 0.25) 8.108%, rgba(0, 0, 0, 0) 8.108%, rgba(0, 0, 0, 0) 10.811%, rgba(100, 100, 225, 0.25) 10.811%, rgba(100, 100, 225, 0.25) 16.216%, rgba(0, 0, 0, 0) 16.216%, rgba(0, 0, 0, 0) 18.919%, rgba(100, 100, 225, 0.25) 18.919%, rgba(100, 100, 225, 0.25) 24.324%, rgba(0, 0, 0, 0) 24.324%, rgba(0, 0, 0, 0) 27.027%, rgba(100, 100, 225, 0.25) 27.027%, rgba(100, 100, 225, 0.25) 32.432%, rgba(0, 0, 0, 0) 32.432%, rgba(0, 0, 0, 0) 35.135%, rgba(100, 100, 225, 0.25) 35.135%, rgba(100, 100, 225, 0.25) 40.541%, rgba(0, 0, 0, 0) 40.541%, rgba(0, 0, 0, 0) 43.243%, rgba(100, 100, 225, 0.25) 43.243%, rgba(100, 100, 225, 0.25) 48.649%, rgba(0, 0, 0, 0) 48.649%, rgba(0, 0, 0, 0) 51.351%, rgba(100, 100, 225, 0.25) 51.351%, rgba(100, 100, 225, 0.25) 56.757%, rgba(0, 0, 0, 0) 56.757%, rgba(0, 0, 0, 0) 59.459%, rgba(100, 100, 225, 0.25) 59.459%, rgba(100, 100, 225, 0.25) 64.865%, rgba(0, 0, 0, 0) 64.865%, rgba(0, 0, 0, 0) 67.568%, rgba(100, 100, 225, 0.25) 67.568%, rgba(100, 100, 225, 0.25) 72.973%, rgba(0, 0, 0, 0) 72.973%, rgba(0, 0, 0, 0) 75.676%, rgba(100, 100, 225, 0.25) 75.676%, rgba(100, 100, 225, 0.25) 81.081%, rgba(0, 0, 0, 0) 81.081%, rgba(0, 0, 0, 0) 83.784%, rgba(100, 100, 225, 0.25) 83.784%, rgba(100, 100, 225, 0.25) 89.189%, rgba(0, 0, 0, 0) 89.189%, rgba(0, 0, 0, 0) 91.892%, rgba(100, 100, 225, 0.25) 91.892%, rgba(100, 100, 225, 0.25) 97.297%, rgba(0, 0, 0, 0) 97.297%, rgba(0, 0, 0, 0) 100%); + background-image: linear-gradient(left, rgba(0, 0, 0, 0) 2.703%, rgba(100, 100, 225, 0.25) 2.703%, rgba(100, 100, 225, 0.25) 8.108%, rgba(0, 0, 0, 0) 8.108%, rgba(0, 0, 0, 0) 10.811%, rgba(100, 100, 225, 0.25) 10.811%, rgba(100, 100, 225, 0.25) 16.216%, rgba(0, 0, 0, 0) 16.216%, rgba(0, 0, 0, 0) 18.919%, rgba(100, 100, 225, 0.25) 18.919%, rgba(100, 100, 225, 0.25) 24.324%, rgba(0, 0, 0, 0) 24.324%, rgba(0, 0, 0, 0) 27.027%, rgba(100, 100, 225, 0.25) 27.027%, rgba(100, 100, 225, 0.25) 32.432%, rgba(0, 0, 0, 0) 32.432%, rgba(0, 0, 0, 0) 35.135%, rgba(100, 100, 225, 0.25) 35.135%, rgba(100, 100, 225, 0.25) 40.541%, rgba(0, 0, 0, 0) 40.541%, rgba(0, 0, 0, 0) 43.243%, rgba(100, 100, 225, 0.25) 43.243%, rgba(100, 100, 225, 0.25) 48.649%, rgba(0, 0, 0, 0) 48.649%, rgba(0, 0, 0, 0) 51.351%, rgba(100, 100, 225, 0.25) 51.351%, rgba(100, 100, 225, 0.25) 56.757%, rgba(0, 0, 0, 0) 56.757%, rgba(0, 0, 0, 0) 59.459%, rgba(100, 100, 225, 0.25) 59.459%, rgba(100, 100, 225, 0.25) 64.865%, rgba(0, 0, 0, 0) 64.865%, rgba(0, 0, 0, 0) 67.568%, rgba(100, 100, 225, 0.25) 67.568%, rgba(100, 100, 225, 0.25) 72.973%, rgba(0, 0, 0, 0) 72.973%, rgba(0, 0, 0, 0) 75.676%, rgba(100, 100, 225, 0.25) 75.676%, rgba(100, 100, 225, 0.25) 81.081%, rgba(0, 0, 0, 0) 81.081%, rgba(0, 0, 0, 0) 83.784%, rgba(100, 100, 225, 0.25) 83.784%, rgba(100, 100, 225, 0.25) 89.189%, rgba(0, 0, 0, 0) 89.189%, rgba(0, 0, 0, 0) 91.892%, rgba(100, 100, 225, 0.25) 91.892%, rgba(100, 100, 225, 0.25) 97.297%, rgba(0, 0, 0, 0) 97.297%, rgba(0, 0, 0, 0) 100%); + background-position: left top; } From b1b718e78a03d01c9273cee5b930d43d95008573 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 17 Apr 2011 01:48:44 -0700 Subject: [PATCH 174/223] A basic blog for the compass website. --- doc-src/Rules | 23 ++++++++++++++++ doc-src/content/blog/archive.haml | 14 ++++++++++ doc-src/content/blog/atom.haml | 19 ++++++++++++++ .../content/stylesheets/partials/_blog.scss | 6 +++++ .../content/stylesheets/partials/_layout.scss | 2 +- doc-src/content/stylesheets/screen.scss | 1 + doc-src/layouts/basic.haml | 1 + doc-src/layouts/blog.haml | 17 ++++++++++++ doc-src/layouts/main.haml | 2 +- doc-src/layouts/partials/main-navigation.haml | 2 ++ doc-src/layouts/post.haml | 5 ++++ doc-src/lib/blog.rb | 26 +++++++++++++++++++ 12 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 doc-src/content/blog/archive.haml create mode 100644 doc-src/content/blog/atom.haml create mode 100644 doc-src/content/stylesheets/partials/_blog.scss create mode 100644 doc-src/layouts/blog.haml create mode 100644 doc-src/layouts/post.haml create mode 100644 doc-src/lib/blog.rb diff --git a/doc-src/Rules b/doc-src/Rules index 2be98d80..c5ba8d9e 100644 --- a/doc-src/Rules +++ b/doc-src/Rules @@ -47,6 +47,16 @@ compile '/reference/*/' do layout item[:layout] ? item[:layout] : "main" end +compile '/posts/*/' do + filter :erb + filter :rdiscount if item[:extension] == "markdown" + layout 'post' +end + +compile "/blog/atom/" do + filter :haml, :attr_wrapper => '"' +end + compile '*' do if item[:extension] == "markdown" filter :rdiscount @@ -56,6 +66,10 @@ compile '*' do layout item[:layout] ? item[:layout] : "main" end +route "/blog/atom/" do + "/blog/atom.xml" +end + route '/search-data/' do "#{SITE_ROOT}/javascripts"+item.identifier[0..-2]+".js" end @@ -89,6 +103,15 @@ route '/stylesheets/*/' do SITE_ROOT+item.identifier.chop + '.css' end +route '/posts/*/' do + if item.identifier =~ %r{^/posts/(\d{4})-(\d{2})-(\d{2})-(.*)/$} + "/blog/#{$1}/#{$2}/#{$3}/#{$4}/index.html" + else + puts "WARNING: malformed post name: #{item.identifier}" + nil + end +end + %w(markup stylesheet background).each do |ex_file| route "/examples/*/#{ex_file}/" do nil diff --git a/doc-src/content/blog/archive.haml b/doc-src/content/blog/archive.haml new file mode 100644 index 00000000..67faea8f --- /dev/null +++ b/doc-src/content/blog/archive.haml @@ -0,0 +1,14 @@ +--- +layout: blog +--- +%h1 Compass Blog Archive + +- for post in blog_posts_in_order.reverse + .post-snippet + %h2 + - time = blog_date(post) + %span.timestamp= time.strftime("%Y/%m/%d") + %a{:href => post.rep_named(:default).path}= post[:title] + %p= post[:intro] || post[:description] + + diff --git a/doc-src/content/blog/atom.haml b/doc-src/content/blog/atom.haml new file mode 100644 index 00000000..b328482b --- /dev/null +++ b/doc-src/content/blog/atom.haml @@ -0,0 +1,19 @@ + +%feed(xmlns="http://www.w3.org/2005/Atom") + %title Compass Blog + %link(href="http://compass-style.org/blog/atom.xml" rel="self") + %link(href="http://compass-style.org/blog/") + %updated= Time.now.xmlschema + %id http://compass-style.org/blog/ + %author + %name Compass Core Team + - for post in blog_posts_in_order.reverse + - full_url = "http://compass-style.org#{post.rep_named(:default).path}" + %entry + %title&= post[:title] + %link{:href=> full_url} + %updated= blog_date(post).localtime.xmlschema + %id= full_url[0..-2] + %content(type="html") + = post[:intro] || post[:description] + diff --git a/doc-src/content/stylesheets/partials/_blog.scss b/doc-src/content/stylesheets/partials/_blog.scss new file mode 100644 index 00000000..ac79d58d --- /dev/null +++ b/doc-src/content/stylesheets/partials/_blog.scss @@ -0,0 +1,6 @@ +body#blog-archive { + .timestamp { + margin-right: 1em; + font-size: 12px; + } +} \ No newline at end of file diff --git a/doc-src/content/stylesheets/partials/_layout.scss b/doc-src/content/stylesheets/partials/_layout.scss index d9d54150..5148ac89 100644 --- a/doc-src/content/stylesheets/partials/_layout.scss +++ b/doc-src/content/stylesheets/partials/_layout.scss @@ -1,4 +1,4 @@ -$min-width: 680px; +$min-width: 700px; $side-nav-width: 160px; $main-min-width: $min-width - $side-nav-width; diff --git a/doc-src/content/stylesheets/screen.scss b/doc-src/content/stylesheets/screen.scss index 48b4c998..1f240bdf 100644 --- a/doc-src/content/stylesheets/screen.scss +++ b/doc-src/content/stylesheets/screen.scss @@ -17,6 +17,7 @@ @import "partials/code"; @import "partials/example"; @import "partials/install"; +@import "partials/blog"; @import "syntax/syntax-theme"; diff --git a/doc-src/layouts/basic.haml b/doc-src/layouts/basic.haml index 20278c06..18c3670b 100644 --- a/doc-src/layouts/basic.haml +++ b/doc-src/layouts/basic.haml @@ -6,6 +6,7 @@ %meta{:content => "chrome=1", "http-equiv" => "X-UA-Compatible"} %meta(name="viewport" content="width=780") %link(rel="shortcut icon" type="image/png" href="/images/compass_icon.png") + %link{:href=>"/blog/atom.xml", :rel=>"alternate", :title=>"Compass Blog", :type=>"application/atom+xml"} %title #{@item[:title]} | Compass Documentation %link{:charset => "utf-8", :href => "/stylesheets/screen.css", :rel => "stylesheet", :type => "text/css"} diff --git a/doc-src/layouts/blog.haml b/doc-src/layouts/blog.haml new file mode 100644 index 00000000..48886078 --- /dev/null +++ b/doc-src/layouts/blog.haml @@ -0,0 +1,17 @@ +- render "basic" do + #wrap + = render "partials/main-navigation" + #sub-nav + - p = previous_post + - n = next_post + - if p || n + %nav#docs-nav{:role => "navigation"} + - if p + %a{:href => p.rep_named(:default).path, :title => p[:title]} « Previous Post + - if n + %a{:href => n.rep_named(:default).path, :title => n[:title]} Next Post » + #page + = yield + %footer(role="contentinfo")= render "partials/footer" + = @item[:content_for_javascripts] + = render "partials/analytics" diff --git a/doc-src/layouts/main.haml b/doc-src/layouts/main.haml index 4fa5f0f7..f287370f 100644 --- a/doc-src/layouts/main.haml +++ b/doc-src/layouts/main.haml @@ -18,7 +18,7 @@ Version: %a.number(href="/CHANGELOG/")= compass_version = yield - -#comments= render "partials/disqus_comments" + #comments= render "partials/disqus_comments" %footer(role="contentinfo")= render "partials/footer" = @item[:content_for_javascripts] = render "partials/analytics" diff --git a/doc-src/layouts/partials/main-navigation.haml b/doc-src/layouts/partials/main-navigation.haml index c8cef4d3..b6858d0b 100644 --- a/doc-src/layouts/partials/main-navigation.haml +++ b/doc-src/layouts/partials/main-navigation.haml @@ -10,6 +10,8 @@ %a{:href => "/reference/compass/", :rel => "documentation"} Reference %li %a{:href => "/help/", :rel=> "help"} Help + %li + %a{:href => "/blog/", :rel=> "blog"} Blog %li %a{:href => "/get-involved/", :rel=> "get-involved"} Get Involved %li diff --git a/doc-src/layouts/post.haml b/doc-src/layouts/post.haml new file mode 100644 index 00000000..8d114983 --- /dev/null +++ b/doc-src/layouts/post.haml @@ -0,0 +1,5 @@ +- render "blog" do + %h1= @item[:title] + %h2 By #{@item[:author]} + = yield + -#comments= render "partials/disqus_comments" \ No newline at end of file diff --git a/doc-src/lib/blog.rb b/doc-src/lib/blog.rb new file mode 100644 index 00000000..13f262d7 --- /dev/null +++ b/doc-src/lib/blog.rb @@ -0,0 +1,26 @@ +POST_NAME = %r{^/posts/(\d{4})-(\d{2})-(\d{2})-(.*)/$} +require 'time' + +def blog_posts_in_order + @blog_posts_in_order ||= @items.select {|i| i.identifier =~ %r{/posts} }.sort_by {|i| i.identifier } +end + +def previous_post(item = @item) + current_index = blog_posts_in_order.index(item) + if current_index && current_index > 0 + blog_posts_in_order[current_index - 1] + end +end + +def next_post(item = @item) + current_index = blog_posts_in_order.index(item) + if current_index && current_index < blog_posts_in_order.size - 1 + blog_posts_in_order[current_index + 1] + end +end + +def blog_date(item = @item) + if item.identifier =~ POST_NAME + Time.new($1.to_i, $2.to_i, $3.to_i) + end +end From 810b95e7f383c821e2b5c1a6801058773df91f6f Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 17 Apr 2011 11:29:20 -0700 Subject: [PATCH 175/223] Added a mechanism for plugins to extend compass's configuration options. --- doc-src/content/CHANGELOG.markdown | 6 +++ .../content/help/tutorials/extending.markdown | 30 ++++++++++++-- .../help/tutorials/extensions.markdown | 4 ++ lib/compass/configuration.rb | 34 ++++++++++++++++ lib/compass/configuration/data.rb | 1 + test/configuration_test.rb | 40 +++++++++++++++++++ 6 files changed, 112 insertions(+), 3 deletions(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 0e2db03a..0b68404b 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -14,6 +14,12 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/ The Documentation for the [latest preview release](http://beta.compass-style.org/) +0.11.beta.8 (UNRELEASED) +------------------------ + +* Created an official API to add configuration options to compass. + [More information](/help/tutorials/extending/). + 0.11.beta.7 (04/16/2011) ------------------------ * Added support for the new webkit gradient syntax that matches the css3 specification. diff --git a/doc-src/content/help/tutorials/extending.markdown b/doc-src/content/help/tutorials/extending.markdown index 4bc17e9b..9d7f4d88 100644 --- a/doc-src/content/help/tutorials/extending.markdown +++ b/doc-src/content/help/tutorials/extending.markdown @@ -12,7 +12,7 @@ classnames: The sprite engine is the work horse of sprite generation it's the interface for assembling and writing the image file to disk. -## Requirments +### Requirements A sprite engine requires only one method and that is `construct_sprite` which must return an object that responds to `save(filepath)` @@ -25,11 +25,10 @@ Since the Engine module extends base you also have access to all methods in [Com To enable your sprite engine from the config file set sprite_engine = : - + The example below will load `Compass::SassExtension::Sprites::ChunkyPngEngine` sprite_engine = :chunky_png - ### Class Definition @@ -47,3 +46,28 @@ The example below will load `Compass::SassExtension::Sprites::ChunkyPngEngine` end end end + + +## Adding Configuration Properties to Compass + +To add a new configuration property to Compass: + + Compass::Configuration.add_configuration_property(:foobar, "this is a foobar") do + if environment == :production + "foo" + else + "bar" + end + end + +This will do several things: + +1. make it possible for users to set the `foobar` configuration property in their + configuration file. +2. Ruby code can read and write the `foobar` attribute from any configuration object. +3. It will add the comment `# this is a foobar` above the property in the configuration file. + A comment is not required, you can simply omit this argument if you like. +4. The block of code provided allows you to assign a sensible default value according to other + settings in the configuration or by using arbitrary code to determine what the value should + be. For instance it could read from another configuration file or it could change based on + the user's operating system. \ No newline at end of file diff --git a/doc-src/content/help/tutorials/extensions.markdown b/doc-src/content/help/tutorials/extensions.markdown index a364d870..f18e4569 100644 --- a/doc-src/content/help/tutorials/extensions.markdown +++ b/doc-src/content/help/tutorials/extensions.markdown @@ -106,6 +106,10 @@ template directories are not at the top level, you can just do this instead: base_directory = File.join(File.dirname(__FILE__), '..', 'compass') Compass::Frameworks.register('my_extension', :path => base_directory) +### Adding Configuration Options to Compass + +For details on how to add new configuration options to compass [read this](/help/tutorials/extending/#adding-configuration-properties). + Conventions to Follow --------------------- diff --git a/lib/compass/configuration.rb b/lib/compass/configuration.rb index c4e35336..2990e85d 100644 --- a/lib/compass/configuration.rb +++ b/lib/compass/configuration.rb @@ -41,6 +41,40 @@ module Compass :sprite_engine ].flatten + # Registers a new configuration property. + # Extensions can use this to add new configuration options to compass. + # + # @param [Symbol] name The name of the property. + # @param [String] comment A comment for the property. + # @param [Proc] default A method to calculate the default value for the property. + # The proc is executed in the context of the project's configuration data. + def self.add_configuration_property(name, comment = nil, &default) + ATTRIBUTES << name + if comment.is_a?(String) + unless comment[0..0] == "#" + comment = "# #{comment}" + end + unless comment[-1..-1] == "\n" + comment = comment + "\n" + end + Data.class_eval <<-COMMENT + def comment_for_#{name} + #{comment.inspect} + end + COMMENT + end + Data.send(:define_method, :"default_#{name}", &default) if default + Data.inherited_accessor(name) + if name.to_s =~ /dir|path/ + strip_trailing_separator(name) + end + end + + # For testing purposes + def self.remove_configuration_property(name) + ATTRIBUTES.delete(name) + end + end end diff --git a/lib/compass/configuration/data.rb b/lib/compass/configuration/data.rb index 2dcfdca0..9cde724d 100644 --- a/lib/compass/configuration/data.rb +++ b/lib/compass/configuration/data.rb @@ -125,6 +125,7 @@ module Compass Compass::Frameworks.register_directory framework_dir end + # Finds all extensions within a directory and registers them. def discover(frameworks_dir) (self.framework_path ||= []) << frameworks_dir Compass::Frameworks.discover frameworks_dir diff --git a/test/configuration_test.rb b/test/configuration_test.rb index 4d605089..6e75a032 100644 --- a/test/configuration_test.rb +++ b/test/configuration_test.rb @@ -195,4 +195,44 @@ EXPECTED assert_equal "fonts", Compass.configuration.fonts_dir assert_equal "extensions", Compass.configuration.extensions_dir end + + def test_custom_configuration_properties + # Add a configuration property to compass. + Compass::Configuration.add_configuration_property(:foobar, "this is a foobar") do + if environment == :production + "foo" + else + "bar" + end + end + + contents = StringIO.new(<<-CONFIG) + foobar = "baz" + CONFIG + + Compass.add_configuration(contents, "test_strip_trailing_directory_separators") + + assert_equal "baz", Compass.configuration.foobar + expected_serialization = < Date: Sun, 17 Apr 2011 11:36:39 -0700 Subject: [PATCH 176/223] Fix floating point comparision issue. Closes GH-341. --- lib/compass/sass_extensions/functions/gradient_support.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/compass/sass_extensions/functions/gradient_support.rb b/lib/compass/sass_extensions/functions/gradient_support.rb index 0e901462..c21f6b52 100644 --- a/lib/compass/sass_extensions/functions/gradient_support.rb +++ b/lib/compass/sass_extensions/functions/gradient_support.rb @@ -290,7 +290,7 @@ module Compass::SassExtensions::Functions::GradientSupport stop = pos.stop stop = stop.div(max).times(Sass::Script::Number.new(100,["%"])) if stop.numerator_units == max.numerator_units && max.numerator_units != ["%"] # Make sure the color stops are specified in the right order. - if last_value && stop.numerator_units == last_value.numerator_units && stop.denominator_units == last_value.denominator_units && BigDecimal.new(stop.value.to_s) < BigDecimal.new(last_value.value.to_s) + if last_value && stop.numerator_units == last_value.numerator_units && stop.denominator_units == last_value.denominator_units && (stop.value * 1000).round < (last_value.value * 1000).round raise Sass::SyntaxError.new("Color stops must be specified in increasing order. #{stop.value} came after #{last_value.value}.") end last_value = stop From bc8b71b133759eb5993b42426bd2407d70f37f55 Mon Sep 17 00:00:00 2001 From: Eric Meyer Date: Sun, 17 Apr 2011 17:44:33 -0600 Subject: [PATCH 177/223] simple settings to toggle grids on and off while you work --- .../compass/layout/_grid-background.scss | 62 ++++++++++++------- 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/frameworks/compass/stylesheets/compass/layout/_grid-background.scss b/frameworks/compass/stylesheets/compass/layout/_grid-background.scss index ec73e0e7..e7e7306e 100644 --- a/frameworks/compass/stylesheets/compass/layout/_grid-background.scss +++ b/frameworks/compass/stylesheets/compass/layout/_grid-background.scss @@ -2,27 +2,34 @@ @import "compass/css3/background-size"; // Set the color of your columns -$grid-background-column-color : rgba(100, 100, 225, 0.25) !default; +$grid-background-column-color : rgba(100, 100, 225, 0.25) !default; // Set the color of your gutters -$grid-background-gutter-color : rgba(0, 0, 0, 0) !default; +$grid-background-gutter-color : rgba(0, 0, 0, 0) !default; // Set the total number of columns in your grid -$grid-background-total-columns : 24 !default; +$grid-background-total-columns : 24 !default; // Set the width of your columns -$grid-background-column-width : 30px !default; +$grid-background-column-width : 30px !default; // Set the width of your gutters -$grid-background-gutter-width : 10px !default; +$grid-background-gutter-width : 10px !default; // Set the offset, if your columns are padded in from the container edge -$grid-background-offset : 0px !default; +$grid-background-offset : 0px !default; // Set the color of your baseline -$grid-background-baseline-color : rgba(0, 0, 0, 0.5) !default; +$grid-background-baseline-color : rgba(0, 0, 0, 0.5) !default; // Set the height of your baseline grid -$grid-background-baseline-height : 1.5em !default; +$grid-background-baseline-height : 1.5em !default; + +// toggle your columns grids on and off +$show-column-grid-backgrounds : true !default; +// toggle your vertical grids on and off +$show-baseline-grid-backgrounds : true !default; +// toggle all your grids on and off +$show-grid-backgrounds : true !default; // optionally force your grid-image to remain fluid // no matter what units you used to declared your grid. -$grid-background-force-fluid : false !default; +$grid-background-force-fluid : false !default; // Create the gradient needed for baseline grids @@ -118,9 +125,11 @@ $grid-background-force-fluid : false !default; $baseline : $grid-background-baseline-height, $color : $grid-background-baseline-color ) { - @include background-image(get-baseline-gradient($color)); - @include background-size(100% $baseline); - background-position: left top; + @if $show-grid-backgrounds and $show-baseline-grid-backgrounds { + @include background-image(get-baseline-gradient($color)); + @include background-size(100% $baseline); + background-position: left top; + } } // Add just the horizontal grid to an element's background @@ -133,10 +142,12 @@ $grid-background-force-fluid : false !default; $gutter-color : $grid-background-gutter-color, $force-fluid : $grid-background-force-fluid ) { - @include background-image( - get-column-gradient($total,$column,$gutter,$offset,$column-color,$gutter-color, $force-fluid) - ); - background-position: left top; + @if $show-grid-backgrounds and $show-column-grid-backgrounds { + @include background-image( + get-column-gradient($total,$column,$gutter,$offset,$column-color,$gutter-color, $force-fluid) + ); + background-position: left top; + } } // Add both horizontal and baseline grids to an element's background @@ -151,10 +162,17 @@ $grid-background-force-fluid : false !default; $baseline-color : $grid-background-baseline-color, $force-fluid : $grid-background-force-fluid ) { - @include background-image( - get-baseline-gradient($baseline-color), - get-column-gradient($total,$column,$gutter,$offset,$column-color,$gutter-color, $force-fluid) - ); - @include background-size(100% $baseline, auto); - background-position: left top; + @if $show-grid-backgrounds { + @if $show-baseline-grid-backgrounds and $show-column-grid-backgrounds { + @include background-image( + get-baseline-gradient($baseline-color), + get-column-gradient($total,$column,$gutter,$offset,$column-color,$gutter-color, $force-fluid) + ); + @include background-size(100% $baseline, auto); + background-position: left top; + } @else { + @include baseline-grid-background($baseline, $baseline-color); + @include column-grid-background($total,$column,$gutter,$offset,$column-color,$gutter-color, $force-fluid); + } + } } From 314cce80ce3492ccd1c6cbefacea88998676f0ec Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 17 Apr 2011 17:27:34 -0700 Subject: [PATCH 178/223] Merged the v0.11 beta changelog into a single cumulative changelog. --- doc-src/content/CHANGELOG-v0-11-beta.markdown | 282 ++++++++++++++ doc-src/content/CHANGELOG.markdown | 343 +++++++----------- 2 files changed, 423 insertions(+), 202 deletions(-) create mode 100644 doc-src/content/CHANGELOG-v0-11-beta.markdown diff --git a/doc-src/content/CHANGELOG-v0-11-beta.markdown b/doc-src/content/CHANGELOG-v0-11-beta.markdown new file mode 100644 index 00000000..127f0f24 --- /dev/null +++ b/doc-src/content/CHANGELOG-v0-11-beta.markdown @@ -0,0 +1,282 @@ +--- +title: Compass v0.11.0 Beta History +crumb: CHANGELOG +body_id: changelog +layout: article +--- + +0.11.beta.8 (UNRELEASED) +------------------------ + +* Created an official API to add configuration options to compass. + [More information](/help/tutorials/extending/). + +0.11.beta.7 (04/16/2011) +------------------------ +* Added support for the new webkit gradient syntax that matches the css3 specification. + Support for older webkit browsers remains enabled at this time. + To disable it, set `$support-for-original-webkit-gradients` to false. +* There is a new mixin for creating + [pure-css grid backgrounds](/reference/compass/layout/grid_background/) + for verifying grid alignment for both fixed and fluid grids. +* Add support for pixel-based gradients in the original webkit gradient syntax. +* Added a vertical rhythm function for calculating rhythms without returning a property. + +0.11.beta.6 (04/10/2011) +------------------------ +* Added support for degree-based linear and radial gradients (not yet supported for SVG gradients) +* Added opera prefix support for linear and radial gradients. +* The CSS3 `background` mixin's "simple" background that came + before the prefixed versions has been removed. If you + need to target css2 background it is recommended that you set a + the background property before calling the `background` mixin + or you can call the `background-with-css2-fallback` if you want + keep using compass's automatic simplification of the arguments. +* Bug fixes +* Fixed and issue with the compass gemspec in rubygems 1.7 +* Fixed a bug with sprite imports + +0.11.beta.5 (03/27/2011) +------------------------ + +### Compass Sprites + +[Magic Selectors](/help/tutorials/spriting/#magic-selectors) have been added + +Fixed a bug causing a stack level too deep in ruby 1.8.7 + +0.11.beta.4 (03/25/2011) +------------------------ + +* Extensions that are installed into ~/.compass/extensions will be automatically available to all your compass projects. + +### Compass Internals + +* Fixed a small bug in callbacks that was causing them to register twice +* The Sprite classes have been abstracted allowing for different engines +* Bumped chunky_png version to 1.1.0 +* Total rewrite of the sprite generation classes - thanks to [@johnbintz](https://github.com/johnbintz) for the help +* More Rspec tests + +0.11.beta.3 (03/15/2011) +------------------------ + +### Compass CSS3 + +* A new CSS3 mixin for [appearance](/reference/compass/css3/appearance/) was added. +* The font-face mixin has been updated again with the [syntax recommendations + from font-spring](http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax). + The API has not changed. + +### Compass Typography + +* Some text-based mixins have been moved from utilities to the new + typography module. The old imports are deprecated now. + Affected modules: utilities/links, utilities/lists, and utilities/text and + their sub-modules. +* There is a new typography module: [Vertical Rhythm](/reference/compass/typography/vertical_rhythm/). + This makes it easier to align the typography of your page to a common rhythm. + +### Compass Utilities + +* A new mixin `reset-float` is available in the [float module](/reference/compass/utilities/general/float/#mixin-reset-float) that makes it easier to reset the floats introduced from that module. +* A new mixin `reset-float` is available in the [float module](/reference/compass/utilities/general/float/#mixin-reset-float) that makes it easier to reset the floats introduced from that module. +* A new module has been added to create readable text against an arbitrary background color based on the lightness of the background: [compass/utilities/color/contrast](/reference/compass/utilities/color/contrast/). +* The comma-delimited-list has been renamed to delimited-list and + generalized to accept a delimiter which defaults to a comma. + The old function continues to exist, but is deprecated. + +### Compass Internals + +* You can now register callbacks for compilation events so that you can take + custom actions when they occur. For instance, you might want to notify + Growl when a stylesheet compilation error occurs. +* Bug fixes & performance improvements. + +0.11.beta.2 (02/01/2011) +------------------------ +* Updated the font-face mixin so it works in Android 2.2. + Credit: [Paul Irish](http://paulirish.com/). +* The deprecated & unused arguments to the font-face mixin have been removed. + +0.11.beta.1 (01/17/2011) +------------------------ +* Add an option `--skip-overrides` to the sprite + subcommand. When provided, the default variables for overriding the sprite + behavior are not created. Instead, you would change the call to + `sprite-map()` to customize your sprite map. +* Rename the `sprite-position` mixin in the new `sprite/base` module to + `sprite-background-position` in order avoid a naming conflict with the old + sprite module. + +0.11.beta.0 (01/09/2011) +------------------------ + +Compass v0.11 is now feature complete. Future changes to this release will be doc improvements, bug fixes, performance tuning, and addressing user feedback. + +* Added optional support for IE8 with $legacy-support-for-ie8 which defaults to true. +* Updated the opacity and filter-gradient mixins to make IE's hacky DirectX filters + optional based on Compass's legacy support settings. +* Added the ability to piggy back on compass's watcher within your configuration file. + See the [configuration reference](/help/tutorials/configuration-reference/) for details. +* The options passed to the CLI can now be inspected within the compass configuration file. + The CLI options will still override the values set within the config file, but they might + inform other values. For instance `compass compile -e production` will have the environment + parameter preset to `:production` so that you can set other values in the project accordingly. +* New infrastructure for supporting experimental css3 functions that are prefixed but have the same + syntax across all browsers. It is now possible to configure which browsers support which + experimental functions outside of the compass release cycle. For details, see the + [cross browser helpers](/reference/compass/helpers/cross-browser/). +* [Blueprint] Added a new sass function called span($n) to the grid module which replaces + the now **deprecated span mixin**. If you are using this mixin, please replace it with: + `width: span($n)`. +* [Blueprint] Blueprint no longer adds `!important` to the widths of `input`, `textarea`, + and `select` form fields, so compass no longer defaults to using `!important` in those cases. + If you were relying on this behavior, you may need to adjust your stylesheets accordingly. + +0.11.alpha.4 (12/08/2010) +------------------------- + +* Add a `--time` option to the compile and watch commands. This will print out + the time spent compiling each sass file and a total at the end. +* Upgrade FSSM, the internal library that monitors the filesystem events for compass. +* Removed the command line options that were deprecated in v0.10. + +0.11.alpha.3 (12/05/2010) +------------------------- + +* Fix a bug in compass running under ruby 1.9.2 that was introduced in v0.11.alpha.2. + +0.11.alpha.2 (12/05/2010) +------------------------- + +* Merge with Lemonade. Compass now provides a full featured spriting solution. + See the [spriting tutorial](/help/tutorials/spriting/) for more information. +* Compass now depends on Sass 3.1. You can install the preview release: + `gem install sass --pre`. Note: you must also upgrade your haml gem if you + use both in the same application. +* A third argument is now available on the `image-url()` helper. When `true` or + `false`, it will enable/disable the cache buster for a single image url. Or when + a string, it will be the cache buster used. +* Upgrade CSS3 PIE to 1.0-beta3. +* Bug fixes. + +0.11.alpha.1 (11/22/2010) +------------------------- + +* Support for Sass 3.1 alpha version +* CSS3 PIE module. [Docs](/reference/compass/css3/pie/). +* The versioned modules in the last release have been removed. There is now + just a single module for each and the overloaded mixins will discern + deprecated usage and warn accordingly. +* Allow erb processing of non all non-binary filetypes during extension installs. +* Added a `background` mixin for css3 gradient support in the shorthand style. +* Fix for gradients in opera with bordered elements. +* The `multiple-text-shadows` and `multiple-box-shadows` mixins that were present in + v0.11.alpha.0 were removed because they were unnecessary. Just use the `text-shadow` + and `box-shadow` mixins. +* The docs are [getting a make-over](http://beta.compass-style.org/) by Brandon :) + +0.11.alpha.0 (11/15/2010) +------------------------- + +Note: Compass does not currently support Sass 3.1 alphas. + +### Deprecations + +* Deprecated imports and APIs from v0.10 have been removed. +* Changed defaults for the box-shadow and text-shadow mixins. + Previously the horizontal and vertical offset were both 1, which + expected a top left light source. They are now set to 0 which assumes + a direct light source, a more generic default. +* The linear-gradient and radial-gradient mixins have been deprecated. + Instead use the background-image mixin and pass it a gradient function. + The deprecation warning will print out the correct call for you to use. +* Passing an argument to the `blueprint-scaffolding` mixin is not necessary + and has been deprecated. +* Some blueprint color defaults now use color functions instead of color arithmetic. + This may result in different output for those who have color customizations. + +### Blueprint + +* Updated from blueprint 0.9 to blueprint 1.0 + * Added .info and .alert classes to forms.css [CMM] + * Fixed numerous bugs in forms, including the fieldset padding bug in IE6-8 [CMM] + * Fixed specificity problems in typography.css and grid.css [CMM] + * See Lighthouse for more bug fixes + * Full [blueprint changelog][blueprint_10_change] + * If for some reason you'd like to stay on the older version of blueprint you can run + the following command in your project before you upgrade (or after temporarily downgrading): + `compass unpack blueprint` + +### CSS3 v2.0 + +Our CSS3 module makes writing CSS3 today almost as easy as it will be when all +the browsers officially support the new features. The second version of the +compass CSS module brings the API up to date with developments over the past +6 to 9 months of browser changes and more closely matching the most recent CSS +specifications. [Upgrade guide](/help/tutorials/upgrading/antares/). Summary of changes. + +* Support for multiple box shadows and text shadows +* Support for 2d and 3d transforms +* Opt-in SVG support for gradients in opera and IE9. + Set `$experimental-support-for-svg : true` in your + stylesheet to enable it. +* Fixed a radial gradient position bug. +* To generate a simple linear gradient in IE6 & 7, you can now use + the `filter-gradient` mixin. +* New `background-image` mixin with gradient support and allowing + up to 10 images. +* Gradient support for the border-image property. +* Gradient support for list-style-image property. +* Gradient support for the content property. + +### Helpers + +* `linear-gradient()` & `radial-gradient()` helpers now intercept standard css + functions and parse them into Sass Literals. These work with new vendor helpers + (`-moz()`, `-webkit`, `-o`, `-ie`, and `-svg` (yes I know svg is not a vendor)) + to return specific representations of the linear & radial gradients. The + `prefixed()` function will check a value to see if it has a certain + vendor-specific representation. +* New color helpers: `adjust-lightness`, `adjust-saturation`, `scale-lightness`, and `scale-saturation` + make it easier to construct apis that manipulate these color attributes. +* The `elements-of-type()` helper now returns html5 elements when the display is `block` + and also will return only html5 elements for `elements-of-type(html5)` +* Compass now provides several helper functions related to trigonometry. + There's no practical use, but it's hoped that users will find fun things to + do with these for technology demonstrations: + * `sin($number)` - Takes the sine of the number. + * `cos($number)` - Takes the cosine of the number. + * `tan($number)` - Takes the tangent of the number. + * `pi()` - Returns the value of π. + If you provide a number with units of `deg` then it will return a unitless number + after converting to radians. Otherwise, it assumes the number is a radian length measure + and passes the units along to the result. +* `ie-hex-str($color)` returns a #AARRGGBB formatted color suitable for + passing to IE filters. +* A new function `if()` that allows you to switch on a value without using `@if`. + Usage: `if($truth-value, $value-if-true, $value-if-false)`. +* Compass has added a number of new helper functions for lists that begin with + `-compass`, helpers that begin with `-compass` should be considered "private" and + are not to be used by compass users. Sass 3.1 will have proper list support, + these are a work around until that time. + +### Configuration + +* Added a new configuration property to disable sass warnings: `disable_warnings` + +### Core Framework + +* New layout mixins for absolute positioning: stretch, stretch-x, stretch-y + +### Rails + +* In rails 3, there's no need for an initializer. Instead we use a + Railstie. +* We now default to app/stylesheets for sass files and public/stylesheets for + css files -- though they can still be changed after installation or on the + command line during project initialization. +* Compass is now a gem plugin in a rails environment. +* In a rails3 environment the compass configuration can now be + changed without restarting the rails server process. \ No newline at end of file diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 0b68404b..9c2bfdfc 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -14,186 +14,19 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/ The Documentation for the [latest preview release](http://beta.compass-style.org/) -0.11.beta.8 (UNRELEASED) ------------------------- +0.11.0 (UNRELEASED) +------------------- -* Created an official API to add configuration options to compass. - [More information](/help/tutorials/extending/). +This changelog entry is aggregated across all the v0.11 beta releases. +If you're upgrading from a previous beta v0.11 beta release, you can read +[the 0.11 beta release notes here](/CHANGELOG-v0-11-beta/). -0.11.beta.7 (04/16/2011) ------------------------- -* Added support for the new webkit gradient syntax that matches the css3 specification. - Support for older webkit browsers remains enabled at this time. - To disable it, set `$support-for-original-webkit-gradients` to false. -* There is a new mixin for creating - [pure-css grid backgrounds](/reference/compass/layout/grid_background/) - for verifying grid alignment for both fixed and fluid grids. -* Add support for pixel-based gradients in the original webkit gradient syntax. -* Added a vertical rhythm function for calculating rhythms without returning a property. +### !important -0.11.beta.6 (04/10/2011) ------------------------- -* Added support for degree-based linear and radial gradients (not yet supported for SVG gradients) -* Added opera prefix support for linear and radial gradients. -* The CSS3 `background` mixin's "simple" background that came - before the prefixed versions has been removed. If you - need to target css2 background it is recommended that you set a - the background property before calling the `background` mixin - or you can call the `background-with-css2-fallback` if you want - keep using compass's automatic simplification of the arguments. -* Bug fixes -* Fixed and issue with the compass gemspec in rubygems 1.7 -* Fixed a bug with sprite imports +#### Breaking Changes & Deprecations: -0.11.beta.5 (03/27/2011) ------------------------- - -### Compass Sprites - -[Magic Selectors](/help/tutorials/spriting/#magic-selectors) have been added - -Fixed a bug causing a stack level too deep in ruby 1.8.7 - -0.11.beta.4 (03/25/2011) ------------------------- - -* Extensions that are installed into ~/.compass/extensions will be automatically available to all your compass projects. - -### Compass Internals - -* Fixed a small bug in callbacks that was causing them to register twice -* The Sprite classes have been abstracted allowing for different engines -* Bumped chunky_png version to 1.1.0 -* Total rewrite of the sprite generation classes - thanks to [@johnbintz](https://github.com/johnbintz) for the help -* More Rspec tests - -0.11.beta.3 (03/15/2011) ------------------------- - -### Compass CSS3 - -* A new CSS3 mixin for [appearance](/reference/compass/css3/appearance/) was added. -* The font-face mixin has been updated again with the [syntax recommendations - from font-spring](http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax). - The API has not changed. - -### Compass Typography - -* Some text-based mixins have been moved from utilities to the new - typography module. The old imports are deprecated now. - Affected modules: utilities/links, utilities/lists, and utilities/text and - their sub-modules. -* There is a new typography module: [Vertical Rhythm](/reference/compass/typography/vertical_rhythm/). - This makes it easier to align the typography of your page to a common rhythm. - -### Compass Utilities - -* A new mixin `reset-float` is available in the [float module](/reference/compass/utilities/general/float/#mixin-reset-float) that makes it easier to reset the floats introduced from that module. -* A new mixin `reset-float` is available in the [float module](/reference/compass/utilities/general/float/#mixin-reset-float) that makes it easier to reset the floats introduced from that module. -* A new module has been added to create readable text against an arbitrary background color based on the lightness of the background: [compass/utilities/color/contrast](/reference/compass/utilities/color/contrast/). -* The comma-delimited-list has been renamed to delimited-list and - generalized to accept a delimiter which defaults to a comma. - The old function continues to exist, but is deprecated. - -### Compass Internals - -* You can now register callbacks for compilation events so that you can take - custom actions when they occur. For instance, you might want to notify - Growl when a stylesheet compilation error occurs. -* Bug fixes & performance improvements. - -0.11.beta.2 (02/01/2011) ------------------------- -* Updated the font-face mixin so it works in Android 2.2. - Credit: [Paul Irish](http://paulirish.com/). -* The deprecated & unused arguments to the font-face mixin have been removed. - -0.11.beta.1 (01/17/2011) ------------------------- -* Add an option `--skip-overrides` to the sprite - subcommand. When provided, the default variables for overriding the sprite - behavior are not created. Instead, you would change the call to - `sprite-map()` to customize your sprite map. -* Rename the `sprite-position` mixin in the new `sprite/base` module to - `sprite-background-position` in order avoid a naming conflict with the old - sprite module. - -0.11.beta.0 (01/09/2011) ------------------------- - -Compass v0.11 is now feature complete. Future changes to this release will be doc improvements, bug fixes, performance tuning, and addressing user feedback. - -* Added optional support for IE8 with $legacy-support-for-ie8 which defaults to true. -* Updated the opacity and filter-gradient mixins to make IE's hacky DirectX filters - optional based on Compass's legacy support settings. -* Added the ability to piggy back on compass's watcher within your configuration file. - See the [configuration reference](/help/tutorials/configuration-reference/) for details. -* The options passed to the CLI can now be inspected within the compass configuration file. - The CLI options will still override the values set within the config file, but they might - inform other values. For instance `compass compile -e production` will have the environment - parameter preset to `:production` so that you can set other values in the project accordingly. -* New infrastructure for supporting experimental css3 functions that are prefixed but have the same - syntax across all browsers. It is now possible to configure which browsers support which - experimental functions outside of the compass release cycle. For details, see the - [cross browser helpers](/reference/compass/helpers/cross-browser/). -* [Blueprint] Added a new sass function called span($n) to the grid module which replaces - the now **deprecated span mixin**. If you are using this mixin, please replace it with: - `width: span($n)`. -* [Blueprint] Blueprint no longer adds `!important` to the widths of `input`, `textarea`, - and `select` form fields, so compass no longer defaults to using `!important` in those cases. - If you were relying on this behavior, you may need to adjust your stylesheets accordingly. - -0.11.alpha.4 (12/08/2010) -------------------------- - -* Add a `--time` option to the compile and watch commands. This will print out - the time spent compiling each sass file and a total at the end. -* Upgrade FSSM, the internal library that monitors the filesystem events for compass. -* Removed the command line options that were deprecated in v0.10. - -0.11.alpha.3 (12/05/2010) -------------------------- - -* Fix a bug in compass running under ruby 1.9.2 that was introduced in v0.11.alpha.2. - -0.11.alpha.2 (12/05/2010) -------------------------- - -* Merge with Lemonade. Compass now provides a full featured spriting solution. - See the [spriting tutorial](/help/tutorials/spriting/) for more information. -* Compass now depends on Sass 3.1. You can install the preview release: - `gem install sass --pre`. Note: you must also upgrade your haml gem if you - use both in the same application. -* A third argument is now available on the `image-url()` helper. When `true` or - `false`, it will enable/disable the cache buster for a single image url. Or when - a string, it will be the cache buster used. -* Upgrade CSS3 PIE to 1.0-beta3. -* Bug fixes. - -0.11.alpha.1 (11/22/2010) -------------------------- - -* Support for Sass 3.1 alpha version -* CSS3 PIE module. [Docs](/reference/compass/css3/pie/). -* The versioned modules in the last release have been removed. There is now - just a single module for each and the overloaded mixins will discern - deprecated usage and warn accordingly. -* Allow erb processing of non all non-binary filetypes during extension installs. -* Added a `background` mixin for css3 gradient support in the shorthand style. -* Fix for gradients in opera with bordered elements. -* The `multiple-text-shadows` and `multiple-box-shadows` mixins that were present in - v0.11.alpha.0 were removed because they were unnecessary. Just use the `text-shadow` - and `box-shadow` mixins. -* The docs are [getting a make-over](http://beta.compass-style.org/) by Brandon :) - -0.11.alpha.0 (11/15/2010) -------------------------- - -Note: Compass does not currently support Sass 3.1 alphas. - -### Deprecations - -* Deprecated imports and APIs from v0.10 have been removed. +* Deprecated imports and APIs from v0.10 have been removed. If you are upgrading + from v0.8, please upgrade to v0.10 before installing v0.11. * Changed defaults for the box-shadow and text-shadow mixins. Previously the horizontal and vertical offset were both 1, which expected a top left light source. They are now set to 0 which assumes @@ -205,6 +38,29 @@ Note: Compass does not currently support Sass 3.1 alphas. and has been deprecated. * Some blueprint color defaults now use color functions instead of color arithmetic. This may result in different output for those who have color customizations. +* The deprecated & unused arguments to the `font-face` mixin have been removed. + +#### Dependencies + +* Compass now depends on Sass 3.1 which is a new stand-alone gem that has been separated + from Haml. **If you have Haml installed, you must upgrade it to 3.1 as well.** +* Compass now depends on ChunkyPNG, a pure-ruby library for generating PNG files. +* The FSSM library that used to be vendored is now upgraded and a normal gem dependency. + If you don't know what this means, then you don't need to care :) + +### New Sass Features + +Sass 3.1 brings a ton of great new features that Compass now uses and you can too! + +* Proper List Support. Space and Comma separated lists used to cause values to become strings when passing them to mixins. Now the values in lists are preserved as their original types. +* Sass-based Functions. Define your own value functions and use them anywhere. +* Keyword Style Argument passing to Functions and Mixins. It can be hard to understand what + the values being passed to a mixin or function are for, use keyword style arguments to + make it easier to understand what's going on. +* `@media` bubbling. Use a media declaration anywhere and it will be bubbled to the top level + for you. + +For more information about the new Sass features, see the [Sass CHANGELOG](http://sass-lang.com/docs/yardoc/file.SASS_CHANGELOG.html). ### Blueprint @@ -217,8 +73,26 @@ Note: Compass does not currently support Sass 3.1 alphas. * If for some reason you'd like to stay on the older version of blueprint you can run the following command in your project before you upgrade (or after temporarily downgrading): `compass unpack blueprint` +* [Blueprint] Blueprint no longer adds `!important` to the widths of `input`, `textarea`, + and `select` form fields, so compass no longer defaults to using `!important` in those cases. + If you were relying on this behavior, you may need to adjust your stylesheets accordingly. +* [Blueprint] Added a new sass function called span($n) to the grid module which replaces + the now **deprecated span mixin**. If you are using this mixin, please replace it with: + `width: span($n)`. -### CSS3 v2.0 +### Spriting Support + +* Compass now has a world-class spriting system after merging with [Lemonade][lemonade]. + See the [spriting tutorial](/help/tutorials/spriting/) for more information. +* The [old sprite module](/reference/compass/utilities/sprites/sprite_img/) is still available + for working with hand-generated sprite maps. +* The Sprite internals are abstracted allowing for different engines. By default + compass uses ChunkyPNG which only supports PNG files, so some users might prefer + ImageMagic which is available via a [plugin](#XXXLINKME). +* [Magic Selectors](/help/tutorials/spriting/#magic-selectors) make it simple to define + sprites that work with user interaction pseudo classes like `:hover`, `:active`, etc. + +### CSS3 Module v2.0 Our CSS3 module makes writing CSS3 today almost as easy as it will be when all the browsers officially support the new features. The second version of the @@ -226,30 +100,39 @@ compass CSS module brings the API up to date with developments over the past 6 to 9 months of browser changes and more closely matching the most recent CSS specifications. [Upgrade guide](/help/tutorials/upgrading/antares/). Summary of changes. -* Support for multiple box shadows and text shadows -* Support for 2d and 3d transforms -* Opt-in SVG support for gradients in opera and IE9. - Set `$experimental-support-for-svg : true` in your +* Support for multiple [box shadows](/reference/compass/css3/box_shadow/) + and multiple [text shadows](/reference/compass/css3/text-shadow/) +* Support for [2d and 3d transforms](/reference/compass/css3/transform/) +* Opt-in [SVG support](/reference/compass/support/#const-experimental-support-for-svg) + for gradients in opera and IE9. Set `$experimental-support-for-svg : true` in your stylesheet to enable it. -* Fixed a radial gradient position bug. * To generate a simple linear gradient in IE6 & 7, you can now use - the `filter-gradient` mixin. -* New `background-image` mixin with gradient support and allowing - up to 10 images. -* Gradient support for the border-image property. -* Gradient support for list-style-image property. -* Gradient support for the content property. + the [filter-gradient mixin](/reference/compass/css3/images/#mixin-filter-gradient). +* New [images module](/reference/compass/css3/images/) makes gradients simple for + all properties that support them using the CSS3 standard syntax. +* Compass now has opt-in support for the CSS3 PIE library. [Docs](/reference/compass/css3/pie/). +* Added optional support for IE8 with `$legacy-support-for-ie8` which defaults to true. +* Updated the `opacity` and `filter-gradient` mixins to make IE's hacky DirectX filters + optional based on Compass's legacy support settings. +* A new CSS3 mixin for [appearance](/reference/compass/css3/appearance/) was added. +* The font-face mixin has been updated again with the [syntax recommendations + from font-spring](http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax). + The API has not changed. +* Added support for the new webkit gradient syntax that matches the css3 specification. + Support for older webkit browsers remains enabled at this time. + To disable it, set `$support-for-original-webkit-gradients` to false. -### Helpers +### Helper Functions * `linear-gradient()` & `radial-gradient()` helpers now intercept standard css functions and parse them into Sass Literals. These work with new vendor helpers - (`-moz()`, `-webkit`, `-o`, `-ie`, and `-svg` (yes I know svg is not a vendor)) + (`-moz()`, `-webkit`, `-o`, `-ie`, and `-svg` (yes, we know svg is not a vendor)) to return specific representations of the linear & radial gradients. The `prefixed()` function will check a value to see if it has a certain vendor-specific representation. -* New color helpers: `adjust-lightness`, `adjust-saturation`, `scale-lightness`, and `scale-saturation` - make it easier to construct apis that manipulate these color attributes. +* New color helpers: `adjust-lightness`, `adjust-saturation`, `scale-lightness`, + and `scale-saturation` make it easier to construct apis that manipulate these + color attributes. * The `elements-of-type()` helper now returns html5 elements when the display is `block` and also will return only html5 elements for `elements-of-type(html5)` * Compass now provides several helper functions related to trigonometry. @@ -260,24 +143,64 @@ specifications. [Upgrade guide](/help/tutorials/upgrading/antares/). Summary of * `tan($number)` - Takes the tangent of the number. * `pi()` - Returns the value of π. If you provide a number with units of `deg` then it will return a unitless number - after converting to radians. Otherwise, it assumes the number is a radian length measure - and passes the units along to the result. + after converting to radians. Otherwise, it assumes the number is a radian length + measure and passes the units along to the result. * `ie-hex-str($color)` returns a #AARRGGBB formatted color suitable for passing to IE filters. -* A new function `if()` that allows you to switch on a value without using `@if`. - Usage: `if($truth-value, $value-if-true, $value-if-false)`. -* Compass has added a number of new helper functions for lists that begin with - `-compass`, helpers that begin with `-compass` should be considered "private" and - are not to be used by compass users. Sass 3.1 will have proper list support, - these are a work around until that time. +* Compass has added a number of new helper functions that begin with + `-compass`, helpers that begin with `-compass` should be considered "private" + and are not to be used. +* A third argument is now available on the `image-url()` helper. When `true` or + `false`, it will enable/disable the cache buster for a single image url. Or when + a string, will be the cache buster value that is used. -### Configuration +### Configuration Files * Added a new configuration property to disable sass warnings: `disable_warnings` +* New infrastructure for supporting experimental css3 functions that are prefixed but have + the same syntax across all browsers. It is now possible to configure which browsers + support which experimental functions outside of the compass release cycle. + For details, see the [cross browser helpers](/reference/compass/helpers/cross-browser/). +* The options passed to the CLI can now be inspected within the compass configuration file. + The CLI options will still override the values set within the config file, but they might + inform other values. For instance `compass compile -e production` will have the environment + parameter preset to `:production` so that you can set other values in the project accordingly. +* Added the ability to piggy back on compass's watcher within your configuration file. + See the [configuration reference](/help/tutorials/configuration-reference/) for details. +* You can now register callbacks for compilation events so that you can take + custom actions when they occur. For instance, you might want to notify + Growl when a stylesheet compilation error occurs. -### Core Framework +### New Compass Typography Module + +* Some text-based mixins have been moved from utilities to the new + typography module. The old imports are deprecated now. + Affected modules: `utilities/links`, `utilities/lists`, and `utilities/text` and + their sub-modules. +* There is a new typography module: + [Vertical Rhythm](/reference/compass/typography/vertical_rhythm/). + This makes it easier to align the typography of your page to a common rhythm. + +### Compass Layout Module * New layout mixins for absolute positioning: stretch, stretch-x, stretch-y +* There is a new mixin for creating + [pure-css grid backgrounds](/reference/compass/layout/grid_background/) + for verifying grid alignment for both fixed and fluid grids. + +### Compass Utilities + +* A new mixin `reset-float` is available in the [float module](/reference/compass/utilities/general/float/#mixin-reset-float) that makes it easier to reset the floats introduced from that module. +* A new mixin `reset-float` is available in the [float module](/reference/compass/utilities/general/float/#mixin-reset-float) that makes it easier to reset the floats introduced from that module. +* A new module has been added to create readable text against an arbitrary background color based on the lightness of the background: [compass/utilities/color/contrast](/reference/compass/utilities/color/contrast/). +* The comma-delimited-list has been renamed to delimited-list and + generalized to accept a delimiter which defaults to a comma. + The old function continues to exist, but is deprecated. + +### Command Line + +* Add a `--time` option to the compile and watch commands. This will print out + the time spent compiling each sass file and a total at the end. ### Rails @@ -290,6 +213,20 @@ specifications. [Upgrade guide](/help/tutorials/upgrading/antares/). Summary of * In a rails3 environment the compass configuration can now be changed without restarting the rails server process. +### Extensions + +* Compass now allows ERB processing of non all non-binary filetypes during + extension installs. +* Extensions that are installed into `~/.compass/extensions` will be automatically + available to all your compass projects. +* Created an official API to add configuration options to compass. + [More information](/help/tutorials/extending/). + +### Miscellaneous + +* We have a new website design from [Brandon Mathis][brandon] +* Compass now officially supports the following ruby interpreters: + jruby, ruby 1.8.7, ruby 1.9.2, ree, and rubinius. 0.10.7 (UNRELEASED) ------------------- @@ -1154,3 +1091,5 @@ Almost definitely. Please let me know if you encounter any problems and I'll get [inline-block-list]: http://compass-style.org/reference/compass/typography/lists/inline-block-list/ [html5-reset]: http://compass-style.org/reference/compass/reset/utilities/#mixin-reset-html5 [blueprint_10_change]: https://github.com/chriseppstein/compass/compare/a05e1ee7c0a1e4c0f0595a8bb812daa47872e476...864780969d872a93b1fd3b4f39f29dd9f0c3fe75 +[brandon]: http://brandonmathis.com/ +[lemonade]: http://www.hagenburger.net/BLOG/Lemonade-CSS-Sprites-for-Sass-Compass.html \ No newline at end of file From d416ee9ba161fa23092741c5508f1ad2d7d3eb6d Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 17 Apr 2011 17:29:48 -0700 Subject: [PATCH 179/223] Comment out the blog link for now. --- doc-src/layouts/partials/main-navigation.haml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc-src/layouts/partials/main-navigation.haml b/doc-src/layouts/partials/main-navigation.haml index b6858d0b..e439ffe1 100644 --- a/doc-src/layouts/partials/main-navigation.haml +++ b/doc-src/layouts/partials/main-navigation.haml @@ -10,8 +10,8 @@ %a{:href => "/reference/compass/", :rel => "documentation"} Reference %li %a{:href => "/help/", :rel=> "help"} Help - %li - %a{:href => "/blog/", :rel=> "blog"} Blog + -# %li + -# %a{:href => "/blog/", :rel=> "blog"} Blog %li %a{:href => "/get-involved/", :rel=> "get-involved"} Get Involved %li From 5b9a90f83b5ed5ef6ff5c05599c82e72c80b54b7 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 17 Apr 2011 18:16:45 -0700 Subject: [PATCH 180/223] Bug fixes reported by ryan bigg. --- doc-src/content/CHANGELOG.markdown | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 9c2bfdfc..2cbc0600 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -190,7 +190,6 @@ specifications. [Upgrade guide](/help/tutorials/upgrading/antares/). Summary of ### Compass Utilities -* A new mixin `reset-float` is available in the [float module](/reference/compass/utilities/general/float/#mixin-reset-float) that makes it easier to reset the floats introduced from that module. * A new mixin `reset-float` is available in the [float module](/reference/compass/utilities/general/float/#mixin-reset-float) that makes it easier to reset the floats introduced from that module. * A new module has been added to create readable text against an arbitrary background color based on the lightness of the background: [compass/utilities/color/contrast](/reference/compass/utilities/color/contrast/). * The comma-delimited-list has been renamed to delimited-list and @@ -205,7 +204,7 @@ specifications. [Upgrade guide](/help/tutorials/upgrading/antares/). Summary of ### Rails * In rails 3, there's no need for an initializer. Instead we use a - Railstie. + Railtie. If you have one, please remove it. * We now default to app/stylesheets for sass files and public/stylesheets for css files -- though they can still be changed after installation or on the command line during project initialization. From 3e013b8bd5fb3e33cdc160655ff142f471826b95 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Sun, 17 Apr 2011 23:11:25 -0400 Subject: [PATCH 181/223] removed require for bigdecimal and updated the deprecated functions in the gem file --- Gemfile.lock | 2 +- compass.gemspec | 4 ++-- lib/compass/sass_extensions/functions/gradient_support.rb | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 4ed79c1f..5551c75d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.7.d845c4d) + compass (0.11.beta.7.5b9a90f) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/compass.gemspec b/compass.gemspec index 00e54352..deb6344a 100644 --- a/compass.gemspec +++ b/compass.gemspec @@ -8,9 +8,9 @@ Gem::Specification.new do |gemspec| gemspec.homepage = "http://compass-style.org" gemspec.authors = ["Chris Eppstein", "Eric A. Meyer", "Brandon Mathis", "Nico Hagenburger", "Scott Davis"] gemspec.email = "chris@eppsteins.net" - gemspec.default_executable = "compass" + #gemspec.default_executable = "compass" #deprecated gemspec.executables = %w(compass) - gemspec.has_rdoc = false + #gemspec.has_rdoc = false #deprecated gemspec.require_paths = %w(lib) gemspec.rubygems_version = "1.3.5" gemspec.summary = %q{A Real Stylesheet Framework} diff --git a/lib/compass/sass_extensions/functions/gradient_support.rb b/lib/compass/sass_extensions/functions/gradient_support.rb index c21f6b52..d9dc7573 100644 --- a/lib/compass/sass_extensions/functions/gradient_support.rb +++ b/lib/compass/sass_extensions/functions/gradient_support.rb @@ -1,4 +1,3 @@ -require 'bigdecimal' module Compass::SassExtensions::Functions::GradientSupport GRADIENT_ASPECTS = %w(webkit moz svg pie css2 o owg).freeze From 6b884d34c3317bd845d6250e6ec41ed59df4d4bf Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Tue, 19 Apr 2011 20:31:29 -0400 Subject: [PATCH 182/223] added the ability to disable magic sprites --- Gemfile.lock | 2 +- .../compass/utilities/sprites/_base.scss | 7 ++++++- spec/sprites_spec.rb | 19 +++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5551c75d..683be5e6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.7.5b9a90f) + compass (0.11.beta.7.3e013b8) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss b/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss index cd77be43..bc63081b 100644 --- a/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss +++ b/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss @@ -20,12 +20,17 @@ $sprite-selectors: hover, target, active !default; // class or you can specify the `sprite-url` explicitly like this: // // background: $map no-repeat; + +$disable-magic-sprite-selectors:false !default; + @mixin sprite($map, $sprite, $dimensions: false, $offset-x: 0, $offset-y: 0) { @include sprite-background-position($map, $sprite, $offset-x, $offset-y); @if $dimensions { @include sprite-dimensions($map, $sprite); } - @include sprite-selectors($map, $sprite, $sprite); + @if not $disable-magic-sprite-selectors { + @include sprite-selectors($map, $sprite, $sprite); + } } // Include the selectors for the `$sprite` given the `$map` and the diff --git a/spec/sprites_spec.rb b/spec/sprites_spec.rb index afae08d2..2b39c8a3 100644 --- a/spec/sprites_spec.rb +++ b/spec/sprites_spec.rb @@ -517,6 +517,25 @@ describe Compass::Sprites do CSS end + it "should not render corret sprite with css selectors via magic mixin" do + css = render <<-SCSS + @import "selectors/*.png"; + a { + $disable-magic-sprite-selectors:true; + @include selectors-sprite(ten-by-ten) + } + SCSS + css.should == <<-CSS + .selectors-sprite, a { + background: url('/selectors-edfef809e2.png') no-repeat; + } + + a { + background-position: 0 0; + } + CSS + end + it "should raise error on filenames that are not valid sass syntax" do lambda do render <<-SCSS From be8e5f53132d289904035746eca0bea32feadbec Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 18 Apr 2011 09:04:21 -0700 Subject: [PATCH 183/223] Keep a list of blog authors in a yaml file. --- doc-src/authors.yml | 11 +++++++++++ doc-src/layouts/post.haml | 8 +++++++- doc-src/lib/blog.rb | 11 +++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 doc-src/authors.yml diff --git a/doc-src/authors.yml b/doc-src/authors.yml new file mode 100644 index 00000000..1f6fe407 --- /dev/null +++ b/doc-src/authors.yml @@ -0,0 +1,11 @@ +chris: + fullname: Chris Eppstein + byline_link: http://chriseppstein.github.com/ +brandon: + fullname: Brandon Mathis +eric: + fullname: Eric Meyer +nico: + fullname: Nico Hagenburger +scott: + fullname: Scott Davis diff --git a/doc-src/layouts/post.haml b/doc-src/layouts/post.haml index 8d114983..daf7640b 100644 --- a/doc-src/layouts/post.haml +++ b/doc-src/layouts/post.haml @@ -1,5 +1,11 @@ - render "blog" do %h1= @item[:title] - %h2 By #{@item[:author]} + - author = author(@item[:author]) + %h2 + By + - if author["byline_link"] + %a{:href=>author["byline_link"]}= author["fullname"] + - else + = author["fullname"] = yield -#comments= render "partials/disqus_comments" \ No newline at end of file diff --git a/doc-src/lib/blog.rb b/doc-src/lib/blog.rb index 13f262d7..214776ef 100644 --- a/doc-src/lib/blog.rb +++ b/doc-src/lib/blog.rb @@ -1,5 +1,6 @@ POST_NAME = %r{^/posts/(\d{4})-(\d{2})-(\d{2})-(.*)/$} require 'time' +require 'yaml' def blog_posts_in_order @blog_posts_in_order ||= @items.select {|i| i.identifier =~ %r{/posts} }.sort_by {|i| i.identifier } @@ -24,3 +25,13 @@ def blog_date(item = @item) Time.new($1.to_i, $2.to_i, $3.to_i) end end + +def authors + @site.cached("authors") do + YAML.load_file("#{File.dirname(__FILE__)}/../authors.yml") + end +end + +def author(author_id) + authors[author_id] +end From 7b0bb7ad2b7a39dbe3ceae21054685ec6ce912b5 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Tue, 19 Apr 2011 19:59:54 -0700 Subject: [PATCH 184/223] Change FSSM to a gem dependency instead of vendoring it. Closes GH-343. --- Gemfile | 3 + Gemfile.lock | 6 +- compass.gemspec | 1 + lib/compass/commands/watch_project.rb | 7 +- lib/vendor/fssm/fssm.rb | 33 -- lib/vendor/fssm/fssm/backends/fsevents.rb | 36 -- lib/vendor/fssm/fssm/backends/inotify.rb | 26 - lib/vendor/fssm/fssm/backends/polling.rb | 25 - .../fssm/fssm/backends/rubycocoa/fsevents.rb | 131 ----- lib/vendor/fssm/fssm/monitor.rb | 26 - lib/vendor/fssm/fssm/path.rb | 91 ---- lib/vendor/fssm/fssm/pathname.rb | 502 ------------------ lib/vendor/fssm/fssm/state/directory.rb | 57 -- lib/vendor/fssm/fssm/state/file.rb | 24 - lib/vendor/fssm/fssm/support.rb | 63 --- lib/vendor/fssm/fssm/tree.rb | 176 ------ 16 files changed, 10 insertions(+), 1197 deletions(-) delete mode 100644 lib/vendor/fssm/fssm.rb delete mode 100644 lib/vendor/fssm/fssm/backends/fsevents.rb delete mode 100644 lib/vendor/fssm/fssm/backends/inotify.rb delete mode 100644 lib/vendor/fssm/fssm/backends/polling.rb delete mode 100644 lib/vendor/fssm/fssm/backends/rubycocoa/fsevents.rb delete mode 100644 lib/vendor/fssm/fssm/monitor.rb delete mode 100644 lib/vendor/fssm/fssm/path.rb delete mode 100644 lib/vendor/fssm/fssm/pathname.rb delete mode 100644 lib/vendor/fssm/fssm/state/directory.rb delete mode 100644 lib/vendor/fssm/fssm/state/file.rb delete mode 100644 lib/vendor/fssm/fssm/support.rb delete mode 100644 lib/vendor/fssm/fssm/tree.rb diff --git a/Gemfile b/Gemfile index b1eebc5d..6e0e2b33 100644 --- a/Gemfile +++ b/Gemfile @@ -1,5 +1,7 @@ source :rubygems +gemspec + gem "compass", :path => "." gem "cucumber", "~> 0.9.2" gem "rspec", "~>2.0.0" @@ -11,6 +13,7 @@ gem "haml", "~> 3.1.0.alpha" gem "rcov" gem "rubyzip" gem "livereload" +gem "rb-fsevent" gem "ruby-prof" unless RUBY_PLATFORM == "java" diff --git a/Gemfile.lock b/Gemfile.lock index 683be5e6..c6acc53d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,8 +7,9 @@ GIT PATH remote: . specs: - compass (0.11.beta.7.3e013b8) + compass (0.11.beta.7.37998a4) chunky_png (~> 1.1.0) + fssm (~> 0.2) sass (>= 3.1.0.alpha.249) GEM @@ -65,6 +66,7 @@ GEM abstract (>= 1.0.0) eventmachine (0.12.10) eventmachine (0.12.10-java) + fssm (0.2.6.1) gherkin (2.2.9) json (~> 1.4.6) term-ansicolor (~> 1.0.5) @@ -106,6 +108,7 @@ GEM rake (>= 0.8.7) thor (~> 0.14.4) rake (0.8.7) + rb-fsevent (0.4.0) rcov (0.9.9) rcov (0.9.9-java) rspec (2.0.1) @@ -144,6 +147,7 @@ DEPENDENCIES livereload mocha rails (~> 3.0.0.rc) + rb-fsevent rcov rspec (~> 2.0.0) ruby-prof diff --git a/compass.gemspec b/compass.gemspec index deb6344a..bd561598 100644 --- a/compass.gemspec +++ b/compass.gemspec @@ -17,6 +17,7 @@ Gem::Specification.new do |gemspec| gemspec.add_dependency 'sass', '>= 3.1.0.alpha.249' gemspec.add_dependency 'chunky_png', '~> 1.1.0' + gemspec.add_dependency 'fssm', '~> 0.2' gemspec.files = %w(README.markdown LICENSE.markdown VERSION.yml Rakefile) gemspec.files += Dir.glob("bin/*") diff --git a/lib/compass/commands/watch_project.rb b/lib/compass/commands/watch_project.rb index 3d35023a..1a3fd66c 100644 --- a/lib/compass/commands/watch_project.rb +++ b/lib/compass/commands/watch_project.rb @@ -39,12 +39,7 @@ module Compass check_for_sass_files!(new_compiler_instance) recompile - begin - require 'fssm' - rescue LoadError - $: << File.join(Compass.lib_directory, 'vendor', 'fssm') - retry - end + require 'fssm' if options[:poll] require "fssm/backends/polling" diff --git a/lib/vendor/fssm/fssm.rb b/lib/vendor/fssm/fssm.rb deleted file mode 100644 index 058cbf3c..00000000 --- a/lib/vendor/fssm/fssm.rb +++ /dev/null @@ -1,33 +0,0 @@ -dir = File.dirname(__FILE__) -$LOAD_PATH.unshift dir unless $LOAD_PATH.include?(dir) - -module FSSM - FileNotFoundError = Class.new(StandardError) - CallbackError = Class.new(StandardError) - - class << self - def dbg(msg=nil) - STDERR.puts(msg) - end - - def monitor(*args, &block) - monitor = FSSM::Monitor.new - FSSM::Support.use_block(args.empty? ? monitor : monitor.path(*args), block) - - monitor.run - end - end -end - -require 'thread' - -require 'fssm/pathname' -require 'fssm/support' -require 'fssm/tree' -require 'fssm/path' -require 'fssm/state/directory' -require 'fssm/state/file' -require 'fssm/monitor' - -require "fssm/backends/#{FSSM::Support.backend.downcase}" -FSSM::Backends::Default = FSSM::Backends.const_get(FSSM::Support.backend) diff --git a/lib/vendor/fssm/fssm/backends/fsevents.rb b/lib/vendor/fssm/fssm/backends/fsevents.rb deleted file mode 100644 index 800cebd1..00000000 --- a/lib/vendor/fssm/fssm/backends/fsevents.rb +++ /dev/null @@ -1,36 +0,0 @@ -require File.join(File.dirname(__FILE__), 'rubycocoa/fsevents') - -module FSSM::Backends - class FSEvents - def initialize - @handlers = {} - @fsevents = [] - end - - def add_handler(handler, preload=true) - @handlers[handler.path.to_s] = handler - - fsevent = Rucola::FSEvents.new(handler.path.to_s, {:latency => 0.5}) do |events| - events.each do |event| - handler.refresh(event.path) - end - end - - fsevent.create_stream - handler.refresh(nil, true) if preload - fsevent.start - @fsevents << fsevent - end - - def run - begin - OSX.CFRunLoopRun - rescue Interrupt - @fsevents.each do |fsev| - fsev.stop - end - end - end - - end -end diff --git a/lib/vendor/fssm/fssm/backends/inotify.rb b/lib/vendor/fssm/fssm/backends/inotify.rb deleted file mode 100644 index 74af1bcf..00000000 --- a/lib/vendor/fssm/fssm/backends/inotify.rb +++ /dev/null @@ -1,26 +0,0 @@ -module FSSM::Backends - class Inotify - def initialize - @notifier = INotify::Notifier.new - end - - def add_handler(handler, preload=true) - @notifier.watch(handler.path.to_s, :recursive, :attrib, :modify, :create, - :delete, :delete_self, :moved_from, :moved_to, :move_self) do |event| - path = FSSM::Pathname.for(event.absolute_name) - path = path.dirname unless event.name == "" # Event on root directory - handler.refresh(path) - end - - handler.refresh(nil, true) if preload - end - - def run - begin - @notifier.run - rescue Interrupt - end - end - - end -end diff --git a/lib/vendor/fssm/fssm/backends/polling.rb b/lib/vendor/fssm/fssm/backends/polling.rb deleted file mode 100644 index 083cf07b..00000000 --- a/lib/vendor/fssm/fssm/backends/polling.rb +++ /dev/null @@ -1,25 +0,0 @@ -module FSSM::Backends - class Polling - def initialize(options={}) - @handlers = [] - @latency = options[:latency] || 1.5 - end - - def add_handler(handler, preload=true) - handler.refresh(nil, true) if preload - @handlers << handler - end - - def run - begin - loop do - start = Time.now.to_f - @handlers.each {|handler| handler.refresh} - nap_time = @latency - (Time.now.to_f - start) - sleep nap_time if nap_time > 0 - end - rescue Interrupt - end - end - end -end diff --git a/lib/vendor/fssm/fssm/backends/rubycocoa/fsevents.rb b/lib/vendor/fssm/fssm/backends/rubycocoa/fsevents.rb deleted file mode 100644 index 7a1dbab7..00000000 --- a/lib/vendor/fssm/fssm/backends/rubycocoa/fsevents.rb +++ /dev/null @@ -1,131 +0,0 @@ -OSX.require_framework '/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework' - -module Rucola - class FSEvents - class FSEvent - attr_reader :fsevents_object - attr_reader :id - attr_reader :path - - def initialize(fsevents_object, id, path) - @fsevents_object, @id, @path = fsevents_object, id, path - end - - # Returns an array of the files/dirs in the path that the event occurred in. - # The files are sorted by the modification time, the first entry is the last modified file. - def files - Dir.glob("#{File.expand_path(path)}/*").sort_by {|f| File.mtime(f) }.reverse - end - - # Returns the last modified file in the path that the event occurred in. - def last_modified_file - files.first - end - end - - class StreamError < StandardError; - end - - attr_reader :paths - attr_reader :stream - - attr_accessor :allocator - attr_accessor :context - attr_accessor :since - attr_accessor :latency - attr_accessor :flags - - # Initializes a new FSEvents `watchdog` object and starts watching the directories you specify for events. The - # block is used as a handler for events, which are passed as the block's argument. This method is the easiest - # way to start watching some directories if you don't care about the details of setting up the event stream. - # - # Rucola::FSEvents.start_watching('/tmp') do |events| - # events.each { |event| log.debug("#{event.files.inspect} were changed.") } - # end - # - # Rucola::FSEvents.start_watching('/var/log/system.log', '/var/log/secure.log', :since => last_id, :latency => 5) do - # Growl.notify("Something was added to your log files!") - # end - # - # Note that the method also returns the FSEvents object. This enables you to control the event stream if you want to. - # - # fsevents = Rucola::FSEvents.start_watching('/Volumes') do |events| - # events.each { |event| Growl.notify("Volume changes: #{event.files.to_sentence}") } - # end - # fsevents.stop - def self.start_watching(*params, &block) - fsevents = new(*params, &block) - fsevents.create_stream - fsevents.start - fsevents - end - - # Creates a new FSEvents `watchdog` object. You can specify a list of paths to watch and options to control the - # behaviour of the watchdog. The block you pass serves as a callback when an event is generated on one of the - # specified paths. - # - # fsevents = FSEvents.new('/etc/passwd') { Mailer.send_mail("Someone touched the password file!") } - # fsevents.create_stream - # fsevents.start - # - # fsevents = FSEvents.new('/home/upload', :since => UploadWatcher.last_event_id) do |events| - # events.each do |event| - # UploadWatcher.last_event_id = event.id - # event.files.each do |file| - # UploadWatcher.logfile.append("#{file} was changed") - # end - # end - # end - # - # *:since: The service will report events that have happened after the supplied event ID. Never use 0 because that - # will cause every fsevent since the "beginning of time" to be reported. Use OSX::KFSEventStreamEventIdSinceNow - # if you want to receive events that have happened after this call. (Default: OSX::KFSEventStreamEventIdSinceNow). - # You can find the ID's passed with :since in the events passed to your block. - # *:latency: Number of seconds to wait until an FSEvent is reported, this allows the service to bundle events. (Default: 0.0) - # - # Please refer to the Cocoa documentation for the rest of the options. - def initialize(*params, &block) - raise ArgumentError, 'No callback block was specified.' unless block_given? - - options = params.last.kind_of?(Hash) ? params.pop : {} - @paths = params.flatten - - paths.each { |path| raise ArgumentError, "The specified path (#{path}) does not exist." unless File.exist?(path) } - - @allocator = options[:allocator] || OSX::KCFAllocatorDefault - @context = options[:context] || nil - @since = options[:since] || OSX::KFSEventStreamEventIdSinceNow - @latency = options[:latency] || 0.0 - @flags = options[:flags] || 0 - @stream = options[:stream] || nil - - @user_callback = block - @callback = Proc.new do |stream, client_callback_info, number_of_events, paths_pointer, event_flags, event_ids| - paths_pointer.regard_as('*') - events = [] - number_of_events.times {|i| events << Rucola::FSEvents::FSEvent.new(self, event_ids[i], paths_pointer[i]) } - @user_callback.call(events) - end - end - - # Create the stream. - # Raises a Rucola::FSEvents::StreamError if the stream could not be created. - def create_stream - @stream = OSX.FSEventStreamCreate(@allocator, @callback, @context, @paths, @since, @latency, @flags) - raise(StreamError, 'Unable to create FSEvents stream.') unless @stream - OSX.FSEventStreamScheduleWithRunLoop(@stream, OSX.CFRunLoopGetCurrent, OSX::KCFRunLoopDefaultMode) - end - - # Start the stream. - # Raises a Rucola::FSEvents::StreamError if the stream could not be started. - def start - raise(StreamError, 'Unable to start FSEvents stream.') unless OSX.FSEventStreamStart(@stream) - end - - # Stop the stream. - # You can resume it by calling `start` again. - def stop - OSX.FSEventStreamStop(@stream) - end - end -end diff --git a/lib/vendor/fssm/fssm/monitor.rb b/lib/vendor/fssm/fssm/monitor.rb deleted file mode 100644 index d7f7468d..00000000 --- a/lib/vendor/fssm/fssm/monitor.rb +++ /dev/null @@ -1,26 +0,0 @@ -class FSSM::Monitor - def initialize(options={}) - @options = options - @backend = FSSM::Backends::Default.new - end - - def path(*args, &block) - path = FSSM::Path.new(*args) - FSSM::Support.use_block(path, block) - - @backend.add_handler(FSSM::State::Directory.new(path)) - path - end - - def file(*args, &block) - path = FSSM::Path.new(*args) - FSSM::Support.use_block(path, block) - - @backend.add_handler(FSSM::State::File.new(path)) - path - end - - def run - @backend.run - end -end diff --git a/lib/vendor/fssm/fssm/path.rb b/lib/vendor/fssm/fssm/path.rb deleted file mode 100644 index 101dd103..00000000 --- a/lib/vendor/fssm/fssm/path.rb +++ /dev/null @@ -1,91 +0,0 @@ -class FSSM::Path - def initialize(path=nil, glob=nil, &block) - set_path(path || '.') - set_glob(glob || '**/*') - init_callbacks - - if block_given? - if block.arity == 1 - block.call(self) - else - self.instance_eval(&block) - end - end - end - - def to_s - @path.to_s - end - - def to_pathname - @path - end - - def glob(value=nil) - return @glob if value.nil? - set_glob(value) - end - - def create(callback_or_path=nil, &block) - callback_action(:create, (block_given? ? block : callback_or_path)) - end - - def update(callback_or_path=nil, &block) - callback_action(:update, (block_given? ? block : callback_or_path)) - end - - def delete(callback_or_path=nil, &block) - callback_action(:delete, (block_given? ? block : callback_or_path)) - end - - private - - def init_callbacks - do_nothing = lambda {|base, relative|} - @callbacks = Hash.new(do_nothing) - end - - def callback_action(type, arg=nil) - if arg.is_a?(Proc) - set_callback(type, arg) - elsif arg.nil? - get_callback(type) - else - run_callback(type, arg) - end - end - - def set_callback(type, arg) - raise ArgumentError, "Proc expected" unless arg.is_a?(Proc) - @callbacks[type] = arg - end - - def get_callback(type) - @callbacks[type] - end - - def run_callback(type, arg) - base, relative = split_path(arg) - - begin - @callbacks[type].call(base, relative) - rescue Exception => e - raise FSSM::CallbackError, "#{type} - #{base.join(relative)}: #{e.message}", e.backtrace - end - end - - def split_path(path) - path = FSSM::Pathname.for(path) - [@path, (path.relative? ? path : path.relative_path_from(@path))] - end - - def set_path(path) - path = FSSM::Pathname.for(path) - raise FSSM::FileNotFoundError, "No such file or directory - #{path}" unless path.exist? - @path = path.expand_path - end - - def set_glob(glob) - @glob = glob.is_a?(Array) ? glob : [glob] - end -end diff --git a/lib/vendor/fssm/fssm/pathname.rb b/lib/vendor/fssm/fssm/pathname.rb deleted file mode 100644 index 58396ac4..00000000 --- a/lib/vendor/fssm/fssm/pathname.rb +++ /dev/null @@ -1,502 +0,0 @@ -require 'fileutils' -require 'find' - -module FSSM - class Pathname < String - SYMLOOP_MAX = 8 - - ROOT = '/'.freeze - DOT = '.'.freeze - DOT_DOT = '..'.freeze - - class << self - def for(path) - path.is_a?(::FSSM::Pathname) ? path : new("#{path}") - end - end - - def initialize(path) - raise ArgumentError, "path cannot contain ASCII NULLs" if path =~ %r{\0} - super(path) - end - - def <=>(other) - self.tr('/', "\0").to_s <=> other.to_str.tr('/', "\0") - rescue NoMethodError - nil - end - - def ==(other) - left = self.cleanpath.tr('/', "\0").to_s - right = self.class.for(other).cleanpath.tr('/', "\0").to_s - - left == right - rescue NoMethodError - false - end - - def +(path) - dup << path - end - - def <<(path) - replace( join(path).cleanpath! ) - end - - def absolute? - self[0, 1].to_s == ROOT - end - - def ascend - parts = to_a - parts.length.downto(1) do |i| - yield self.class.join(parts[0, i]) - end - end - - def children - entries[2..-1] - end - - def cleanpath! - parts = to_a - final = [] - - parts.each do |part| - case part - when DOT then - next - when DOT_DOT then - case final.last - when ROOT then - next - when DOT_DOT then - final.push(DOT_DOT) - when nil then - final.push(DOT_DOT) - else - final.pop - end - else - final.push(part) - end - end - - replace(final.empty? ? DOT : self.class.join(*final)) - end - - def cleanpath - dup.cleanpath! - end - - def descend - parts = to_a - 1.upto(parts.length) { |i| yield self.class.join(parts[0, i]) } - end - - def dot? - self == DOT - end - - def dot_dot? - self == DOT_DOT - end - - def each_filename(&blk) - to_a.each(&blk) - end - - def mountpoint? - stat1 = self.lstat - stat2 = self.parent.lstat - - stat1.dev != stat2.dev || stat1.ino == stat2.ino - rescue Errno::ENOENT - false - end - - def parent - self + '..' - end - - def realpath - path = self - - SYMLOOP_MAX.times do - link = path.readlink - link = path.dirname + link if link.relative? - path = link - end - - raise Errno::ELOOP, self - rescue Errno::EINVAL - path.expand_path - end - - def relative? - !absolute? - end - - def relative_path_from(base) - base = self.class.for(base) - - raise ArgumentError, 'no relative path between a relative and absolute' if self.absolute? != base.absolute? - - return self if base.dot? - return self.class.new(DOT) if self == base - - base = base.cleanpath.to_a - dest = self.cleanpath.to_a - - while !dest.empty? && !base.empty? && dest[0] == base[0] - base.shift - dest.shift - end - - base.shift if base[0] == DOT - dest.shift if dest[0] == DOT - - raise ArgumentError, "base directory may not contain '#{DOT_DOT}'" if base.include?(DOT_DOT) - - path = base.fill(DOT_DOT) + dest - path = self.class.join(*path) - path = self.class.new(DOT) if path.empty? - - path - end - - def root? - !!(self =~ %r{^#{ROOT}+$}) - end - - def to_a - array = to_s.split(File::SEPARATOR) - array.delete('') - array.insert(0, ROOT) if absolute? - array - end - - alias segments to_a - - def to_path - self - end - - def to_s - "#{self}" - end - - alias to_str to_s - - def unlink - Dir.unlink(self) - true - rescue Errno::ENOTDIR - File.unlink(self) - true - end - end - - class Pathname - def self.[](pattern) - Dir[pattern].map! {|d| FSSM::Pathname.new(d) } - end - - def self.pwd - FSSM::Pathname.new(Dir.pwd) - end - - def entries - Dir.entries(self).map! {|e| FSSM::Pathname.new(e) } - end - - def mkdir(mode = 0777) - Dir.mkdir(self, mode) - end - - def opendir(&blk) - Dir.open(self, &blk) - end - - def rmdir - Dir.rmdir(self) - end - - def self.glob(pattern, flags = 0) - dirs = Dir.glob(pattern, flags) - dirs.map! {|path| FSSM::Pathname.new(path) } - - if block_given? - dirs.each {|dir| yield dir } - nil - else - dirs - end - end - - def glob(pattern, flags = 0, &block) - patterns = [pattern].flatten - patterns.map! {|p| self.class.glob(self.to_s + p, flags, &block) } - patterns.flatten - end - - def chdir - blk = lambda { yield self } if block_given? - Dir.chdir(self, &blk) - end - end - - class Pathname - def blockdev? - FileTest.blockdev?(self) - end - - def chardev? - FileTest.chardev?(self) - end - - def directory? - FileTest.directory?(self) - end - - def executable? - FileTest.executable?(self) - end - - def executable_real? - FileTest.executable_real?(self) - end - - def exists? - FileTest.exists?(self) - end - - def file? - FileTest.file?(self) - end - - def grpowned? - FileTest.grpowned?(self) - end - - def owned? - FileTest.owned?(self) - end - - def pipe? - FileTest.pipe?(self) - end - - def readable? - FileTest.readable?(self) - end - - def readable_real? - FileTest.readable_real?(self) - end - - def setgid? - FileTest.setgit?(self) - end - - def setuid? - FileTest.setuid?(self) - end - - def socket? - FileTest.socket?(self) - end - - def sticky? - FileTest.sticky?(self) - end - - def symlink? - FileTest.symlink?(self) - end - - def world_readable? - FileTest.world_readable?(self) - end - - def world_writable? - FileTest.world_writable?(self) - end - - def writable? - FileTest.writable?(self) - end - - def writable_real? - FileTest.writable_real?(self) - end - - def zero? - FileTest.zero?(self) - end - end - - class Pathname - def atime - File.atime(self) - end - - def ctime - File.ctime(self) - end - - def ftype - File.ftype(self) - end - - def lstat - File.lstat(self) - end - - def mtime - File.mtime(self) - end - - def stat - File.stat(self) - end - - def utime(atime, mtime) - File.utime(self, atime, mtime) - end - end - - class Pathname - def self.join(*parts) - last_part = FSSM::Pathname.new(parts.last) - return last_part if last_part.absolute? - FSSM::Pathname.new(File.join(*parts.reject {|p| p.empty? })) - end - - def basename - self.class.new(File.basename(self)) - end - - def chmod(mode) - File.chmod(mode, self) - end - - def chown(owner, group) - File.chown(owner, group, self) - end - - def dirname - self.class.new(File.dirname(self)) - end - - def expand_path(from = nil) - self.class.new(File.expand_path(self, from)) - end - - def extname - File.extname(self) - end - - def fnmatch?(pat, flags = 0) - File.fnmatch(pat, self, flags) - end - - def join(*parts) - self.class.join(self, *parts) - end - - def lchmod(mode) - File.lchmod(mode, self) - end - - def lchown(owner, group) - File.lchown(owner, group, self) - end - - def link(to) - File.link(self, to) - end - - def open(mode = 'r', perm = nil, &blk) - File.open(self, mode, perm, &blk) - end - - def readlink - self.class.new(File.readlink(self)) - end - - def rename(to) - File.rename(self, to) - replace(to) - end - - def size - File.size(self) - end - - def size? - File.size?(self) - end - - def split - File.split(self).map {|part| FSSM::Pathname.new(part) } - end - - def symlink(to) - File.symlink(self, to) - end - - def truncate - File.truncate(self) - end - end - - class Pathname - def mkpath - self.class.new(FileUtils.mkpath(self)) - end - - def rmtree - self.class.new(FileUtils.rmtree(self).first) - end - - def touch - self.class.new(FileUtils.touch(self).first) - end - end - - class Pathname - def each_line(sep = $/, &blk) - IO.foreach(self, sep, &blk) - end - - def read(len = nil, off = 0) - IO.read(self, len, off) - end - - def readlines(sep = $/) - IO.readlines(self, sep) - end - - def sysopen(mode = 'r', perm = nil) - IO.sysopen(self, mode, perm) - end - end - - class Pathname - def find - Find.find(self) {|path| yield FSSM::Pathname.new(path) } - end - end - - class Pathname - class << self - alias getwd pwd - end - - alias absolute expand_path - alias delete unlink - alias exist? exists? - alias fnmatch fnmatch? - end -end diff --git a/lib/vendor/fssm/fssm/state/directory.rb b/lib/vendor/fssm/fssm/state/directory.rb deleted file mode 100644 index de701e6a..00000000 --- a/lib/vendor/fssm/fssm/state/directory.rb +++ /dev/null @@ -1,57 +0,0 @@ -module FSSM::State - class Directory - attr_reader :path - - def initialize(path) - @path = path - @cache = FSSM::Tree::Cache.new - end - - def refresh(base=nil, skip_callbacks=false) - previous, current = recache(base || @path.to_pathname) - - unless skip_callbacks - deleted(previous, current) - created(previous, current) - modified(previous, current) - end - end - - private - - def created(previous, current) - (current.keys - previous.keys).each {|created| @path.create(created)} - end - - def deleted(previous, current) - (previous.keys - current.keys).each {|deleted| @path.delete(deleted)} - end - - def modified(previous, current) - (current.keys & previous.keys).each do |file| - @path.update(file) if (current[file] <=> previous[file]) != 0 - end - end - - def recache(base) - base = FSSM::Pathname.for(base) - previous = @cache.files - snapshot(base) - current = @cache.files - [previous, current] - end - - def snapshot(base) - base = FSSM::Pathname.for(base) - @cache.unset(base) - @path.glob.each {|glob| add_glob(base, glob)} - end - - def add_glob(base, glob) - FSSM::Pathname.glob(base.join(glob).to_s).each do |fn| - @cache.set(fn) - end - end - - end -end diff --git a/lib/vendor/fssm/fssm/state/file.rb b/lib/vendor/fssm/fssm/state/file.rb deleted file mode 100644 index ec601f81..00000000 --- a/lib/vendor/fssm/fssm/state/file.rb +++ /dev/null @@ -1,24 +0,0 @@ -module FSSM::State - class File - attr_reader :path - - def initialize(path) - @path = path - end - - def refresh(base=nil, skip_callbacks=false) - base ||= @path.to_pathname - used_to_exist, @exists = @exists, base.exists? - # this handles bad symlinks without failing. why handle bad symlinks at - # all? well, we could still be interested in their creation and deletion. - old_mtime, @mtime = @mtime, base.symlink? ? Time.at(0) : base.mtime if @exists - - unless skip_callbacks - @path.delete(@path.to_s) if used_to_exist && !@exists - @path.create(@path.to_s) if !used_to_exist && @exists - @path.update(@path.to_s) if used_to_exist && @exists && old_mtime != @mtime - end - end - - end -end diff --git a/lib/vendor/fssm/fssm/support.rb b/lib/vendor/fssm/fssm/support.rb deleted file mode 100644 index e70e793b..00000000 --- a/lib/vendor/fssm/fssm/support.rb +++ /dev/null @@ -1,63 +0,0 @@ -require 'rbconfig' - -module FSSM::Support - class << self - def backend - @@backend ||= case - when mac? && !jruby? && carbon_core? - 'FSEvents' - when linux? && rb_inotify? - 'Inotify' - else - 'Polling' - end - end - - def jruby? - defined?(JRUBY_VERSION) - end - - def mac? - Config::CONFIG['target_os'] =~ /darwin/i - end - - def linux? - Config::CONFIG['target_os'] =~ /linux/i - end - - def carbon_core? - begin - require 'osx/foundation' - OSX.require_framework '/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework' - true - rescue LoadError - STDERR.puts("Warning: Unable to load CarbonCore. FSEvents will be unavailable.") - false - end - end - - def rb_inotify? - found = begin - require 'rb-inotify' - if defined?(INotify::VERSION) - version = INotify::VERSION - version[0] > 0 || version[1] >= 6 - end - rescue LoadError - false - end - STDERR.puts("Warning: Unable to load rb-inotify >= 0.5.1. Inotify will be unavailable.") unless found - found - end - - def use_block(context, block) - return if block.nil? - if block.arity == 1 - block.call(context) - else - context.instance_eval(&block) - end - end - - end -end diff --git a/lib/vendor/fssm/fssm/tree.rb b/lib/vendor/fssm/fssm/tree.rb deleted file mode 100644 index 25b17be1..00000000 --- a/lib/vendor/fssm/fssm/tree.rb +++ /dev/null @@ -1,176 +0,0 @@ -module FSSM::Tree - module NodeBase - def initialize - @children = {} - end - - protected - - def child(segment) - @children["#{segment}"] - end - - def child!(segment) - (@children["#{segment}"] ||= Node.new) - end - - def has_child?(segment) - @children.has_key?("#{segment}") - end - - def remove_child(segment) - @children.delete("#{segment}") - end - - def remove_children - @children.clear - end - end - - module NodeEnumerable - include NodeBase - include Enumerable - - def each(prefix=nil, &block) - @children.each do |segment, node| - cprefix = prefix ? - FSSM::Pathname.for(prefix).join(segment) : - FSSM::Pathname.for(segment) - block.call([cprefix, node]) - node.each(cprefix, &block) - end - end - end - - module NodeInsertion - include NodeBase - - def unset(path) - key = key_segments(path) - - if key.empty? - remove_children - return nil - end - - segment = key.pop - node = descendant(key) - - return unless node - - node.remove_child(segment) - - nil - end - - def set(path) - node = descendant!(path) - node.from_path(path).mtime - end - - protected - - def key_segments(key) - return key if key.is_a?(Array) - FSSM::Pathname.for(key).segments - end - - def descendant(path) - recurse(path, false) - end - - def descendant!(path) - recurse(path, true) - end - - def recurse(key, create=false) - key = key_segments(key) - node = self - - until key.empty? - segment = key.shift - node = create ? node.child!(segment) : node.child(segment) - return nil unless node - end - - node - end - end - - module CacheDebug - def set(path) - FSSM.dbg("Cache#set(#{path})") - super - end - - def unset(path) - FSSM.dbg("Cache#unset(#{path})") - super - end - - def ftype(ft) - FSSM.dbg("Cache#ftype(#{ft})") - super - end - end - - class Node - include NodeBase - include NodeEnumerable - - attr_accessor :mtime - attr_accessor :ftype - - def <=>(other) - return unless other.is_a?(::FSSM::Tree::Node) - self.mtime <=> other.mtime - end - - def from_path(path) - path = FSSM::Pathname.for(path) - @ftype = path.ftype - # this handles bad symlinks without failing. why handle bad symlinks at - # all? well, we could still be interested in their creation and deletion. - @mtime = path.symlink? ? Time.at(0) : path.mtime - self - end - end - - class Cache - include NodeBase - include NodeEnumerable - include NodeInsertion - include CacheDebug if $DEBUG - - def set(path) - # all paths set from this level need to be absolute - # realpath will fail on broken links - path = FSSM::Pathname.for(path).expand_path - super(path) - end - - def files - ftype('file') - end - - def directories - ftype('directory') - end - - def links - ftype('link') - end - - alias symlinks links - - private - - def ftype(ft) - inject({}) do |hash, (path, node)| - hash["#{path}"] = node.mtime if node.ftype == ft - hash - end - end - end - -end From 864218717329496cf7d7f19cddf60b4e54cd9d97 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Wed, 20 Apr 2011 17:17:03 -0400 Subject: [PATCH 185/223] updated linier svg gradients to have userSpaceOnUse to be consistant with the radial implimentation --- Gemfile.lock | 2 +- .../functions/gradient_support.rb | 8 ++-- .../stylesheets/compass/css/gradients.css | 40 ++++++++++--------- .../stylesheets/compass/sass/gradients.sass | 2 +- 4 files changed, 28 insertions(+), 24 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 683be5e6..1621991b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.7.3e013b8) + compass (0.11.beta.7.6b884d3) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/sass_extensions/functions/gradient_support.rb b/lib/compass/sass_extensions/functions/gradient_support.rb index d9dc7573..51e75824 100644 --- a/lib/compass/sass_extensions/functions/gradient_support.rb +++ b/lib/compass/sass_extensions/functions/gradient_support.rb @@ -130,8 +130,9 @@ module Compass::SassExtensions::Functions::GradientSupport if position_or_angle.nil? || is_position(position_or_angle).to_bool || is_position_list(position_or_angle).to_bool true else - Compass::Util.compass_warn("Warning: Angle-based gradients are not yet supported in SVG. Found: #{position_or_angle}") - false + true + #Compass::Util.compass_warn("Warning: Angle-based gradients are not yet supported in SVG. Found: #{position_or_angle}") + #false end else GRADIENT_ASPECTS.include?(aspect) @@ -355,6 +356,7 @@ module Compass::SassExtensions::Functions::GradientSupport stops = color_stops_in_percentages(color_stops) svg = linear_svg(stops, x1, y1, x2, y2) + puts svg inline_image_string(svg.gsub(/\s+/, ' '), 'image/svg+xml') end @@ -447,7 +449,7 @@ module Compass::SassExtensions::Functions::GradientSupport end def linear_svg(color_stops, x1, y1, x2, y2) - gradient = %Q{#{color_stops_svg(color_stops)}} + gradient = %Q{#{color_stops_svg(color_stops)}} svg(gradient) end diff --git a/test/fixtures/stylesheets/compass/css/gradients.css b/test/fixtures/stylesheets/compass/css/gradients.css index e42966bd..eeea03d9 100644 --- a/test/fixtures/stylesheets/compass/css/gradients.css +++ b/test/fixtures/stylesheets/compass/css/gradients.css @@ -2,7 +2,7 @@ background: white url("foo.png"); } .bg-shortcut-linear-gradient { - background: white url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); + background: white url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background: white -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background: white -webkit-linear-gradient(top left, #dddddd, #aaaaaa); background: white -moz-linear-gradient(top left, #dddddd, #aaaaaa); @@ -19,7 +19,7 @@ .bg-all-gradient-types-with-simplification { background: #ffcc00; - background: url('/images/4x6.png?busted=true'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'), #ffcc00; + background: url('/images/4x6.png?busted=true'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'), #ffcc00; background: url('/images/4x6.png?busted=true'), -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)), -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)), #ffcc00; background: url('/images/4x6.png?busted=true'), -webkit-linear-gradient(top left, #dddddd, #aaaaaa), -webkit-radial-gradient(center center, #dddddd, #aaaaaa 100px), #ffcc00; background: url('/images/4x6.png?busted=true'), -moz-linear-gradient(top left, #dddddd, #aaaaaa), -moz-radial-gradient(center center, #dddddd, #aaaaaa 100px), #ffcc00; @@ -30,7 +30,7 @@ background-image: url("foo.png"); } .bg-linear-gradient { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -webkit-linear-gradient(top left, #dddddd, #aaaaaa); @@ -39,7 +39,7 @@ background-image: linear-gradient(top left, #dddddd, #aaaaaa); } .bg-linear-gradient-pixel-stop-from-top { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjI1JSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIyNSUiIHN0b3AtY29sb3I9IiNkZGRkZGQiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNhYWFhYWEiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 40, color-stop(25%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -webkit-linear-gradient(top, #dddddd 10px, #aaaaaa 40px); @@ -48,7 +48,7 @@ background-image: linear-gradient(top, #dddddd 10px, #aaaaaa 40px); } .bg-linear-gradient-pixel-stop-from-left { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSI1MCUiIHgyPSIxMDAlIiB5Mj0iNTAlIj48c3RvcCBvZmZzZXQ9IjI1JSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iNTAlIiB4Mj0iMTAwJSIgeTI9IjUwJSI+PHN0b3Agb2Zmc2V0PSIyNSUiIHN0b3AtY29sb3I9IiNkZGRkZGQiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNhYWFhYWEiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); background-size: 100%; background-image: -webkit-gradient(linear, 0% 50%, 40 50%, color-stop(25%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -webkit-linear-gradient(left, #dddddd 10px, #aaaaaa 40px); @@ -66,6 +66,8 @@ background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } .bg-linear-gradient-with-angle { + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii00NSIgeTE9IiIgeDI9Ii00NSIgeTI9IiI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; background-image: -webkit-gradient(linear, -45deg, -45deg, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -webkit-linear-gradient(-45deg, #dddddd, #aaaaaa); background-image: -moz-linear-gradient(-45deg, #dddddd, #aaaaaa); @@ -80,7 +82,7 @@ background-image: radial-gradient(45deg, ellipse cover, #dddddd, #aaaaaa 100px); } .bg-all-gradient-types { - background-image: url('/images/4x6.png?busted=true'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); + background-image: url('/images/4x6.png?busted=true'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: url('/images/4x6.png?busted=true'), -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)), -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: url('/images/4x6.png?busted=true'), -webkit-linear-gradient(top left, #dddddd, #aaaaaa), -webkit-radial-gradient(center center, #dddddd, #aaaaaa 100px); @@ -305,7 +307,7 @@ background-image: linear-gradient(top, rgba(255, 255, 255, 0) 40%, rgba(255, 127, 127, 0.5), #ffffff 50%); } .linear-svg-1 { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -webkit-linear-gradient(top, #dddddd, #aaaaaa); @@ -314,7 +316,7 @@ background-image: linear-gradient(top, #dddddd, #aaaaaa); } .linear-svg-2 { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSI1MCUiIHgyPSIxMDAlIiB5Mj0iNTAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iNTAlIiB4Mj0iMTAwJSIgeTI9IjUwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -webkit-linear-gradient(left, #dddddd, #aaaaaa); @@ -323,7 +325,7 @@ background-image: linear-gradient(left, #dddddd, #aaaaaa); } .linear-svg-3 { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -webkit-linear-gradient(top left, #dddddd, #aaaaaa); @@ -332,7 +334,7 @@ background-image: linear-gradient(top left, #dddddd, #aaaaaa); } .linear-svg-4 { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iMTAwJSIgeTE9IjAlIiB4Mj0iMCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjEwMCUiIHkxPSIwJSIgeDI9IjAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 100% 0%, 0% 100%, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -webkit-linear-gradient(top right, #dddddd, #aaaaaa); @@ -341,7 +343,7 @@ background-image: linear-gradient(top right, #dddddd, #aaaaaa); } .linear-svg-5 { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSI1MCUiIHN0b3AtY29sb3I9IiNjY2NjY2MiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNhYWFhYWEiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjY2NjY2NjIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(50%, #cccccc), color-stop(100%, #aaaaaa)); background-image: -webkit-linear-gradient(top, #dddddd, #cccccc, #aaaaaa); @@ -350,7 +352,7 @@ background-image: linear-gradient(top, #dddddd, #cccccc, #aaaaaa); } .linear-svg-6 { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIyMCUiIHN0b3AtY29sb3I9IiNjY2NjY2MiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNhYWFhYWEiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMjAlIiBzdG9wLWNvbG9yPSIjY2NjY2NjIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(20%, #cccccc), color-stop(100%, #aaaaaa)); background-image: -webkit-linear-gradient(top, #dddddd, #cccccc 20%, #aaaaaa); @@ -359,7 +361,7 @@ background-image: linear-gradient(top, #dddddd, #cccccc 20%, #aaaaaa); } .linear-svg-7 { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIyMCUiIHN0b3AtY29sb3I9IiNjY2NjY2MiLz48c3RvcCBvZmZzZXQ9IjYwJSIgc3RvcC1jb2xvcj0iI2VlZWVlZSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMjAlIiBzdG9wLWNvbG9yPSIjY2NjY2NjIi8+PHN0b3Agb2Zmc2V0PSI2MCUiIHN0b3AtY29sb3I9IiNlZWVlZWUiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNhYWFhYWEiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(20%, #cccccc), color-stop(60%, #eeeeee), color-stop(100%, #aaaaaa)); background-image: -webkit-linear-gradient(top, #dddddd, #cccccc 20%, #eeeeee, #aaaaaa); @@ -368,7 +370,7 @@ background-image: linear-gradient(top, #dddddd, #cccccc 20%, #eeeeee, #aaaaaa); } .linear-svg-8 { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjgwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSI4MCUiIHN0b3AtY29sb3I9IiNkZGRkZGQiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNhYWFhYWEiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(80%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -webkit-linear-gradient(top, #dddddd 80%, #aaaaaa); @@ -377,7 +379,7 @@ background-image: linear-gradient(top, #dddddd 80%, #aaaaaa); } .linear-svg-9 { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIyMCUiIHN0b3AtY29sb3I9IiNhYWFhYWEiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMjAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dddddd), color-stop(20%, #aaaaaa)); background-image: -webkit-linear-gradient(top, #dddddd, #aaaaaa 20%); @@ -386,7 +388,7 @@ background-image: linear-gradient(top, #dddddd, #aaaaaa 20%); } .linear-svg-10 { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjQwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSI0MCUiIHN0b3AtY29sb3I9IiNkZGRkZGQiLz48c3RvcCBvZmZzZXQ9IjUwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #dddddd), color-stop(50%, #aaaaaa)); background-image: -webkit-linear-gradient(top, #dddddd 40%, #aaaaaa 50%); @@ -395,7 +397,7 @@ background-image: linear-gradient(top, #dddddd 40%, #aaaaaa 50%); } .linear-svg-11 { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjQwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iNDUlIiBzdG9wLWNvbG9yPSIjMDAwMDAwIi8+PHN0b3Agb2Zmc2V0PSI1MCUiIHN0b3AtY29sb3I9IiNhYWFhYWEiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSI0MCUiIHN0b3AtY29sb3I9IiNkZGRkZGQiLz48c3RvcCBvZmZzZXQ9IjQ1JSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIvPjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, #dddddd), color-stop(45%, #000000), color-stop(50%, #aaaaaa)); background-image: -webkit-linear-gradient(top, #dddddd 40%, #000000, #aaaaaa 50%); @@ -404,7 +406,7 @@ background-image: linear-gradient(top, #dddddd 40%, #000000, #aaaaaa 50%); } .linear-svg-12 { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZmZmZmZmIi8+PHN0b3Agb2Zmc2V0PSIzMyUiIHN0b3AtY29sb3I9IiMwMDAwZmYiLz48c3RvcCBvZmZzZXQ9IjY3JSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMzMlIiBzdG9wLWNvbG9yPSIjMDAwMGZmIi8+PHN0b3Agb2Zmc2V0PSI2NyUiIHN0b3AtY29sb3I9IiMwMDAwMDAiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(33%, #0000ff), color-stop(67%, #000000)); background-image: -webkit-linear-gradient(top, #ffffff, #0000ff 33%, #000000 67%); @@ -476,7 +478,7 @@ background-image: radial-gradient(center center, #dddddd 20%, #aaaaaa 50px); } .alpha-linear-svg { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiB4MT0iNTAlIiB5MT0iMCUiIHgyPSI1MCUiIHkyPSIxMDAlIj48c3RvcCBvZmZzZXQ9IjQwJSIgc3RvcC1jb2xvcj0icmdiYSgyNTUsIDI1NSwgMjU1LCAwKSIvPjxzdG9wIG9mZnNldD0iNDUlIiBzdG9wLWNvbG9yPSJyZ2JhKDI1NSwgMTI3LCAxMjcsIDAuNSkiLz48c3RvcCBvZmZzZXQ9IjUwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUwJSIgeTE9IjAlIiB4Mj0iNTAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSI0MCUiIHN0b3AtY29sb3I9InJnYmEoMjU1LCAyNTUsIDI1NSwgMCkiLz48c3RvcCBvZmZzZXQ9IjQ1JSIgc3RvcC1jb2xvcj0icmdiYSgyNTUsIDEyNywgMTI3LCAwLjUpIi8+PHN0b3Agb2Zmc2V0PSI1MCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); background-size: 100%; background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(40%, rgba(255, 255, 255, 0)), color-stop(45%, rgba(255, 127, 127, 0.5)), color-stop(50%, #ffffff)); background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 40%, rgba(255, 127, 127, 0.5), #ffffff 50%); diff --git a/test/fixtures/stylesheets/compass/sass/gradients.sass b/test/fixtures/stylesheets/compass/sass/gradients.sass index 90492b1c..69f4aff1 100644 --- a/test/fixtures/stylesheets/compass/sass/gradients.sass +++ b/test/fixtures/stylesheets/compass/sass/gradients.sass @@ -111,7 +111,7 @@ $experimental-support-for-svg: false .linear-12 +linear-gradient(color-stops(white, blue 33%, black 67%)) - + .radial-1 // A default radial gradient: A centered gradient having the shape of the container (aka ellipse) From 4e502dda7302d4ca05068dd4bccd335728d07bef Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Wed, 20 Apr 2011 19:33:29 -0400 Subject: [PATCH 186/223] svg gradients now support angles --- Gemfile.lock | 2 +- .../functions/gradient_support.rb | 24 +++++++++---------- .../stylesheets/compass/css/gradients.css | 20 +++++++++++++++- .../stylesheets/compass/sass/gradients.sass | 6 +++++ 4 files changed, 37 insertions(+), 15 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1621991b..8a8ba596 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.7.6b884d3) + compass (0.11.beta.7.8642187) chunky_png (~> 1.1.0) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/sass_extensions/functions/gradient_support.rb b/lib/compass/sass_extensions/functions/gradient_support.rb index 51e75824..52b35697 100644 --- a/lib/compass/sass_extensions/functions/gradient_support.rb +++ b/lib/compass/sass_extensions/functions/gradient_support.rb @@ -126,17 +126,7 @@ module Compass::SassExtensions::Functions::GradientSupport s << ")" end def supports?(aspect) - if aspect == "svg" - if position_or_angle.nil? || is_position(position_or_angle).to_bool || is_position_list(position_or_angle).to_bool - true - else - true - #Compass::Util.compass_warn("Warning: Angle-based gradients are not yet supported in SVG. Found: #{position_or_angle}") - #false - end - else - GRADIENT_ASPECTS.include?(aspect) - end + GRADIENT_ASPECTS.include?(aspect) end def has_aspect? true @@ -356,9 +346,12 @@ module Compass::SassExtensions::Functions::GradientSupport stops = color_stops_in_percentages(color_stops) svg = linear_svg(stops, x1, y1, x2, y2) - puts svg inline_image_string(svg.gsub(/\s+/, ' '), 'image/svg+xml') end + + def angle? + position_or_angle.is_a?(Sass::Script::Number) && position_or_angle.numerator_units == ["deg"] && position_or_angle.denominator_units.empty? + end def radial_svg_gradient(color_stops, center) cx, cy = *grad_point(center).value @@ -449,7 +442,12 @@ module Compass::SassExtensions::Functions::GradientSupport end def linear_svg(color_stops, x1, y1, x2, y2) - gradient = %Q{#{color_stops_svg(color_stops)}} + transform = '' + if angle? + deg = Float(position_or_angle.value) + transform = " gradientTransform = \"rotate(#{deg})\"" + end + gradient = %Q{#{color_stops_svg(color_stops)}} svg(gradient) end diff --git a/test/fixtures/stylesheets/compass/css/gradients.css b/test/fixtures/stylesheets/compass/css/gradients.css index eeea03d9..77252985 100644 --- a/test/fixtures/stylesheets/compass/css/gradients.css +++ b/test/fixtures/stylesheets/compass/css/gradients.css @@ -17,6 +17,24 @@ background: white -o-radial-gradient(center center, #dddddd, #aaaaaa 100px); background: white radial-gradient(center center, #dddddd, #aaaaaa 100px); } +.bg-linear-gradient-angle-svg { + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii00NSIgeTE9IiIgeDI9Ii00NSIgeTI9IiIgZ3JhZGllbnRUcmFuc2Zvcm0gPSAicm90YXRlKC00NS4wKSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDBmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, -45deg, -45deg, color-stop(0%, #0000ff), color-stop(100%, #000000)); + background-image: -webkit-linear-gradient(-45deg, #0000ff, #000000); + background-image: -moz-linear-gradient(-45deg, #0000ff, #000000); + background-image: -o-linear-gradient(-45deg, #0000ff, #000000); + background-image: linear-gradient(-45deg, #0000ff, #000000); } + +.bg-linear-gradient-angle2-svg { + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDBmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-size: 100%; + background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #0000ff), color-stop(100%, #000000)); + background-image: -webkit-linear-gradient(top left, #0000ff, #000000); + background-image: -moz-linear-gradient(top left, #0000ff, #000000); + background-image: -o-linear-gradient(top left, #0000ff, #000000); + background-image: linear-gradient(top left, #0000ff, #000000); } + .bg-all-gradient-types-with-simplification { background: #ffcc00; background: url('/images/4x6.png?busted=true'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'), #ffcc00; @@ -66,7 +84,7 @@ background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } .bg-linear-gradient-with-angle { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii00NSIgeTE9IiIgeDI9Ii00NSIgeTI9IiI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii00NSIgeTE9IiIgeDI9Ii00NSIgeTI9IiIgZ3JhZGllbnRUcmFuc2Zvcm0gPSAicm90YXRlKC00NS4wKSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; background-image: -webkit-gradient(linear, -45deg, -45deg, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -webkit-linear-gradient(-45deg, #dddddd, #aaaaaa); diff --git a/test/fixtures/stylesheets/compass/sass/gradients.sass b/test/fixtures/stylesheets/compass/sass/gradients.sass index 69f4aff1..5a27bbc2 100644 --- a/test/fixtures/stylesheets/compass/sass/gradients.sass +++ b/test/fixtures/stylesheets/compass/sass/gradients.sass @@ -10,6 +10,12 @@ $experimental-support-for-svg: true .bg-shortcut-radial-gradient +background(#fff radial-gradient(center center, #ddd, #aaa 100px)) +.bg-linear-gradient-angle-svg + +background-image(linear-gradient(-45deg, blue, black)) + +.bg-linear-gradient-angle2-svg + +background-image(linear-gradient(top left, blue, black)) + .bg-all-gradient-types-with-simplification +background-with-css2-fallback(image-url("4x6.png"), linear-gradient(top left, #ddd, #aaa), radial-gradient(center center, #ddd, #aaa 100px), #ffcc00) From fec367d60cedf5592b2ded9ae0e09a6874d46fd0 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Wed, 20 Apr 2011 19:57:19 -0400 Subject: [PATCH 187/223] fixed gemfile and removed coercion to float --- Gemfile | 3 +- Gemfile.lock | 71 +++++++++---------- .../functions/gradient_support.rb | 11 ++- .../stylesheets/compass/css/gradients.css | 4 +- 4 files changed, 40 insertions(+), 49 deletions(-) diff --git a/Gemfile b/Gemfile index 6e0e2b33..0b0783ec 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,7 @@ source :rubygems gemspec -gem "compass", :path => "." +#gem "compass", :path => "." #no idea but it fixed my rage - sdavis gem "cucumber", "~> 0.9.2" gem "rspec", "~>2.0.0" gem "rails", "~>3.0.0.rc" @@ -21,4 +21,3 @@ gem 'autotest' gem 'fakefs', :git => 'git://github.com/johnbintz/fakefs.git' gem 'mocha' gem 'timecop' -#gem 'rmagick' diff --git a/Gemfile.lock b/Gemfile.lock index eb0693f2..081ebfb3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.7.8642187) + compass (0.11.beta.7.ac623c6) chunky_png (~> 1.1.0) fssm (~> 0.2) sass (>= 3.1.0.alpha.249) @@ -17,33 +17,33 @@ GEM specs: ZenTest (4.5.0) abstract (1.0.0) - actionmailer (3.0.5) - actionpack (= 3.0.5) + actionmailer (3.0.7) + actionpack (= 3.0.7) mail (~> 2.2.15) - actionpack (3.0.5) - activemodel (= 3.0.5) - activesupport (= 3.0.5) + actionpack (3.0.7) + activemodel (= 3.0.7) + activesupport (= 3.0.7) builder (~> 2.1.2) erubis (~> 2.6.6) - i18n (~> 0.4) + i18n (~> 0.5.0) rack (~> 1.2.1) - rack-mount (~> 0.6.13) + rack-mount (~> 0.6.14) rack-test (~> 0.5.7) tzinfo (~> 0.3.23) - activemodel (3.0.5) - activesupport (= 3.0.5) + activemodel (3.0.7) + activesupport (= 3.0.7) builder (~> 2.1.2) - i18n (~> 0.4) - activerecord (3.0.5) - activemodel (= 3.0.5) - activesupport (= 3.0.5) + i18n (~> 0.5.0) + activerecord (3.0.7) + activemodel (= 3.0.7) + activesupport (= 3.0.7) arel (~> 2.0.2) tzinfo (~> 0.3.23) - activeresource (3.0.5) - activemodel (= 3.0.5) - activesupport (= 3.0.5) - activesupport (3.0.5) - addressable (2.2.4) + activeresource (3.0.7) + activemodel (= 3.0.7) + activesupport (= 3.0.7) + activesupport (3.0.7) + addressable (2.2.5) arel (2.0.9) autotest (4.4.6) ZenTest (>= 4.4.1) @@ -65,23 +65,18 @@ GEM erubis (2.6.6) abstract (>= 1.0.0) eventmachine (0.12.10) - eventmachine (0.12.10-java) fssm (0.2.6.1) gherkin (2.2.9) json (~> 1.4.6) term-ansicolor (~> 1.0.5) - gherkin (2.2.9-java) - json (~> 1.4.6) - term-ansicolor (~> 1.0.5) haml (3.1.0.alpha.147) i18n (0.5.0) json (1.4.6) - json (1.4.6-java) livereload (1.6) em-dir-watcher (>= 0.1) em-websocket (>= 0.1.2) ruby-json (>= 1.1.2) - mail (2.2.15) + mail (2.2.17) activesupport (>= 2.3.6) i18n (>= 0.4.0) mime-types (~> 1.16) @@ -94,23 +89,22 @@ GEM rack (>= 1.0.0) rack-test (0.5.7) rack (>= 1.0) - rails (3.0.5) - actionmailer (= 3.0.5) - actionpack (= 3.0.5) - activerecord (= 3.0.5) - activeresource (= 3.0.5) - activesupport (= 3.0.5) + rails (3.0.7) + actionmailer (= 3.0.7) + actionpack (= 3.0.7) + activerecord (= 3.0.7) + activeresource (= 3.0.7) + activesupport (= 3.0.7) bundler (~> 1.0) - railties (= 3.0.5) - railties (3.0.5) - actionpack (= 3.0.5) - activesupport (= 3.0.5) + railties (= 3.0.7) + railties (3.0.7) + actionpack (= 3.0.7) + activesupport (= 3.0.7) rake (>= 0.8.7) thor (~> 0.14.4) rake (0.8.7) rb-fsevent (0.4.0) rcov (0.9.9) - rcov (0.9.9-java) rspec (2.0.1) rspec-core (~> 2.0.1) rspec-expectations (~> 2.0.1) @@ -122,7 +116,7 @@ GEM rspec-core (~> 2.0.1) rspec-expectations (~> 2.0.1) ruby-json (1.1.2) - ruby-prof (0.9.2) + ruby-prof (0.10.5) rubyzip (0.9.4) sass (3.1.0.alpha.249) term-ansicolor (1.0.5) @@ -130,10 +124,9 @@ GEM timecop (0.3.5) treetop (1.4.9) polyglot (>= 0.3.1) - tzinfo (0.3.25) + tzinfo (0.3.26) PLATFORMS - java ruby DEPENDENCIES diff --git a/lib/compass/sass_extensions/functions/gradient_support.rb b/lib/compass/sass_extensions/functions/gradient_support.rb index 52b35697..52711e6b 100644 --- a/lib/compass/sass_extensions/functions/gradient_support.rb +++ b/lib/compass/sass_extensions/functions/gradient_support.rb @@ -348,10 +348,6 @@ module Compass::SassExtensions::Functions::GradientSupport svg = linear_svg(stops, x1, y1, x2, y2) inline_image_string(svg.gsub(/\s+/, ' '), 'image/svg+xml') end - - def angle? - position_or_angle.is_a?(Sass::Script::Number) && position_or_angle.numerator_units == ["deg"] && position_or_angle.denominator_units.empty? - end def radial_svg_gradient(color_stops, center) cx, cy = *grad_point(center).value @@ -440,12 +436,15 @@ module Compass::SassExtensions::Functions::GradientSupport arg.all?{|a| color_stop?(a)} ? arg : nil end end + + def angle? + position_or_angle.is_a?(Sass::Script::Number) && position_or_angle.numerator_units == ["deg"] && position_or_angle.denominator_units.empty? + end def linear_svg(color_stops, x1, y1, x2, y2) transform = '' if angle? - deg = Float(position_or_angle.value) - transform = " gradientTransform = \"rotate(#{deg})\"" + transform = " gradientTransform = \"rotate(#{position_or_angle.value})\"" end gradient = %Q{#{color_stops_svg(color_stops)}} svg(gradient) diff --git a/test/fixtures/stylesheets/compass/css/gradients.css b/test/fixtures/stylesheets/compass/css/gradients.css index 77252985..e3a03057 100644 --- a/test/fixtures/stylesheets/compass/css/gradients.css +++ b/test/fixtures/stylesheets/compass/css/gradients.css @@ -18,7 +18,7 @@ background: white radial-gradient(center center, #dddddd, #aaaaaa 100px); } .bg-linear-gradient-angle-svg { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii00NSIgeTE9IiIgeDI9Ii00NSIgeTI9IiIgZ3JhZGllbnRUcmFuc2Zvcm0gPSAicm90YXRlKC00NS4wKSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDBmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii00NSIgeTE9IiIgeDI9Ii00NSIgeTI9IiIgZ3JhZGllbnRUcmFuc2Zvcm0gPSAicm90YXRlKC00NSkiPjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiMwMDAwZmYiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwMDAwMDAiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); background-size: 100%; background-image: -webkit-gradient(linear, -45deg, -45deg, color-stop(0%, #0000ff), color-stop(100%, #000000)); background-image: -webkit-linear-gradient(-45deg, #0000ff, #000000); @@ -84,7 +84,7 @@ background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); } .bg-linear-gradient-with-angle { - background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii00NSIgeTE9IiIgeDI9Ii00NSIgeTI9IiIgZ3JhZGllbnRUcmFuc2Zvcm0gPSAicm90YXRlKC00NS4wKSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii00NSIgeTE9IiIgeDI9Ii00NSIgeTI9IiIgZ3JhZGllbnRUcmFuc2Zvcm0gPSAicm90YXRlKC00NSkiPjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiNkZGRkZGQiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNhYWFhYWEiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA='); background-size: 100%; background-image: -webkit-gradient(linear, -45deg, -45deg, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); background-image: -webkit-linear-gradient(-45deg, #dddddd, #aaaaaa); From 5f1c35d1717dac8872a4c75c8f1844377f975a65 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Wed, 20 Apr 2011 19:23:21 -0700 Subject: [PATCH 188/223] Only compute the sass engine options once in the update_project command -- this is called repeatedly by the watcher command. --- lib/compass/commands/update_project.rb | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/compass/commands/update_project.rb b/lib/compass/commands/update_project.rb index 7ce101f2..9c47fa5c 100644 --- a/lib/compass/commands/update_project.rb +++ b/lib/compass/commands/update_project.rb @@ -49,17 +49,20 @@ module Compass end def new_compiler_instance(additional_options = {}) - compiler_opts = Compass.sass_engine_options - compiler_opts.merge!(:force => options[:force], - :sass_files => explicit_sass_files, - :dry_run => options[:dry_run]) - compiler_opts[:quiet] = options[:quiet] if options[:quiet] - compiler_opts[:time] = options[:time] if options[:time] - compiler_opts.merge!(additional_options) + @compiler_opts ||= begin + compiler_opts = Compass.sass_engine_options + compiler_opts.merge!(:force => options[:force], + :sass_files => explicit_sass_files, + :dry_run => options[:dry_run]) + compiler_opts[:quiet] = options[:quiet] if options[:quiet] + compiler_opts[:time] = options[:time] if options[:time] + Sass::Engine.normalize_options(compiler_opts) + end + Compass::Compiler.new(working_path, Compass.configuration.sass_path, Compass.configuration.css_path, - compiler_opts) + @compiler_opts.merge(additional_options)) end def explicit_sass_files From 4c814f97dd703782386d72905f5035ce5d763a67 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Wed, 20 Apr 2011 19:26:07 -0700 Subject: [PATCH 189/223] Use Sass's Chain and Memory caching for faster caching, store this once in the configuration when watching so Sass doesn't do this with each iteration. --- lib/compass/commands/watch_project.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/compass/commands/watch_project.rb b/lib/compass/commands/watch_project.rb index 1a3fd66c..fea0cfb4 100644 --- a/lib/compass/commands/watch_project.rb +++ b/lib/compass/commands/watch_project.rb @@ -36,11 +36,24 @@ module Compass exit 0 end + unless Compass.sass_engine_options[:cache_store] + Compass.configuration.sass_options ||= {} + Compass.configuration.sass_options[:cache_store] = + Sass::CacheStores::Chain.new( + Sass::CacheStores::Memory.new, + Sass::CacheStores::Filesystem.new( + Compass.sass_engine_options[:cache_location] || + Sass::Engine::DEFAULT_OPTIONS[:cache_location] + ) + ) + end + check_for_sass_files!(new_compiler_instance) recompile require 'fssm' + if options[:poll] require "fssm/backends/polling" # have to silence the ruby warning about chaning a constant. From 134160885cabc6be08550c8f2124d9e08edb542b Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Wed, 20 Apr 2011 19:27:11 -0700 Subject: [PATCH 190/223] Store the compiler importer in the Sass options so sass doesn't make one. --- lib/compass/compiler.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/compass/compiler.rb b/lib/compass/compiler.rb index d8a24fcf..a611f6ef 100644 --- a/lib/compass/compiler.rb +++ b/lib/compass/compiler.rb @@ -12,7 +12,8 @@ module Compass self.options = options self.options[:cache_location] ||= determine_cache_location Compass.configure_sass_plugin! - self.importer = Sass::Importers::Filesystem.new(from) + + self.options[:importer] = self.importer = Sass::Importers::Filesystem.new(from) self.staleness_checker = Sass::Plugin::StalenessChecker.new(options) end From 9cafbc642c8d223a929d6c849bf557f4be3b09c7 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Wed, 20 Apr 2011 19:27:53 -0700 Subject: [PATCH 191/223] Consistent hashing of the Sprite importer object --- lib/compass/sass_extensions/sprites/sprites.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/compass/sass_extensions/sprites/sprites.rb b/lib/compass/sass_extensions/sprites/sprites.rb index 12bfd9d4..c0c5dc21 100644 --- a/lib/compass/sass_extensions/sprites/sprites.rb +++ b/lib/compass/sass_extensions/sprites/sprites.rb @@ -49,5 +49,14 @@ module Compass def to_s "" end + + def hash + self.class.name.hash + end + + def eql?(other) + other.class == self.class + end + end end From f4ac295894be74848c2fd62d855f7bf47345be0a Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Wed, 20 Apr 2011 22:28:46 -0700 Subject: [PATCH 192/223] Refactor the gradient literals. --- .../functions/gradient_support.rb | 134 ++++++++++-------- 1 file changed, 74 insertions(+), 60 deletions(-) diff --git a/lib/compass/sass_extensions/functions/gradient_support.rb b/lib/compass/sass_extensions/functions/gradient_support.rb index 52711e6b..30a6ca20 100644 --- a/lib/compass/sass_extensions/functions/gradient_support.rb +++ b/lib/compass/sass_extensions/functions/gradient_support.rb @@ -33,82 +33,109 @@ module Compass::SassExtensions::Functions::GradientSupport end end - class RadialGradient < Sass::Script::Literal - attr_accessor :position_or_angle, :shape_and_size, :color_stops - def children - [color_stops, position_or_angle, shape_and_size].compact + module Gradient + + def self.included(base) + base.extend ClassMethods end - def initialize(position_or_angle, shape_and_size, color_stops) - unless color_stops.value.size >= 2 - raise Sass::SyntaxError, "At least two color stops are required for a radial-gradient" + + module ClassMethods + def standardized_prefix(prefix) + class_eval %Q{ + def to_#{prefix}(options = self.options) + Sass::Script::String.new("-#{prefix}-\#{to_s(options)}") + end + } end - self.position_or_angle = position_or_angle - self.shape_and_size = shape_and_size - self.color_stops = color_stops end + def inspect to_s end + + def supports?(aspect) + GRADIENT_ASPECTS.include?(aspect) + end + + def has_aspect? + true + end + + def angle?(value) + value.is_a?(Sass::Script::Number) && value.numerator_units.size == 1 && value.numerator_units.first == "deg" && value.denominator_units.empty? + end + + end + + class RadialGradient < Sass::Script::Literal + include Gradient + + attr_accessor :position, :shape_and_size, :color_stops + + def children + [color_stops, position, shape_and_size].compact + end + + def initialize(position, shape_and_size, color_stops) + unless color_stops.value.size >= 2 + raise Sass::SyntaxError, "At least two color stops are required for a radial-gradient" + end + if angle?(position) + raise Sass::SyntaxError, "CSS no longer allows angles in radial-gradients." + end + self.position = position + self.shape_and_size = shape_and_size + self.color_stops = color_stops + end + def to_s(options = self.options) s = "radial-gradient(" - s << position_or_angle.to_s(options) << ", " if position_or_angle + s << position.to_s(options) << ", " if position s << shape_and_size.to_s(options) << ", " if shape_and_size s << color_stops.to_s(options) s << ")" end - def supports?(aspect) - if aspect == "svg" - if position_or_angle.nil? || is_position(position_or_angle).to_bool || is_position_list(position_or_angle).to_bool - true - else - Compass::Util.compass_warn("Warning: Angle-based gradients are not yet supported in SVG. Found: #{position_or_angle}") - false - end - else - GRADIENT_ASPECTS.include?(aspect) - end - end - def has_aspect? - true - end - def to_webkit(options = self.options) - Sass::Script::String.new("-webkit-#{to_s(options)}") - end + + standardized_prefix :webkit + standardized_prefix :moz + standardized_prefix :o + def to_owg(options = self.options) args = [ - grad_point(position_or_angle || _center_position), + grad_point(position || _center_position), Sass::Script::String.new("0"), - grad_point(position_or_angle || _center_position), + grad_point(position || _center_position), grad_end_position(color_stops, Sass::Script::Bool.new(true)), grad_color_stops(color_stops) ] args.each {|a| a.options = options} Sass::Script::String.new("-webkit-gradient(radial, #{args.join(', ')})") end - def to_moz(options = self.options) - Sass::Script::String.new("-moz-#{to_s(options)}") - end - def to_o(options = self.options) - Sass::Script::String.new("-o-#{to_s(options)}") - end + def to_svg(options = self.options) # XXX Add shape support if possible - radial_svg_gradient(color_stops, position_or_angle || _center_position) + radial_svg_gradient(color_stops, position || _center_position) end + def to_pie(options = self.options) Compass::Logger.new.record(:warning, "PIE does not support radial-gradient.") Sass::Script::String.new("-pie-radial-gradient(unsupported)") end + def to_css2(options = self.options) Sass::Script::String.new("") end end class LinearGradient < Sass::Script::Literal + include Gradient + attr_accessor :color_stops, :position_or_angle + def children [color_stops, position_or_angle].compact end + def initialize(position_or_angle, color_stops) unless color_stops.value.size >= 2 raise Sass::SyntaxError, "At least two color stops are required for a linear-gradient" @@ -116,24 +143,18 @@ module Compass::SassExtensions::Functions::GradientSupport self.position_or_angle = position_or_angle self.color_stops = color_stops end - def inspect - to_s - end + def to_s(options = self.options) s = "linear-gradient(" s << position_or_angle.to_s(options) << ", " if position_or_angle s << color_stops.to_s(options) s << ")" end - def supports?(aspect) - GRADIENT_ASPECTS.include?(aspect) - end - def has_aspect? - true - end - def to_webkit(options = self.options) - Sass::Script::String.new("-webkit-#{to_s(options)}") - end + + standardized_prefix :webkit + standardized_prefix :moz + standardized_prefix :o + # Output the original webkit gradient syntax def to_owg(options = self.options) args = [] @@ -143,20 +164,17 @@ module Compass::SassExtensions::Functions::GradientSupport args.each{|a| a.options = options} Sass::Script::String.new("-webkit-gradient(linear, #{args.join(', ')})") end - def to_moz(options = self.options) - Sass::Script::String.new("-moz-#{to_s(options)}") - end - def to_o(options = self.options) - Sass::Script::String.new("-o-#{to_s(options)}") - end + def to_svg(options = self.options) linear_svg_gradient(color_stops, position_or_angle || Sass::Script::String.new("top")) end + def to_pie(options = self.options) # PIE just uses the standard rep, but the property is prefixed so # the presence of this attribute helps flag when to render a special rule. Sass::Script::String.new to_s(options) end + def to_css2(options = self.options) Sass::Script::String.new("") end @@ -437,10 +455,6 @@ module Compass::SassExtensions::Functions::GradientSupport end end - def angle? - position_or_angle.is_a?(Sass::Script::Number) && position_or_angle.numerator_units == ["deg"] && position_or_angle.denominator_units.empty? - end - def linear_svg(color_stops, x1, y1, x2, y2) transform = '' if angle? From 78dc4a5bfb8c62b0bd48c12778842e0927847aa8 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Thu, 21 Apr 2011 12:32:55 -0700 Subject: [PATCH 193/223] Pick up bug fix in FSSM. --- Gemfile.lock | 6 +++--- compass.gemspec | 2 +- doc-src/Gemfile | 2 +- doc-src/Gemfile.lock | 8 +++++--- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 081ebfb3..d499d5b4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,9 +7,9 @@ GIT PATH remote: . specs: - compass (0.11.beta.7.ac623c6) + compass (0.11.beta.7.f4ac295) chunky_png (~> 1.1.0) - fssm (~> 0.2) + fssm (>= 0.2.7) sass (>= 3.1.0.alpha.249) GEM @@ -65,7 +65,7 @@ GEM erubis (2.6.6) abstract (>= 1.0.0) eventmachine (0.12.10) - fssm (0.2.6.1) + fssm (0.2.7) gherkin (2.2.9) json (~> 1.4.6) term-ansicolor (~> 1.0.5) diff --git a/compass.gemspec b/compass.gemspec index bd561598..539aabca 100644 --- a/compass.gemspec +++ b/compass.gemspec @@ -17,7 +17,7 @@ Gem::Specification.new do |gemspec| gemspec.add_dependency 'sass', '>= 3.1.0.alpha.249' gemspec.add_dependency 'chunky_png', '~> 1.1.0' - gemspec.add_dependency 'fssm', '~> 0.2' + gemspec.add_dependency 'fssm', '>= 0.2.7' gemspec.files = %w(README.markdown LICENSE.markdown VERSION.yml Rakefile) gemspec.files += Dir.glob("bin/*") diff --git a/doc-src/Gemfile b/doc-src/Gemfile index 5ad23a24..1b09d7ac 100644 --- a/doc-src/Gemfile +++ b/doc-src/Gemfile @@ -9,7 +9,6 @@ gem 'serve', "1.0.0" gem 'nokogiri' gem 'coderay' gem 'sass', ">= 3.1.0.alpha.249" -gem 'fssm', '0.1.2' gem 'haml', ">= 3.1.0.alpha.36" gem 'rake' gem 'compass', :path => ".." @@ -18,4 +17,5 @@ gem 'css-slideshow', "0.2.0" gem 'json' gem 'css_parser', "1.0.1" gem 'ruby-prof' +gem 'rb-fsevent' diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index 1355f1a0..46916319 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,8 +8,9 @@ GIT PATH remote: .. specs: - compass (0.11.beta.6.7c5f831) + compass (0.11.beta.7.f4ac295) chunky_png (~> 1.1.0) + fssm (>= 0.2.7) sass (>= 3.1.0.alpha.249) GEM @@ -24,7 +25,7 @@ GEM css-slideshow (0.2.0) compass (>= 0.10.0.rc3) css_parser (1.0.1) - fssm (0.1.2) + fssm (0.2.7) haml (3.1.0.alpha.147) i18n (0.4.2) json (1.5.1) @@ -32,6 +33,7 @@ GEM nokogiri (1.4.4) rack (1.2.2) rake (0.8.7) + rb-fsevent (0.4.0) rdiscount (1.6.8) ruby-prof (0.9.2) sass (3.1.0.alpha.252) @@ -52,7 +54,6 @@ DEPENDENCIES compass-susy-plugin (>= 0.7.0.pre8) css-slideshow (= 0.2.0) css_parser (= 1.0.1) - fssm (= 0.1.2) haml (>= 3.1.0.alpha.36) json mime-types @@ -60,6 +61,7 @@ DEPENDENCIES nokogiri rack rake + rb-fsevent rdiscount ruby-prof sass (>= 3.1.0.alpha.249) From a8a74995bf137adc0babb81f70a4cd86213d7591 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 22 Apr 2011 09:19:32 -0700 Subject: [PATCH 194/223] A module to help debug memory leaks in the watcher. --- lib/compass/commands/watch_project.rb | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lib/compass/commands/watch_project.rb b/lib/compass/commands/watch_project.rb index fea0cfb4..668b6b81 100644 --- a/lib/compass/commands/watch_project.rb +++ b/lib/compass/commands/watch_project.rb @@ -24,12 +24,37 @@ module Compass end end + module MemoryDebugger + def report_on_instances(type, options = {}) + @@runs ||= 0 + @@runs += 1 + @@object_id_tracker ||= {} + @@object_id_tracker[type] ||= [] + GC.start + sleep options.fetch(:gc_pause, 1) + count = ObjectSpace.each_object(type) do |obj| + if @@runs > 2 + if options.fetch(:verbose, true) && !@@object_id_tracker[type].include?(obj.object_id) + begin + puts obj.inspect + rescue + end + puts "#{obj.class.name}:#{obj.object_id}" + end + end + @@object_id_tracker[type] << obj.object_id + end + puts "#{type}: #{count} instances." + end + end class WatchProject < UpdateProject register :watch attr_accessor :last_update_time, :last_sass_files + include MemoryDebugger + def perform Signal.trap("INT") do puts "" @@ -116,6 +141,7 @@ module Compass begin puts ">>> Change detected to: #{file}" compiler.run + # report_on_instances(Sass::Importers::Base, :verbose => false) rescue StandardError => e ::Compass::Exec::Helpers.report_error(e, options) end From 9e54d7bcb7cb1d066058ee63155e11b075466874 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 22 Apr 2011 09:21:09 -0700 Subject: [PATCH 195/223] Unnecessary normalization -- sass will do it later. --- lib/compass/commands/update_project.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/compass/commands/update_project.rb b/lib/compass/commands/update_project.rb index 9c47fa5c..c451db1d 100644 --- a/lib/compass/commands/update_project.rb +++ b/lib/compass/commands/update_project.rb @@ -56,7 +56,7 @@ module Compass :dry_run => options[:dry_run]) compiler_opts[:quiet] = options[:quiet] if options[:quiet] compiler_opts[:time] = options[:time] if options[:time] - Sass::Engine.normalize_options(compiler_opts) + compiler_opts end Compass::Compiler.new(working_path, From ece275a05439e5d28849c354af67f451f35e3d81 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 22 Apr 2011 09:27:51 -0700 Subject: [PATCH 196/223] Reset the memory cache before each watcher run. --- lib/compass/commands/watch_project.rb | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/compass/commands/watch_project.rb b/lib/compass/commands/watch_project.rb index 668b6b81..7a079b74 100644 --- a/lib/compass/commands/watch_project.rb +++ b/lib/compass/commands/watch_project.rb @@ -62,15 +62,16 @@ module Compass end unless Compass.sass_engine_options[:cache_store] + @memory_cache = Sass::CacheStores::Memory.new Compass.configuration.sass_options ||= {} - Compass.configuration.sass_options[:cache_store] = - Sass::CacheStores::Chain.new( - Sass::CacheStores::Memory.new, - Sass::CacheStores::Filesystem.new( - Compass.sass_engine_options[:cache_location] || - Sass::Engine::DEFAULT_OPTIONS[:cache_location] - ) + Sass::CacheStores::Chain.new( + @memory_cache, + Sass::CacheStores::Filesystem.new( + Compass.sass_engine_options[:cache_location] || + Sass::Engine::DEFAULT_OPTIONS[:cache_location] ) + ) + end check_for_sass_files!(new_compiler_instance) @@ -136,6 +137,7 @@ module Compass end def recompile(base = nil, relative = nil) + @memory_cache.reset! if @memory_cache compiler = new_compiler_instance(:quiet => true) if file = compiler.out_of_date? begin From c7a1c2a911c8e333199f162442f0772b3534f723 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 22 Apr 2011 09:28:56 -0700 Subject: [PATCH 197/223] Correctly report the changed file. --- lib/compass/commands/watch_project.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/compass/commands/watch_project.rb b/lib/compass/commands/watch_project.rb index 7a079b74..4fcaea8e 100644 --- a/lib/compass/commands/watch_project.rb +++ b/lib/compass/commands/watch_project.rb @@ -141,7 +141,7 @@ module Compass compiler = new_compiler_instance(:quiet => true) if file = compiler.out_of_date? begin - puts ">>> Change detected to: #{file}" + puts ">>> Change detected to: #{relative}" compiler.run # report_on_instances(Sass::Importers::Base, :verbose => false) rescue StandardError => e From 9c8522be726b3c987c347bc97bfb1e831a074f9e Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Sat, 23 Apr 2011 10:17:26 -0400 Subject: [PATCH 198/223] changed quotes to use syntactic sugar --- Gemfile.lock | 2 +- lib/compass/sass_extensions/functions/gradient_support.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 081ebfb3..bb44d43e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.7.ac623c6) + compass (0.11.beta.7.fec367d) chunky_png (~> 1.1.0) fssm (~> 0.2) sass (>= 3.1.0.alpha.249) diff --git a/lib/compass/sass_extensions/functions/gradient_support.rb b/lib/compass/sass_extensions/functions/gradient_support.rb index 52711e6b..6c508e86 100644 --- a/lib/compass/sass_extensions/functions/gradient_support.rb +++ b/lib/compass/sass_extensions/functions/gradient_support.rb @@ -444,7 +444,7 @@ module Compass::SassExtensions::Functions::GradientSupport def linear_svg(color_stops, x1, y1, x2, y2) transform = '' if angle? - transform = " gradientTransform = \"rotate(#{position_or_angle.value})\"" + transform = %Q{ gradientTransform = "rotate(#{position_or_angle.value})"} end gradient = %Q{#{color_stops_svg(color_stops)}} svg(gradient) From 382222b6dbe9762592d68fd856d69964635f2e0b Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Sat, 23 Apr 2011 10:22:56 -0400 Subject: [PATCH 199/223] bumped chunky_png version --- Gemfile.lock | 6 +++--- compass.gemspec | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index cb8bc5ad..af131166 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,8 +7,8 @@ GIT PATH remote: . specs: - compass (0.11.beta.7.fec367d) - chunky_png (~> 1.1.0) + compass (0.11.beta.7.613753e) + chunky_png (~> 1.1.1) fssm (>= 0.2.7) sass (>= 3.1.0.alpha.249) @@ -48,7 +48,7 @@ GEM autotest (4.4.6) ZenTest (>= 4.4.1) builder (2.1.2) - chunky_png (1.1.0) + chunky_png (1.1.1) compass-validator (3.0.0) css_parser (1.0.1) cucumber (0.9.4) diff --git a/compass.gemspec b/compass.gemspec index 539aabca..9602227c 100644 --- a/compass.gemspec +++ b/compass.gemspec @@ -16,7 +16,7 @@ Gem::Specification.new do |gemspec| gemspec.summary = %q{A Real Stylesheet Framework} gemspec.add_dependency 'sass', '>= 3.1.0.alpha.249' - gemspec.add_dependency 'chunky_png', '~> 1.1.0' + gemspec.add_dependency 'chunky_png', '~> 1.1.1' gemspec.add_dependency 'fssm', '>= 0.2.7' gemspec.files = %w(README.markdown LICENSE.markdown VERSION.yml Rakefile) From 59fdec521dc36dadc682f13bfb44d563eda997c1 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Sat, 23 Apr 2011 11:12:16 -0400 Subject: [PATCH 200/223] creating an extension now responds to the -x parameter for setting syntax --- autotest/discover.rb | 1 + frameworks/compass/templates/extension/manifest.rb | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/autotest/discover.rb b/autotest/discover.rb index d02f3b31..ee7f82c5 100644 --- a/autotest/discover.rb +++ b/autotest/discover.rb @@ -2,3 +2,4 @@ Autotest.add_discovery { 'rspec2' } + diff --git a/frameworks/compass/templates/extension/manifest.rb b/frameworks/compass/templates/extension/manifest.rb index 4a6588da..96fc235c 100644 --- a/frameworks/compass/templates/extension/manifest.rb +++ b/frameworks/compass/templates/extension/manifest.rb @@ -1,8 +1,14 @@ description "Generate a compass extension." -file 'stylesheets/main.sass', :to => "stylesheets/_#{File.basename(options[:pattern_name]||options[:project_name]||'main')}.sass" +unless options.include?(:preferred_syntax) + options[:preferred_syntax] = 'sass' +end + file 'templates/project/manifest.rb' -file 'templates/project/screen.sass' +file "stylesheets/main.sass", :to => "stylesheets/_#{File.basename(options[:pattern_name]||options[:project_name]||'main')}.#{options[:preferred_syntax]}" + +file "templates/project/screen.sass", :to => "templates/project/screen.#{options[:preferred_syntax]}" + help %Q{ To generate a compass extension: From 830a44868a6dd2bc642a1f62b822e40e3d4f2a30 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Sat, 23 Apr 2011 11:14:35 -0400 Subject: [PATCH 201/223] updated docs for extension change closes#351 --- doc-src/content/help/tutorials/extensions.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc-src/content/help/tutorials/extensions.markdown b/doc-src/content/help/tutorials/extensions.markdown index f18e4569..791a3ed4 100644 --- a/doc-src/content/help/tutorials/extensions.markdown +++ b/doc-src/content/help/tutorials/extensions.markdown @@ -71,6 +71,10 @@ you can use compass to generate an extension with the following command: This will create a few basic files and folders to get you started. +If you prefer to use the scss syntax for your extension run the following command instead: + + compass create my_extension --using compass/extension -x scss + Advanced Layout Options ----------------------- From 30e01c7cbd543eeff28f0f3051ffe7437edf455e Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 22 Apr 2011 09:43:49 -0700 Subject: [PATCH 202/223] Clean up the creation and management of importers and compilers --- lib/compass/commands/update_project.rb | 15 ++++++++-- lib/compass/commands/watch_project.rb | 41 ++++++++++++-------------- lib/compass/compiler.rb | 4 +-- lib/compass/configuration/adapters.rb | 8 +++-- 4 files changed, 39 insertions(+), 29 deletions(-) diff --git a/lib/compass/commands/update_project.rb b/lib/compass/commands/update_project.rb index c451db1d..b98fa93a 100644 --- a/lib/compass/commands/update_project.rb +++ b/lib/compass/commands/update_project.rb @@ -59,10 +59,18 @@ module Compass compiler_opts end - Compass::Compiler.new(working_path, + @memory_store ||= Sass::CacheStores::Memory.new + @backing_store ||= compiler_opts[:cache_store] + @backing_store ||= Sass::CacheStores::Filesystem.new(determine_cache_location) + @cache_store ||= Sass::CacheStores::Chain.new(@memory_store, @backing_store) + @memory_store.reset! + + Compass::Compiler.new( + working_path, Compass.configuration.sass_path, Compass.configuration.css_path, - @compiler_opts.merge(additional_options)) + @compiler_opts.merge(:cache_store => @cache_store).merge(additional_options) + ) end def explicit_sass_files @@ -76,6 +84,9 @@ module Compass end end + def determine_cache_location + Compass.configuration.cache_path || Sass::Plugin.options[:cache_location] || File.join(working_path, ".sass-cache") + end class << self def option_parser(arguments) diff --git a/lib/compass/commands/watch_project.rb b/lib/compass/commands/watch_project.rb index 4fcaea8e..a2861c5b 100644 --- a/lib/compass/commands/watch_project.rb +++ b/lib/compass/commands/watch_project.rb @@ -2,6 +2,7 @@ require 'fileutils' require 'pathname' require 'compass/commands/base' require 'compass/commands/update_project' +require 'sass/plugin' module Compass module Commands @@ -33,16 +34,18 @@ module Compass GC.start sleep options.fetch(:gc_pause, 1) count = ObjectSpace.each_object(type) do |obj| - if @@runs > 2 - if options.fetch(:verbose, true) && !@@object_id_tracker[type].include?(obj.object_id) - begin - puts obj.inspect - rescue + if options.fetch(:verbose, true) + if @@runs > 2 + if !@@object_id_tracker[type].include?(obj.object_id) + begin + puts obj.inspect + rescue + end + puts "#{obj.class.name}:#{obj.object_id}" end - puts "#{obj.class.name}:#{obj.object_id}" end + @@object_id_tracker[type] << obj.object_id end - @@object_id_tracker[type] << obj.object_id end puts "#{type}: #{count} instances." end @@ -61,19 +64,6 @@ module Compass exit 0 end - unless Compass.sass_engine_options[:cache_store] - @memory_cache = Sass::CacheStores::Memory.new - Compass.configuration.sass_options ||= {} - Sass::CacheStores::Chain.new( - @memory_cache, - Sass::CacheStores::Filesystem.new( - Compass.sass_engine_options[:cache_location] || - Sass::Engine::DEFAULT_OPTIONS[:cache_location] - ) - ) - - end - check_for_sass_files!(new_compiler_instance) recompile @@ -92,8 +82,10 @@ module Compass puts ">>> Compass is #{action} for changes. Press Ctrl-C to Stop." + begin FSSM.monitor do |monitor| Compass.configuration.sass_load_paths.each do |load_path| + load_path = load_path.root if load_path.respond_to?(:root) next unless load_path.is_a? String monitor.path load_path do |path| path.glob '**/*.s[ac]ss' @@ -122,7 +114,12 @@ module Compass end end - + rescue FSSM::CallbackError => e + # FSSM catches exit? WTF. + if e.message =~ /exit/ + exit + end + end end def remove_obsolete_css(base = nil, relative = nil) @@ -143,7 +140,7 @@ module Compass begin puts ">>> Change detected to: #{relative}" compiler.run - # report_on_instances(Sass::Importers::Base, :verbose => false) + report_on_instances(Sass::Importers::Base, :verbose => false) rescue StandardError => e ::Compass::Exec::Helpers.report_error(e, options) end diff --git a/lib/compass/compiler.rb b/lib/compass/compiler.rb index a611f6ef..92ca8fa6 100644 --- a/lib/compass/compiler.rb +++ b/lib/compass/compiler.rb @@ -11,9 +11,7 @@ module Compass self.logger = options.delete(:logger) self.options = options self.options[:cache_location] ||= determine_cache_location - Compass.configure_sass_plugin! - - self.options[:importer] = self.importer = Sass::Importers::Filesystem.new(from) + options[:importer] = self.importer = Sass::Importers::Filesystem.new(from) self.staleness_checker = Sass::Plugin::StalenessChecker.new(options) end diff --git a/lib/compass/configuration/adapters.rb b/lib/compass/configuration/adapters.rb index 3ae9149b..9897f321 100644 --- a/lib/compass/configuration/adapters.rb +++ b/lib/compass/configuration/adapters.rb @@ -55,10 +55,14 @@ module Compass def sass_load_paths load_paths = [] load_paths << sass_path if sass_path - Compass::Frameworks::ALL.each do |framework| - load_paths << framework.stylesheets_directory if File.exists?(framework.stylesheets_directory) + Compass::Frameworks::ALL.each do |f| + load_paths << f.stylesheets_directory if File.directory?(f.stylesheets_directory) end load_paths += resolve_additional_import_paths + load_paths.map! do |p| + next p if p.respond_to?(:find_relative) + Sass::Importers::Filesystem.new(p.to_s) + end load_paths << Compass::Sprites.new load_paths end From 4127ea7c9e2b86a9a163812a1e635ce5a27478be Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 24 Apr 2011 12:40:42 -0700 Subject: [PATCH 203/223] Kick off a GC at the end of a watcher run. --- lib/compass/commands/watch_project.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/compass/commands/watch_project.rb b/lib/compass/commands/watch_project.rb index a2861c5b..91a1c5aa 100644 --- a/lib/compass/commands/watch_project.rb +++ b/lib/compass/commands/watch_project.rb @@ -140,7 +140,7 @@ module Compass begin puts ">>> Change detected to: #{relative}" compiler.run - report_on_instances(Sass::Importers::Base, :verbose => false) + GC.start rescue StandardError => e ::Compass::Exec::Helpers.report_error(e, options) end From a3e1fa7f7860c95dc9152c9fd3ae8b623a4f18ac Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 24 Apr 2011 12:42:59 -0700 Subject: [PATCH 204/223] release blog post. WIP --- .../posts/2011-04-18-v011-release.markdown | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 doc-src/content/posts/2011-04-18-v011-release.markdown diff --git a/doc-src/content/posts/2011-04-18-v011-release.markdown b/doc-src/content/posts/2011-04-18-v011-release.markdown new file mode 100644 index 00000000..9d4337ba --- /dev/null +++ b/doc-src/content/posts/2011-04-18-v011-release.markdown @@ -0,0 +1,50 @@ +--- +title: "Compass v0.11 is Released!" +description: "Months in the making, Compass v0.11 continues to revolutionize CSS Frameworks." +author: chris +--- + +The Compass team is proud to announce that v0.11 is released. With this release, Compass & Sass continue to revolutionize the world of CSS Frameworks bringing never-before-seen features and unmatched simplicity, quality, and flexibility to your stylesheets. + +## Embracing CSS3 + +The power and flexibility of CSS3 is well known and web developers and designers are finding many new and interesting ways to take advantage of it. In Compass v0.11 we have revisited each CSS3 feature to ensure the greatest ease of use and similarity to CSS3 syntax. The compass internals for managing cross-browser compatibility have been rewritten to provide a powerful platform for moving as fast as the browser implementors are. Going forward, expect small point releases to adapt to new browser support and changes much more rapidly. By default, Compass provides out-of-the-box support for **all** modern and legacy browsers as far back as IE6 and Firefox 2. But if you want slimmer stylesheets, it is [simple to configure](/reference/compass/support/) which browser support we provide. + +In this release, we embraced the CSS3 syntax as much as possible. It might seem obvious, but the Compass convention is now that all CSS3 mixin arguments should match the CSS3 syntax for their corresponding properties so that you never have to *learn* a compass CSS3 mixin. If you ever find a case where this is not true, it is a bug and we would appreciate it if you would [provide the details in a bug report](http://github.com/chriseppstein/compass/issues). After upgrading, you will encounter a number of deprecation warnings guiding you through the syntax changes. + +### Gradients Evolved + +The best example of the changes in the CSS3 module are related to gradients. In Compass v0.10 we provided two simple mixins: `linear-gradient` and `radial-gradient` for setting the `background-image` property: + + .linear { + @include linear-gradient(#FFF, #000, color-stops(#C00 25%, #0C0 75%)) + } + +This syntax was inspired by the original webkit syntax gradients but tried to simplify it to some extent. But the gradient specification has evolved, since gradients can be used anywhere an image can, so we now provide a mixin for each property that can accept gradients and the arguments +can be any legal CSS3 value for the that property: + + .linear { + @include background-image(linear-gradient(#FFF, #C00 25%, #0C0 75%, #000)) + } + +Which produces: + + .linear { + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(25%, #cc0000), color-stop(75%, #00cc00), color-stop(100%, #000000)); + background-image: -webkit-linear-gradient(#ffffff, #cc0000 25%, #00cc00 75%, #000000); + background-image: -moz-linear-gradient(#ffffff, #cc0000 25%, #00cc00 75%, #000000); + background-image: -o-linear-gradient(#ffffff, #cc0000 25%, #00cc00 75%, #000000); + background-image: linear-gradient(#ffffff, #cc0000 25%, #00cc00 75%, #000000); + } + +## New Typography Module + +New in this release is a typography module. Many of our utility mixins related to typography have been moved here, but the really exciting development is the addition of the [vertical rhythm module](/reference/compass/typography/vertical_rhythm/). Based on [this excellent tutorial](http://24ways.org/2006/compose-to-a-vertical-rhythm) from 24ways, it is now simpler than ever to compose to a vertical rhythm. + +## Blueprint 1.0 + +Blueprint is 1.0 now and the Compass port is updated to match the changes there. Some of the changes that blueprint made might affect your design, so if you don't want to take this upgrade, you should unpack blueprint before you upgrade: + + compass unpack blueprint + +T \ No newline at end of file From 75901f928711ff01bc649ba417234d3504fa5ed1 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 24 Apr 2011 12:57:47 -0700 Subject: [PATCH 205/223] Fix watcher output on the first run. --- lib/compass/commands/watch_project.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/compass/commands/watch_project.rb b/lib/compass/commands/watch_project.rb index 91a1c5aa..cdc2bf2f 100644 --- a/lib/compass/commands/watch_project.rb +++ b/lib/compass/commands/watch_project.rb @@ -138,7 +138,7 @@ module Compass compiler = new_compiler_instance(:quiet => true) if file = compiler.out_of_date? begin - puts ">>> Change detected to: #{relative}" + puts ">>> Change detected to: #{relative || compiler.relative_stylesheet_name(file)}" compiler.run GC.start rescue StandardError => e From a997fa2332208818f07316e52e2901ad260c6e19 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 24 Apr 2011 15:08:14 -0700 Subject: [PATCH 206/223] Use expand_path to match the behavior is Sass. Fixes a bug that causes compass to always compile all files. --- lib/compass/compiler.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/compass/compiler.rb b/lib/compass/compiler.rb index 92ca8fa6..0f4f70f9 100644 --- a/lib/compass/compiler.rb +++ b/lib/compass/compiler.rb @@ -57,7 +57,7 @@ module Compass end def needs_update?(css_filename, sass_filename) - staleness_checker.stylesheet_needs_update?(css_filename, relative_stylesheet_name(sass_filename), importer) + staleness_checker.stylesheet_needs_update?(css_filename, File.expand_path(sass_filename), importer) end # Determines if the configuration file is newer than any css file From 85268281bc834a055890f90f7779ea951a101b2e Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 24 Apr 2011 16:41:56 -0700 Subject: [PATCH 207/223] Fix failing tests due to load path changes. --- Gemfile | 2 +- Gemfile.lock | 6 +++--- test/configuration_test.rb | 33 +++++++++++++++++++++++++++------ 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/Gemfile b/Gemfile index 0b0783ec..ead7dac2 100644 --- a/Gemfile +++ b/Gemfile @@ -8,7 +8,7 @@ gem "rspec", "~>2.0.0" gem "rails", "~>3.0.0.rc" gem "compass-validator", "3.0.0" gem "css_parser", "~> 1.0.1" -gem "sass", "3.1.0.alpha.249" +gem "sass", "3.1.0.alpha.263" gem "haml", "~> 3.1.0.alpha" gem "rcov" gem "rubyzip" diff --git a/Gemfile.lock b/Gemfile.lock index af131166..f329954b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.7.613753e) + compass (0.11.beta.7.a997fa2) chunky_png (~> 1.1.1) fssm (>= 0.2.7) sass (>= 3.1.0.alpha.249) @@ -118,7 +118,7 @@ GEM ruby-json (1.1.2) ruby-prof (0.10.5) rubyzip (0.9.4) - sass (3.1.0.alpha.249) + sass (3.1.0.alpha.263) term-ansicolor (1.0.5) thor (0.14.6) timecop (0.3.5) @@ -145,5 +145,5 @@ DEPENDENCIES rspec (~> 2.0.0) ruby-prof rubyzip - sass (= 3.1.0.alpha.249) + sass (= 3.1.0.alpha.263) timecop diff --git a/test/configuration_test.rb b/test/configuration_test.rb index 6e75a032..419e5b27 100644 --- a/test/configuration_test.rb +++ b/test/configuration_test.rb @@ -87,10 +87,16 @@ class ConfigurationTest < Test::Unit::TestCase Compass.add_configuration(contents, "test_additional_import_paths") - assert Compass.configuration.to_sass_engine_options[:load_paths].include?("/home/chris/my_compass_project/../foo") - assert Compass.configuration.to_sass_engine_options[:load_paths].include?("/path/to/my/framework"), Compass.configuration.to_sass_engine_options[:load_paths].inspect - assert_equal "/home/chris/my_compass_project/css/framework", Compass.configuration.to_sass_plugin_options[:template_location].find{|s,c| s == "/path/to/my/framework"}[1] - assert_equal "/home/chris/my_compass_project/css/foo", Compass.configuration.to_sass_plugin_options[:template_location].find{|s,c| s == "/home/chris/my_compass_project/../foo"}[1] + engine_opts = Compass.configuration.to_sass_engine_options + + load_paths = load_paths_as_strings(engine_opts[:load_paths]) + + plugin_opts = Compass.configuration.to_sass_plugin_options + + assert load_paths.include?("/home/chris/my_compass_project/../foo") + assert load_paths.include?("/path/to/my/framework"), load_paths.inspect + assert_equal "/home/chris/my_compass_project/css/framework", plugin_opts[:template_location].find{|s,c| s == "/path/to/my/framework"}[1] + assert_equal "/home/chris/my_compass_project/css/foo", plugin_opts[:template_location].find{|s,c| s == "/home/chris/my_compass_project/../foo"}[1] expected_serialization = < Date: Sun, 24 Apr 2011 18:59:07 -0700 Subject: [PATCH 208/223] Fix broken linear gradients with svg enabled. --- .../sass_extensions/functions/gradient_support.rb | 7 +++++-- test/fixtures/stylesheets/compass/css/gradients.css | 12 +++++++----- .../fixtures/stylesheets/compass/sass/gradients.sass | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/compass/sass_extensions/functions/gradient_support.rb b/lib/compass/sass_extensions/functions/gradient_support.rb index d5070468..17af3ad7 100644 --- a/lib/compass/sass_extensions/functions/gradient_support.rb +++ b/lib/compass/sass_extensions/functions/gradient_support.rb @@ -62,7 +62,10 @@ module Compass::SassExtensions::Functions::GradientSupport end def angle?(value) - value.is_a?(Sass::Script::Number) && value.numerator_units.size == 1 && value.numerator_units.first == "deg" && value.denominator_units.empty? + value.is_a?(Sass::Script::Number) && + value.numerator_units.size == 1 && + value.numerator_units.first == "deg" && + value.denominator_units.empty? end end @@ -457,7 +460,7 @@ module Compass::SassExtensions::Functions::GradientSupport def linear_svg(color_stops, x1, y1, x2, y2) transform = '' - if angle? + if angle?(position_or_angle) transform = %Q{ gradientTransform = "rotate(#{position_or_angle.value})"} end gradient = %Q{#{color_stops_svg(color_stops)}} diff --git a/test/fixtures/stylesheets/compass/css/gradients.css b/test/fixtures/stylesheets/compass/css/gradients.css index e3a03057..57aa979b 100644 --- a/test/fixtures/stylesheets/compass/css/gradients.css +++ b/test/fixtures/stylesheets/compass/css/gradients.css @@ -93,11 +93,13 @@ background-image: linear-gradient(-45deg, #dddddd, #aaaaaa); } .bg-radial-gradient-with-angle-and-shape { - background-image: -webkit-gradient(radial, 45deg, 0, 45deg, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); - background-image: -webkit-radial-gradient(45deg, ellipse cover, #dddddd, #aaaaaa 100px); - background-image: -moz-radial-gradient(45deg, ellipse cover, #dddddd, #aaaaaa 100px); - background-image: -o-radial-gradient(45deg, ellipse cover, #dddddd, #aaaaaa 100px); - background-image: radial-gradient(45deg, ellipse cover, #dddddd, #aaaaaa 100px); } + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9ImVsbGlwc2UiIGN5PSJjb3ZlciIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); + background-size: 100%; + background-image: -webkit-gradient(radial, ellipse cover, 0, ellipse cover, 100, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa)); + background-image: -webkit-radial-gradient(ellipse cover, #dddddd, #aaaaaa 100px); + background-image: -moz-radial-gradient(ellipse cover, #dddddd, #aaaaaa 100px); + background-image: -o-radial-gradient(ellipse cover, #dddddd, #aaaaaa 100px); + background-image: radial-gradient(ellipse cover, #dddddd, #aaaaaa 100px); } .bg-all-gradient-types { background-image: url('/images/4x6.png?busted=true'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'); diff --git a/test/fixtures/stylesheets/compass/sass/gradients.sass b/test/fixtures/stylesheets/compass/sass/gradients.sass index 5a27bbc2..dc915aa4 100644 --- a/test/fixtures/stylesheets/compass/sass/gradients.sass +++ b/test/fixtures/stylesheets/compass/sass/gradients.sass @@ -38,7 +38,7 @@ $experimental-support-for-svg: true +background-image(linear-gradient(-45deg, #ddd, #aaa)) .bg-radial-gradient-with-angle-and-shape - +background-image(radial-gradient(45deg, ellipse cover, #ddd, #aaa 100px)) + +background-image(radial-gradient(ellipse cover, #ddd, #aaa 100px)) .bg-all-gradient-types +background-image(image-url("4x6.png"), linear-gradient(top left, #ddd, #aaa), radial-gradient(center center, #ddd, #aaa 100px)) From f775fa0ca030629e3aa116b496fdf5d131121d28 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 24 Apr 2011 19:56:29 -0700 Subject: [PATCH 209/223] Correct the CLI help on the default value of environment. --- lib/compass/exec/project_options_parser.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/compass/exec/project_options_parser.rb b/lib/compass/exec/project_options_parser.rb index e7fbfc54..fa3052ff 100644 --- a/lib/compass/exec/project_options_parser.rb +++ b/lib/compass/exec/project_options_parser.rb @@ -37,14 +37,14 @@ module Compass::Exec::ProjectOptionsParser end opts.on('-e ENV', '--environment ENV', [:development, :production], 'Use sensible defaults for your current environment.', - ' One of: development, production (default)') do |env| + ' One of: development (default), production') do |env| self.options[:environment] = env - end + end opts.on('-s STYLE', '--output-style STYLE', [:nested, :expanded, :compact, :compressed], 'Select a CSS output mode.', ' One of: nested, expanded, compact, compressed') do |style| self.options[:output_style] = style - end + end opts.on('--relative-assets', :NONE, 'Make compass asset helpers generate relative urls to assets.') do self.options[:relative_assets] = true From 4957774e49539a6d81a42a9a6690af22dd4c57cf Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 24 Apr 2011 19:57:45 -0700 Subject: [PATCH 210/223] Default production mode to compressed output --- lib/compass/configuration/defaults.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/compass/configuration/defaults.rb b/lib/compass/configuration/defaults.rb index ec6ce392..7c9add32 100644 --- a/lib/compass/configuration/defaults.rb +++ b/lib/compass/configuration/defaults.rb @@ -30,7 +30,7 @@ module Compass if top_level.environment == :development :expanded else - :compact + :compressed end end From 28ccff0fba5e99dcd9895f16726473cb8a3bf545 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 24 Apr 2011 20:04:03 -0700 Subject: [PATCH 211/223] Make the generated configuration file a little more readable. --- lib/compass/configuration/serialization.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/compass/configuration/serialization.rb b/lib/compass/configuration/serialization.rb index 3e7fcc80..ff41ecc2 100644 --- a/lib/compass/configuration/serialization.rb +++ b/lib/compass/configuration/serialization.rb @@ -50,6 +50,7 @@ module Compass $stderr.puts "WARNING: #{prop} is code and cannot be written to a file. You'll need to copy it yourself." end if respond_to?("comment_for_#{prop}") + contents << "\n" contents << send("comment_for_#{prop}") end if block_given? && (to_emit = yield(prop, value)) From 0d029e6a02c3d7cf577df40f6974f4db8c40fdfc Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Sun, 24 Apr 2011 23:23:07 -0400 Subject: [PATCH 212/223] merge --- Gemfile | 6 +++++- Gemfile.lock | 8 ++++++-- doc-src/Gemfile | 1 + doc-src/Gemfile.lock | 6 +++--- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Gemfile b/Gemfile index ead7dac2..b102fdf4 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,6 @@ source :rubygems gemspec -#gem "compass", :path => "." #no idea but it fixed my rage - sdavis gem "cucumber", "~> 0.9.2" gem "rspec", "~>2.0.0" gem "rails", "~>3.0.0.rc" @@ -17,7 +16,12 @@ gem "rb-fsevent" gem "ruby-prof" unless RUBY_PLATFORM == "java" + gem 'autotest' +gem 'autotest-fsevent' gem 'fakefs', :git => 'git://github.com/johnbintz/fakefs.git' gem 'mocha' gem 'timecop' + + + diff --git a/Gemfile.lock b/Gemfile.lock index f329954b..4f3fe2a1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.7.a997fa2) + compass (0.11.beta.7.5962a85) chunky_png (~> 1.1.1) fssm (>= 0.2.7) sass (>= 3.1.0.alpha.249) @@ -47,6 +47,8 @@ GEM arel (2.0.9) autotest (4.4.6) ZenTest (>= 4.4.1) + autotest-fsevent (0.2.5) + sys-uname builder (2.1.2) chunky_png (1.1.1) compass-validator (3.0.0) @@ -69,7 +71,7 @@ GEM gherkin (2.2.9) json (~> 1.4.6) term-ansicolor (~> 1.0.5) - haml (3.1.0.alpha.147) + haml (3.1.0) i18n (0.5.0) json (1.4.6) livereload (1.6) @@ -119,6 +121,7 @@ GEM ruby-prof (0.10.5) rubyzip (0.9.4) sass (3.1.0.alpha.263) + sys-uname (0.8.5) term-ansicolor (1.0.5) thor (0.14.6) timecop (0.3.5) @@ -131,6 +134,7 @@ PLATFORMS DEPENDENCIES autotest + autotest-fsevent compass! compass-validator (= 3.0.0) css_parser (~> 1.0.1) diff --git a/doc-src/Gemfile b/doc-src/Gemfile index 1b09d7ac..02cd4b7f 100644 --- a/doc-src/Gemfile +++ b/doc-src/Gemfile @@ -19,3 +19,4 @@ gem 'css_parser', "1.0.1" gem 'ruby-prof' gem 'rb-fsevent' + diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index 46916319..f489eada 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,8 +8,8 @@ GIT PATH remote: .. specs: - compass (0.11.beta.7.f4ac295) - chunky_png (~> 1.1.0) + compass (0.11.beta.7.5962a85) + chunky_png (~> 1.1.1) fssm (>= 0.2.7) sass (>= 3.1.0.alpha.249) @@ -17,7 +17,7 @@ GEM remote: http://rubygems.org/ specs: activesupport (3.0.5) - chunky_png (1.1.0) + chunky_png (1.1.1) coderay (0.9.7) compass-susy-plugin (0.9.beta.3) compass (>= 0.11.beta.3) From bb53c8c34bd018097f1dffe39fb15cfed7c64fa1 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 24 Apr 2011 22:11:06 -0700 Subject: [PATCH 213/223] v0.11 release posting and docs cleanup. --- doc-src/Gemfile.lock | 6 +- doc-src/content/CHANGELOG.markdown | 4 +- doc-src/content/blog.haml | 14 ++ .../content/help/tutorials/spriting.markdown | 3 +- .../posts/2011-04-18-v011-release.markdown | 50 ------ .../posts/2011-04-24-v011-release.markdown | 143 ++++++++++++++++++ doc-src/layouts/blog.haml | 6 + doc-src/layouts/partials/main-navigation.haml | 4 +- 8 files changed, 172 insertions(+), 58 deletions(-) create mode 100644 doc-src/content/blog.haml delete mode 100644 doc-src/content/posts/2011-04-18-v011-release.markdown create mode 100644 doc-src/content/posts/2011-04-24-v011-release.markdown diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index 46916319..da8688a2 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,8 +8,8 @@ GIT PATH remote: .. specs: - compass (0.11.beta.7.f4ac295) - chunky_png (~> 1.1.0) + compass (0.11.beta.7.28ccff0) + chunky_png (~> 1.1.1) fssm (>= 0.2.7) sass (>= 3.1.0.alpha.249) @@ -17,7 +17,7 @@ GEM remote: http://rubygems.org/ specs: activesupport (3.0.5) - chunky_png (1.1.0) + chunky_png (1.1.1) coderay (0.9.7) compass-susy-plugin (0.9.beta.3) compass (>= 0.11.beta.3) diff --git a/doc-src/content/CHANGELOG.markdown b/doc-src/content/CHANGELOG.markdown index 2cbc0600..65d879db 100644 --- a/doc-src/content/CHANGELOG.markdown +++ b/doc-src/content/CHANGELOG.markdown @@ -14,7 +14,7 @@ The Documentation for the [latest stable release](http://compass-style.org/docs/ The Documentation for the [latest preview release](http://beta.compass-style.org/) -0.11.0 (UNRELEASED) +0.11.0 (04/24/2011) ------------------- This changelog entry is aggregated across all the v0.11 beta releases. @@ -39,6 +39,8 @@ If you're upgrading from a previous beta v0.11 beta release, you can read * Some blueprint color defaults now use color functions instead of color arithmetic. This may result in different output for those who have color customizations. * The deprecated & unused arguments to the `font-face` mixin have been removed. +* Lemonade has been merged into compass. If you've been using Lemonade, you need to + upgrade your sprites to use the new [Compass Sprites](/help/tutorials/spriting/). #### Dependencies diff --git a/doc-src/content/blog.haml b/doc-src/content/blog.haml new file mode 100644 index 00000000..e53a96c5 --- /dev/null +++ b/doc-src/content/blog.haml @@ -0,0 +1,14 @@ +--- +layout: blog +--- +%h1 Compass Blog + +- for post in blog_posts_in_order.reverse + .post-snippet + %h2 + - time = blog_date(post) + %span.timestamp= time.strftime("%Y/%m/%d") + %a{:href => post.rep_named(:default).path}= post[:title] + %p= post[:intro] || post[:description] + + diff --git a/doc-src/content/help/tutorials/spriting.markdown b/doc-src/content/help/tutorials/spriting.markdown index d758917f..77169578 100644 --- a/doc-src/content/help/tutorials/spriting.markdown +++ b/doc-src/content/help/tutorials/spriting.markdown @@ -7,7 +7,7 @@ classnames: --- # Spriting with Compass -Spriting has never been easier with Compass. You place the sprite images to be in a folder, +Spriting has never been easier with Compass. You place the sprite images in a folder, import them into your stylesheet, and then you can use the sprite in your selectors in one of several convenient ways. @@ -25,7 +25,6 @@ Each is an icon that is 32px square. ## Basic Usage The simplest way to use these icon sprites is to let compass give you a class for each sprite: - @import "compass/utilities/sprites"; @import "icon/*.png"; @include all-icon-sprites; diff --git a/doc-src/content/posts/2011-04-18-v011-release.markdown b/doc-src/content/posts/2011-04-18-v011-release.markdown deleted file mode 100644 index 9d4337ba..00000000 --- a/doc-src/content/posts/2011-04-18-v011-release.markdown +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: "Compass v0.11 is Released!" -description: "Months in the making, Compass v0.11 continues to revolutionize CSS Frameworks." -author: chris ---- - -The Compass team is proud to announce that v0.11 is released. With this release, Compass & Sass continue to revolutionize the world of CSS Frameworks bringing never-before-seen features and unmatched simplicity, quality, and flexibility to your stylesheets. - -## Embracing CSS3 - -The power and flexibility of CSS3 is well known and web developers and designers are finding many new and interesting ways to take advantage of it. In Compass v0.11 we have revisited each CSS3 feature to ensure the greatest ease of use and similarity to CSS3 syntax. The compass internals for managing cross-browser compatibility have been rewritten to provide a powerful platform for moving as fast as the browser implementors are. Going forward, expect small point releases to adapt to new browser support and changes much more rapidly. By default, Compass provides out-of-the-box support for **all** modern and legacy browsers as far back as IE6 and Firefox 2. But if you want slimmer stylesheets, it is [simple to configure](/reference/compass/support/) which browser support we provide. - -In this release, we embraced the CSS3 syntax as much as possible. It might seem obvious, but the Compass convention is now that all CSS3 mixin arguments should match the CSS3 syntax for their corresponding properties so that you never have to *learn* a compass CSS3 mixin. If you ever find a case where this is not true, it is a bug and we would appreciate it if you would [provide the details in a bug report](http://github.com/chriseppstein/compass/issues). After upgrading, you will encounter a number of deprecation warnings guiding you through the syntax changes. - -### Gradients Evolved - -The best example of the changes in the CSS3 module are related to gradients. In Compass v0.10 we provided two simple mixins: `linear-gradient` and `radial-gradient` for setting the `background-image` property: - - .linear { - @include linear-gradient(#FFF, #000, color-stops(#C00 25%, #0C0 75%)) - } - -This syntax was inspired by the original webkit syntax gradients but tried to simplify it to some extent. But the gradient specification has evolved, since gradients can be used anywhere an image can, so we now provide a mixin for each property that can accept gradients and the arguments -can be any legal CSS3 value for the that property: - - .linear { - @include background-image(linear-gradient(#FFF, #C00 25%, #0C0 75%, #000)) - } - -Which produces: - - .linear { - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(25%, #cc0000), color-stop(75%, #00cc00), color-stop(100%, #000000)); - background-image: -webkit-linear-gradient(#ffffff, #cc0000 25%, #00cc00 75%, #000000); - background-image: -moz-linear-gradient(#ffffff, #cc0000 25%, #00cc00 75%, #000000); - background-image: -o-linear-gradient(#ffffff, #cc0000 25%, #00cc00 75%, #000000); - background-image: linear-gradient(#ffffff, #cc0000 25%, #00cc00 75%, #000000); - } - -## New Typography Module - -New in this release is a typography module. Many of our utility mixins related to typography have been moved here, but the really exciting development is the addition of the [vertical rhythm module](/reference/compass/typography/vertical_rhythm/). Based on [this excellent tutorial](http://24ways.org/2006/compose-to-a-vertical-rhythm) from 24ways, it is now simpler than ever to compose to a vertical rhythm. - -## Blueprint 1.0 - -Blueprint is 1.0 now and the Compass port is updated to match the changes there. Some of the changes that blueprint made might affect your design, so if you don't want to take this upgrade, you should unpack blueprint before you upgrade: - - compass unpack blueprint - -T \ No newline at end of file diff --git a/doc-src/content/posts/2011-04-24-v011-release.markdown b/doc-src/content/posts/2011-04-24-v011-release.markdown new file mode 100644 index 00000000..06c788f9 --- /dev/null +++ b/doc-src/content/posts/2011-04-24-v011-release.markdown @@ -0,0 +1,143 @@ +--- +title: "Compass v0.11 is Released!" +description: "Months in the making, Compass v0.11 continues to revolutionize CSS Frameworks." +author: chris +--- + +The Compass team is proud to announce that v0.11 is released. With this release, Compass & Sass continue to revolutionize the world of CSS Frameworks bringing never-before-seen features and unmatched simplicity, quality, and flexibility to your stylesheets. + +In this post, we summarize the new features. For all the nitty gritty details, see the [CHANGELOG](/CHANGELOG/). + +## Sass 3.1 + +This release required you to upgrade to Sass 3.1. This release brings a ton of great new features that Compass now uses and you can too! + +* Proper List Support: Space and Comma separated lists used to cause values to become strings + when passing them to mixins. Now the values in lists are preserved as their original types. +* Sass-based Functions. Define your own value functions and use them anywhere. +* Keyword Style Argument passing to Functions and Mixins. It can be hard to understand what + the values being passed to a mixin or function are for, use keyword style arguments to + make it easier to understand remember and read mixin includes. +* `@media` bubbling. Responsive design meets nested selectors! Use a media declaration anywhere and it + will be bubbled to the top level for you. + +For more information about the new Sass features, see the [Sass CHANGELOG](http://sass-lang.com/docs/yardoc/file.SASS_CHANGELOG.html). + + +## Embracing CSS3 + +The power and flexibility of CSS3 is well known and web developers and designers are finding many new and interesting ways to take advantage of it. In Compass v0.11 we have revisited each CSS3 feature to ensure the greatest ease of use and similarity to CSS3 syntax. The compass internals for managing cross-browser compatibility have been rewritten to provide a powerful platform for moving as fast as the browser implementors are. Going forward, expect small point releases to adapt to new browser support and changes much more rapidly. By default, Compass provides out-of-the-box support for **all** modern and legacy browsers as far back as IE6 and Firefox 2. But if you want slimmer stylesheets, it is [simple to configure](/reference/compass/support/) which browser support we provide. + +In this release, we embraced the CSS3 syntax as much as possible. It might seem obvious, but the Compass convention is now that all CSS3 mixin arguments should match the CSS3 syntax for their corresponding properties so that you never have to *learn* a compass CSS3 mixin. If you ever find a case where this is not true, it is a bug and we would appreciate it if you would [provide the details in a bug report](http://github.com/chriseppstein/compass/issues). After upgrading, you will encounter a number of deprecation warnings guiding you through the syntax changes. + +### Gradients Evolved + +The best example of the changes in the CSS3 module are related to gradients. In Compass v0.10 we provided two simple mixins: `linear-gradient` and `radial-gradient` for setting the `background-image` property: + + .linear { + @include linear-gradient(#FFF, #000, color-stops(#C00 25%, #0C0 75%)) + } + +This syntax was inspired by the original webkit gradient syntax but tried to simplify it to some extent. But the gradient specification has evolved and because gradients can be used anywhere an image can, so we now provide a mixin for each property that can accept gradients and the arguments +can be any legal CSS3 value for the that property: + + .linear { + @include background-image(linear-gradient(#FFF, #C00 25%, #0C0 75%, #000)) + } + +Which produces: + + .linear { + background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(25%, #cc0000), color-stop(75%, #00cc00), color-stop(100%, #000000)); + background-image: -webkit-linear-gradient(#ffffff, #cc0000 25%, #00cc00 75%, #000000); + background-image: -moz-linear-gradient(#ffffff, #cc0000 25%, #00cc00 75%, #000000); + background-image: -o-linear-gradient(#ffffff, #cc0000 25%, #00cc00 75%, #000000); + background-image: linear-gradient(#ffffff, #cc0000 25%, #00cc00 75%, #000000); + } + +## Dead Simple Sprites + +Spriting has never been easier with Compass. Nico Hagenburger joined the Compass team and we have built on his popular Lemonade plugin to make Compass sprites. Existing Lemonade users will need to upgrade. + +The way they work is you place the sprite images in a folder, +import them into your stylesheet, and then you can use the sprite in your selectors in one +of several convenient ways. + +For example, let's imagine that in your project's image folder there are four icons: + +* `/icon/new.png` +* `/icon/edit.png` +* `/icon/save.png` +* `/icon/delete.png` + +The simplest way to use these icon sprites is to let compass give you a class for each sprite: + + @import "icon/*.png"; + @include all-icon-sprites; + +And you'll get the following CSS output: + + .icon-sprite, + .icon-delete, + .icon-edit, + .icon-new, + .icon-save { background: url('/images/icon-34fe0604ab.png') no-repeat; } + + .icon-delete { background-position: 0 0; } + .icon-edit { background-position: 0 -32px; } + .icon-new { background-position: 0 -64px; } + .icon-save { background-position: 0 -96px; } + +You can now apply the `icon-XXX` classes to your markup as needed. + +Of course, this is Compass which means that underneath this simple veneer is a powerful system that you can use to customize your selectors and all kinds of other scenarios involving unicorns and rainbows. Get all the details in our [Spriting Tutorial](/help/tutorials/spriting/). + +## New Typography Module + +New in this release is a typography module. Many of our utility mixins related to typography have been moved here, but the really exciting development is the addition of the [vertical rhythm module](/reference/compass/typography/vertical_rhythm/). Based on [this excellent tutorial](http://24ways.org/2006/compose-to-a-vertical-rhythm) from 24ways, it is now simpler than ever to compose to a vertical rhythm. + +## Blueprint 1.0 + +Blueprint is 1.0 now and the Compass port is updated to match the changes there. Some of the changes that blueprint made might affect your design, so if you don't want to take this upgrade, you should unpack blueprint before you upgrade: + + compass unpack blueprint + +## New Website + +As you can see, we have a spiffy new website design from Compass Core team member [Brandon](http://brandonmathis.com). A testament to the separation of content and presentation, most of this redesign was done by throwing out our old stylesheets and building new ones. If you don't like the light text on dark background theme, you can turn on the lights by clicking the power button in the upper right hand corner of every page. + +## Much, Much More + +There's more features in this release than would fit into this post. Here's some other things you'll find in this release: + +* Custom directory and file watching (E.g. for pngcrush support) +* Compilation Callback support +* Trigonometric functions + +Additionally, expect a point release to follow shortly with support for: + +* Rails 3.1 + +Lastly, Compass v0.11 will have point releases as needed to adapt to changes in browser support for the CSS3 module. + +Read the [CHANGELOG](/CHANGELOG/) for all the details. + + + + + + + + + + + + + + + + + + + + diff --git a/doc-src/layouts/blog.haml b/doc-src/layouts/blog.haml index 48886078..0f947e97 100644 --- a/doc-src/layouts/blog.haml +++ b/doc-src/layouts/blog.haml @@ -11,6 +11,12 @@ - if n %a{:href => n.rep_named(:default).path, :title => n[:title]} Next Post » #page + #docs_panel + #theme_pref + %a{:href => "#", :rel => "theme", :title => "switch theme" } Q + #version + Version: + %a.number(href="/CHANGELOG/")= compass_version = yield %footer(role="contentinfo")= render "partials/footer" = @item[:content_for_javascripts] diff --git a/doc-src/layouts/partials/main-navigation.haml b/doc-src/layouts/partials/main-navigation.haml index e439ffe1..b6858d0b 100644 --- a/doc-src/layouts/partials/main-navigation.haml +++ b/doc-src/layouts/partials/main-navigation.haml @@ -10,8 +10,8 @@ %a{:href => "/reference/compass/", :rel => "documentation"} Reference %li %a{:href => "/help/", :rel=> "help"} Help - -# %li - -# %a{:href => "/blog/", :rel=> "blog"} Blog + %li + %a{:href => "/blog/", :rel=> "blog"} Blog %li %a{:href => "/get-involved/", :rel=> "get-involved"} Get Involved %li From 144a3b27a130524acec33f4a738d70ae32436d16 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 24 Apr 2011 22:21:10 -0700 Subject: [PATCH 214/223] Bump version and assign a name. --- Gemfile.lock | 2 +- VERSION.yml | 4 ++-- lib/compass/commands/print_version.rb | 3 +++ lib/compass/version.rb | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index f329954b..08c7989f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - compass (0.11.beta.7.a997fa2) + compass (0.11.0) chunky_png (~> 1.1.1) fssm (>= 0.2.7) sass (>= 3.1.0.alpha.249) diff --git a/VERSION.yml b/VERSION.yml index 899da300..fc1a50b1 100644 --- a/VERSION.yml +++ b/VERSION.yml @@ -1,5 +1,5 @@ --- :major: 0 :minor: 11 -:state: beta -:build: 7 +:build: 0 +:name: Antares diff --git a/lib/compass/commands/print_version.rb b/lib/compass/commands/print_version.rb index 0fa8da3a..449964b5 100644 --- a/lib/compass/commands/print_version.rb +++ b/lib/compass/commands/print_version.rb @@ -57,6 +57,9 @@ Options: def long_output_string lines = [] lines << "Compass #{::Compass.version[:string]}" + if name = ::Compass.version[:name] + lines.last << " (#{name})" + end lines << "Copyright (c) 2008-#{Time.now.year} Chris Eppstein" lines << "Released under the MIT License." lines << "Compass is charityware." diff --git a/lib/compass/version.rb b/lib/compass/version.rb index f7eaa141..277ac1e2 100644 --- a/lib/compass/version.rb +++ b/lib/compass/version.rb @@ -23,7 +23,7 @@ module Compass def read_version require 'yaml' @version = YAML::load(File.read(scope('VERSION.yml'))) - @version[:teeny] = @version[:patch] + @version[:teeny] = @version[:patch] @version[:string] = "#{@version[:major]}.#{@version[:minor]}" @version[:string] << ".#{@version[:patch]}" if @version[:patch] @version[:string] << ".#{@version[:state]}" if @version[:state] From a58a66c4c251ded431a82d907dbfc1342db390e5 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Mon, 25 Apr 2011 01:44:08 -0400 Subject: [PATCH 215/223] added application integration to turtorials --- doc-src/Gemfile.lock | 2 +- .../help/tutorials/integration.markdown | 83 +++++++++++++++++++ 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 doc-src/content/help/tutorials/integration.markdown diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index f489eada..4a75775a 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,7 +8,7 @@ GIT PATH remote: .. specs: - compass (0.11.beta.7.5962a85) + compass (0.11.beta.7.e3aa9aa) chunky_png (~> 1.1.1) fssm (>= 0.2.7) sass (>= 3.1.0.alpha.249) diff --git a/doc-src/content/help/tutorials/integration.markdown b/doc-src/content/help/tutorials/integration.markdown new file mode 100644 index 00000000..daac952b --- /dev/null +++ b/doc-src/content/help/tutorials/integration.markdown @@ -0,0 +1,83 @@ +--- +title: Application Integration +layout: tutorial +crumb: Appliction Integration +classnames: + - tutorial +--- +# Application Integration + +## Ruby on Rails + +### Rails 3 + compass init rails /path/to/myrailsproject +### Rails 2.3 + rake rails:template LOCATION=http://compass-style.org/rails/installer + +## Sinatra + + require 'sinatra' + require 'haml' + require 'sass' + require 'compass' + + configure do + Compass.configuration do |config| + config.project_path = File.dirname(__FILE__) + config.sass_dir = 'views' + end + + set :haml, { :format => :html5 } + set :sass, Compass.sass_engine_options + end + + get '/screen.css' do + content_type 'text/css', :charset => 'utf-8' + sass :screen + end + +If you keep your stylesheets in “views/stylesheets/” directory instead of just “views/”, remember to update sass_dir configuration accordingly. +Check out this [sample compass-sinatra project](http://github.com/chriseppstein/compass-sinatra) to get up and running in no time! + +[Sinatra Bootstrap](http://github.com/adamstac/sinatra-bootstrap) - a base Sinatra project with support for Haml, Sass, Compass, jQuery and more. + +## Nanoc3 + +### Minimal integration: just drop it in + +One simple route for lightweight integration is to simply install compass inside nanoc. Then edit config.rb to point to the stylesheets you want to use. This means you have to have the Compass watch command running in a separate window from the Nanoc compilation process. + +Example project that works this way: http://github.com/unthinkingly/unthinkingly-blog + +### More formal integration + +At the top of the Nanoc Rules file, load the Compass configuration, like this: + + require 'compass' + + Compass.add_project_configuration 'compass/config.rb' # when using Compass 0.10 + Compass.configuration.parse 'compass/config.rb' # when using Compass < 0.10 + +Your Compass configuration file (in compass/config.rb) could look like this (you may need to change the path to some directories depending on your directory structure): + + http_path = "/" + project_path = "." + css_dir = "output/assets/style" + sass_dir = "content/assets/style" + images_dir = "output/assets/images" + + # when using SCSS: + sass_options = { + :syntax => :scss + } + + +To filter the stylesheets using Sass and Compass, call the sass filter with Sass engine options taken from Compass, like this: + + filter :sass, Compass.sass_engine_options + + +### Nanoc Projects using the formal approach + +* [nanoc Bootstrap](http://github.com/adamstac/nanoc-bootstrap) - a base nanoc project with support for Haml, Sass, Compass, jQuery and more. +* [nanoc & Compass Example Project](http://github.com/ddfreyne/nanoc-bootstrap-compass) \ No newline at end of file From 47b8fd4b550e386c7413638667292fe0691b4032 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 24 Apr 2011 22:33:49 -0700 Subject: [PATCH 216/223] Credits. --- .../posts/2011-04-24-v011-release.markdown | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/doc-src/content/posts/2011-04-24-v011-release.markdown b/doc-src/content/posts/2011-04-24-v011-release.markdown index 06c788f9..7893b630 100644 --- a/doc-src/content/posts/2011-04-24-v011-release.markdown +++ b/doc-src/content/posts/2011-04-24-v011-release.markdown @@ -104,7 +104,7 @@ Blueprint is 1.0 now and the Compass port is updated to match the changes there. ## New Website -As you can see, we have a spiffy new website design from Compass Core team member [Brandon](http://brandonmathis.com). A testament to the separation of content and presentation, most of this redesign was done by throwing out our old stylesheets and building new ones. If you don't like the light text on dark background theme, you can turn on the lights by clicking the power button in the upper right hand corner of every page. +As you can see, we have a spiffy new website design from Compass Core team member [Brandon](http://brandonmathis.com/). A testament to the separation of content and presentation, most of this redesign was done by throwing out our old stylesheets and building new ones. If you don't like the light text on dark background theme, you can turn on the lights by clicking the power button in the upper right hand corner of every page. ## Much, Much More @@ -114,30 +114,26 @@ There's more features in this release than would fit into this post. Here's some * Compilation Callback support * Trigonometric functions +Read the [CHANGELOG](/CHANGELOG/) for all the details. + Additionally, expect a point release to follow shortly with support for: * Rails 3.1 Lastly, Compass v0.11 will have point releases as needed to adapt to changes in browser support for the CSS3 module. -Read the [CHANGELOG](/CHANGELOG/) for all the details. - - - - - - - - - - - - - - - +## Many Thanks +Compass wouldn't be possible without Nathan Weizenbaum and his hard work on Sass. The latest Sass release +provides a ton of great features that have made this Compass release possible. +Compass is far to big for one person to manage it now. I'd like to thank the hard work of the Compass core team members: +* [Eric Meyer](http://eric.oddbird.net/) +* [Brandon Mathis](http://brandonmathis.com/) +* [Scott Davis](https://github.com/jetviper21) +* [Nico Hagenburger](http://www.hagenburger.net/) +Additionally, there were commits from 10 other great folks in this release and there's been [contributions from 68 people](https://github.com/chriseppstein/compass/contributors) in total so far. +Lastly thanks to the hundreds, if not thousands, of users who have helped test this release and provided valuable feedback, bug reports, and documentation suggestions. Together, we are making a real stylesheet framework and simplifying the lives of web developers across the world. From 4d3ca90e8287b08f49886db87c2970c81402ba4f Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Sun, 24 Apr 2011 23:29:29 -0700 Subject: [PATCH 217/223] Add comments to blog posts --- doc-src/layouts/blog.haml | 1 + 1 file changed, 1 insertion(+) diff --git a/doc-src/layouts/blog.haml b/doc-src/layouts/blog.haml index 0f947e97..45cdb55d 100644 --- a/doc-src/layouts/blog.haml +++ b/doc-src/layouts/blog.haml @@ -18,6 +18,7 @@ Version: %a.number(href="/CHANGELOG/")= compass_version = yield + #comments= render "partials/disqus_comments" %footer(role="contentinfo")= render "partials/footer" = @item[:content_for_javascripts] = render "partials/analytics" From 5528a7a51e6e6c9b5f8c42b272d7d0054bafcc44 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 25 Apr 2011 11:07:27 -0700 Subject: [PATCH 218/223] Update gemspec to pick up the stable version of sass. --- compass.gemspec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compass.gemspec b/compass.gemspec index 9602227c..87e2436f 100644 --- a/compass.gemspec +++ b/compass.gemspec @@ -15,8 +15,8 @@ Gem::Specification.new do |gemspec| gemspec.rubygems_version = "1.3.5" gemspec.summary = %q{A Real Stylesheet Framework} - gemspec.add_dependency 'sass', '>= 3.1.0.alpha.249' - gemspec.add_dependency 'chunky_png', '~> 1.1.1' + gemspec.add_dependency 'sass', '~> 3.1' + gemspec.add_dependency 'chunky_png', '~> 1.1' gemspec.add_dependency 'fssm', '>= 0.2.7' gemspec.files = %w(README.markdown LICENSE.markdown VERSION.yml Rakefile) From a3a1f26ea16613cf20f9afd068233ad91e7537d0 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 25 Apr 2011 11:08:18 -0700 Subject: [PATCH 219/223] Bump version for release. --- VERSION.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.yml b/VERSION.yml index fc1a50b1..99382bed 100644 --- a/VERSION.yml +++ b/VERSION.yml @@ -1,5 +1,5 @@ --- :major: 0 :minor: 11 -:build: 0 +:build: 1 :name: Antares From 9dc37dd93a97bd33802ba4fecea1bdfe3d76cc56 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 25 Apr 2011 11:26:49 -0700 Subject: [PATCH 220/223] charityware --- doc-src/content/posts/2011-04-24-v011-release.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc-src/content/posts/2011-04-24-v011-release.markdown b/doc-src/content/posts/2011-04-24-v011-release.markdown index 7893b630..60b84599 100644 --- a/doc-src/content/posts/2011-04-24-v011-release.markdown +++ b/doc-src/content/posts/2011-04-24-v011-release.markdown @@ -8,6 +8,8 @@ The Compass team is proud to announce that v0.11 is released. With this release, In this post, we summarize the new features. For all the nitty gritty details, see the [CHANGELOG](/CHANGELOG/). +Compass is Charityware. If you love this release, [please donate to the UMDF](http://umdf.org/compass) on our behalf and help find a cure for thousands of children suffering from mitochondrial disease. + ## Sass 3.1 This release required you to upgrade to Sass 3.1. This release brings a ton of great new features that Compass now uses and you can too! From 63cae60ca8e6db853d9226db7a6c89fdf57efd5e Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Mon, 25 Apr 2011 14:46:16 -0700 Subject: [PATCH 221/223] Fix broken example --- doc-src/content/examples/compass/css3/gradient/stylesheet.sass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc-src/content/examples/compass/css3/gradient/stylesheet.sass b/doc-src/content/examples/compass/css3/gradient/stylesheet.sass index d5edcdbb..509e4584 100644 --- a/doc-src/content/examples/compass/css3/gradient/stylesheet.sass +++ b/doc-src/content/examples/compass/css3/gradient/stylesheet.sass @@ -14,7 +14,7 @@ // This will yield a radial gradient with an apparent specular highlight #radial-gradient - +background-image(radial-gradient(45 45, #0ff 10px, #1e90ff 30px)) + +background-image(radial-gradient(45px 45px, #0ff 10px, #1e90ff 30px)) // This yields a linear gradient spanning from the upper left corner to the lower right corner #linear-gradient From a881b0388cc76fad464fe720248f34d47744f180 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Tue, 26 Apr 2011 07:40:34 -0700 Subject: [PATCH 222/223] doc gemfile changes --- doc-src/Gemfile.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc-src/Gemfile.lock b/doc-src/Gemfile.lock index da8688a2..d1902230 100644 --- a/doc-src/Gemfile.lock +++ b/doc-src/Gemfile.lock @@ -8,10 +8,10 @@ GIT PATH remote: .. specs: - compass (0.11.beta.7.28ccff0) - chunky_png (~> 1.1.1) + compass (0.11.1.63cae60) + chunky_png (~> 1.1) fssm (>= 0.2.7) - sass (>= 3.1.0.alpha.249) + sass (~> 3.1) GEM remote: http://rubygems.org/ @@ -36,7 +36,7 @@ GEM rb-fsevent (0.4.0) rdiscount (1.6.8) ruby-prof (0.9.2) - sass (3.1.0.alpha.252) + sass (3.1.0) serve (1.0.0) activesupport (~> 3.0.1) i18n (~> 0.4.1) From ef013a231b37de2575a681d69f895c14eeaad57d Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Tue, 26 Apr 2011 07:40:48 -0700 Subject: [PATCH 223/223] Release strategy post. --- ...11-04-26-compass-release-strategy.markdown | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 doc-src/content/posts/2011-04-26-compass-release-strategy.markdown diff --git a/doc-src/content/posts/2011-04-26-compass-release-strategy.markdown b/doc-src/content/posts/2011-04-26-compass-release-strategy.markdown new file mode 100644 index 00000000..5850930e --- /dev/null +++ b/doc-src/content/posts/2011-04-26-compass-release-strategy.markdown @@ -0,0 +1,93 @@ +--- +title: "Compass Release Strategy" +description: "An overview of how Compass will be managing ongoing releases." +author: chris +--- + +Most of this is probably obvious, but it doesn't hurt to be explicit about such things. + +If you're interested in contributing to Compass, please read the +[Contribution Guide](http://compass-style.org/help/tutorials/contributing/). + +Versioning +---------- + +Most stable releases will be released as release candidates first +(e.g `0.11.1.rc.0`) and then made into official releases after a day +or so if they don't cause any problems. + +Sass Dependency +--------------- + +We will decouple major Compass releases from the Sass release schedule +going forward. When Sass releases happen, we will issue patches to both +stable and master branches to adjust to any deprecations and new +features after they are fully released (which means we might have the +changes waiting in a topic branch). Because Sass is very careful to not +break existing stylesheets without deprecating first, this shouldn't be +hard to pull off. + +Stylesheet Progress +------------------- + +I do not want to see the compass stylesheets get frozen again +like they did in v0.10 while waiting for the next major release. +Compass users expect us to keep up with browser developments and we will. +If this means that we need to make v0.12 become v0.13 because +the stylesheets need to make some major change, then we will do that. + +Communicating Change +-------------------- + +All new features should have tests, docs, and CHANGELOG entries +as appropriate as part of the commit. + +Additionally, we now have a compass team blog that we can use to communicate +about new features, best practices, or other Compass related stuff. +It's easy to add a post, you just drop a markdown file into +[this directory](https://github.com/chriseppstein/compass/tree/stable/doc-src/content/posts). +Guest posts are totally welcome via pull requests. + +Stable +------ + +The stable release is were code lives for the next v0.11 point release. +Commits should only go here if they are ready for release, until that +point the code should live in your compass fork or in a topic branch. + +Core team members, please use pull requests to manage the code review +process for any change of significance and get sign-off from one other +team member before committing to stable. + +Changes that can go on stable: + +* Browser support updates +* Non-breaking stylesheet changes and minor features + like new mixins or modules. +* Bug fixes + +Changes that can't go on stable: + +* New deprecations +* Major features +* Big refactors + +If you're not sure where to put something, just ask. + +Rails 3.1 support is the exception to this rule, given the timeline +assocated with that release, I will make a topic branch and we'll +merge that to stable when it's ready. + +Core team members will, after committing/merging code to stable, then merge those changes to master so it is up to date. + +Master +------ + +Master is where code goes to be ready for v0.12. This focus of this +next release is making extensions easy to make, share, discover, install, +remove, and use. Any and all ideas that you have related to this are +welcome. At a minimum, I would like to have an extension directory +app hosted on compass-style.org and make sure that compass knows about +it and can install extensions by name from there. + +