Full Code of Compass/compass for AI

stable 4de01475c984 cached
883 files
2.0 MB
584.5k tokens
1687 symbols
1 requests
Download .txt
Showing preview only (2,316K chars total). Download the full file or copy to clipboard to get everything.
Repository: Compass/compass
Branch: stable
Commit: 4de01475c984
Files: 883
Total size: 2.0 MB

Directory structure:
gitextract_y675jjmd/

├── .gitignore
├── .travis.yml
├── CONTRIBUTING.md
├── Guardfile
├── LICENSE.markdown
├── README.markdown
├── Rakefile
├── TODO.md
├── cli/
│   ├── .gitignore
│   ├── Gemfile
│   ├── Rakefile
│   ├── VERSION
│   ├── VERSION_NAME
│   ├── bin/
│   │   └── compass
│   ├── compass.gemspec
│   ├── features/
│   │   ├── command_line.feature
│   │   ├── extensions.feature
│   │   └── step_definitions/
│   │       ├── command_line_steps.rb
│   │       └── extension_steps.rb
│   ├── gemfiles/
│   │   ├── listen_2.gemfile
│   │   ├── sass_3_3.gemfile
│   │   └── sass_local.gemfile
│   ├── lib/
│   │   ├── compass/
│   │   │   ├── actions.rb
│   │   │   ├── app_integration/
│   │   │   │   ├── stand_alone/
│   │   │   │   │   ├── configuration_defaults.rb
│   │   │   │   │   └── installer.rb
│   │   │   │   └── stand_alone.rb
│   │   │   ├── app_integration.rb
│   │   │   ├── commands/
│   │   │   │   ├── base.rb
│   │   │   │   ├── clean_project.rb
│   │   │   │   ├── create_project.rb
│   │   │   │   ├── default.rb
│   │   │   │   ├── extension_command.rb
│   │   │   │   ├── help.rb
│   │   │   │   ├── imports.rb
│   │   │   │   ├── installer_command.rb
│   │   │   │   ├── interactive.rb
│   │   │   │   ├── list_frameworks.rb
│   │   │   │   ├── print_version.rb
│   │   │   │   ├── project_base.rb
│   │   │   │   ├── project_stats.rb
│   │   │   │   ├── project_structure.rb
│   │   │   │   ├── registry.rb
│   │   │   │   ├── sprite.rb
│   │   │   │   ├── stamp_pattern.rb
│   │   │   │   ├── unpack_extension.rb
│   │   │   │   ├── update_project.rb
│   │   │   │   ├── validate_project.rb
│   │   │   │   ├── watch_project.rb
│   │   │   │   └── write_configuration.rb
│   │   │   ├── commands.rb
│   │   │   ├── compiler.rb
│   │   │   ├── configuration/
│   │   │   │   ├── comments.rb
│   │   │   │   ├── file_data.rb
│   │   │   │   ├── helpers.rb
│   │   │   │   └── serialization.rb
│   │   │   ├── dependencies.rb
│   │   │   ├── deprecation.rb
│   │   │   ├── errors.rb
│   │   │   ├── exec/
│   │   │   │   ├── command_option_parser.rb
│   │   │   │   ├── global_options_parser.rb
│   │   │   │   ├── helpers.rb
│   │   │   │   ├── project_options_parser.rb
│   │   │   │   └── sub_command_ui.rb
│   │   │   ├── exec.rb
│   │   │   ├── generated_version.rb
│   │   │   ├── installers/
│   │   │   │   ├── bare_installer.rb
│   │   │   │   ├── base.rb
│   │   │   │   ├── manifest.rb
│   │   │   │   ├── manifest_installer.rb
│   │   │   │   └── template_context.rb
│   │   │   ├── installers.rb
│   │   │   ├── logger.rb
│   │   │   ├── quick_cache.rb
│   │   │   ├── rails.rb
│   │   │   ├── sass_compiler.rb
│   │   │   ├── sass_extensions/
│   │   │   │   ├── functions/
│   │   │   │   │   └── sprites.rb
│   │   │   │   ├── functions.rb
│   │   │   │   ├── sprites/
│   │   │   │   │   ├── engines/
│   │   │   │   │   │   └── chunky_png_engine.rb
│   │   │   │   │   ├── engines.rb
│   │   │   │   │   ├── image.rb
│   │   │   │   │   ├── image_methods.rb
│   │   │   │   │   ├── image_row.rb
│   │   │   │   │   ├── images.rb
│   │   │   │   │   ├── layout/
│   │   │   │   │   │   ├── diagonal.rb
│   │   │   │   │   │   ├── horizontal.rb
│   │   │   │   │   │   ├── smart.rb
│   │   │   │   │   │   └── vertical.rb
│   │   │   │   │   ├── layout.rb
│   │   │   │   │   ├── layout_methods.rb
│   │   │   │   │   ├── row_fitter.rb
│   │   │   │   │   ├── sprite_map.rb
│   │   │   │   │   └── sprite_methods.rb
│   │   │   │   └── sprites.rb
│   │   │   ├── sass_extensions.rb
│   │   │   ├── sprite_importer/
│   │   │   │   ├── binding.rb
│   │   │   │   └── content.erb
│   │   │   ├── sprite_importer.rb
│   │   │   ├── stats.rb
│   │   │   ├── test_case.rb
│   │   │   ├── validator.rb
│   │   │   └── version.rb
│   │   └── compass.rb
│   └── test/
│       ├── fixtures/
│       │   ├── extensions/
│       │   │   └── only_stylesheets/
│       │   │       ├── compass_init.rb
│       │   │       └── scss/
│       │   │           └── only_stylesheets/
│       │   │               └── foo.scss
│       │   ├── fonts/
│       │   │   └── bgrove.base64.txt
│       │   └── stylesheets/
│       │       ├── busted_font_urls/
│       │       │   ├── config.rb
│       │       │   ├── css/
│       │       │   │   └── screen.css
│       │       │   └── sass/
│       │       │       └── screen.sass
│       │       ├── busted_image_urls/
│       │       │   ├── config.rb
│       │       │   ├── css/
│       │       │   │   └── screen.css
│       │       │   └── sass/
│       │       │       └── screen.sass
│       │       ├── compass/
│       │       │   ├── config.rb
│       │       │   ├── css/
│       │       │   │   ├── animation-with-legacy-ie.css
│       │       │   │   ├── animation.css
│       │       │   │   ├── appearance.css
│       │       │   │   ├── background-clip.css
│       │       │   │   ├── background-origin.css
│       │       │   │   ├── background-size.css
│       │       │   │   ├── border_radius.css
│       │       │   │   ├── box-sizing.css
│       │       │   │   ├── box.css
│       │       │   │   ├── box_shadow.css
│       │       │   │   ├── brightness.css
│       │       │   │   ├── browser-support.css
│       │       │   │   ├── color.css
│       │       │   │   ├── columns.css
│       │       │   │   ├── filters.css
│       │       │   │   ├── flexbox.css
│       │       │   │   ├── fonts.css
│       │       │   │   ├── force-wrap.css
│       │       │   │   ├── gradients.css
│       │       │   │   ├── grid_background.css
│       │       │   │   ├── hyphenation.css
│       │       │   │   ├── image_size.css
│       │       │   │   ├── images.css
│       │       │   │   ├── layout.css
│       │       │   │   ├── legacy_clearfix.css
│       │       │   │   ├── lists.css
│       │       │   │   ├── opacity.css
│       │       │   │   ├── print.css
│       │       │   │   ├── regions.css
│       │       │   │   ├── replacement.css
│       │       │   │   ├── reset.css
│       │       │   │   ├── selection.css
│       │       │   │   ├── sprites_with_explicit_separator.css
│       │       │   │   ├── stretching.css
│       │       │   │   ├── support.css
│       │       │   │   ├── text_shadow.css
│       │       │   │   ├── transform.css
│       │       │   │   ├── transition.css
│       │       │   │   ├── typography/
│       │       │   │   │   └── links/
│       │       │   │   │       └── hover-link.css
│       │       │   │   ├── units.css
│       │       │   │   ├── user-interface.css
│       │       │   │   ├── utilities.css
│       │       │   │   ├── vertical_rhythm.css
│       │       │   │   ├── vertical_rhythm_with_ems.css
│       │       │   │   ├── vertical_rhythm_with_px.css
│       │       │   │   └── vertical_rhythm_with_rems.css
│       │       │   └── sass/
│       │       │       ├── animation-with-legacy-ie.scss
│       │       │       ├── animation.scss
│       │       │       ├── appearance.scss
│       │       │       ├── background-clip.scss
│       │       │       ├── background-origin.scss
│       │       │       ├── background-size.scss
│       │       │       ├── border_radius.scss
│       │       │       ├── box-sizing.scss
│       │       │       ├── box.sass
│       │       │       ├── box_shadow.scss
│       │       │       ├── brightness.scss
│       │       │       ├── browser-support.scss
│       │       │       ├── color.scss
│       │       │       ├── columns.scss
│       │       │       ├── filters.scss
│       │       │       ├── flexbox.scss
│       │       │       ├── fonts.sass
│       │       │       ├── force-wrap.scss
│       │       │       ├── gradients.sass
│       │       │       ├── grid_background.scss
│       │       │       ├── hyphenation.scss
│       │       │       ├── image_size.sass
│       │       │       ├── images.scss
│       │       │       ├── layout.sass
│       │       │       ├── legacy_clearfix.scss
│       │       │       ├── lists.scss
│       │       │       ├── opacity.scss
│       │       │       ├── print.sass
│       │       │       ├── regions.scss
│       │       │       ├── replacement.scss
│       │       │       ├── reset.sass
│       │       │       ├── selection.scss
│       │       │       ├── sprites_with_explicit_separator.scss
│       │       │       ├── stretching.sass
│       │       │       ├── support.scss
│       │       │       ├── text_shadow.scss
│       │       │       ├── transform.scss
│       │       │       ├── transition.scss
│       │       │       ├── typography/
│       │       │       │   └── links/
│       │       │       │       └── hover-link.scss
│       │       │       ├── units.scss
│       │       │       ├── user-interface.scss
│       │       │       ├── utilities.scss
│       │       │       ├── vertical_rhythm.scss
│       │       │       ├── vertical_rhythm_with_ems.scss
│       │       │       ├── vertical_rhythm_with_px.scss
│       │       │       └── vertical_rhythm_with_rems.scss
│       │       ├── envtest/
│       │       │   ├── config.rb
│       │       │   ├── css/
│       │       │   │   └── env.css
│       │       │   └── sass/
│       │       │       └── env.scss
│       │       ├── error/
│       │       │   ├── config.rb
│       │       │   └── sass/
│       │       │       └── screen.sass
│       │       ├── image_urls/
│       │       │   ├── config.rb
│       │       │   ├── css/
│       │       │   │   └── screen.css
│       │       │   └── sass/
│       │       │       └── screen.sass
│       │       ├── relative/
│       │       │   ├── config.rb
│       │       │   ├── css/
│       │       │   │   ├── ie.css
│       │       │   │   ├── print.css
│       │       │   │   └── screen.css
│       │       │   └── sass/
│       │       │       ├── ie.sass
│       │       │       ├── print.sass
│       │       │       └── screen.sass
│       │       ├── sourcemaps/
│       │       │   ├── config.rb
│       │       │   ├── css/
│       │       │   │   ├── another_simple.css
│       │       │   │   ├── simple.css
│       │       │   │   └── with_libraries.css
│       │       │   └── sass/
│       │       │       ├── another_simple.scss
│       │       │       ├── simple.sass
│       │       │       └── with_libraries.scss
│       │       ├── uses_only_stylesheets_ext/
│       │       │   ├── config.rb
│       │       │   ├── sass/
│       │       │   │   ├── ie.scss
│       │       │   │   ├── print.scss
│       │       │   │   └── screen.scss
│       │       │   └── stylesheets/
│       │       │       ├── ie.css
│       │       │       ├── print.css
│       │       │       └── screen.css
│       │       ├── valid/
│       │       │   ├── config.rb
│       │       │   └── sass/
│       │       │       ├── another_simple.scss
│       │       │       └── simple.sass
│       │       └── with_sass_globbing/
│       │           ├── config.rb
│       │           ├── css/
│       │           │   └── screen.css
│       │           └── sass/
│       │               ├── partials/
│       │               │   ├── _1.scss
│       │               │   ├── _2.scss
│       │               │   └── _3.scss
│       │               └── screen.scss
│       ├── helpers/
│       │   ├── command_line.rb
│       │   ├── diff.rb
│       │   ├── io.rb
│       │   ├── rails.rb
│       │   └── test_case.rb
│       ├── integrations/
│       │   ├── compass_test.rb
│       │   └── sprites_test.rb
│       ├── test_helper.rb
│       └── units/
│           ├── actions_test.rb
│           ├── caniuse_test.rb
│           ├── command_line_test.rb
│           ├── compass_util_test.rb
│           ├── compiler_test.rb
│           ├── configuration_test.rb
│           ├── regressions_test.rb
│           ├── sass_extensions_test.rb
│           ├── sass_extenstions/
│           │   └── gradients_test.rb
│           └── sprites/
│               ├── engine_test.rb
│               ├── image_row_test.rb
│               ├── image_test.rb
│               ├── images_test.rb
│               ├── importer_test.rb
│               ├── layout_test.rb
│               ├── row_fitter_test.rb
│               ├── sprite_command_test.rb
│               └── sprite_map_test.rb
├── compass-style.org/
│   ├── .compass/
│   │   └── config.rb
│   ├── .gitignore
│   ├── .livereload
│   ├── Gemfile
│   ├── Procfile
│   ├── README.markdown
│   ├── Rakefile
│   ├── Rules
│   ├── assets/
│   │   ├── fonts/
│   │   │   └── examples/
│   │   │       └── bgrove.otf
│   │   ├── htaccess
│   │   └── javascripts/
│   │       ├── fixups.js
│   │       ├── install.js
│   │       ├── jquery.cookie.js
│   │       ├── jquery.url.packed.js
│   │       ├── placeholder.js
│   │       ├── shAutoloader.js
│   │       ├── shBrushCss.js
│   │       ├── shBrushPlain.js
│   │       ├── shBrushSass.js
│   │       ├── shBrushScss.js
│   │       ├── shBrushXml.js
│   │       ├── shCore.js
│   │       └── site.js
│   ├── authors.yml
│   ├── config.yaml
│   ├── content/
│   │   ├── .livereload
│   │   ├── CHANGELOG.markdown
│   │   ├── blog/
│   │   │   ├── archive.haml
│   │   │   └── atom.haml
│   │   ├── blog.haml
│   │   ├── copyright.markdown
│   │   ├── examples/
│   │   │   ├── blueprint/
│   │   │   │   └── grid/
│   │   │   │       ├── pull/
│   │   │   │       │   └── stylesheet.scss
│   │   │   │       └── two_cols/
│   │   │   │           └── stylesheet.scss
│   │   │   ├── compass/
│   │   │   │   ├── css3/
│   │   │   │   │   ├── background-clip/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── background-clip.haml
│   │   │   │   │   ├── background-origin/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── background-origin.haml
│   │   │   │   │   ├── background-size/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── background-size.haml
│   │   │   │   │   ├── border_radius/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── border_radius.haml
│   │   │   │   │   ├── box_shadow/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── box_shadow.haml
│   │   │   │   │   ├── box_sizing/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── box_sizing.haml
│   │   │   │   │   ├── columns/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── columns.haml
│   │   │   │   │   ├── flexbox/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── flexbox.haml
│   │   │   │   │   ├── font-face/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── font-face.haml
│   │   │   │   │   ├── gradient/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── gradient.haml
│   │   │   │   │   ├── inline_block/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── inline_block.haml
│   │   │   │   │   ├── input-placeholder/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── input-placeholder.haml
│   │   │   │   │   ├── opacity/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── opacity.haml
│   │   │   │   │   ├── regions/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── regions.haml
│   │   │   │   │   ├── text_shadow/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── text_shadow.haml
│   │   │   │   │   ├── transition/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   └── transition.haml
│   │   │   │   ├── helpers/
│   │   │   │   │   ├── elements-of-type/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── elements-of-type.haml
│   │   │   │   │   ├── enumerate/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── enumerate.haml
│   │   │   │   │   ├── using-extend-in-place-of-enumerate/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   └── using-extend-in-place-of-enumerate.haml
│   │   │   │   ├── layout/
│   │   │   │   │   ├── sticky-footer/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── sticky-footer.haml
│   │   │   │   │   ├── stretching/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   └── stretching.haml
│   │   │   │   ├── tables/
│   │   │   │   │   ├── all/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── all.haml
│   │   │   │   │   ├── borders/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── borders.haml
│   │   │   │   │   ├── scaffolding/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── scaffolding.haml
│   │   │   │   │   ├── striping/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   └── striping.haml
│   │   │   │   └── utilities/
│   │   │   │       ├── contrast/
│   │   │   │       │   ├── markup.haml
│   │   │   │       │   └── stylesheet.scss
│   │   │   │       └── contrast.haml
│   │   │   └── index.haml
│   │   ├── frameworks.haml
│   │   ├── get-involved/
│   │   │   └── index.haml
│   │   ├── help/
│   │   │   ├── documentation/
│   │   │   │   ├── command-line.markdown
│   │   │   │   ├── configuration-reference.markdown
│   │   │   │   ├── sass-based-configuration-options.markdown
│   │   │   │   └── tuning-vendor-prefixes.markdown
│   │   │   ├── documentation.haml
│   │   │   ├── index.haml
│   │   │   ├── tutorials/
│   │   │   │   ├── best_practices.markdown
│   │   │   │   ├── configurable-variables.haml
│   │   │   │   ├── contributing.markdown
│   │   │   │   ├── extending.markdown
│   │   │   │   ├── extensions.markdown
│   │   │   │   ├── integration.markdown
│   │   │   │   ├── production-css.markdown
│   │   │   │   ├── spriting/
│   │   │   │   │   ├── customization-options.markdown
│   │   │   │   │   ├── magic-selectors.markdown
│   │   │   │   │   └── sprite-layouts.markdown
│   │   │   │   ├── spriting.markdown
│   │   │   │   ├── testing.markdown
│   │   │   │   ├── upgrading/
│   │   │   │   │   ├── antares.markdown
│   │   │   │   │   ├── im-scared.markdown
│   │   │   │   │   └── lemonade_upgrade_guide.markdown
│   │   │   │   └── upgrading.markdown
│   │   │   └── tutorials.haml
│   │   ├── index/
│   │   │   ├── functions.haml
│   │   │   ├── mixins.haml
│   │   │   └── variables.haml
│   │   ├── index.haml
│   │   ├── install.haml
│   │   ├── posts/
│   │   │   ├── 2011-04-24-v011-release.markdown
│   │   │   ├── 2011-04-26-compass-release-strategy.markdown
│   │   │   ├── 2011-05-09-compass-django.markdown
│   │   │   ├── 2012-01-29-compass-and-rails-integration.markdown
│   │   │   ├── 2012-02-01-compass-0-12-is-released.markdown
│   │   │   ├── 2012-05-20-removing-blueprint.markdown
│   │   │   ├── 2013-11-27-compass-versioning-change.markdown
│   │   │   └── 2014-08-15-omg-compass-1-0.markdown
│   │   ├── reference/
│   │   │   ├── compass/
│   │   │   │   ├── css3/
│   │   │   │   │   ├── animation.haml
│   │   │   │   │   ├── appearance.haml
│   │   │   │   │   ├── background_clip.haml
│   │   │   │   │   ├── background_origin.haml
│   │   │   │   │   ├── background_size.haml
│   │   │   │   │   ├── border_radius.haml
│   │   │   │   │   ├── box.haml
│   │   │   │   │   ├── box_shadow.haml
│   │   │   │   │   ├── box_sizing.haml
│   │   │   │   │   ├── columns.haml
│   │   │   │   │   ├── filter.haml
│   │   │   │   │   ├── flexbox.haml
│   │   │   │   │   ├── font_face.haml
│   │   │   │   │   ├── hyphenation.haml
│   │   │   │   │   ├── images.haml
│   │   │   │   │   ├── inline_block.haml
│   │   │   │   │   ├── opacity.haml
│   │   │   │   │   ├── pie.haml
│   │   │   │   │   ├── regions.haml
│   │   │   │   │   ├── selection.haml
│   │   │   │   │   ├── shared.haml
│   │   │   │   │   ├── text-shadow.haml
│   │   │   │   │   ├── transform.haml
│   │   │   │   │   ├── transition.haml
│   │   │   │   │   └── user_interface.haml
│   │   │   │   ├── css3.haml
│   │   │   │   ├── helpers/
│   │   │   │   │   ├── color-stops.haml
│   │   │   │   │   ├── colors.haml
│   │   │   │   │   ├── constants.haml
│   │   │   │   │   ├── cross-browser.haml
│   │   │   │   │   ├── display.haml
│   │   │   │   │   ├── env.haml
│   │   │   │   │   ├── font-files.haml
│   │   │   │   │   ├── image-dimensions.haml
│   │   │   │   │   ├── inline-data.haml
│   │   │   │   │   ├── math.haml
│   │   │   │   │   ├── selectors.haml
│   │   │   │   │   ├── sprites.haml
│   │   │   │   │   └── urls.haml
│   │   │   │   ├── helpers.haml
│   │   │   │   ├── layout/
│   │   │   │   │   ├── grid_background.haml
│   │   │   │   │   ├── sticky_footer.haml
│   │   │   │   │   └── stretching.haml
│   │   │   │   ├── layout.haml
│   │   │   │   ├── reset/
│   │   │   │   │   └── utilities.haml
│   │   │   │   ├── reset-legacy/
│   │   │   │   │   └── utilities-legacy.haml
│   │   │   │   ├── reset-legacy.haml
│   │   │   │   ├── reset.haml
│   │   │   │   ├── support.haml
│   │   │   │   ├── typography/
│   │   │   │   │   ├── links/
│   │   │   │   │   │   ├── hover_link.haml
│   │   │   │   │   │   ├── link_colors.haml
│   │   │   │   │   │   └── unstyled_link.haml
│   │   │   │   │   ├── links.haml
│   │   │   │   │   ├── lists/
│   │   │   │   │   │   ├── bullets.haml
│   │   │   │   │   │   ├── horizontal_list.haml
│   │   │   │   │   │   ├── inline-block-list.haml
│   │   │   │   │   │   └── inline_list.haml
│   │   │   │   │   ├── lists.haml
│   │   │   │   │   ├── text/
│   │   │   │   │   │   ├── ellipsis.haml
│   │   │   │   │   │   ├── force-wrap.haml
│   │   │   │   │   │   ├── nowrap.haml
│   │   │   │   │   │   └── replacement.haml
│   │   │   │   │   ├── text.haml
│   │   │   │   │   └── vertical_rhythm.haml
│   │   │   │   ├── typography.haml
│   │   │   │   ├── utilities/
│   │   │   │   │   ├── color/
│   │   │   │   │   │   ├── brightness.haml
│   │   │   │   │   │   └── contrast.haml
│   │   │   │   │   ├── color.haml
│   │   │   │   │   ├── general/
│   │   │   │   │   │   ├── clearfix.haml
│   │   │   │   │   │   ├── float.haml
│   │   │   │   │   │   ├── hacks.haml
│   │   │   │   │   │   ├── min.haml
│   │   │   │   │   │   ├── reset.haml
│   │   │   │   │   │   └── tag_cloud.haml
│   │   │   │   │   ├── general.haml
│   │   │   │   │   ├── print.haml
│   │   │   │   │   ├── sprites/
│   │   │   │   │   │   ├── base.haml
│   │   │   │   │   │   └── sprite_img.haml
│   │   │   │   │   ├── sprites.haml
│   │   │   │   │   ├── tables/
│   │   │   │   │   │   ├── alternating_rows_and_columns.haml
│   │   │   │   │   │   ├── borders.haml
│   │   │   │   │   │   └── scaffolding.haml
│   │   │   │   │   └── tables.haml
│   │   │   │   └── utilities.haml
│   │   │   └── compass.haml
│   │   ├── reference.haml
│   │   ├── screencast.haml
│   │   ├── search-data.js.erb
│   │   ├── search.haml
│   │   ├── sitemap.xml
│   │   └── stylesheets/
│   │       ├── core/
│   │       │   ├── _base-classes.sass
│   │       │   ├── _clearing-classes.sass
│   │       │   ├── _extensions.scss
│   │       │   └── _media-block.scss
│   │       ├── home.scss
│   │       ├── ie.scss
│   │       ├── partials/
│   │       │   ├── _ads.scss
│   │       │   ├── _blog.scss
│   │       │   ├── _code.scss
│   │       │   ├── _example.scss
│   │       │   ├── _home.scss
│   │       │   ├── _install.scss
│   │       │   ├── _layout.scss
│   │       │   ├── _main.scss
│   │       │   ├── _nav.scss
│   │       │   ├── _sidebar.scss
│   │       │   ├── _theme.scss
│   │       │   └── _typography.scss
│   │       ├── screen.scss
│   │       └── syntax/
│   │           ├── _shCore.scss
│   │           ├── _shThemeRDark.scss
│   │           ├── _syntax-theme.scss
│   │           └── _theme_template.scss
│   ├── layouts/
│   │   ├── article.haml
│   │   ├── basic.haml
│   │   ├── blog.haml
│   │   ├── core.haml
│   │   ├── default.haml
│   │   ├── documentation.haml
│   │   ├── example.haml
│   │   ├── homepage.haml
│   │   ├── main.haml
│   │   ├── partials/
│   │   │   ├── ad.haml
│   │   │   ├── analytics.haml
│   │   │   ├── breadcrumbs.haml
│   │   │   ├── example.haml
│   │   │   ├── footer.haml
│   │   │   ├── js-core.haml
│   │   │   ├── js-highlighter.haml
│   │   │   ├── main-navigation.haml
│   │   │   ├── reference/
│   │   │   │   ├── const_table.haml
│   │   │   │   ├── constants.haml
│   │   │   │   ├── examples.haml
│   │   │   │   ├── functions.haml
│   │   │   │   ├── import-few.haml
│   │   │   │   ├── import.haml
│   │   │   │   ├── imports.haml
│   │   │   │   ├── mixins.haml
│   │   │   │   └── selectors.haml
│   │   │   ├── sidebar/
│   │   │   │   ├── container.haml
│   │   │   │   ├── heading.haml
│   │   │   │   └── item.haml
│   │   │   └── sidebar.haml
│   │   ├── post.haml
│   │   ├── redirect.haml
│   │   ├── reference.haml
│   │   ├── simple_core.haml
│   │   ├── site.haml
│   │   └── tutorial.haml
│   ├── lib/
│   │   ├── blog.rb
│   │   ├── data_sources/
│   │   │   ├── asset_data_source.rb
│   │   │   ├── better_combined_datasource.rb
│   │   │   ├── core_extensions.rb
│   │   │   ├── nanoc_monkey_patches.rb
│   │   │   └── syntax_highter.rb
│   │   ├── default.rb
│   │   ├── examples.rb
│   │   ├── search.rb
│   │   ├── stylesheets/
│   │   │   └── sass_extensions.rb
│   │   └── stylesheets.rb
│   └── tasks/
│       └── generators.thor
├── core/
│   ├── .gitignore
│   ├── Gemfile
│   ├── LICENSE.txt
│   ├── README.md
│   ├── Rakefile
│   ├── VERSION
│   ├── compass-core.gemspec
│   ├── data/
│   │   ├── caniuse.json
│   │   └── caniuse_extras/
│   │       └── css-placeholder.json
│   ├── lib/
│   │   ├── compass/
│   │   │   ├── browser_support.rb
│   │   │   ├── configuration/
│   │   │   │   ├── adapters.rb
│   │   │   │   ├── data.rb
│   │   │   │   ├── defaults.rb
│   │   │   │   ├── inheritance.rb
│   │   │   │   ├── paths.rb
│   │   │   │   └── watch.rb
│   │   │   ├── configuration.rb
│   │   │   ├── core/
│   │   │   │   ├── caniuse.rb
│   │   │   │   ├── generated_version.rb
│   │   │   │   ├── sass_extensions/
│   │   │   │   │   ├── functions/
│   │   │   │   │   │   ├── colors.rb
│   │   │   │   │   │   ├── configuration.rb
│   │   │   │   │   │   ├── constants.rb
│   │   │   │   │   │   ├── cross_browser_support.rb
│   │   │   │   │   │   ├── display.rb
│   │   │   │   │   │   ├── enumerate.rb
│   │   │   │   │   │   ├── env.rb
│   │   │   │   │   │   ├── files.rb
│   │   │   │   │   │   ├── font_files.rb
│   │   │   │   │   │   ├── gradient_support.rb
│   │   │   │   │   │   ├── image_size.rb
│   │   │   │   │   │   ├── inline_image.rb
│   │   │   │   │   │   ├── lists.rb
│   │   │   │   │   │   ├── math.rb
│   │   │   │   │   │   ├── selectors.rb
│   │   │   │   │   │   └── urls.rb
│   │   │   │   │   ├── functions.rb
│   │   │   │   │   ├── monkey_patches/
│   │   │   │   │   │   ├── browser_support.rb
│   │   │   │   │   │   └── traversal.rb
│   │   │   │   │   └── monkey_patches.rb
│   │   │   │   ├── sass_extensions.rb
│   │   │   │   └── version.rb
│   │   │   ├── core.rb
│   │   │   ├── error.rb
│   │   │   ├── frameworks.rb
│   │   │   └── util.rb
│   │   └── compass-core.rb
│   ├── stylesheets/
│   │   ├── _compass.scss
│   │   ├── _lemonade.scss
│   │   └── compass/
│   │       ├── _configuration.scss
│   │       ├── _css3.scss
│   │       ├── _layout.scss
│   │       ├── _reset-legacy.scss
│   │       ├── _reset.scss
│   │       ├── _support.scss
│   │       ├── _typography.scss
│   │       ├── _utilities.scss
│   │       ├── css3/
│   │       │   ├── _animation.scss
│   │       │   ├── _appearance.scss
│   │       │   ├── _background-clip.scss
│   │       │   ├── _background-origin.scss
│   │       │   ├── _background-size.scss
│   │       │   ├── _border-radius.scss
│   │       │   ├── _box-shadow.scss
│   │       │   ├── _box-sizing.scss
│   │       │   ├── _box.scss
│   │       │   ├── _columns.scss
│   │       │   ├── _deprecated-support.scss
│   │       │   ├── _filter.scss
│   │       │   ├── _flexbox.scss
│   │       │   ├── _font-face.scss
│   │       │   ├── _hyphenation.scss
│   │       │   ├── _images.scss
│   │       │   ├── _inline-block.scss
│   │       │   ├── _opacity.scss
│   │       │   ├── _pie.scss
│   │       │   ├── _regions.scss
│   │       │   ├── _selection.scss
│   │       │   ├── _shared.scss
│   │       │   ├── _text-shadow.scss
│   │       │   ├── _transform.scss
│   │       │   ├── _transition.scss
│   │       │   └── _user-interface.scss
│   │       ├── layout/
│   │       │   ├── _grid-background.scss
│   │       │   ├── _sticky-footer.scss
│   │       │   └── _stretching.scss
│   │       ├── reset/
│   │       │   ├── _utilities-legacy.scss
│   │       │   └── _utilities.scss
│   │       ├── typography/
│   │       │   ├── _links.scss
│   │       │   ├── _lists.scss
│   │       │   ├── _text.scss
│   │       │   ├── _units.scss
│   │       │   ├── _vertical_rhythm.scss
│   │       │   ├── links/
│   │       │   │   ├── _hover-link.scss
│   │       │   │   ├── _link-colors.scss
│   │       │   │   └── _unstyled-link.scss
│   │       │   ├── lists/
│   │       │   │   ├── _bullets.scss
│   │       │   │   ├── _horizontal-list.scss
│   │       │   │   ├── _inline-block-list.scss
│   │       │   │   └── _inline-list.scss
│   │       │   └── text/
│   │       │       ├── _ellipsis.scss
│   │       │       ├── _force-wrap.scss
│   │       │       ├── _nowrap.scss
│   │       │       └── _replacement.scss
│   │       └── utilities/
│   │           ├── _color.scss
│   │           ├── _general.scss
│   │           ├── _links.scss
│   │           ├── _lists.scss
│   │           ├── _print.scss
│   │           ├── _sass.scss
│   │           ├── _sprites.scss
│   │           ├── _tables.scss
│   │           ├── _text.scss
│   │           ├── color/
│   │           │   ├── _brightness.scss
│   │           │   └── _contrast.scss
│   │           ├── general/
│   │           │   ├── _clearfix.scss
│   │           │   ├── _float.scss
│   │           │   ├── _hacks.scss
│   │           │   ├── _min.scss
│   │           │   ├── _reset.scss
│   │           │   ├── _tabs.scss
│   │           │   └── _tag-cloud.scss
│   │           ├── links/
│   │           │   ├── _hover-link.scss
│   │           │   ├── _link-colors.scss
│   │           │   └── _unstyled-link.scss
│   │           ├── lists/
│   │           │   ├── _bullets.scss
│   │           │   ├── _horizontal-list.scss
│   │           │   ├── _inline-block-list.scss
│   │           │   └── _inline-list.scss
│   │           ├── sass/
│   │           │   ├── _lists.scss
│   │           │   └── _maps.scss
│   │           ├── sprites/
│   │           │   ├── _base.scss
│   │           │   └── _sprite-img.scss
│   │           ├── tables/
│   │           │   ├── _alternating-rows-and-columns.scss
│   │           │   ├── _borders.scss
│   │           │   └── _scaffolding.scss
│   │           └── text/
│   │               ├── _ellipsis.scss
│   │               ├── _nowrap.scss
│   │               └── _replacement.scss
│   ├── templates/
│   │   ├── ellipsis/
│   │   │   ├── ellipsis.sass
│   │   │   ├── manifest.rb
│   │   │   └── xml/
│   │   │       └── ellipsis.xml
│   │   ├── extension/
│   │   │   ├── manifest.rb
│   │   │   ├── stylesheets/
│   │   │   │   └── main.sass
│   │   │   └── templates/
│   │   │       └── project/
│   │   │           ├── manifest.rb
│   │   │           └── screen.sass
│   │   └── project/
│   │       ├── USAGE.markdown
│   │       ├── ie.sass
│   │       ├── manifest.rb
│   │       ├── print.sass
│   │       └── screen.sass
│   └── test/
│       ├── helpers/
│       │   └── diff.rb
│       ├── integrations/
│       │   ├── projects/
│       │   │   ├── .gitignore
│       │   │   ├── busted_font_urls/
│       │   │   │   ├── css/
│       │   │   │   │   └── screen.css
│       │   │   │   └── sass/
│       │   │   │       ├── _project-setup.scss
│       │   │   │       └── screen.sass
│       │   │   ├── busted_image_urls/
│       │   │   │   ├── css/
│       │   │   │   │   └── screen.css
│       │   │   │   └── sass/
│       │   │   │       ├── _project-setup.scss
│       │   │   │       └── screen.sass
│       │   │   ├── compass/
│       │   │   │   ├── css/
│       │   │   │   │   ├── animation-with-legacy-ie.css
│       │   │   │   │   ├── animation.css
│       │   │   │   │   ├── appearance.css
│       │   │   │   │   ├── background-clip.css
│       │   │   │   │   ├── background-origin.css
│       │   │   │   │   ├── background-size.css
│       │   │   │   │   ├── border_radius.css
│       │   │   │   │   ├── box-sizing.css
│       │   │   │   │   ├── box.css
│       │   │   │   │   ├── box_shadow.css
│       │   │   │   │   ├── brightness.css
│       │   │   │   │   ├── browser-support.css
│       │   │   │   │   ├── color.css
│       │   │   │   │   ├── columns.css
│       │   │   │   │   ├── env.css
│       │   │   │   │   ├── filters.css
│       │   │   │   │   ├── flexbox.css
│       │   │   │   │   ├── fonts.css
│       │   │   │   │   ├── force-wrap.css
│       │   │   │   │   ├── gradients.css
│       │   │   │   │   ├── grid_background.css
│       │   │   │   │   ├── hyphenation.css
│       │   │   │   │   ├── image_size.css
│       │   │   │   │   ├── images.css
│       │   │   │   │   ├── issue-1853.css
│       │   │   │   │   ├── layout.css
│       │   │   │   │   ├── legacy_clearfix.css
│       │   │   │   │   ├── lists.css
│       │   │   │   │   ├── opacity.css
│       │   │   │   │   ├── print.css
│       │   │   │   │   ├── regions.css
│       │   │   │   │   ├── replacement.css
│       │   │   │   │   ├── reset.css
│       │   │   │   │   ├── selection.css
│       │   │   │   │   ├── selection.css.3.3
│       │   │   │   │   ├── stretching.css
│       │   │   │   │   ├── support.css
│       │   │   │   │   ├── table.css
│       │   │   │   │   ├── text_shadow.css
│       │   │   │   │   ├── transform.css
│       │   │   │   │   ├── transition.css
│       │   │   │   │   ├── typography/
│       │   │   │   │   │   └── links/
│       │   │   │   │   │       └── hover-link.css
│       │   │   │   │   ├── units.css
│       │   │   │   │   ├── user-interface.css
│       │   │   │   │   ├── utilities.css
│       │   │   │   │   ├── utilities.css.3.3
│       │   │   │   │   └── vertical_rhythm.css
│       │   │   │   └── sass/
│       │   │   │       ├── _project-setup.scss
│       │   │   │       ├── animation-with-legacy-ie.scss
│       │   │   │       ├── animation.scss
│       │   │   │       ├── appearance.scss
│       │   │   │       ├── background-clip.scss
│       │   │   │       ├── background-origin.scss
│       │   │   │       ├── background-size.scss
│       │   │   │       ├── border_radius.scss
│       │   │   │       ├── box-sizing.scss
│       │   │   │       ├── box.sass
│       │   │   │       ├── box_shadow.scss
│       │   │   │       ├── brightness.scss
│       │   │   │       ├── browser-support.scss
│       │   │   │       ├── color.scss
│       │   │   │       ├── columns.scss
│       │   │   │       ├── env.scss
│       │   │   │       ├── filters.scss
│       │   │   │       ├── flexbox.scss
│       │   │   │       ├── fonts.sass
│       │   │   │       ├── force-wrap.scss
│       │   │   │       ├── gradients.sass
│       │   │   │       ├── grid_background.scss
│       │   │   │       ├── hyphenation.scss
│       │   │   │       ├── image_size.sass
│       │   │   │       ├── images.scss
│       │   │   │       ├── issue-1853.scss
│       │   │   │       ├── layout.sass
│       │   │   │       ├── legacy_clearfix.scss
│       │   │   │       ├── lists.scss
│       │   │   │       ├── opacity.scss
│       │   │   │       ├── print.sass
│       │   │   │       ├── regions.scss
│       │   │   │       ├── replacement.scss
│       │   │   │       ├── reset.sass
│       │   │   │       ├── selection.scss
│       │   │   │       ├── stretching.sass
│       │   │   │       ├── support.scss
│       │   │   │       ├── table.scss
│       │   │   │       ├── text_shadow.scss
│       │   │   │       ├── transform.scss
│       │   │   │       ├── transition.scss
│       │   │   │       ├── typography/
│       │   │   │       │   └── links/
│       │   │   │       │       └── hover-link.scss
│       │   │   │       ├── units.scss
│       │   │   │       ├── user-interface.scss
│       │   │   │       ├── utilities.scss
│       │   │   │       └── vertical_rhythm.scss
│       │   │   ├── envtest/
│       │   │   │   ├── css/
│       │   │   │   │   └── env.css
│       │   │   │   └── sass/
│       │   │   │       ├── _project-setup.scss
│       │   │   │       └── env.scss
│       │   │   ├── image_urls/
│       │   │   │   ├── css/
│       │   │   │   │   └── screen.css
│       │   │   │   └── sass/
│       │   │   │       ├── _project-setup.scss
│       │   │   │       └── screen.sass
│       │   │   ├── relative/
│       │   │   │   ├── css/
│       │   │   │   │   ├── ie.css
│       │   │   │   │   ├── print.css
│       │   │   │   │   └── screen.css
│       │   │   │   └── sass/
│       │   │   │       ├── _project-setup.scss
│       │   │   │       ├── ie.sass
│       │   │   │       ├── print.sass
│       │   │   │       └── screen.sass
│       │   │   ├── uses_only_stylesheets_ext/
│       │   │   │   ├── css/
│       │   │   │   │   ├── ie.css
│       │   │   │   │   ├── print.css
│       │   │   │   │   └── screen.css
│       │   │   │   └── sass/
│       │   │   │       ├── ie.scss
│       │   │   │       ├── print.scss
│       │   │   │       └── screen.scss
│       │   │   └── valid/
│       │   │       ├── css/
│       │   │       │   └── simple.css
│       │   │       └── sass/
│       │   │           └── simple.sass
│       │   ├── projects_test.rb
│       │   └── test_helper.rb
│       └── units/
│           ├── configuration_test.rb
│           ├── frameworks_test.rb
│           ├── shared_extension_paths_test.rb
│           ├── test_helper.rb
│           └── urls_test.rb
├── import-once/
│   ├── .gitignore
│   ├── Gemfile
│   ├── Gemfile_sass_3_2
│   ├── LICENSE.txt
│   ├── README.md
│   ├── Rakefile
│   ├── VERSION
│   ├── compass-import-once.gemspec
│   ├── lib/
│   │   ├── compass/
│   │   │   ├── import-once/
│   │   │   │   ├── activate.rb
│   │   │   │   ├── engine.rb
│   │   │   │   ├── importer.rb
│   │   │   │   └── version.rb
│   │   │   └── import-once.rb
│   │   └── compass-import-once.rb
│   └── test/
│       ├── diff_as_string.rb
│       ├── fixtures/
│       │   ├── _simple_partial.scss
│       │   ├── basic.css
│       │   ├── basic.scss
│       │   ├── force_import.css
│       │   ├── force_import.scss
│       │   ├── with_globbing.css
│       │   └── with_globbing.scss
│       ├── import_once_test.rb
│       └── test_helper.rb
└── test_all.sh

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
*.gem


================================================
FILE: .travis.yml
================================================
language: ruby

rvm:
  - 1.8.7
  - 1.9.2
  - 1.9.3
  - jruby-18mode
  - jruby-19mode
  - rbx
  - ree
  - 2.0.0
  - 2.1.0
  - 2.2.0

sudo: false

env:
  - CI_TEST=core
  - CI_TEST=cli

gemfile:
  - core/Gemfile
  - cli/gemfiles/sass_3_3.gemfile
  - cli/gemfiles/listen_2.gemfile

script: cd $CI_TEST && bundle exec rake

matrix:
  exclude:
  - gemfile: cli/gemfiles/sass_3_3.gemfile
    env: CI_TEST=core
    rvm: 1.8.7
  - gemfile: cli/gemfiles/listen_2.gemfile
    env: CI_TEST=core
    rvm: 1.8.7
  - gemfile: core/Gemfile
    env: CI_TEST=cli
    rvm: 1.8.7
  - gemfile: cli/gemfiles/sass_3_3.gemfile
    env: CI_TEST=core
    rvm: 1.9.2
  - gemfile: cli/gemfiles/listen_2.gemfile
    env: CI_TEST=core
    rvm: 1.9.2
  - gemfile: core/Gemfile
    env: CI_TEST=cli
    rvm: 1.9.2
  - gemfile: cli/gemfiles/sass_3_3.gemfile
    env: CI_TEST=core
    rvm: 1.9.3
  - gemfile: cli/gemfiles/listen_2.gemfile
    env: CI_TEST=core
    rvm: 1.9.3
  - gemfile: core/Gemfile
    env: CI_TEST=cli
    rvm: 1.9.3
  - gemfile: cli/gemfiles/sass_3_3.gemfile
    env: CI_TEST=core
    rvm: jruby-18mode
  - gemfile: cli/gemfiles/listen_2.gemfile
    env: CI_TEST=core
    rvm: jruby-18mode
  - gemfile: core/Gemfile
    env: CI_TEST=cli
    rvm: jruby-18mode
  - gemfile: cli/gemfiles/sass_3_3.gemfile
    env: CI_TEST=core
    rvm: jruby-19mode
  - gemfile: cli/gemfiles/listen_2.gemfile
    env: CI_TEST=core
    rvm: jruby-19mode
  - gemfile: core/Gemfile
    env: CI_TEST=cli
    rvm: jruby-19mode
  - gemfile: cli/gemfiles/sass_3_3.gemfile
    env: CI_TEST=core
    rvm: rbx
  - gemfile: cli/gemfiles/listen_2.gemfile
    env: CI_TEST=core
    rvm: rbx
  - gemfile: core/Gemfile
    env: CI_TEST=cli
    rvm: rbx
  - gemfile: cli/gemfiles/sass_3_3.gemfile
    env: CI_TEST=core
    rvm: ree
  - gemfile: cli/gemfiles/listen_2.gemfile
    env: CI_TEST=core
    rvm: ree
  - gemfile: core/Gemfile
    env: CI_TEST=cli
    rvm: ree
  - gemfile: cli/gemfiles/sass_3_3.gemfile
    env: CI_TEST=core
    rvm: 2.0.0
  - gemfile: cli/gemfiles/listen_2.gemfile
    env: CI_TEST=core
    rvm: 2.0.0
  - gemfile: core/Gemfile
    env: CI_TEST=cli
    rvm: 2.0.0
  - gemfile: cli/gemfiles/sass_3_3.gemfile
    env: CI_TEST=core
    rvm: 2.1.0
  - gemfile: cli/gemfiles/listen_2.gemfile
    env: CI_TEST=core
    rvm: 2.1.0
  - gemfile: core/Gemfile
    env: CI_TEST=cli
    rvm: 2.1.0
  - gemfile: cli/gemfiles/listen_2.gemfile
    env: CI_TEST=cli
    rvm: 1.8.7
  - gemfile: cli/gemfiles/listen_2.gemfile
    env: CI_TEST=cli
    rvm: 1.9.2
  - gemfile: cli/gemfiles/listen_2.gemfile
    env: CI_TEST=cli
    rvm: jruby-18mode
  - gemfile: cli/gemfiles/listen_2.gemfile
    env: CI_TEST=cli
    rvm: jruby-19mode
  - gemfile: cli/gemfiles/listen_2.gemfile
    env: CI_TEST=cli
    rvm: ree

notifications:
  irc: {channels: "irc.freenode.org#compass"}
  campfire:
    rooms:
      secure: GXnvuoZ8BVMv+JwJIBb0Ey1ARbfeypmCvpmynykD5taooedTqwyTeT32jw1YTQAOuBewgeWW1H4bF10ySz0GWmu6X2sNx9CVYT1dFudoMvLtnvEmAe0JyyRuSCBFj45jP21eRUAACltxzyX4q/gh+zRIlaRin9YBo/Xv84gDzLw=


================================================
FILE: CONTRIBUTING.md
================================================
  Contributing Stylesheets to Compass
  ===================================

  **Please make all pull requests against the master branch**

  Thank you for your interest in contributing to Compass. Our goal is to make it as easy
  as we can for you to contribute changes to compass -- So if there's something here that
  seems harder than it ought to be, please let us know.

  If you find a bug **in this document**, you are bound to contribute a fix. Stop reading now
  if you do not wish to abide by this rule.

  **Step 1**: If you do not have a github account, create one.

  **Step 2**: Fork Compass to your account. Go to the [main repo](http://github.com/chriseppstein/compass)
  and click the fork button.

  ![Fork Me](http://img.skitch.com/20101015-n4ssnfyj16e555cnn7wp2pg717.png)

  Now we're at a decision point. What kind of change do you intend to make?

  * [Fix a typo (or some other trivial change)](#trivial-changes)
  * [Documentation Changes](#documentation-changes)
  * [Fixing Stylesheet Bugs](#stylesheet-bugs)
  * [New Stylesheet Features](#stylesheet-changes)
  * [Ruby Changes](#ruby-changes)

  Here's some general information about the project you might find useful along the way:

  * [Submitting Patches](#patches)
  * [Project Structure](#project-structure)
  * [General Philosophy](#project-philosophy)
  * [Stylesheet Conventions](#stylesheet-conventions)
  * [Miscellaneous Stuff](#faq)
    * [Setting up Git](#setting-up-git)
    * [Using Compass while Under Development](#running-local-code)
    * [Running Tests](#running-tests)
    * [Recovering from a cherry-pick or a rebase](#recovering-from-rebased-or-cherry-picked-changesets)

  <h2 id="trivial-changes">Making Trivial Changes</h2>

  Thanks to Github, making small changes is super easy. After forking the project navigate
  to the file you want to change and click the edit link.

  ![Edit Me](http://img.skitch.com/20101015-n2x2iaric7wkey2x7u4fa2m1hj.png)

  Change the file, write a commit message, and click the `Commit` button.

  ![Commit Me](http://img.skitch.com/20101015-br74tfwtd1ur428mq4ejt12kfc.png)
  Now you need to get your change [accepted](#patches).


  <h2 id="documentation-changes">Making Documentation Changes</h2>

  The compass documentation is stored in two places. First, the `doc-src` directory is
  where the documentation lives -- however much of the documentation is generated
  from comments in the Sass files themselves. More information on [changing
  documentation][documentation]. Once your changes are pushed, please
  [submit them](#patches).

  <h2 id="stylesheet-bugs">Fixing Stylesheet Bugs</h2>

  **Step 3**: If this is a bug you discovered. Please [report it][issues] before working on a fix.
  This helps us better understand the patch.

  **Step 4**: Get [the code](#setting-up-git) if you haven't yet done so.

  **Step 5**: Fix the bug and commit the changes. Please make sure to mention the bug
  id in your commit message like so:

      Fixed the display of the fizzlebuzz in IE6.

      Closes GH-123.

  **Step 6**: Verify the fix in as many browsers as you can as well as against your own
  project. How to [use compass while changing it](#running-local-code).

  **Step 7**: Make sure the tests pass. More info on [running tests](#running-tests)
  If the tests fail, fix the tests or the stylesheets accordingly. If the tests, don't
  fail, that means this aspect was not well enough tested. Please [add or augment
  a test](#writing-tests).

  You're done. Please [submit your changes](#patches).

  <h2 id="stylesheet-changes">Making Stylesheet Changes</h2>

  It is a good idea to discuss new features ideas with the compass users and developers
  before building something. Please don't be shy; send an email to the [compass mailing
  list](http://groups.google.com/group/compass-users).

  Many feature ideas are good but not obviously a good fit for the compass core library.
  In these cases, you can and should create a [compass extension][extensions]. Sometimes
  this is because the concept does not align with the [compass philosophy](#project-philosophy).
  But sometimes it's just because we think the idea needs time to bake. [Documentation on
  making extensions.][extensions]

  **Step 3**: Get [the code](#setting-up-git) if you haven't yet done so.

  **Step 4**: Add the feature -- contact the mailing list if you have any questions.

  **Step 5**: Add a test case. More info on [writing tests for compass](#writing-tests).

  **Step 6**: Documentation - Add or update the reference documentation. Add
  an example of using the feature. See the [doc readme for details][documentation].

  You're done. Please [submit your changes](#patches).

  <h2 id="ruby-changes">Making Ruby Changes</h2>

  At this time, if you're a rubyist who's planning on working on the ruby-side of
  things, it's assumed you know how to read code and use standard ruby tools like
  rake, gem, bundler, test/unit, cucumber, rspec, etc. If you have any questions,
  please ask. No changes will be accepted without accompanying tests.

  <h2 id="patches">Submitting Patches</h2>

  If you are submitting features that have more than one changeset, please create a
  topic branch to hold the changes while they are pending merge and also to track
  iterations to the original submission. To create a topic branch:

      $ git checkout -b new_branch_name
      ... make more commits if needed ...
      $ git push origin new_branch_name

  You can now see these changes online at a url like:

      http://github.com/your_user_name/compass/commits/new_branch_name

  If you have single-commit patches, it is fine to keep them on master. But do keep in
  mind that these changesets might be
  [cherry-picked](#recovering-from-rebased-or-cherry-picked-changesets).

  Once your changeset(s) are on github, select the appropriate branch containing your
  changes and send a pull request. Make sure to choose the same upstream branch that
  you developed against (probably stable or master). Most of the description of your
  changes should be in the commit messages -- so no need to write a whole lot in the
  pull request message. However, the pull request message is a good place to provide a
  rationale or use case for the change if you think one is needed. More info on [pull
  requests][pulls].

  ![Pull Request Example](http://img.skitch.com/20101015-rgfh43yhk7e61fchj9wccne9cq.png)

  Pull requests are then managed like an issue from the [compass issues page][issues].
  A code review will be performed by a compass core team member, and one of three outcomes
  will result:

  1. The change is rejected -- Not all changes are right for [compass's
     philosophy](#project-philosophy). If your change is rejected it might be better
     suited for a plugin, at least until it matures and/or proves itself with the users.
  2. The change is rejected, *unless* -- Sometimes, there are missing pieces, or
     other changes that need to be made before the change can be accepted. Comments
     will be left on the commits indicating what issues need to be addressed.
  3. The change is accepted -- The change is merged into compass, sometimes minor
     changes are then applied by the committer after the merge.

  <h2 id="project-structure">Project Structure</h2>

      compass/
        bin/
          compass             - CLI executable
        devbin/               - development scripts after installing the bundle
        doc-src/              - source for documentation
        docs/                 - generated documentation
        features/             - tests for compass
        frameworks/           - All frameworks in this directory are loaded automatically
          compass/            - The compass framework
            stylesheets/      - The compass libraries
            templates/        - The compass project templates and patterns
          blueprint/
            stylesheets/      - The blueprint libraries
            templates/        - The blueprint project templates and patterns
        lib/
          compass.rb          - The main compass ruby library
          compass/
            app_integration/  - integration with app frameworks
            commands/         - UI agnostic support for the CLI
            configuration/    - support for project configuration
            exec/             - UI code for the CLI
            installers/       - support for installing templates
            sass_extensions/  - enhancements to Sass
              functions/      - Sass functions exposed by compass
              monkey_patches/ - Changes to sass itself
        test/                 - unit tests

  <h2 id="project-philosophy">General Philosophy</h2>

  1. Users specify their own selectors. Compass never forces a user
     to use a presentational class name.
  2. Compass does not require javascript. It is a CSS framework.
  3. Compass core is "design agnostic". This is why compass core has no
     grid framework -- grids are not design agnostic.
  4. Compass frameworks are not special. If compass can do it, so should an extension
     be able.
  5. Sass is awesome -- Compass should make sass more accessible and
     demonstrate how to use Sass to its fullest potential.
  6. Developing across browsers is hard and will always be hard. It takes
     a community to get it right.
  7. By default, Compass supports as many browsers as it can. Where it can't
     it progressively enhances. Where it degrades, the documentation should
     make a note. Deviation from this requires an excellent reason.
  8. Compass is a proving ground for Sass features. The watcher and color
     functions are examples of features that started in Compass and got
     moved to Sass.

  <h2 id="stylesheet-conventions">Stylesheet Conventions</h2>

  1. All framework stylesheets are partials. Their filename begin with an underscore.
     Otherwise, Sass will create stylesheets directly into the user's CSS directory.
  2. Compass imports do not emit styles. There are a few limited exceptions to this like
     the resets and base classes for inheritance.
  3. Mixins with two-level defaults. Mixins often provide two levels of default
     values. The first is a global default that can be overridden once. The second
     is a default that can be overridden when the mixin is included.
  4. Mixin argument names are part of the public API, make sure they are understandable and not
     needlessly truncated or terse.
  5. If adding a new folder of stylesheets, add a single stylesheet with the same name that
     imports all of the stylesheets in the folder.
  6. Try to avoid passing selectors as arguments. This is what mixins are for.


  <h2 id="faq">Common Problems &amp; Miscellaneous Info</h2>

  <h3 id="setting-up-git">Setting up Git</h3>

  Please follow [these instructions](http://help.github.com/git-email-settings/)
  to set up your email address and attribution information.

  Download your git repo:

      git clone git@github.com:your_username/compass.git

  Set up a remote to the main repo:

      cd compass
      git remote add chriseppstein git://github.com/chriseppstein/compass.git

  Getting recent changes from the main repo:

      git fetch chriseppstein

  <h3 id="running-local-code">Using Compass while Under Development</h3>

  1. Use the bin script. `/path/to/compass/bin/compass` is a version of the compass
     command line that uses the local changes you have made. You can add `/path/to/compass/bin`
     to your `$PATH`, or refer to it directly.
  2. `gem build compass.gemspec`
  3. `gem install compass-<version for the file that was just created>.gem` -- If installing to your
     system gems, you'll probably need to add `sudo` to the front. If you don't know
     what that means, you probably need to add `sudo` to the front.
  4. In a [bundled][bundler] environment, you can configure your gem to use compass
     while you work on it like so: `gem 'compass', :path => "/Users/myusername/some/path/to/compass"`
     Bundler will perform some sort of charm on ruby to make it work.
5. Configuring ruby directly. If you're a ruby pro, you probably don't need to be
   told that you can set compass on the load path like so: `export RUBYLIB=/Users/myusername/some/path/to/compass/lib`

<h3 id="running-tests">Running Tests</h3>

1. You must have Ruby installed on your system. After [setting up git](#setting-up-git),
   change to the root directory of your git checkout of Compass.

   `cd compass`

2. Install the bundler Ruby gem.

   `gem install bundler`

   If installing to your system gems, you'll probably need to add `sudo` to the
   front of that command. If you don't know what that means, you probably need
   to add `sudo` to the front.

3. Install development dependencies:

   `bundle install --binstubs devbin`

4. Running core library and stylesheet tests:

   `bundle exec rake test features`

5. Running behavior tests

   `./devbin/cucumber`

If stylesheet tests fail, the output of the test project is captured in
`test/fixtures/stylesheets/<project>/saved/` and the error message will report where
the error was. Here's an example:

![Stylesheet Test Failure](http://img.skitch.com/20101015-k4t11k8n7xs2r53ftjhrji629d.png)

<h3 id="writing-tests">Writing Stylesheet Tests</h3>

Compass has stylesheet tests to ensure that:

- each stylesheet compiles
- each stylesheet can be imported directly without any other dependencies
- refactorings that should not affect the output, don't

At some point, it would be great to have a test system that verifies that the stylesheets
*work correctly* in various browsers. If you have ideas for how to accomplish this in a sane
way, please let us know.

In the `test/fixtures/stylesheets` directory, there are a number of compass projects.
The tests work by adding or updating the sass files, running the tests to make sure they fail,
and then changing the expected css output to make the test pass. It is rudimentary, but as
a safety net, it has caught a number of problems that might have been missed otherwise.
If you add a new stylesheet to compass, please make sure to add a new test stylesheet
that only imports the newly added stylesheet and add rules that use the new features in that
stylesheet.

<h3 id="recovering-from-rebased-or-cherry-picked-changesets">You cherry-picked/rebased
my changes. What should I do?</h3>
Depending on any number of reasons, including but not limited to the alignment of the stars,
Your changes might not be merged into compass using a simple merge. For instance, we might
decide to place a change against master into stable instead, or we might squish all your
changes together into a single commit at the time of merge, or we might want a change you've
submitted but not a change that it was placed onto top of. In these cases, there are
a couple of ways you can react:

1. If you have some changes on a branch that were not yet accepted, but other changes on that
   branch were accepted then you should run the following command (make sure to fetch first):
   `git checkout branch_name; git rebase chriseppstein/master` (assuming the change was applied
   to the master branch)
2. If all your changes on the topic branch were accepted or you don't care to keep it around
   anymore: `git checkout master; git branch -D branch_name; git push origin :branch_name`

[pulls]: http://help.github.com/pull-requests/
[issues]: http://github.com/chriseppstein/compass/issues
[documentation]: http://github.com/chriseppstein/compass/blob/stable/doc-src/README.markdown
[bundler]: http://gembundler.com/
[extensions]: /help/tutorials/extensions/


================================================
FILE: Guardfile
================================================
group :tests do
  guard :test do
    watch(%r{^lib/(.+)\.rb$}) { |m| "test/#{m[1]}_test.rb" }
    watch(%r{^test/.+_test\.rb$})
    watch(%r{^test/units/.+_test\.rb$})
    watch('test/test_helper.rb') { "test" }
  end
end

group :features do
  guard :cucumber do
    watch(%r{^features/.+\.feature$})
    watch(%r{^features/support/.+$}) { 'features' }
    watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
  end
end

================================================
FILE: LICENSE.markdown
================================================
Copyright (c) 2009-2014 Christopher M. Eppstein

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
No attribution is required by products that make use of this software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name(s) of the above copyright
holders shall not be used in advertising or otherwise to promote the sale,
use or other dealings in this Software without prior written authorization.

Contributors to this project agree to grant all rights to the copyright
holder of the primary product. Attribution is maintained in the source
control history of the product.


================================================
FILE: README.markdown
================================================
# Compass Stylesheet Authoring Framework

**Depreciated:** Compass is no longer supported.

Build Status: [![Build Status](https://travis-ci.org/Compass/compass.png)](https://travis-ci.org/Compass/compass)

Code Quality: [![Code Climate](https://codeclimate.com/github/Compass/compass.png)](https://codeclimate.com/github/Compass/compass)

## Resources

* [Compass Homepage](http://compass-style.org/)
* [Installing Compass](http://compass-style.org/install/)
* [Compass Reference](http://compass-style.org/install/reference/)

## Author
Compass is written by [Chris Eppstein](http://chriseppstein.github.io/).<br>
Chris is a software engineer at [LinkedIn](http://www.linkedin.com/) and a member of the [Sass](https://github.com/nex3/sass) core team.

## Core Team Members

* [Scott Davis](https://github.com/scottdavis)
* [Miriam Suzanne](https://github.com/mirisuzanne)
* [Brandon Mathis](https://github.com/imathis)

## Major Contributors

* [Nico Hagenburger](https://github.com/hagenburger)

## License
Copyright (c) 2008-2014 Christopher M. Eppstein<br>
All Rights Reserved.<br>
Released under a [slightly modified MIT License](LICENSE.markdown).


================================================
FILE: Rakefile
================================================

GEMS = ['core', 'cli', 'import-once']


task :default => %w[test]

desc "Run all tests"
task :test do
  sh %{./test_all.sh} do |ok, res|
     Rake::Task["test_cleanup"].invoke if ok
  end
end

desc "build gems"
task :build_gems => [:test] do
  GEMS.each do |gem|
    chdir gem do
      if gem == 'cli'
        sh "gem build compass.gemspec"
      else
        sh "gem build compass-#{gem}.gemspec"
      end
    end
  end
end

desc "publish gems"
task :publish_gems => [:build_gems] do
  GEMS.each do |gem|
    chdir gem do
      if gem == 'cli'
        sh "gem push compass.gemspec"
      else
        sh "gem push compass-#{gem}.gemspec"
      end
    end
  end
end

desc "Clean up all test files"
task :test_cleanup do
  dirs = [
    'core/devbin/',
    'core/.sass-cache/',
    'core/test/integrations/projects/busted_font_urls/tmp/',
    'core/test/integrations/projects/busted_image_urls/tmp/',
    'core/test/integrations/projects/compass/tmp/',
    'core/test/integrations/projects/envtest/tmp/',
    'core/test/integrations/projects/image_urls/tmp/',
    'core/test/integrations/projects/relative/tmp/',
    'core/test/integrations/projects/uses_only_stylesheets_ext/tmp/',
    'core/test/integrations/projects/valid/tmp/',
    'import-once/.sass-cache/'
  ]
  dirs.each { |dir| rm_rf dir }
end


desc "Bundle Update"
task :bundle_update do
  GEMS.each do |gem|
    chdir gem do
      sh "bundle update"
    end
  end
end


================================================
FILE: TODO.md
================================================
FYI: I'm abandoning the even/odd release numbering scheme in favor of using preview releases. Going forward the master branch will use the following release numbering:

* 0.11.0.alpha.N.shortsha (Not tagged)
* 0.11.0.beta.N (tagged, new features expected)
* 0.11.0.rc.N (tagged, no new features expected)

MUST:
* A proper welcome page for blueprint projects (or delete it)
* Rails Integration

NICE:
* some extension commands
* Better help for commands and patterns
* Color Palette extraction and management commands

v0.11
=====
Planned Release Date: Aug 2, 2010
This is a quick iteration release. The focus on turning out
even better documentation and some stylesheet updates and
enhancements that take better advantage of the Sass 3 features.

### Docs (can be done on stable)

* Improve the design
* Better tutorials and getting started guides.
* Terminal for Designers
* Better examples & example navigation
* Contribution guide:
  * Compass stylesheets
  * Compass ruby code
  * Documentation patches
* SCSS Style Guide
* Bundler 1.0 support
* Upgrade nanoc
* Better search experience
* Search mixins and constants and code fragments that might use those.
* Awesome homepage that is better integrated with the docs.
* HTML5 the docs so they can run locally in offline mode.

### Compass Core

* Updates as necessary to the CSS3 module as the spec process develops.
* Typography module

### Blueprint

* Provide an option to use @extend in the blueprint grid

### Rails

* Fully integrated support of Rails 3

### Other

* Consider adding app integration with: Node.js, Django, Drupal, Wordpress
  (Wherever opinionated layouts exist). Also, try to make one of these a plugin
  to test out the concept.
* clean up all the argument names in preparation for keyword argument support from sass.

v0.12 
=====

This release depends on Sass 3.2 and is aimed at taking advantage of
the new sass 3.2 feature set as well as really making the extensions
system come alive. Since I don't foresee any deprecations in Sass 3.2,
this will not be a coordinated release. Instead, this release will
trail Sass 3.2 by a month or two.

### Compass Core

* Figure out what to do about multiple attribute properties like background.
  Might require list and function support from sass.

### Blueprint

* If sass 3.2 is out with @function support, use that for grid
  calculations, otherwise punt to 1.0.

### Extensions

* Extension registry on compass-style.org.
* One step publishing via github + webhooks
* Easy install via CLI
* Local (per-user) extension repo with auto-discovery.
* Video showing how easy it is to create, publish, and install an extension.


v1.0 - Polaris
==============

### Blueprint

* If the @extend version of the grid is full of win, make it the default.

### Sassdoc

Extract the compass documentation system into a stand-alone project.

### Extensions

* Build basic docs and host them for all extensions using sassdoc.
* Support for selling extensions and taking a cut for umdf.org?

### Project Tools

* enable building project docs using the sassdoc tool.

v2.0
====

Version 2 is all about making compass easier to use. Compass and Sass
will have a GUI that makes it simple to manage your projects.

### GUI Prerelease 1

* Concept brainstorming
* mockups
* How can compass gui and sass gui interoperate or plug in.

### GUI Prerelease 2

Beta release as a separate install.

### GUI Prerelease 3

* Iterate based on feedback.
* Integrate with a Sass GUI.
* Embed the docs

### One-click Installers

Install compass and sass with one click

* Windows (Only if someone else wants to build and maintain it.)
* Mac (.dmg + drag & drop app or installer)
* Linux (Get distro packages going and in place for the 1.0 release)


================================================
FILE: cli/.gitignore
================================================
*.DS_Store
*.tmproj
*.lock
tmp/*
devbin
.sass-cache
test/tmp
test/fixtures/stylesheets/*/tmp
test/fixtures/stylesheets/*/saved
test/fixtures/stylesheets/empty
test/fixtures/stylesheets/*/sass/.sass-cache
test/fixtures/stylesheets/valid/css/*
pkg/*
compass-*.gem
coverage*
docs
.bundle
attic
devbin
.rvmrc
*.rbc
vendor/ruby
vendor
Gemfile.lock
*.pkg
RELEASE_VERSION


================================================
FILE: cli/Gemfile
================================================
source 'https://rubygems.org'

gemspec unless defined?(CI)

unless ENV['PKG']

  gem "sass", "~> 3.3.13" unless defined?(CI)
  gem "compass-core", :path => "../core" unless defined?(CI)
  gem "compass-import-once", :path => "../import-once" unless defined?(CI)
  gem 'sass-globbing', "~> 1.1.1"
  gem "cucumber", "~> 1.2.1"
  gem "rspec", "~> 2.0.0"
  gem "compass-validator", "3.0.1"
  gem "css_parser", "~> 1.0.1"
  gem "rubyzip", "0.9.9"
  gem 'mocha', '0.11.4'
  gem 'minitest', '2.12.1'
  gem 'diff-lcs', '~> 1.1.2'
  gem 'rake'
  gem 'json', '~> 1.7.7', :platforms => :ruby_18
  gem 'true', "~> 0.2.3"
  gem 'test-unit', '~> 3.0.9'

  # Warning be carful adding OS dependant gems above this line it will break the CI server please
  # place them below so they are excluded

  unless ENV["CI"]
    gem 'rb-fsevent'
    gem 'ruby_gntp'
    gem "ruby-prof", :platforms => [:mri_19, :mri_20]
    gem "rcov", :platforms => :mri_18
    gem 'guard', :platforms => [:mri_20]
    gem 'guard-test', :platforms => [:mri_20]
    gem 'guard-cucumber', :platforms => [:mri_20]
    # gem 'packager'
    gem 'colorize'
    gem 'pry'
  end
end


================================================
FILE: cli/Rakefile
================================================
sh "git checkout lib/compass/generated_version.rb"
require 'rubygems'
require 'rubygems/package_task'
require 'rake/testtask'
require 'fileutils'


if ENV["PKG"]
  $: << File.expand_path(File.dirname(__FILE__))+"/lib"
else
  require 'bundler/setup'
end

unless ENV['CI']
  require 'colorize'
  require 'fileutils'
end

begin
  require 'rake/dsl_definition'
rescue LoadError
  # pass
end

# ----- Default: Testing ------
task :default => [:test, :features]

begin
  require 'cucumber'
  require 'cucumber/rake/task'

  Cucumber::Rake::Task.new(:features) do |t|
    #t.cucumber_opts = %w{--format progress}
  end
rescue LoadError
  $stderr.puts "cannot load cucumber"
end

Rake::TestTask.new :test do |t|
  t.libs << 'lib'
  t.libs << 'test'
  test_files = FileList['test/**/*_test.rb']
  test_files.exclude('test/rails/*', 'test/haml/*')
  t.test_files = test_files
  t.verbose = true
end

Rake::TestTask.new :units do |t|
  t.libs << 'lib'
  t.libs << 'test'
  test_files = FileList['test/units/**/*_test.rb']
  test_files.exclude('test/rails/*', 'test/haml/*')
  t.test_files = test_files
  t.verbose = true
end

Rake::TestTask.new :integrations do |t|
  t.libs << 'lib'
  t.libs << 'test'
  test_files = FileList['test/integrations/**/*_test.rb']
  test_files.exclude('test/rails/*', 'test/haml/*')
  t.test_files = test_files
  t.verbose = true
end

namespace :git do
  task :clean do
    sh "git", "clean", "-fdx"
  end
end


begin
  require 'cucumber/rake/task'
  require 'rcov/rcovtask'
  namespace :rcov do
    Cucumber::Rake::Task.new(:cucumber) do |t|
      t.rcov = true
      t.rcov_opts = %w{--exclude osx\/objc,gems\/,spec\/,features\/ --aggregate coverage.data}
      t.rcov_opts << %[-o "coverage"]
    end

    Rcov::RcovTask.new(:units) do |rcov|
      rcov.libs << 'lib'
      test_files = FileList['test/**/*_test.rb']
      test_files.exclude('test/rails/*', 'test/haml/*')
      rcov.pattern    = test_files
      rcov.output_dir = 'coverage'
      rcov.verbose    = true
      rcov.rcov_opts = %w{--exclude osx\/objc,gems\/,spec\/,features\/ --aggregate coverage.data}
      rcov.rcov_opts << %[-o "coverage" --sort coverage]
    end


    desc "Run both specs and features to generate aggregated coverage"
    task :all do |t|
      rm "coverage.data" if File.exist?("coverage.data")
      Rake::Task["rcov:units"].invoke
      Rake::Task["rcov:cucumber"].invoke
    end
  end
rescue LoadError => e
  puts "WARNING: #{e}"
end

namespace :test do
  debug = false
  desc "update test expectations if needed"
  task :update do
    Rake::Task['test:update:fixtures'].invoke
  end
  task :debug do
    debug = true
    Rake::Task['test:update:fixtures'].invoke
  end
  namespace :update do
    EXPECTED = 'css'
    TMP = 'tmp'
    #desc "update fixture expectations for test cases if needed"
    task :fixtures do
      fixtures = File.join('test/fixtures/stylesheets/compass'.split('/'))
      # remove any existing temporary files
      FileUtils.rm_rf(File.join(File.dirname(__FILE__), fixtures, TMP, '.'))
      # compile the fixtures
      puts "checking test cases..."
      CHECKMARK = "\u2713 "
      filter = debug ? '--trace' : "| grep 'error.*#{fixtures}'"
      errors = %x[compass compile #{fixtures} #{filter}]
      # check for compilation errors
      if not errors.empty?
        puts "Please fix the following errors before proceeding:".colorize(:red) if not debug
        puts errors
      else
        # check to see what's changed
        diff = %x[diff -r #{File.join(fixtures, EXPECTED, '')} #{File.join(fixtures, TMP, '')}]
        # ignore non-CSS files in css/
        diff.gsub!(/^Only in .*\/css\/(.*)\:.*[^.]/, '')
        if diff.empty?
          puts "#{CHECKMARK}Cool! Looks like all the tests are up to date".colorize(:green)
        else
          puts "The following changes were found:"
          puts "===================================="
          # check for new or removed expectations
          diff.scan(/^Only in .*\/(#{EXPECTED}|#{TMP})\/(.*)\: (.*).css/).each do |match|
            config = (match[0] == TMP) ? [:green, '>', 'NEW TEST'] : [:red, '<', 'DELETED']
            puts "[#{File.join(match[1], match[2])}]  #{config[2].colorize(config[0])}".colorize(:cyan)
            new_file = File.join(File.dirname(__FILE__), fixtures, match[0], match[1], match[2]) + '.css'
            puts File.read(new_file).gsub(/^(.*)/, config[1] + ' \1').colorize(config[0])
          end
          diff = diff.gsub(/^diff\s\-r\s.*\/tmp\/(.*).css/, '[\1]'.colorize(:cyan))
          diff = diff.gsub(/^Only in .*\n?/, '')
          diff = diff.gsub(/^(\<.*)/, '\1'.colorize(:red))
          diff = diff.gsub(/^(\>.*)/, '\1'.colorize(:green))
          diff = diff.gsub(/^(\d+.*)/, '\1'.colorize(:cyan))
          puts diff
          puts "===================================="
          puts "Are all of these changes expected? [y/n]".colorize(:yellow)
          if (($stdin.gets.chomp)[0] == 'y')
            FileUtils.rm_rf(File.join(File.dirname(__FILE__), fixtures, EXPECTED, '.'))
            FileUtils.cp_r(File.join(File.dirname(__FILE__), fixtures, TMP, '.'), File.join(File.dirname(__FILE__), fixtures, EXPECTED))
            puts "#{CHECKMARK}Thanks! The test expectations have been updated".colorize(:green)
          else
            puts "Please manually update the test cases and expectations".colorize(:red)
          end
        end
      end
    end
  end
end

# Release tasks
gemspec_file = FileList['compass.gemspec'].first
spec = eval(File.read(gemspec_file), binding, gemspec_file)
spec.files.delete("VERSION")
spec.files.delete("VERSION_NAME")

def spec.bump!
  segments = version.to_s.split(".")
  segments[-1] = segments.last.succ
  self.version = Gem::Version.new(segments.join("."))
end

# Set SAME_VERSION when moving to a new major version and you want to specify the new version
# explicitly instead of bumping the current version.
# E.g. rake build SAME_VERSION=true
spec.bump! unless ENV["SAME_VERSION"]

desc "Run tests and build compass-#{spec.version}.gem"
task :build => [:default, :gem]

task :gem => :release_version

task :release_version do
  open("lib/compass/generated_version.rb", "w") do |f|
    f.write(<<VERSION_EOF)
module Compass
  VERSION = "#{spec.version}"
  VERSION_NAME = "#{File.read('VERSION_NAME').strip}"
end
VERSION_EOF
  end
end

desc "Make the prebuilt gem compass-#{spec.version}.gem public."
task :publish => [:record_version, :push_gem, :tag]

desc "Build & Publish version #{spec.version}" 
task :release => [:build, :publish]

Gem::PackageTask.new(spec) do |pkg|
  pkg.need_zip = true
  pkg.need_tar = true
end

desc "Record the new version in version control for posterity"
task :record_version do
  unless ENV["SAME_VERSION"]
    open(FileList["VERSION"].first, "w") do |f|
      f.write(spec.version.to_s)
    end
    sh "git add VERSION"
    sh "git checkout lib/compass/generated_version.rb"
    sh %Q{git commit -m "Bump version to #{spec.version}."}
  end
end

desc "Tag the repo as #{spec.version} and push the code and tag."
task :tag do
  sh "git tag -a -m 'Version #{spec.version}' #{spec.version}"
  sh "git push --tags origin #{`git rev-parse --abbrev-ref HEAD`}"
end

desc "Push compass-#{spec.version}.gem to the rubygems server"
task :push_gem do
  sh "gem push pkg/compass-#{spec.version}.gem"
end



================================================
FILE: cli/VERSION
================================================
1.0.3

================================================
FILE: cli/VERSION_NAME
================================================
Polaris


================================================
FILE: cli/bin/compass
================================================
#!/usr/bin/env ruby
# The compass command line utility

# This allows compass to run easily from a git checkout without install.
def fallback_load_path(path)
  retried = false
  begin
    yield
  rescue LoadError
    unless retried
      $: << path
      retried = true
      retry
    end
    raise
  end
end

fallback_load_path(File.join(File.dirname(__FILE__), '..', 'lib')) do
  require 'compass'
  require 'compass/exec'
end

if defined?(Bundler)
  require 'bundler/shared_helpers'
  Bundler.require :assets if Bundler::SharedHelpers.in_bundle?
end

runner = Proc.new do
  Compass::Exec::SubCommandUI.new(ARGV).run!
end

if ARGV.delete("--profile")
  require 'ruby-prof'
  RubyProf.start
  exit_code = runner.call
  result = RubyProf.stop

  # Print a flat profile to text
  printer = RubyProf::FlatPrinter.new(result)
  printer.print(STDERR, 0)
  exit exit_code
else
  exit runner.call || 1
end


================================================
FILE: cli/compass.gemspec
================================================
path = File.expand_path("lib", File.dirname(__FILE__))
$:.unshift(path) unless $:.include?(path)
require 'compass/version'

Gem::Specification.new do |gemspec|
  gemspec.name = "compass"
  gemspec.version = Compass::VERSION # Update VERSION file to set this.
  gemspec.description = "Compass is a Sass-based Stylesheet Framework that streamlines the creation and maintenance of CSS."
  gemspec.homepage = "http://compass-style.org"
  gemspec.authors = ["Chris Eppstein", "Scott Davis", "Eric M. Suzanne", "Brandon Mathis", "Nico Hagenburger"]
  gemspec.email = "chris@eppsteins.net"
  gemspec.executables = %w(compass)
  gemspec.require_paths = %w(lib)
  gemspec.rubygems_version = "1.3.5"
  gemspec.summary = %q{A Real Stylesheet Framework}

  gemspec.add_dependency 'sass', '>= 3.3.13', '< 3.5'
  gemspec.add_dependency 'compass-core', "~> #{File.read(File.join(File.dirname(__FILE__),"..","core","VERSION")).strip}"
  gemspec.add_dependency 'compass-import-once', "~> #{File.read(File.join(File.dirname(__FILE__),"..","import-once","VERSION")).strip}"
  gemspec.add_dependency 'chunky_png', '~> 1.2'
  gemspec.add_dependency 'rb-fsevent', '>= 0.9.3'
  gemspec.add_dependency 'rb-inotify', '>= 0.9'

  gemspec.post_install_message = <<-MESSAGE
    Compass is charityware. If you love it, please donate on our behalf at http://umdf.org/compass Thanks!
  MESSAGE

  gemspec.files = %w(LICENSE.markdown VERSION VERSION_NAME Rakefile)
  gemspec.files += Dir.glob("bin/*")
  gemspec.files += Dir.glob("data/**/*")
  gemspec.files += Dir.glob("frameworks/**/*")
  gemspec.files += Dir.glob("lib/**/*")
  gemspec.files += Dir.glob("test/**/*.*")
  gemspec.files -= Dir.glob("test/fixtures/stylesheets/*/saved/**/*.*")
  gemspec.test_files = Dir.glob("test/**/*.*")
  gemspec.test_files -= Dir.glob("test/fixtures/stylesheets/*/saved/**/*.*")
  gemspec.test_files += Dir.glob("features/**/*.*")
end



================================================
FILE: cli/features/command_line.feature
================================================
Feature: Command Line
  In order to manage my stylesheets
  As a user on the command line
  I want to create a new project

  Scenario: Install a project without a framework
    When I create a project using: compass create my_project
    Then a directory my_project/ is created
    And a configuration file my_project/config.rb is created
    And a sass file my_project/sass/screen.scss is created
    And a sass file my_project/sass/print.scss is created
    And a sass file my_project/sass/ie.scss is created
    And a css file my_project/stylesheets/screen.css is created
    And a css file my_project/stylesheets/print.css is created
    And a css file my_project/stylesheets/ie.css is created
    And I am told how to link to /stylesheets/screen.css for media "screen, projection"
    And I am told how to link to /stylesheets/print.css for media "print"
    And I am told how to conditionally link "IE" to /stylesheets/ie.css for media "screen, projection"

  Scenario: Install a project with specific directories
    When I create a project using: compass create custom_project --using compass --sass-dir sass --css-dir css --images-dir assets/imgs
    Then a directory custom_project/ is created
    And a directory custom_project/sass/ is created
    And a directory custom_project/css/ is created
    And a sass file custom_project/sass/screen.scss is created
    And a css file custom_project/css/screen.css is created

  Scenario: Creating a bare project
    When I create a project using: compass create bare_project --bare
    Then a directory bare_project/ is created
    And a configuration file bare_project/config.rb is created
    And a directory bare_project/sass/ is created
    And a directory bare_project/stylesheets/ is not created
    And I am congratulated
    And I am told that I can place stylesheets in the sass subdirectory
    And I am told how to compile my sass stylesheets

  Scenario: Compiling a project with errors
    Given I am using the existing project in test/fixtures/stylesheets/valid
    And the project has a file named "sass/error.scss" containing:
      """
        .broken {
      """
    When I run: compass compile
    Then the command exits with a non-zero error code

  Scenario: Creating a bare project with a framework
    When I create a project using: compass create bare_project --using blueprint --bare
    Then an error message is printed out: A bare project cannot be created when a framework is specified.
    And the command exits with a non-zero error code

  Scenario: Compiling an existing project.
    Given I am using the existing project in test/fixtures/stylesheets/valid
    When I run: compass compile
    Then a directory tmp/ is created
    And a css file tmp/simple.css is created

  Scenario: Compiling an existing project with a specified project
    Given I am using the existing project in test/fixtures/stylesheets/valid
    And I am in the parent directory
    When I run: compass compile tmp_valid
    Then a directory tmp_valid/tmp/ is created
    And a css file tmp_valid/tmp/simple.css is created

  Scenario: Recompiling a project with no changes
    Given I am using the existing project in test/fixtures/stylesheets/valid
    When I run: compass compile
    And I run: compass compile

  Scenario: compiling a specific file in a project
    Given I am using the existing project in test/fixtures/stylesheets/valid
    And I run: compass compile sass/simple.sass
    Then a sass file sass/another_simple.scss is not mentioned
    And a css file tmp/simple.css is reported written
    And a css file tmp/simple.css is created
    And a css file tmp/another_simple.css is not created

  Scenario: Re-compiling a specific file in a project with no changes
    Given I am using the existing project in test/fixtures/stylesheets/valid
    When I run: compass compile
    And I run: compass compile sass/simple.sass --force
    Then a sass file sass/another_simple.scss is not mentioned
    And a css file tmp/simple.css is reported written

  Scenario: Basic help
    When I run: compass help
    Then I should see the following "primary" commands:
      | clean   |
      | compile |
      | create  |
      | init    |
      | watch   |
    And I should see the following "other" commands:
      | config      |
      | extension   |
      | frameworks  |
      | help        |
      | imports     |
      | install     |
      | interactive |
      | sprite      |
      | stats       |
      | unpack      |
      | validate    |
      | version     |

  Scenario: Recompiling a project with no material changes
    Given I am using the existing project in test/fixtures/stylesheets/valid
    When I run: compass compile
    And I wait 1 second
    And I touch sass/simple.sass
    And I run: compass compile
    Then a css file tmp/simple.css is reported written

  Scenario: Recompiling a project with changes
    Given I am using the existing project in test/fixtures/stylesheets/valid
    When I run: compass compile
    And I wait 1 second
    And I add some sass to sass/simple.sass
    And I run: compass compile
    And a css file tmp/simple.css is reported written

  Scenario: Cleaning a project
    Given I am using the existing project in test/fixtures/stylesheets/valid
    When I run: compass compile
    And I run: compass clean
    Then the following files are reported removed:
      | .sass-cache/           |
      | tmp/simple.css         |
      | tmp/another_simple.css |
    And the following files are removed:
      | .sass-cache/           |
      | tmp/simple.css         |
      | tmp/another_simple.css |

  @now
  Scenario: Watching a project for changes
    Given ruby supports fork
    Given I am using the existing project in test/fixtures/stylesheets/valid
    When I run: compass compile
    And I run in a separate process: compass watch 
    And I wait 4 seconds
    And I touch sass/simple.sass
    And I wait 2 seconds
    And I shutdown the other process
    Then a css file tmp/simple.css is reported written

  Scenario: Generate a compass configuration file
    Given I should clean up the directory: config
    When I run: compass config config/compass.rb --sass-dir sass --css-dir assets/css
    Then a configuration file config/compass.rb is created
    And the following configuration properties are set in config/compass.rb:
      | property | value      |
      | sass_dir | sass       |
      | css_dir  | assets/css |

  Scenario Outline: Print out a configuration value
    Given I am using the existing project in test/fixtures/stylesheets/valid
    When I run: compass config -p <property>
    Then I should see the following output: <value>
    And the command exits <exit>
  
    Examples:
      | property        | value                    | exit     |
      | extensions_dir  | extensions               | normally |
      | extensions_path | $PROJECT_PATH/extensions | normally |
      | css_dir         | tmp                      | normally |
      | css_path        | $PROJECT_PATH/tmp        | normally |
      | sass_dir        | sass                     | normally |
      | sass_path       | $PROJECT_PATH/sass       | normally |
      | foobar          | ERROR: configuration property 'foobar' does not exist | with a non-zero error code | 

  @validator
  Scenario: Validate the generated CSS
    Given I am using the existing project in test/fixtures/stylesheets/valid
    When I run: compass validate
    Then my css is validated
    And I am informed that my css is valid.

  @stats
  Scenario: Get stats for my project
    Given I am using the existing project in test/fixtures/stylesheets/valid
    When I run: bundle exec compass stats
    Then I am told statistics for each file:
      | Filename                 | Rules | Properties |    Mixins Defs | Mixins Used | Filesize | CSS Selectors | CSS Properties | CSS Filesize |
      | sass/simple.sass         |   \d+ |        \d+ |            \d+ |         \d+ |  \d+ K?B |           \d+ |            \d+ |      \d+ K?B |
      | sass/another_simple.scss |   \d+ |        \d+ |            \d+ |         \d+ |  \d+ K?B |           \d+ |            \d+ |      \d+ K?B |
      | Total.*                  |   \d+ |        \d+ |            \d+ |         \d+ |  \d+ K?B |           \d+ |            \d+ |      \d+ K?B |

  @listframeworks
  Scenario: List frameworks registered with compass
    When I run: compass frameworks
    Then I should see the following lines of output:
      | compass    |



================================================
FILE: cli/features/extensions.feature
================================================
Feature: Extensions
  In order to have an open source ecosystem for stylesheets
  As a compass user
  I can install extensions that others have created
  And I can create and publish my own extensions

  @listframeworks
  Scenario: Extensions directory for stand_alone projects
    Given I am using the existing project in test/fixtures/stylesheets/compass
    And the "extensions" directory exists
    And and I have a fake extension at extensions/testing
    When I run: compass frameworks
    Then the list of frameworks includes "testing"

  @listframeworks
  Scenario: Shared extensions directory
    Given the "~/.compass/extensions" directory exists
    And and I have a fake extension at ~/.compass/extensions/testing
    And I am using the existing project in test/fixtures/stylesheets/compass
    When I run: compass frameworks
    Then the list of frameworks includes "testing"

  @listframeworks
  Scenario: Frameworks without templates
    Given I am using the existing project in test/fixtures/stylesheets/uses_only_stylesheets_ext
    When I run: compass frameworks
    Then the list of frameworks includes "only_stylesheets"


================================================
FILE: cli/features/step_definitions/command_line_steps.rb
================================================
$:.unshift(File.expand_path(File.join(File.dirname(__FILE__), '../../test')))

require 'bundler/setup'
require 'test_helper'

require 'compass/exec'
include Compass::TestCaseHelper
include Compass::CommandLineHelper
include Compass::IoHelper

Before do
  Compass.reset_configuration!
  @cleanup_directories = []
  @original_working_directory = Dir.pwd
end
 
After do
  Dir.chdir @original_working_directory
  @cleanup_directories.each do |dir|
    FileUtils.rm_rf dir
  end
end

Given "ruby supports fork" do
  if RUBY_PLATFORM == "java"
    pending
  end
end

# Given Preconditions
Given %r{^I am using the existing project in ([^\s]+)$} do |project|
  tmp_project = "tmp_#{File.basename(project)}"
  @cleanup_directories << tmp_project
  FileUtils.cp_r project, tmp_project
  Dir.chdir tmp_project
end

Given %r{^I am in the parent directory$} do
  Dir.chdir ".."
end

Given /^I should clean up the directory: (\w+)$/ do |directory|
  @cleanup_directories << directory
end

Given %r{^the project has a file named "([^"]*)" containing:$} do |arg1, string|
  File.open(arg1, "w") do |f|
    f << string
  end
end


# When Actions are performed
When /^I create a project using: compass create ([^\s]+) ?(.+)?$/ do |dir, args|
  @cleanup_directories << dir
  compass 'create', dir, *(args || '').split
end

When /^I initialize a project using: compass init ?(.+)?$/ do |args|
  compass 'init', *(args || '').split
end

When /^I run: compass ([^\s]+) ?(.+)?$/ do |command, args|
  compass command, *(args || '').split
end

When /^I run in a separate process: compass ([^\s]+) ?(.+)?$/ do |command, args|
  unless @other_process = fork 
    @last_result = ''
    @last_error = ''
    Signal.trap("HUP") do
      open('/tmp/last_result.compass_test.txt', 'w') do |file|
        file.puts $stdout.string
      end
      open('/tmp/last_error.compass_test.txt', 'w') do |file|
        file.puts $stderr.string
      end
      exit!
    end
    # this command will run forever
    # we kill it with a HUP signal from the parent process.
    args = (args || '').split
    args << { :wait => 5 }
    compass command, *args
    exit!
  end
end

When /^I shutdown the other process$/ do
  Process.kill("HUP", @other_process)
  Process.wait
  @last_result = File.read('/tmp/last_result.compass_test.txt')
  @last_error = File.read('/tmp/last_error.compass_test.txt')
end

When /^I touch ([^\s]+)$/ do |filename|
  FileUtils.touch filename
end

When /^I wait ([\d.]+) seconds?$/ do |count|
  sleep count.to_f
end

When /^I add some sass to ([^\s]+)$/ do |filename|
  open(filename, "w+") do |file|
    file.puts ".added .some .arbitrary"
    file.puts "  sass: code"
  end
end

# Then postconditions
Then /^a directory ([^ ]+) is (not )?created$/ do |directory, negated|
  File.directory?(directory).should == !negated
end
 
Then /an? \w+ file ([^ ]+) is (not )?removed/ do |filename, negated|
  File.exists?(filename).should == !!negated
end

Then /an? \w+ file ([^ ]+) is (not )?created/ do |filename, negated|
  File.exists?(filename).should == !negated
end

Then "the following files are reported removed:" do |table|
  table.rows.each do |css_file|
    #need to find a better way but this works for now
    step %Q{a css file #{css_file.first} is reported removed}
  end
end

Then "the following files are removed:" do |table|
  table.rows.each do |css_file|
    step %Q{a css file #{css_file.first} is removed}
  end
end

Then /an? \w+ file ([^ ]+) is reported removed/ do |filename|
  @last_result.should =~ /delete.*#{Regexp.escape(filename)}/
end

Then /an? \w+ file ([^ ]+) is reported written/ do |filename|
  @last_result.should =~ /write.*#{Regexp.escape(filename)}/
end

Then /a \w+ file ([^ ]+) is (?:reported )?compiled/ do |filename|
  @last_result.should =~ /compile.*#{Regexp.escape(filename)}/
end

Then /a \w+ file ([^ ]+) is reported unchanged/ do |filename|
  @last_result.should =~ /unchanged.*#{Regexp.escape(filename)}/
end

Then /a \w+ file ([^ ]+) is reported identical/ do |filename|
  @last_result.should =~ /identical.*#{Regexp.escape(filename)}/
end

Then /a \w+ file ([^ ]+) is reported overwritten/ do |filename|
  @last_result.should =~ /overwrite.*#{Regexp.escape(filename)}/
end

Then /a \w+ file ([^ ]+) is not mentioned/ do |filename|
  @last_result.should_not =~ /#{Regexp.escape(filename)}/
end

Then /I am told how to link to ([^ ]+) for media "([^"]+)"/ do |stylesheet, media|
  @last_result.should =~ %r{<link href="#{stylesheet}" media="#{media}" rel="stylesheet" type="text/css" />}
end

Then /I am told how to conditionally link "([^"]+)" to ([^ ]+) for media "([^"]+)"/ do |condition, stylesheet, media|
  @last_result.should =~ %r{<!--\[if #{condition}\]>\s+<link href="#{stylesheet}" media="#{media}" rel="stylesheet" type="text/css" />\s+<!\[endif\]-->}mi
end

Then /^an error message is printed out: (.+)$/ do |error_message|
  @last_error.should =~ Regexp.new(Regexp.escape(error_message))
end

Then /^the command exits with a non\-zero error code$/ do
  @last_exit_code.should_not == 0
end

Then /^the command exits normally$/ do
  @last_exit_code.should == 0
end

Then /^I am congratulated$/ do
  @last_result.should =~ /Congratulations!/
end

Then /^I am told that I can place stylesheets in the ([^\s]+) subdirectory$/ do |subdir|
  @last_result.should =~ /You may now add sass stylesheets to the #{subdir} subdirectory of your project./
end

Then /^I am told how to compile my sass stylesheets$/ do
  @last_result.should =~ /You must compile your sass stylesheets into CSS when they change.\nThis can be done in one of the following ways:/
end

Then /^I should be shown a list of "([^"]+)" commands$/ do |kind|
  @last_result.should =~ /^#{kind.capitalize} Commands:$/
  @last_command_list = []
  found = false
  indent = nil
  @last_result.split("\n").each do |line|
    if line =~ /^#{kind.capitalize} Commands:$/
      found = true
    elsif found && line =~ /^\s+/
      @last_command_list << line
    elsif found && line =~ /^$|^\w/
      break
    end
  end

end

Then /^the list of commands should describe the ([^ ]+) command$/ do |command|
  @last_result.should =~ /^\s+\* #{command}\s+- [A-Z].+$/
end

Then /^the following configuration properties are set in ([^ ]+):$/ do |config_file, table|
  
  config = Compass::Configuration::FileData.new_from_file(config_file)
  table.hashes.each do |hash|
   config.send(hash['property']).should == hash['value']
  end
end

Then /^my css is validated$/ do
  if @last_error =~ /The Compass CSS Validator could not be loaded/
    pending "Missing Dependency: sudo gem install compass-validator"
  else
    @last_result.should =~ /files? validated/
  end
end

Then /^I am informed that my css is valid.$/ do
  @last_result.should =~ /Result: Valid/
end

Then /^I am told statistics for each file:$/ do |table|
  # table is a Cucumber::Ast::Table
  table.raw.each do |row|
    re = Regexp.new row.join(' *\| *')
    @last_result.should =~ re
  end
end

Then /^I should see the following "([^"]+)" commands:$/ do |kind, table|


  step %Q{I should be shown a list of "#{kind}" commands}

  commands = @last_command_list.map{|c| c =~ /^\s+\* ([^ ]+)\s+- [A-Z].+$/; [$1]}
  table.diff!(commands)
end
     

Then /^the image ([^ ]+) has a size of (\d+)x(\d+)$/ do |file, width, height| 
  # see http://snippets.dzone.com/posts/show/805
  size = File.open(file, "rb") {|io| io.read}[0x10..0x18].unpack('NN')
  size.should == [width.to_i, height.to_i]
end

Then /^I should see the following lines of output:$/ do |table|
  table.diff!([['compass']])
end

Then /^I should see the following output: (.+)$/ do |expected|
  (@last_result.strip + @last_error.strip).should == expected.gsub(/\$PROJECT_PATH/,Dir.pwd).strip
end


================================================
FILE: cli/features/step_definitions/extension_steps.rb
================================================
Given /^the "([^\"]*)" directory exists$/ do |directory|
  directory.gsub!('~', ENV["HOME"]) if directory.include?('~/')
  FileUtils.mkdir_p directory
end

Given /^and I have a fake extension at (.*)$/ do |directory|
  directory.gsub!('~', ENV["HOME"]) if directory.include?('~/')
  FileUtils.mkdir_p File.join(directory, 'stylesheets')
  FileUtils.mkdir_p File.join(directory, 'templates/project')
  open(File.join(directory, 'templates/project/manifest.rb'),"w") do |f|
    f.puts %Q{
      description "This is a fake extension"

      help "this is the fake help"

      welcome_message "this is a fake welcome"
    }
  end
end

Then /^the list of frameworks includes "([^\"]*)"$/ do |framework|
  @last_result.split("\n").map{|f| f.gsub(/(^\s+[*-]\s+)|(\s+$)/,'')}.should include(framework)
end



================================================
FILE: cli/gemfiles/listen_2.gemfile
================================================
CI=true
main_gemfile = File.expand_path(File.join(File.dirname(__FILE__), "..", "Gemfile"))
eval File.read(main_gemfile), nil, main_gemfile

gem 'sass', '~> 3.3.12'
gem 'compass', :path => "../"
gem 'compass-core', :path => "../../core"
gem 'compass-import-once', :path => "../../import-once"
gem 'listen', '~> 2.7.1'

gemspec :path=>"../"


================================================
FILE: cli/gemfiles/sass_3_3.gemfile
================================================
CI=true
main_gemfile = File.expand_path(File.join(File.dirname(__FILE__), "..", "Gemfile"))
eval File.read(main_gemfile), nil, main_gemfile

gem 'sass', "~> 3.3.12"
gem 'compass', :path => "../"
gem 'compass-core', :path => "../../core"
gem 'compass-import-once', :path => "../../import-once"

gemspec :path=>"../"


================================================
FILE: cli/gemfiles/sass_local.gemfile
================================================
CI=true
main_gemfile = File.expand_path(File.join(File.dirname(__FILE__), "..", "Gemfile"))
eval File.read(main_gemfile), nil, main_gemfile

gem 'sass', :path => "../../sass"
gem 'compass', :path => "../"

gemspec :path=>"../"


================================================
FILE: cli/lib/compass/actions.rb
================================================
module Compass
  module Actions

    attr_writer :logger

    def logger
      @logger ||= ::Compass::Logger.new
    end

    # copy/process a template in the compass template directory to the project directory.
    def copy(from, to, options = nil, binary = false)
      options ||= self.options if self.respond_to?(:options)
      if binary
        contents = File.new(from,"rb").read
      else
        contents = File.new(from).read
      end  
      write_file to, contents, options, binary
    end

    # create a directory and all the directories necessary to reach it.
    def directory(dir, options = nil)
      options ||= self.options if self.respond_to?(:options)
      options ||= {}
      if File.exists?(dir) && File.directory?(dir)
          # do nothing
      elsif File.exists?(dir)
        msg = "#{basename(dir)} already exists and is not a directory."
        raise Compass::FilesystemConflict.new(msg)
      else
        log_action :directory, separate("#{basename(dir)}/"), options
        FileUtils.mkdir_p(dir)
      end
    end

    # Write a file given the file contents as a string
    def write_file(file_name, contents, options = nil, binary = false)
      options ||= self.options if self.respond_to?(:options)
      skip_write = false
      contents = process_erb(contents, options[:erb]) if options[:erb]
      if File.exists?(file_name)
        existing_contents = IO.read(file_name)
        if existing_contents == contents
          log_action :identical, basename(file_name), options
          skip_write = true
        elsif options[:force]
          log_action :overwrite, basename(file_name), options
        else
          msg = "File #{basename(file_name)} already exists. Run with --force to force overwrite."
          raise Compass::FilesystemConflict.new(msg)
        end
      else
        log_action :create, basename(file_name), options
      end
      if skip_write
        FileUtils.touch file_name
      else
        mode = "w"
        mode << "b" if binary
        open(file_name, mode) do |file|
          file.write(contents)
        end
      end
    end

    def process_erb(contents, ctx = nil)
      ctx = Object.new.instance_eval("binding") unless ctx.is_a? Binding
      ERB.new(contents).result(ctx)
    end

    def remove(file_name)
      file_name ||= ''
      if File.directory?(file_name)
        FileUtils.rm_rf file_name
        log_action :remove, basename(file_name)+"/", options
      elsif File.exists?(file_name)
        File.unlink file_name
        log_action :remove, basename(file_name), options
      end
    end

    def basename(file)
      relativize(file) {|f| File.basename(file)}
    end

    def relativize(path)
      path = File.expand_path(path)
      if path.index(working_path+File::SEPARATOR) == 0
        path[(working_path+File::SEPARATOR).length..-1]
      elsif block_given?
        yield path
      else
        path
      end
    end

    # Write paths like we're on unix and then fix it
    def separate(path)
      path.gsub(%r{/}, File::SEPARATOR)
    end

    # Removes the trailing separator, if any, from a path.
    def strip_trailing_separator(path)
      (path[-1..-1] == File::SEPARATOR) ? path[0..-2] : path
    end

    def log_action(action, file, options)
      quiet = !!options[:quiet]
      quiet = false if options[:loud] && options[:loud] == true
      quiet = false if options[:loud] && options[:loud].is_a?(Array) && options[:loud].include?(action)
      unless quiet
        logger.record(action, file, options[:extra].to_s)
      end
    end
  end
end


================================================
FILE: cli/lib/compass/app_integration/stand_alone/configuration_defaults.rb
================================================
module Compass
  module AppIntegration
    module StandAlone
      module ConfigurationDefaults
        def default_project_type
          :stand_alone
        end

        def sass_dir_without_default
          "sass"
        end

        def javascripts_dir_without_default
          "javascripts"
        end

        def css_dir_without_default
          "stylesheets"
        end

        def images_dir_without_default
          "images"
        end

        def default_cache_dir
          ".sass-cache"
        end
      end

    end
  end
end


================================================
FILE: cli/lib/compass/app_integration/stand_alone/installer.rb
================================================
module Compass
  module Installers
    class Base
    end
    class ManifestInstaller < Base
    end
  end

  module AppIntegration
    module StandAlone
      class Installer < Compass::Installers::ManifestInstaller

        def init
          directory targetize("")
          super
        end

        def write_configuration_files(config_file = nil)
          config_file ||= targetize('config.rb')
          write_file config_file, config_contents
        end

        def config_files_exist?
          File.exists? targetize('config.rb')
        end

        def config_contents
          project_path, Compass.configuration.project_path = Compass.configuration.project_path, nil
          Compass.configuration.serialize
        ensure
          Compass.configuration.project_path = project_path
        end

        def prepare
          write_configuration_files unless config_files_exist? || !@manifest.generate_config?
        end

        def completed_configuration
          nil
        end

        def finalize(options = {})
          if options[:create] && !manifest.welcome_message_options[:replace]
            puts <<-NEXTSTEPS

*********************************************************************
Congratulations! Your compass project has been created.

You may now add and edit sass stylesheets in the #{Compass.configuration.sass_dir} subdirectory of your project.

Sass files beginning with an underscore are called partials and won't be
compiled to CSS, but they can be imported into other sass stylesheets.

You can configure your project by editing the config.rb configuration file.

You must compile your sass stylesheets into CSS when they change.
This can be done in one of the following ways:
  1. To compile on demand:
     compass compile [path/to/project]
  2. To monitor your project for changes and automatically recompile:
     compass watch [path/to/project]

More Resources:
  * Website: http://compass-style.org/
  * Sass: http://sass-lang.com
  * Community: http://groups.google.com/group/compass-users/

NEXTSTEPS
          end
          puts manifest.welcome_message if manifest.welcome_message
          if manifest.has_stylesheet? && !manifest.welcome_message_options[:replace]
            puts "\nTo import your new stylesheets add the following lines of HTML (or equivalent) to your webpage:"
            puts stylesheet_links
          end
        end

        def compilation_required?
          @manifest.compile?
        end
      end
    end
  end
end


================================================
FILE: cli/lib/compass/app_integration/stand_alone.rb
================================================
%w(configuration_defaults installer).each do |lib|
  require "compass/app_integration/stand_alone/#{lib}"
end

module Compass
  module AppIntegration
    module StandAlone

      extend self

      def installer(*args)
        Installer.new(*args)
      end

      def configuration
        Compass::Configuration::Data.new('stand_alone').
          extend(ConfigurationDefaults)
      end

    end
  end
end


================================================
FILE: cli/lib/compass/app_integration.rb
================================================
require "compass/app_integration/stand_alone"

module Compass
  module AppIntegration
    module Helpers
      #attr_accessor :project_types
      DEAFULT_PROJECT_TYPES = {
        :stand_alone => "Compass::AppIntegration::StandAlone"
      }

      def init
        @project_types ||= DEAFULT_PROJECT_TYPES.dup
      end

      def project_types
        @project_types
      end

      def default?
        @project_types.keys === DEAFULT_PROJECT_TYPES.keys
      end

      def lookup(type)
        unless @project_types[type].nil?
          eval @project_types[type]
        else
          raise Compass::Error, "No application integration exists for #{type}"
        end
      end

      def register(type, klass)
        @project_types[type] = klass
      end

    end
    extend Helpers
    init
  end
end


================================================
FILE: cli/lib/compass/commands/base.rb
================================================
module Compass
  module Commands
    class Base
      def self.register(command_name)
        Compass::Commands[command_name] = self
      end

      include Actions

      attr_accessor :working_path, :options

      def initialize(working_path, options)
        self.working_path = working_path.to_s
        self.options = options
      end
      
      def execute
        perform
      end

      def perform
        raise StandardError.new("Not Implemented")
      end

      def successful?
        !@failed
      end

      def failed!
        @failed = true
      end

      protected

      def framework
        unless Compass::Frameworks[options[:framework]]
          raise Compass::Error.new("No such framework: #{options[:framework].inspect}")
        end
        Compass::Frameworks[options[:framework]]
      end

    end
  end
end


================================================
FILE: cli/lib/compass/commands/clean_project.rb
================================================
require 'compass/commands/project_base'
require 'compass/compiler'

module Compass
  module Commands
    module CleanProjectOptionsParser
      def set_options(opts)
        opts.banner = %Q{
          Usage: compass clean [path/to/project] [options]

          Description:
          Remove generated files and the sass cache.

          Options:
        }.split("\n").map{|l| l.gsub(/^ */,'')}.join("\n")

        super
      end
    end

    class CleanProject < UpdateProject

      register :clean

      def initialize(working_path, options)
        super
        assert_project_directory_exists!
      end

      def perform
        compiler = new_compiler_instance
        compiler.clean!
        Compass::SpriteImporter.find_all_sprite_map_files(Compass.configuration.generated_images_path).each do |sprite|
          remove sprite
        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)
          parser = Compass::Exec::CommandOptionParser.new(arguments)
          parser.extend(Compass::Exec::GlobalOptionsParser)
          parser.extend(Compass::Exec::ProjectOptionsParser)
          parser.extend(CleanProjectOptionsParser)
        end

        def usage
          option_parser([]).to_s
        end

        def primary; true; end

        def description(command)
          "Remove generated files and the sass cache"
        end

        def parse!(arguments)
          parser = option_parser(arguments)
          parser.parse!
          parse_arguments!(parser, arguments)
          parser.options
        end

        def parse_arguments!(parser, arguments)
          if arguments.size > 0
            parser.options[:project_name] = arguments.shift if File.directory?(arguments.first)
            unless arguments.empty?
              parser.options[:sass_files] = arguments.dup
              parser.options[:force] = true
            end
          end
        end
      end
    end
  end
end


================================================
FILE: cli/lib/compass/commands/create_project.rb
================================================
require 'fileutils'
require 'compass/commands/stamp_pattern'

module Compass
  module Commands
    module CreateProjectOptionsParser
      def set_options(opts)

        if $command == "create"
          opts.banner = %Q{
            Usage: compass create path/to/project [options]

            Description:
            Create a new compass project at the path specified.

            Options:
          }.split("\n").map{|l| l.gsub(/^ */,'')}.join("\n")

          opts.on_tail("--bare", "Don't generate any Sass or CSS files.") do
            self.options[:bare] = true
          end
        else
          opts.banner = %Q{
            Usage: compass init project_type path/to/project [options]

            Description:
            Initialize an existing project at the path specified.

            Supported Project Types:
            * rails

            Options:
          }.split("\n").map{|l| l.gsub(/^ */,'')}.join("\n").strip
        end

        opts.on("--using PATTERN", "A framework's pattern to use when creating the project.") do |framework|
          framework = framework.split('/', 2)
          self.options[:framework] = framework[0]
          self.options[:pattern] = framework[1]
        end

        opts.on("-x", "--syntax SYNTAX", [:sass, :scss], "Specify the syntax to use when generating stylesheets.", "One of sass or scss. Defaults to scss.") do |syntax|
          self.options[:preferred_syntax] = syntax
        end

        opts.on("--prepare", "Prepare the project by only creating configuration files.") do
          self.options[:prepare] = true
        end

        super

      end
    end

    class CreateProject < StampPattern

      register :create
      register :init

      class << self
        def option_parser(arguments)
          parser = Compass::Exec::CommandOptionParser.new(arguments)
          parser.extend(Compass::Exec::GlobalOptionsParser)
          parser.extend(Compass::Exec::ProjectOptionsParser)
          parser.extend(CreateProjectOptionsParser)
        end

        def usage
          option_parser([]).to_s
        end

        def description(command)
          if command.to_sym == :create
            "Create a new compass project"
          else
            "Add compass to an existing project"
          end
        end

        def primary; true; end

        def parse!(arguments)
          parser = option_parser(arguments)
          parse_options!(parser, arguments)
          parse_arguments!(parser, arguments)
          if parser.options[:framework] && parser.options[:bare]
            raise Compass::Error, "A bare project cannot be created when a framework is specified."
          end
          set_default_arguments(parser)
          parser.options
        end

        def parse_init!(arguments)
          parser = option_parser(arguments)
          parse_options!(parser, arguments)
          if arguments.size > 0
            parser.options[:project_type] = arguments.shift.to_sym
          end
          parse_arguments!(parser, arguments)
          set_default_arguments(parser)
          parser.options
        end

        def parse_options!(parser, arguments)
          parser.parse!
          parser
        end

        def parse_arguments!(parser, arguments)
          if arguments.size == 1
            parser.options[:project_name] = arguments.shift
          elsif arguments.size == 0
            # default to the current directory.
          else
            raise Compass::Error, "Too many arguments were specified."
          end
        end

        def set_default_arguments(parser)
          parser.options[:framework] ||= :compass
          parser.options[:pattern] ||= "project"
        end
      end

      def is_project_creation?
        true
      end

    end
  end
end


================================================
FILE: cli/lib/compass/commands/default.rb
================================================
module Compass
  module Commands
    module DefaultOptionsParser
      def set_options(opts)
        opts.on("--trace") do
          self.options[:trace] = true
        end
        opts.on("-?", "-h", "--help") do
          self.options[:command] = Proc.new do
            Help.new(working_path, options.merge(:help_command => "help"))
          end
        end
        opts.on("-q", "--quiet") do
          self.options[:quiet] = true
        end
        opts.on("-v", "--version") do
          self.options[:command] = Proc.new do
            PrintVersion.new(working_path, options)
          end
        end
        super
      end
    end
    class Default < Base
      
      class << self
        def option_parser(arguments)
          parser = Compass::Exec::CommandOptionParser.new(arguments)
          parser.extend(DefaultOptionsParser)
        end
        # def usage
        #   $stderr.puts caller.join("\n")
        #   "XXX"
        # end
        def parse!(arguments)
          parser = option_parser(arguments)
          parser.parse!
          parser.options[:command] ||= Proc.new do
            Help.new(working_path, options.merge(:help_command => "help"))
          end
          parser.options
        end
      end

      def execute
        instance_eval(&options[:command]).execute
      end
    end
  end
end


================================================
FILE: cli/lib/compass/commands/extension_command.rb
================================================
require 'fileutils'
require 'compass/commands/base'

module Compass
  module Commands
    module ExtensionsOptionParser
      def set_options(opts)
        opts.banner = %Q{
Usage: compass extension install EXTENSION_NAME [options]
       compass extension uninstall EXTENSION_NAME [options]
       compass extension list

Description:
  Manage the list of extensions on your system.
  Compass to all of your compass projects.

Example:
  compass extension install sassy-buttons
  compass extension uninstall sassy-buttons

}
        super
      end
    end

    class ExtensionCommand < Base

      register :extension

      class << self
        def option_parser(arguments)
          parser = Compass::Exec::CommandOptionParser.new(arguments)
          parser.extend(ExtensionsOptionParser)
        end
        def usage
          option_parser([]).to_s
        end
        def description(command)
          "Manage the list of compass extensions on your system"
        end
        def parse!(arguments)
          {:arguments => arguments}
        end
      end
      include InstallerCommand

      def initialize(working_path, options)
        super(working_path, options)
      end

      # all commands must implement perform
      def perform
        require 'rubygems/gem_runner'
        Gem::GemRunner.new.run(options[:arguments])
      end

    end
  end
end



================================================
FILE: cli/lib/compass/commands/help.rb
================================================
module Compass
  module Commands
    module HelpOptionsParser
      def set_options(opts)
        banner = %Q{Usage: compass help [command]

Description:
  The Compass Stylesheet Authoring Framework helps you
  build and maintain your stylesheets and makes it easy
  for you to use stylesheet libraries provided by others.

Donating:
  Compass is charityware. If you find it useful please make
  a tax deductable donation: http://umdf.org/compass

To get help on a particular command please specify the command.

}
        
        primary_commands = Compass::Commands.all.select do |c|
          cmd = Compass::Commands[c]
          cmd.respond_to?(:primary) && cmd.primary
        end
        other_commands = Compass::Commands.all - primary_commands

        banner << command_list("Primary Commands:", primary_commands)
        banner << command_list("Other Commands:", other_commands)
 
        banner << "\nAvailable Frameworks & Patterns:\n\n"
        banner << Compass::Frameworks.pretty_print
        banner << "\nGlobal Options:\n"
        opts.banner = banner

        super
      end

      def command_list(header, commands)
        list = "#{header}\n"
        commands.sort_by{|c| c.to_s}.each do |command|
          list << "  * #{command}"
          if Compass::Commands[command].respond_to? :description
            list << "\t- #{Compass::Commands[command].description(command)}"
          end
          list << "\n"
        end
        list
      end
    end
    class Help < Base
      register :help
      
      class << self
        def option_parser(arguments)
          parser = Compass::Exec::CommandOptionParser.new(arguments)
          parser.extend(Compass::Exec::GlobalOptionsParser)
          parser.extend(HelpOptionsParser)
        end
        def usage
          option_parser([]).to_s
        end
        def description(command)
          "Get help on a compass command or extension"
        end
        def parse!(arguments)
          parser = option_parser(arguments)
          parser.parse!
          parser.options[:help_command] = arguments.shift || 'help'
          parser.options
        end
      end

      def execute
        if Compass::Commands.command_exists? options[:help_command]
          $command = options[:help_command]
          puts Compass::Commands[options[:help_command]].usage
          $command = "help"
        elsif Compass::Frameworks.template_exists? options[:help_command]
          puts Compass::Frameworks.template_usage(options[:help_command])
        else
          raise OptionParser::ParseError, "No such command: #{options[:help_command]}"
        end
      end
    end
  end
end


================================================
FILE: cli/lib/compass/commands/imports.rb
================================================
module Compass
  module Commands
    class Imports < ProjectBase
      attr_accessor :options
      register :imports
      def initialize(working_path, options)
        super
      end
  
      def execute
        print ::Compass::Frameworks::ALL.map{|f|
                  "-I #{f.stylesheets_directory}"
                }.join(' ')
      end
      class << self
        def description(command)
          "Emit an imports suitable for passing to the sass command-line."
        end
        def usage
          "Usage: compass imports\n\n" +
          "Prints out the imports known to compass.\n"+
          "Useful for passing imports to the sass command line:\n" +
          "  sass -r compass `compass imports` a_file_using_compass.sass"
        end
        def parse!(arguments)
          if arguments.join("").strip.size > 0
            raise OptionParser::ParseError, "This command takes no options or arguments."
          else
            {}
          end
        end
      end
    end
  end
end


================================================
FILE: cli/lib/compass/commands/installer_command.rb
================================================
require 'compass/installers'

module Compass
  module Commands
    module InstallerCommand
      include Compass::Installers

      def configure!
        add_project_configuration
        Compass.add_configuration(options, 'command_line')
        Compass.discover_extensions!
        Compass.add_configuration(installer.completed_configuration, 'installer')
      end

      def app
        @app ||= Compass::AppIntegration.lookup(Compass.configuration.project_type)
      end

      def installer
        @installer ||= if options[:bare]
          Compass::Installers::BareInstaller.new(*installer_args)
        else
          app.installer(*installer_args)
        end
      end

      def installer_args
        [template_directory(options[:pattern] || "project"), project_directory, options]
      end
    end
  end
end


================================================
FILE: cli/lib/compass/commands/interactive.rb
================================================

require 'compass/commands/project_base'
require 'compass/commands/update_project'

module Compass
  module Commands
    module InteractiveOptionsParser
      def set_options(opts)
        opts.banner = %Q{
          Usage: compass interactive [path/to/project] [options]

          Description:
            Interactively evaluate SassScript

          Options:
        }.strip.split("\n").map{|l| l.gsub(/^ {0,10}/,'')}.join("\n")

        super
      end
    end
    class Interactive < ProjectBase

      register :interactive

      def initialize(working_path, options)
        super
      end

      def perform
        require 'sass/repl'
        Sass::Repl.new.run
      end

      class << self

        def option_parser(arguments)
          parser = Compass::Exec::CommandOptionParser.new(arguments)
          parser.extend(Compass::Exec::GlobalOptionsParser)
          parser.extend(Compass::Exec::ProjectOptionsParser)
          parser.extend(InteractiveOptionsParser)
        end

        def usage
          option_parser([]).to_s
        end

        def description(command)
          "Interactively evaluate SassScript"
        end

        def parse!(arguments)
          parser = option_parser(arguments)
          parser.parse!
          parser.options
        end

      end

    end
  end
end


================================================
FILE: cli/lib/compass/commands/list_frameworks.rb
================================================
module Compass
  module Commands
    class ListFrameworks < ProjectBase
      attr_accessor :options
      register :frameworks
      def initialize(working_path, options)
        super
      end
  
      def execute
        if options[:quiet]
          Compass::Frameworks::ALL.each do |framework|
            puts framework.name unless framework.name =~ /^_/
          end
        else
          puts "Available Frameworks & Patterns:\n\n"
          puts Compass::Frameworks.pretty_print
        end
      end
      class << self
        def option_parser(arguments)
          parser = Compass::Exec::CommandOptionParser.new(arguments)
          parser.extend(Compass::Exec::GlobalOptionsParser)
        end
        def usage
          option_parser([]).to_s
        end
        def description(command)
          "List the available frameworks"
        end
        def parse!(arguments)
          parser = option_parser(arguments)
          parser.parse!
          parser.options
        end
      end
    end
  end
end

================================================
FILE: cli/lib/compass/commands/print_version.rb
================================================
module Compass
  module Commands
    module VersionOptionsParser
      def set_options(opts)
        opts.banner = %Q{Usage: compass version [options]

Options:
}
        opts.on_tail("-?", "-h", "--help", "Print out this message.") do
          puts opts
          exit
        end
        opts.on("-q", "--quiet", "Just print the version string.") do
          self.options[:quiet] = true
        end
        opts.on("--major", "Print the major version number") do
          self.options[:major] = true
          self.options[:custom] = true
        end
        opts.on("--minor", "Print up to the minor version number") do
          self.options[:major] = true
          self.options[:minor] = true
          self.options[:custom] = true
        end
        opts.on("--patch", "Print up to the patch version number") do
          self.options[:major] = true
          self.options[:minor] = true
          self.options[:patch] = true
          self.options[:custom] = true
        end
      end
    end

    class PrintVersion < Base
      register :version

      class << self
        def option_parser(arguments)
          parser = Compass::Exec::CommandOptionParser.new(arguments)
          parser.extend(VersionOptionsParser)
        end
        def usage
          option_parser([]).to_s
        end
        def description(command)
          "Print out version information"
        end
        def parse!(arguments)
          parser = option_parser(arguments)
          parser.parse!
          parser.options
        end
        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."
          lines << "Please make a tax deductable donation for a worthy cause: http://umdf.org/compass"
          lines.join("\n")
        end
      end

      attr_accessor :options

      def initialize(working_path, options)
        self.options = options
      end
  
      def execute
        if options[:custom]
          version = ""
          version << "#{Compass.version[:major]}" if options[:major]
          version << ".#{Compass.version[:minor]}" if options[:minor]
          version << ".#{Compass.version[:patch]}" if options[:patch]
          puts version
        elsif options[:quiet]
          puts ::Compass.version[:string]
        else
          puts self.class.long_output_string
        end
      end
    end
  end
end


================================================
FILE: cli/lib/compass/commands/project_base.rb
================================================
require 'fileutils'
require 'pathname'
require 'compass/commands/base'
require 'compass/commands/installer_command'

module Compass
  module Commands
    class ProjectBase < Base
      attr_accessor :project_directory, :project_name, :options

      def initialize(working_path, options = {})
        super(working_path, options)
        self.project_name = determine_project_name(working_path, options)
        Compass.add_configuration({:project_path => determine_project_directory(working_path, options)}, "implied")
        configure!
      end

      def execute
        super
      end

      protected

      def configure!
        add_project_configuration
        Compass.add_configuration(options, "command_line")
        Compass.discover_extensions! unless skip_extension_discovery?
      end

      def add_project_configuration
        defaults = Compass.configuration_for(options, "cli_defaults")
        if options[:project_type]
          project_type_config = Compass.configuration_for(options[:project_type])
          project_type_config.inherit_from!(Compass.default_configuration)
          defaults.inherit_from!(project_type_config)
        end
        Compass.add_project_configuration(options[:configuration_file], :defaults => defaults) do
          options[:project_type]
        end
      end

      def projectize(path)
        Compass.projectize(path)
      end

      def project_directory
        Compass.configuration.project_path
      end

      def project_css_subdirectory
        Compass.configuration.css_dir
      end

      def project_src_subdirectory
        Compass.configuration.sass_dir
      end

      def project_images_subdirectory
        Compass.configuration.images_dir
      end

      def assert_project_directory_exists!
        if File.exists?(project_directory) && !File.directory?(project_directory)
          raise Compass::FilesystemConflict.new("#{project_directory} is not a directory.")
        elsif !File.directory?(project_directory)
          raise Compass::Error.new("#{project_directory} does not exist.")
        end
      end

      private

      def determine_project_name(working_path, options)
        if options[:project_name]
          File.basename(strip_trailing_separator(options[:project_name]))
        else
          File.basename(working_path)
        end
      end

      def determine_project_directory(working_path, options)
        if options[:project_name]
          if absolute_path?(options[:project_name])
            options[:project_name]
          else
            File.join(working_path, options[:project_name])
          end
        else
          working_path
        end
      end

      def absolute_path?(path)
        # Pretty basic implementation
        path.index(File::SEPARATOR) == 0 || path.index(':') == 1
      end

      def skip_extension_discovery?
        false
      end

    end
  end
end


================================================
FILE: cli/lib/compass/commands/project_stats.rb
================================================
require 'compass/commands/project_base'
require 'compass/commands/update_project'

module Compass
  module Commands
    module StatsOptionsParser
      def set_options(opts)
        opts.banner = %Q{
          Usage: compass stats [path/to/project] [options]

          Description:
            Compile project at the path specified (or the current
            directory if not specified) and then compute statistics
            for the sass and css files in the project.

          Options:
        }.strip.split("\n").map{|l| l.gsub(/^ {0,10}/,'')}.join("\n")

        super
      end
    end
    class ProjectStats < UpdateProject

      register :stats

      def initialize(working_path, options)
        super
        assert_project_directory_exists!
      end

      def perform
        super
        require 'compass/stats'
        compiler = new_compiler_instance
        sass_files = sorted_sass_files(compiler)
        total_label = "Total (#{sass_files.size} files):"
        rows       = [[           :-,           :-,           :-,            :-,            :-,          :-,              :-,               :-,             :- ],
                      [   'Filename',      'Rules', 'Properties', 'Mixins Defs', 'Mixins Used',  'Filesize', 'CSS Selectors', 'CSS Properties', 'CSS Filesize' ],
                      [           :-,           :-,           :-,            :-,            :-,          :-,              :-,               :-,             :- ]]
        maximums   =  [ total_label.length,      5,           10,            14,            11,          13,              13,               14,             14 ]
        alignments =  [        :left,       :right,       :right,        :right,        :right,      :right,          :right,           :right,         :right ]
        delimiters =  [ ['| ', ' |'],  [' ', ' |'],  [' ', ' |'],   [' ', ' |'],   [' ', ' |'], [' ', ' |'],     [' ', ' |'],      [' ', ' |'],    [' ', ' |'] ]
        formatters =  [          nil,          nil,          nil,           nil,           nil,         :kb,             nil,             nil,             :kb ]
        totals     =  [ total_label,             0,            0,             0,             0,           0,               0,                0,              0 ]

        columns = rows.first.size

        sass_files.each do |sass_file|
          css_file = compiler.corresponding_css_file(sass_file) unless sass_file[0..0] == '_'
          row = filename_columns(sass_file)
          row += sass_columns(sass_file)
          row += css_columns(css_file)
          row.each_with_index do |c, i|
            maximums[i] = [maximums[i].to_i, c.size].max
            totals[i] = totals[i] + c.to_i if i > 0
          end
          rows << row
        end
        rows << [:-] * columns
        rows << totals.map{|t| t.to_s}
        rows << [:-] * columns
        rows.each do |row|
          row.each_with_index do |col, i|
            print pad(col, maximums[i], :align => alignments[i], :left => delimiters[i].first, :right => delimiters[i].last, :formatter => formatters[i])
          end
          print "\n"
        end
        if @missing_css_parser
          puts "\nInstall #{@missing_css_parser} to enable stats on your css files:\n\n\tgem install #{@missing_css_parser}"
        end
      end

      def pad(c, max, options = {})
        options[:align] ||= :left
        if c == :-
          filler = '-'
          c = ''
        else
          filler = ' '
        end
        c = send(:"format_#{options[:formatter]}", c) if options[:formatter]
        spaces = max - c.size
        filled = filler * [spaces,0].max
        "#{options[:left]}#{filled if options[:align] == :right}#{c}#{filled if options[:align] == :left}#{options[:right]}"
      end

      def format_kb(v)
        return v unless v =~ /^\d+$/
        v = Integer(v)
        if v < 1024
          "#{v} B"
        else
          v = v / 1024.0
          "#{v.ceil} KB"
        end
      end

      def sorted_sass_files(compiler)
        sass_files = compiler.sass_files
        sass_files.map! do |s| 
          filename = Compass.deprojectize(s, File.join(Compass.configuration.project_path, Compass.configuration.sass_dir))
          [s, File.dirname(filename), File.basename(filename)]
        end
        sass_files = sass_files.sort_by do |s,d,f|
          File.join(d, f[0] == ?_ ? f[1..-1] : f)
        end
        sass_files.map!{|s,d,f| s}
      end

      def filename_columns(sass_file)
        filename = Compass.deprojectize(sass_file, working_path)
        [filename]
      end

      def sass_columns(sass_file)
        sf = Compass::Stats::SassFile.new(sass_file)
        sf.analyze!
        %w(rule_count prop_count mixin_def_count mixin_count file_size).map do |t|
          sf.send(t).to_s
        end
      end

      def css_columns(css_file)
        if File.exists?(css_file)
          cf = Compass::Stats::CssFile.new(css_file)
          cf.analyze!
          %w(selector_count prop_count file_size).map do |t|
            cf.send(t).to_s
          end
        else
          return [ '--', '--' , '--']
        end
      rescue LoadError => e
        @missing_css_parser = e.message =~ /iconv/ ? "iconv" : "css_parser"
        return [ 'DISABLED', 'DISABLED', 'DISABLED' ]
      end

      class << self

        def option_parser(arguments)
          parser = Compass::Exec::CommandOptionParser.new(arguments)
          parser.extend(Compass::Exec::GlobalOptionsParser)
          parser.extend(Compass::Exec::ProjectOptionsParser)
          parser.extend(StatsOptionsParser)
        end

        def usage
          option_parser([]).to_s
        end

        def description(command)
          "Report statistics about your stylesheets"
        end

        def primary; false; end

        def parse!(arguments)
          parser = option_parser(arguments)
          parser.parse!
          parse_arguments!(parser, arguments)
          parser.options
        end

        def parse_arguments!(parser, arguments)
          if arguments.size == 1
            parser.options[:project_name] = arguments.shift
          elsif arguments.size == 0
            # default to the current directory.
          else
            raise Compass::Error, "Too many arguments were specified."
          end
        end

      end

    end
  end
end


================================================
FILE: cli/lib/compass/commands/project_structure.rb
================================================
require 'compass/commands/project_base'
require 'compass/commands/update_project'

module Compass
  module Commands
    module StructureOptionsParser
      def set_options(opts)
        opts.banner = %Q{
          Usage: compass structure [path/to/project] [options]

          Description:
            Display the import structure of your stylesheets.

          Options:
        }.strip.split("\n").map{|l| l.gsub(/^ {0,10}/,'')}.join("\n")

        super
      end
    end
    class ProjectStats < UpdateProject

      register :structure

      def initialize(working_path, options)
        super
        assert_project_directory_exists!
      end

      def perform
        @compiler = new_compiler_instance
        (options[:sass_files] || sorted_sass_files).each do |sass_file|
          print_tree(Compass.projectize(sass_file))
        end
      end

      def print_tree(file, depth = 0, importer = @compiler.importer)
        puts ((depth > 0 ? "|  " : "   ") * depth) + "+- " + Compass.deprojectize(file)
        @compiler.staleness_checker.send(:compute_dependencies, file, importer).each do |(dep, dep_importer)|
          print_tree(dep, depth + 1, dep_importer)# unless Compass.deprojectize(dep)[0...1] == "/"
        end
      end

      def sorted_sass_files
        sass_files = @compiler.sass_files
        sass_files.map! do |s| 
          filename = Compass.deprojectize(s, File.join(Compass.configuration.project_path, Compass.configuration.sass_dir))
          [s, File.dirname(filename), File.basename(filename)]
        end
        sass_files = sass_files.sort_by do |s,d,f|
          File.join(d, f[0] == ?_ ? f[1..-1] : f)
        end
        sass_files.map!{|s,d,f| s}
      end

      class << self

        def option_parser(arguments)
          parser = Compass::Exec::CommandOptionParser.new(arguments)
          parser.extend(Compass::Exec::GlobalOptionsParser)
          parser.extend(Compass::Exec::ProjectOptionsParser)
          parser.extend(StructureOptionsParser)
        end

        def usage
          option_parser([]).to_s
        end

        def description(command)
          "Report statistics about your stylesheets"
        end

        def primary; false; end

        def parse!(arguments)
          parser = option_parser(arguments)
          parser.parse!
          parse_arguments!(parser, arguments)
          parser.options
        end

        def parse_arguments!(parser, arguments)
          if arguments.size > 0
            parser.options[:project_name] = arguments.shift if File.directory?(arguments.first)
            parser.options[:sass_files] = arguments
          end
        end

      end

    end
  end
end



================================================
FILE: cli/lib/compass/commands/registry.rb
================================================
module Compass::Commands
  module Registry
    def register(name, command_class)
      @commands ||= Hash.new
      @commands[name.to_sym] = command_class
    end
    def get(name)
      return unless name
      @commands ||= Hash.new
      @commands[name.to_sym] || @commands[abbreviation_of(name)]
    end
    def abbreviation_of(name)
      re = /^#{Regexp.escape(name)}/
      matching = @commands.keys.select{|k| k.to_s =~ re}
      if matching.size == 1
        matching.first
      elsif name =~ /^-/
        nil
      elsif matching.size > 1
        raise Compass::Error, "Ambiguous abbreviation '#{name}'. Did you mean one of: #{matching.join(", ")}"
      else
        raise Compass::Error, "Command not found: #{name}"
      end
    end
    def abbreviation?(name)
      re = /^#{Regexp.escape(name)}/
      @commands.keys.detect{|k| k.to_s =~ re}
    end
    def command_exists?(name)
      @commands ||= Hash.new
      name && (@commands.has_key?(name.to_sym) || abbreviation?(name))
    end
    def all
      @commands.keys
    end
    alias_method :[], :get
    alias_method :[]=, :register
  end
  extend Registry
end


================================================
FILE: cli/lib/compass/commands/sprite.rb
================================================
require 'compass/commands/project_base'
require 'compass/commands/update_project'

module Compass
  module Commands
    module SpriteOptionsParser
      def set_options(opts)
        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"

          Description:
            Generate a sprite import based on the given sprite directory.
            Alternatively, you can simply do this in your sass files:

                @import "sprite-folder/*.png"

            And a magical, custom made sprite file will be imported.

          Options:
        }.strip.split("\n").map{|l| l.gsub(/^ {0,10}/,'')}.join("\n")

        super
      end
    end
    class Sprite < ProjectBase

      register :sprite

      def initialize(working_path, options)
        super
        assert_project_directory_exists!
      end

      def perform
        relative_uri = options[:uri].gsub(/^#{Compass.configuration.images_dir}\//, '')
        name = Compass::SpriteImporter.sprite_name(relative_uri)
        sprites = Compass::SpriteImporter.new
        options[:output_file] ||= File.join(Compass.configuration.sass_path, "sprites", "_#{name}.#{Compass.configuration.preferred_syntax}")
        options[:skip_overrides] ||= false
        contents = Compass::SpriteImporter.content_for_images(relative_uri, name, 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
        directory File.dirname(options[:output_file])
        write_file options[:output_file], contents
      end

      class << self

        def option_parser(arguments)
          parser = Compass::Exec::CommandOptionParser.new(arguments)
          parser.extend(Compass::Exec::GlobalOptionsParser)
          parser.extend(Compass::Exec::ProjectOptionsParser)
          parser.extend(SpriteOptionsParser)
        end

        def usage
          option_parser([]).to_s
        end

        def description(command)
          "Generate an import for your sprites."
        end

        def parse!(arguments)
          parser = option_parser(arguments)
          parser.parse!
          parse_arguments!(parser, arguments)
          parser.options
        end

        def parse_arguments!(parser, arguments)
          parser.options[:uri] = arguments.shift
          unless arguments.size == 0
            raise Compass::Error, "Please specify at least one image to sprite."
          end
        end

      end

    end
  end
end


================================================
FILE: cli/lib/compass/commands/stamp_pattern.rb
================================================
require 'fileutils'
require 'compass/commands/base'
require 'compass/commands/update_project'

module Compass
  module Commands
    module StampPatternOptionsParser
      def set_options(opts)
        opts.banner = %Q{Usage: compass install extension/pattern [path/to/project] [options]

Description:
  Install an extension's pattern into your compass project

Example:
  compass install blueprint/buttons

Options:
}
        opts.on("-x", "--syntax SYNTAX", [:sass, :scss], "Specify the syntax to use when generating stylesheets.", "One of sass or scss. Defaults to scss.") do |syntax|
          self.options[:preferred_syntax] = syntax
        end

        super
      end
    end

    class StampPattern < ProjectBase

      register :install

      class << self
        def option_parser(arguments)
          parser = Compass::Exec::CommandOptionParser.new(arguments)
          parser.extend(Compass::Exec::GlobalOptionsParser)
          parser.extend(Compass::Exec::ProjectOptionsParser)
          parser.extend(StampPatternOptionsParser)
        end
        def usage
          option_parser([]).to_s
        end
        def description(command)
          "Install an extension's pattern into your compass project"
        end
        def parse!(arguments)
          parser = option_parser(arguments)
          parser.parse!
          parse_arguments!(parser, arguments)
          parser.options
        end
        def parse_arguments!(parser, arguments)
          if arguments.size == 0
            raise OptionParser::ParseError, "Please specify a pattern."
          end
          pattern = arguments.shift.split('/', 2)
          parser.options[:framework] = pattern[0]
          parser.options[:pattern] = pattern[1]
          if arguments.size > 0
            parser.options[:project_name] = arguments.shift
          end
          if arguments.size > 0
            raise OptionParser::ParseError, "Unexpected trailing arguments: #{arguments.join(" ")}"
          end
        end

      end
      include InstallerCommand

      def initialize(working_path, options)
        super(working_path, options)
      end

      # all commands must implement perform
      def perform
        installer.init
        installer.run(:skip_finalization => true, :skip_preparation => !is_project_creation?)
        UpdateProject.new(working_path, options).perform if installer.compilation_required?
        installer.finalize(options.merge(:create => is_project_creation?))
      end

      def is_project_creation?
        false
      end

      def template_directory(pattern)
        File.join(framework.templates_directory, pattern)
      end

    end
  end
end


================================================
FILE: cli/lib/compass/commands/unpack_extension.rb
================================================
require 'compass/commands/project_base'
require 'fileutils'

module Compass
  module Commands
    module ExtensionOptionsParser
      def set_options(opts)
        opts.banner = %Q{
          Usage: compass unpack EXTENSION

          Description:
            Copy an extension into your extensions folder for easy access to the source code.
            This makes it easier to peruse the source in unfamiliar projects. It is not recommended
            that you change other extensions' source -- this makes it hard to take updates from
            the original author. The following extensions are available:
            
          FRAMEWORKS
            
          Options:
        }.strip.split("\n").map{|l| l.gsub(/^ {0,10}/,'')}.join("\n")
        opts.banner.gsub!(/FRAMEWORKS/,Compass::Frameworks.pretty_print(true))
        super
      end
    end

    class UnpackExtension < ProjectBase

      register :unpack

      def initialize(working_path, options)
        super
        assert_project_directory_exists!
      end

      def perform
        framework = Compass::Frameworks[options[:framework]]
        unless framework
          raise Compass::Error, "No extension named \"#{options[:framework]}\" was found."
        end
        files = Dir["#{framework.path}/**/*"]
        extension_dir = File.join(Compass.configuration.extensions_path, framework.name)
        FileUtils.rm_rf extension_dir
        FileUtils.mkdir_p extension_dir
        write_file File.join(extension_dir, "DO_NOT_MODIFY"), readme(framework)
        files.each do |f|
          next if File.directory?(f)
          ending = f[(framework.path.size+1)..-1]
          destination = File.join(extension_dir, ending)
          FileUtils.mkdir_p(File.dirname(destination))
          copy f, destination
        end
        puts "\nYou have unpacked \"#{framework.name}\""
        puts
        puts readme(framework)
      end

      def readme(framework)
        %Q{| This is a copy of the "#{framework.name}" extension.
           |
           | It now overrides the original which was found here:
           |
           | #{framework.path}
           |
           | Unpacking an extension is useful when you need to easily peruse the
           | extension's source. You might find yourself tempted to change the
           | stylesheets here. If you do this, you'll find it harder to take
           | updates from the original author. Sometimes this seems like a good
           | idea at the time, but in a few months, you'll probably regret it.
           |
           | In the future, if you take an update of this framework, you'll need to run
           |
           |     compass unpack #{framework.name}
           |
           | again or remove this unpacked extension.
           |}.gsub(/^\s*\| ?/,"")
      end

      def skip_extension_discovery?
        true
      end

      class << self

        def option_parser(arguments)
          parser = Compass::Exec::CommandOptionParser.new(arguments)
          parser.extend(Compass::Exec::GlobalOptionsParser)
          parser.extend(Compass::Exec::ProjectOptionsParser)
          parser.extend(ExtensionOptionsParser)
        end

        def usage
          option_parser([]).to_s
        end

        def description(command)
          "Copy an extension into your extensions folder."
        end

        def parse!(arguments)
          parser = option_parser(arguments)
          parser.parse!
          parse_arguments!(parser, arguments)
          parser.options
        end

        def parse_arguments!(parser, arguments)
          if arguments.size == 1
            parser.options[:framework] = arguments.shift
          elsif arguments.size == 0
            raise Compass::Error, "Please specify an extension to unpack."
          else
            raise Compass::Error, "Too many arguments were specified."
          end
        end

      end

    end
  end
end


================================================
FILE: cli/lib/compass/commands/update_project.rb
================================================
require 'compass/commands/project_base'
require 'compass/compiler'

module Compass
  module Commands
    module CompileProjectOptionsParser
      def set_options(opts)
        opts.banner = %Q{
          Usage: compass compile [path/to/project] [path/to/project/src/file.sass ...] [options]

          Description:
          compile project at the path specified or the current directory if not specified.

          Options:
        }.split("\n").map{|l| l.gsub(/^ */,'')}.join("\n")

        opts.on("--[no-]sourcemap", "Generate a sourcemap during compilation.") do |sm|
          self.options[:sourcemap] = sm
        end

        opts.on("--time", "Display compilation times.") do
          self.options[:time] = true
        end

        opts.on("--debug-info", "Turns on sass's debuging information") do
          self.options[:debug_info]= true
        end

        opts.on("--no-debug-info", "Turns off sass's debuging information") do
          self.options[:debug_info]= false
        end
        super
      end
    end

    class UpdateProject < ProjectBase

      register :compile

      def initialize(working_path, options)
        super
        assert_project_directory_exists!
      end

      def perform
        compiler = new_compiler_instance
        check_for_sass_files!(compiler)
        prepare_project!(compiler)
        compiler.compile!
        if compiler.error_count > 0
          compiler.logger.red do
            compiler.logger.log "Compilation failed in #{compiler.error_count} files."
          end
          failed! 
        end
      end

      def prepare_project!(compiler)
        if options[:project_name]
          Compass.configuration.project_path = File.expand_path(options[:project_name])
        end

        if config_file = new_config?(compiler)
          compiler.logger.record :modified, relativize(config_file)
          compiler.logger.record :clean, relativize(Compass.configuration.css_path)
          compiler.clean!
        end
      end

      # Determines if the configuration file is newer than any css file
      def new_config?(compiler)
        config_file = Compass.detect_configuration_file
        return false unless config_file
        config_mtime = File.mtime(config_file)
        compiler.file_list.each do |(_, css_filename, _)|
          return config_file if File.exists?(css_filename) && config_mtime > File.mtime(css_filename)
        end
        nil
      end

      def check_for_sass_files!(compiler)
        file_list = compiler.file_list
        if file_list.empty?
          message = "Compass can't find any Sass files to compile.\nIs your compass configuration correct?.\nIf you're trying to start a new project, you have left off the directory argument.\n"
          message << "Run \"compass -h\" to get help."
          raise Compass::Error, message
        elsif missing = file_list.find {|(sass_file, _, _)| !File.exist?(sass_file)}
          raise Compass::Error, "File not found: #{missing[0]}"
        end
      end

      def new_compiler_instance
        Compass::SassCompiler.new(compiler_options)
      end

      def compiler_options
        transfer_options(options, {}, :time, :debug_info, :only_sass_files, :force, :quiet)
      end

      def transfer_options(from, to, *keys)
        keys.each do |k|
          to[k] = from[k] unless from[k].nil?
        end
        to
      end

      class << self
        def option_parser(arguments)
          parser = Compass::Exec::CommandOptionParser.new(arguments)
          parser.extend(Compass::Exec::GlobalOptionsParser)
          parser.extend(Compass::Exec::ProjectOptionsParser)
          parser.extend(CompileProjectOptionsParser)
        end

        def usage
          option_parser([]).to_s
        end

        def primary; true; end

        def description(command)
          "Compile Sass stylesheets to CSS"
        end

        def parse!(arguments)
          parser = option_parser(arguments)
          parser.parse!
          parse_arguments!(parser, arguments)
          parser.options
        end

        def parse_arguments!(parser, arguments)
          if arguments.size > 0
            parser.options[:project_name] = arguments.shift if File.directory?(arguments.first)
            unless arguments.empty?
              parser.options[:only_sass_files] = absolutize(*arguments)
            end
          end
        end

        def absolutize(*paths)
          paths.map {|path| File.expand_path(path) }
        end

      end
    end
  end
end


================================================
FILE: cli/lib/compass/commands/validate_project.rb
================================================
require 'compass/commands/project_base'
require 'compass/commands/update_project'

module Compass
  module Commands
    module ValidationOptionsParser
      def set_options(opts)
        opts.banner = %Q{
          Usage: compass validate [path/to/project] [options]

          Description:
            Compile project at the path specified or the current
            directory if not specified and then validate the 
            generated CSS.

          Options:
        }.strip.split("\n").map{|l| l.gsub(/^ {0,10}/,'')}.join("\n")

        super
      end
    end
    class ValidateProject < ProjectBase

      register :validate

      def initialize(working_path, options)
        super
        assert_project_directory_exists!
      end

      def perform
        require 'compass/validator'
        UpdateProject.new(working_path, options).perform
        Dir.chdir Compass.configuration.project_path do
          Validator.new(project_css_subdirectory).validate()
        end
      end

      class << self

        def option_parser(arguments)
          parser = Compass::Exec::CommandOptionParser.new(arguments)
          parser.extend(Compass::Exec::GlobalOptionsParser)
          parser.extend(Compass::Exec::ProjectOptionsParser)
          parser.extend(ValidationOptionsParser)
        end

        def usage
          option_parser([]).to_s
        end

        def description(command)
          "Validate your generated css."
        end

        def parse!(arguments)
          parser = option_parser(arguments)
          parser.parse!
          parse_arguments!(parser, arguments)
          parser.options
        end

        def parse_arguments!(parser, arguments)
          if arguments.size == 1
            parser.options[:project_name] = arguments.shift
          elsif arguments.size == 0
            # default to the current directory.
          else
            raise Compass::Error, "Too many arguments were specified."
          end
        end

      end

    end
  end
end


================================================
FILE: cli/lib/compass/commands/watch_project.rb
================================================
# encoding: UTF-8
require 'fileutils'
require 'pathname'
require 'compass/commands/update_project'
require "compass/sass_compiler"

module Compass
  module Commands
    module WatchProjectOptionsParser
      def set_options(opts)
        super

        opts.banner = %Q{
          Usage: compass watch [path/to/project] [path/to/project/src/file.sass ...] [options]

          Description:
          watch the project for changes and recompile when they occur.

          Options:
        }.split("\n").map{|l| l.gsub(/^ */,'')}.join("\n")

        opts.on("--poll", :NONE, "Check periodically if there's been changes.") do
          self.options[:poll] = 1 # check every 1 second.
        end

      end
    end

    class WatchProject < UpdateProject

      register :watch

      attr_accessor :last_update_time, :last_sass_files

      def perform
        compiler = new_compiler_instance
        compiler.logger.time = true if options[:time]
        prepare_project!(compiler)
        compiler.logger.log ">>> #{compiler.logger.color(:green)}Compass is watching for changes.#{compiler.logger.color(:clear)} #{compiler.logger.color(:red)}Press Ctrl-C to Stop.#{compiler.logger.color(:clear)}"
        begin
          compiler.watch!(:additional_watch_paths => additional_watch_paths, &method(:notify_watches))
          happy_styling!(compiler.logger)
        rescue Interrupt
          happy_styling!(compiler.logger)
        end
      end

      def happy_styling!(logger)
          logger.log "\n#{logger.color(:yellow)}★★★ #{logger.color(:blue)}Happy Styling!#{logger.color(:yellow)} ★★★#{logger.color(:clear)}"
      end

      def compiler_options
        super.merge(:poll => options[:poll], :full_exception => true)
      end

      def additional_watch_paths
        Compass.configuration.watches.map do |watch|
          pathname = Pathname.new(File.join(Compass.configuration.project_path, watch.glob))
          real_path = nil
          pathname.ascend do |p|
            if p.exist?
              real_path = p
              break
            end
          end
          real_path
        end.compact.uniq
      end

      def notify_watches(modified, added, removed)
        project_path = Compass.configuration.project_path
        files = {:modified => modified,
                 :added    => added,
                 :removed  => removed}

        run_once, run_each = Compass.configuration.watches.partition {|w| w.run_once_per_changeset?}

        run_once.each do |watcher|
          if file = files.values.flatten.detect{|f| watcher.match?(f) }
            action = files.keys.detect{|k| files[k].include?(file) }
            watcher.run_callback(project_path, relative_to(file, project_path), action)
          end
        end

        run_each.each do |watcher|
          files.each do |action, list|
            list.each do |file|
              if watcher.match?(file)
                watcher.run_callback(project_path, relative_to(file, project_path), action)
              end
            end
          end
        end
      end

      def relative_to(f, dir)
        Pathname.new(f).relative_path_from(Pathname.new(dir))
      rescue ArgumentError # does not share a common path.
        f
      end

      class << self
        def description(command)
          "Compile Sass stylesheets to CSS when they change"
        end

        def option_parser(arguments)
          parser = Compass::Exec::CommandOptionParser.new(arguments)
          parser.extend(Compass::Exec::GlobalOptionsParser)
          parser.extend(Compass::Exec::ProjectOptionsParser)
          parser.extend(CompileProjectOptionsParser)
          parser.extend(WatchProjectOptionsParser)
        end
      end
    end
  end
end


================================================
FILE: cli/lib/compass/commands/write_configuration.rb
================================================
require 'compass/commands/project_base'

module Compass
  module Commands
    module ConfigurationOptionsParser
      def set_options(opts)
        opts.banner = %Q{
          Usage: compass config [path/to/config_file.rb] [options]

          Description:
            Generate a configuration file for the options specified.
            Compass will recognize configuration files in the
            following locations relative to the project root:
              * #{Compass::Configuration::Helpers::KNOWN_CONFIG_LOCATIONS.join("
              * ")}
            Any other location, and you'll need to specify it when working with the command line tool using the -c option.

          Options:
        }.strip.split("\n").map{|l| l.gsub(/^ {0,10}/,'')}.join("\n")
        opts.on("--debug [PROPERTY]", "Debug your configuration by printing out details.") do |prop|
          self.options[:debug] = prop.nil? ? true : prop.to_sym
        end
        opts.on("-p PROPERTY", "--property PROPERTY", "Print out the value of a particular configuration property") do |prop|
          self.options[:display] = prop.to_sym
        end

        super
      end
    end
    class WriteConfiguration < ProjectBase

      register :config

      include InstallerCommand

      def initialize(working_path, options)
        super
        assert_project_directory_exists!
      end

      def add_project_configuration
        Compass.add_project_configuration
      end

      def perform
        if options[:display]
          if Compass.configuration.respond_to?(options[:display])
            puts Compass.configuration.send(options[:display])
          else
            raise Compass::Error, "ERROR: configuration property '#{options[:display]}' does not exist"
          end
        elsif options[:debug]
          puts "Configuration sources:"
          c = Compass.configuration
          while c
            print c.name
            c = c.inherited_data
            print ", " if c
          end
          print "\n"
          Compass.configuration.debug.each do |prop, values|
            if options[:debug].is_a?(Symbol)
              next unless prop == options[:debug]
            end
            puts "***** #{prop} = #{values.first[:resolved].inspect} *****"
            [:default, :value, :raw, :resolved].each do |kind|
              puts "#{kind}: " + values.inject([]){|m, v| m << v[kind]}.map{|v| v.nil? ? '-' : v.inspect}.join(", ")
            end
          end
        else
          config_file = options[:configuration_file]
          config_file ||= Compass.detect_configuration_file
          config_file ||= Compass::Configuration::Helpers::KNOWN_CONFIG_LOCATIONS.first
          directory File.dirname(config_file)
          installer.write_configuration_files(config_file)
        end
      end

      def installer_args
        [nil, project_directory, options]
      end

      def explicit_config_file_must_be_readable?
        false
      end

      class << self

        def option_parser(arguments)
          parser = Compass::Exec::CommandOptionParser.new(arguments)
          parser.extend(Compass::Exec::GlobalOptionsParser)
          parser.extend(Compass::Exec::ProjectOptionsParser)
          parser.extend(ConfigurationOptionsParser)
        end

        def usage
          option_parser([]).to_s
        end

        def description(command)
          "Generate a configuration file for the provided command line options."
        end

        def parse!(arguments)
          parser = option_parser(arguments)
          parser.parse!
          parse_arguments!(parser, arguments)
          parser.options
        end

        def parse_arguments!(parser, arguments)
          if arguments.size == 1
            parser.options[:configuration_file] = arguments.shift
          elsif arguments.size == 0
            # default to the current directory.
          else
            raise Compass::Error, "Too many arguments were specified."
          end
        end

      end

    end
  end
end


================================================
FILE: cli/lib/compass/commands.rb
================================================
module Compass::Commands
end

require 'compass/commands/registry'

%w(base project_base default help list_frameworks 
   update_project watch_project create_project clean_project extension_command
   imports installer_command print_version project_stats stamp_pattern
   sprite validate_project write_configuration interactive unpack_extension
).each do |lib|
  require "compass/commands/#{lib}"
end

Compass.discover_extensions!

================================================
FILE: cli/lib/compass/compiler.rb
================================================
require 'pathname'

module Compass
  class Compiler

    include Actions

    attr_accessor :working_path, :from, :to, :options, :sass_options, :staleness_checker, :importer

    def initialize(working_path, from, to, options)
      Compass::Deprecation.deprecated!(:compass_compiler_constructor,
        "Compass::Compiler is deprecated. Use Compass::SassCompiler instead.")
      self.working_path = working_path.to_s
      self.from, self.to = File.expand_path(from), to
      self.logger = options.delete(:logger)
      sass_opts = options.delete(:sass) || {}
      self.options = options
      self.sass_options = options.dup
      self.sass_options.delete(:quiet)
      self.sass_options.update(sass_opts)
      self.sass_options[:cache_location] ||= determine_cache_location
      self.sass_options[:filesystem_importer] ||= Sass::Importers::Filesystem
      self.sass_options[:importer] = self.importer = self.sass_options[:filesystem_importer].new(from)
      self.sass_options[:compass] ||= {}
      self.sass_options[:compass][:logger] = self.logger
      self.sass_options[:compass][:environment] = Compass.configuration.environment
      self.sass_options[:compass][:compiler_in_use] = true
      reset_staleness_checker!
    end

    def reset_staleness_checker!
      self.staleness_checker = nil
      #Sass::Plugin::StalenessChecker.dependencies_cache = {}
      self.staleness_checker = Sass::Plugin::StalenessChecker.new(sass_options)
    end

    def determine_cache_location
      Compass.configuration.cache_path || Sass::Plugin.options[:cache_location] || File.join(working_path, ".sass-cache")
    end

    def sass_files(options = {})
      exclude_partials = options.fetch(:exclude_partials, true)
      @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)..-1]
    end

    def stylesheet_name(sass_file)
      if sass_file.index(from) == 0
        sass_file[(from.length + 1)..-6].sub(/\.css$/,'')
      else
        raise Compass::Error, "You must compile individual stylesheets from the project directory."
      end
    end

    def css_files
      @css_files ||= sass_files.map{|sass_file| corresponding_css_file(sass_file)}
    end

    def sourcemap_files
      @sourcemap_files ||= sass_files.map{|sass_file| corresponding_sourcemap_file(sass_file)}
    end

    def corresponding_css_file(sass_file)
      "#{to}/#{stylesheet_name(sass_file)}.css"
    end

    def corresponding_sourcemap_file(sass_file)
      "#{to}/#{stylesheet_name(sass_file)}.css.map"
    end

    def target_directories
      css_files.map{|css_file| File.dirname(css_file)}.uniq.sort.sort_by{|d| d.length }
    end

    # 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 needs_update?(css_filename, sass_filename)
      end
      false
    end

    def needs_update?(css_filename, sass_filename)
      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
    def new_config?
      config_file = Compass.detect_configuration_file
      return false unless config_file
      config_mtime = File.mtime(config_file)
      css_files.each do |css_filename|
        return config_file if File.exists?(css_filename) && config_mtime > File.mtime(css_filename)
      end
      nil
    end

    def reset!
      reset_staleness_checker!
      @sass_files = nil
      @css_files = nil
      @sourcemap_files = nil
    end

    def clean!
      remove options[:cache_location]
      css_files.zip(sourcemap_files).each do |css_file, sourcemap_file|
        remove css_file
        remove sourcemap_file
      end
    end

    def run
      failure_count = 0
      if new_config?
        # Wipe out the cache and force compilation if the configuration has changed.
        remove options[:cache_location] if options[:cache_location]
        options[:force] = true
      end

      # Make sure the target directories exist
      target_directories.each {|dir| directory dir}

      # Compile each sass file.
      result = timed do
        sass_files.zip(css_files, sourcemap_files).each do |sass_filename, css_filename, sourcemap_filename|
          begin
            compile_if_required sass_filename, css_filename, sourcemap_filename
          rescue Sass::SyntaxError => e
            failure_count += 1
            handle_exception(sass_filename, css_filename, e)
          end
        end
      end
      if options[:time]
        puts "Compilation took #{(result.__duration * 1000).round / 1000.0}s"
      end
      return failure_count
    end

    def compile_if_required(sass_filename, css_filename, sourcemap_filename = nil)
      if should_compile?(sass_filename, css_filename, sourcemap_filename)
        compile sass_filename, css_filename, sourcemap_filename
      else
        logger.record :unchanged, basename(sass_filename) unless options[:quiet]
        remove(sourcemap_filename) if sourcemap_filename && !options[:sourcemap]
      end
    end

    def timed(timed_thing = lambda {|res| res})
      start_time = Time.now
      res = yield
      end_time = Time.now
      has_duration = timed_thing.call(res)
      has_duration.instance_variable_set("@__duration", end_time - start_time)
      def has_duration.__duration
        @__duration
      end
      res
    end

    # Compile one Sass file
    def compile(sass_filename, css_filename, sourcemap_filename = nil)
      css_content, sourcemap = logger.red do
        timed(lambda {|r| r[0]}) do
          engine = engine(sass_filename, css_filename, sourcemap_filename)
          if sourcemap_filename && options[:sourcemap]
            engine.render_with_sourcemap(relative_path(css_filename, sourcemap_filename))
          else
            [engine.render, nil]
          end
        end
      end
      duration = options[:time] ? "(#{(css_content.__duration * 1000).round / 1000.0}s)" : ""
      write_file(css_filename, css_content, options.merge(:force => true, :extra => duration), sass_options[:unix_newlines])
      Compass.configuration.run_stylesheet_saved(css_filename)
      if sourcemap && sourcemap_filename
        sourcemap_content = sourcemap.to_json(:css_path => css_filename,
                                              :sourcemap_path => sourcemap_filename)
        write_file(sourcemap_filename, sourcemap_content, options.merge(:force => true), sass_options[:unix_newlines])
        Compass.configuration.run_sourcemap_saved(sourcemap_filename)
      elsif sourcemap_filename && File.exist?(sourcemap_filename)
        remove sourcemap_filename
        Compass.configuration.run_sourcemap_removed(sourcemap_filename)
      end
    end

    def relative_path(from_path, to_path)
      Pathname.new(to_path).relative_path_from(Pathname.new(from_path).dirname).to_s
    end

    def should_compile?(sass_filename, css_filename, sourcemap_filename = nil)
      return true if css_filename && !File.exist?(css_filename)
      return true if sourcemap_filename && options[:sourcemap] && !File.exist?(sourcemap_filename)
      options[:force] ||
        needs_update?(css_filename, sass_filename) ||
        (options[:sourcemap] && needs_update?(sourcemap_filename, sass_filename))
    end

    # A sass engine for compiling a single file.
    def engine(sass_filename, css_filename, sourcemap_filename = nil)
      syntax = (sass_filename =~ /\.(s[ac]ss)$/) && $1.to_sym || :sass
      opts = sass_options.merge(:filename => sass_filename,
                                :css_filename => css_filename,
                                :syntax => syntax,
                                :sourcemap_filename => sourcemap_filename)
      Sass::Engine.new(open(sass_filename).read, opts)
    end

    # Place the syntax error into the target css file,
    # formatted to display in the browser (in development mode)
    # if there's an error.
    def handle_exception(sass_filename, css_filename, e)
      exception_file = basename(e.sass_filename || sass_filename)
      file = basename(sass_filename)
      exception_file = nil if exception_file == file
      formatted_error = "(Line #{e.sass_line}#{ " of #{exception_file}" if exception_file}: #{e.message})"
      logger.record :error, file, formatted_error
      Compass.configuration.run_stylesheet_error(sass_filename, formatted_error)
      write_file css_filename, error_contents(e, sass_filename), options.merge(:force => true), sass_options[:unix_newlines]
    end

    # Haml refactored this logic in 2.3, this is backwards compatibility for either one
    def error_contents(e, sass_filename)
      if show_full_exception?
        e.sass_template = sass_filename
        Sass::SyntaxError.exception_to_css(e)
      else
        header = Sass::SyntaxError.send(:header_string, e, 1)
        <<END
/*
#{header.gsub("*/", "*\\/")}

Backtrace:\n#{e.backtrace.join("\n").gsub("*/", "*\\/")}
*/
END
      end
    end

    # We don't want to show the full exception in production environments.
    def show_full_exception?
      Compass.configuration.environment == :development
    end

  end
end


================================================
FILE: cli/lib/compass/configuration/comments.rb
================================================
module Compass
  module Configuration
    # Comments are emitted into the configuration file when serialized and make it easier to understand for new users.
    module Comments

      def comment_for_http_path
        unless top_level.http_path_without_default
          "# Set this to the root of your project when deployed:\nhttp_path = #{top_level.http_path.to_s.inspect}\n"
        else
          ""
        end
      end

      def comment_for_relative_assets
        unless top_level.relative_assets
          %q{# To enable relative paths to assets via compass helper functions. Uncomment:
# relative_assets = true
}
        else
          ""
        end
      end

      def comment_for_line_comments
        if top_level.line_comments
          %q{# To disable debugging comments that display the original location of your selectors. Uncomment:
# line_comments = false
}
        else
          ""
        end
      end

      def comment_for_output_style
        unless top_level.output_style_without_default
          %Q{# You can select your preferred output style here (can be overridden via the command line):
# output_style = :expanded or :nested or :compact or :compressed
}
        else
          ""
        end
      end

      def comment_for_preferred_syntax
        if top_level.preferred_syntax_without_default.nil? && top_level.sass_dir
          %Q{
# If you prefer the indented syntax, you might want to regenerate this
# project again passing --syntax sass, or you can uncomment this:
# preferred_syntax = :sass
# and then run:
# sass-convert -R --from scss --to sass #{top_level.sass_dir} scss && rm -rf sass && mv scss sass
}
        else
          ""
        end
      end
    end
    class Data
      include Comments
    end
  end
end


================================================
FILE: cli/lib/compass/configuration/file_data.rb
================================================
module Compass
  module Configuration
    class FileData < Data
      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


================================================
FILE: cli/lib/compass/configuration/helpers.rb
================================================
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_for(config, filename = nil, defaults = nil)
        if config.nil?
          nil
        elsif config.is_a?(Compass::Configuration::Data)
          config
        elsif config.instance_of?(Hash)
          Compass::Configuration::Data.new(filename, config)
        elsif config.respond_to?(:read)
          filename ||= config.to_s if config.is_a?(Pathname)
          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::FileData.new_from_file(config, defaults)
        elsif config.is_a?(Symbol)
          Compass::AppIntegration.lookup(config).configuration
        else
          raise "I don't know what to do with: #{config.inspect}"
        end
      end

      def sass_plugin_configuration
        configuration.to_sass_plugin_options
      end

      def configure_sass_plugin!
        require 'sass/plugin'
        config = sass_plugin_configuration
        locations = config.delete(:template_location)
        Sass::Plugin.options.merge!(config)
        locations.each do |sass_dir, css_dir|
          unless Sass::Plugin.engine_options[:load_paths].include?(sass_dir)
            Sass::Plugin.add_template_location sass_dir, css_dir
          end
        end
        unless @callbacks_loaded
          on_saved = Proc.new do |sass_file, css_file|
                       Compass.configuration.run_stylesheet_saved(css_file)
                     end
          if Sass::Plugin.respond_to?(:on_updated_stylesheet)
            Sass::Plugin.on_updated_stylesheet(&on_saved)
          else
            Sass::Plugin.on_updating_stylesheet(&on_saved)
          end
          
          Sass::Plugin.on_compilation_error do |e, filename, css|
            Compass.configuration.run_stylesheet_error(filename, e.message)
          end
          
          @callbacks_loaded = true
        end
      end

      def sass_engine_options
        configuration.to_sass_engine_options
      end

      # Read the configuration file for this project
      def add_project_configuration(*args)
        options = args.last.is_a?(Hash) ? args.pop : {}
        configuration_file_path = args.shift || detect_configuration_file

        raise ArgumentError, "Too many arguments" if args.any?
        if AppIntegration.default? && data = configuration_for(configuration_file_path, nil, configuration_for(options[:defaults]))
          if data.raw_project_type
            add_configuration(data.raw_project_type.to_sym)
          elsif options[:project_type]
            add_configuration(options[:project_type])
          else
            add_configuration(:stand_alone)
          end
          add_configuration(data)
        else
          add_configuration(options[:project_type] || configuration.project_type_without_default || (yield if block_given?) || :stand_alone)
        end
      end

      # TODO: Deprecate the src/config.rb location.
      KNOWN_CONFIG_LOCATIONS = ['config/compass.rb', ".compass/config.rb", "config/compass.config", "config.rb", "src/config.rb"]

      # Finds the configuration file, if it exists in a known location.
      def detect_configuration_file(project_path = nil)
        possible_files = KNOWN_CONFIG_LOCATIONS.map{|f| projectize(f, project_path) }
        possible_files.detect{|f| File.exists?(f)}
      end

      def handle_configuration_change!
        if (compiler = Compass.compiler).new_config?
          compiler.clean!
        end
      end

      # @deprecated
      def compiler
        Compass::Deprecation.deprecated!(:compiler_accessor,
          "Compass.compiler is deprecated. Use Compass.sass_compiler instead.")
        Compass::Deprecation.mark_as_issued(:compass_compiler_constructor)
        Compass::Compiler.new(*Compass.configuration.to_compiler_arguments)
      end

      def sass_compiler(*args)
        Compass::SassCompiler.new(*args)
      end
    end
  end

  extend Configuration::Helpers
end


================================================
FILE: cli/lib/compass/configuration/serialization.rb
================================================
module Compass
  module Configuration
    # The serialization module manages reading and writing the configuration file(s).
    module Serialization
      def parse(config_file)
        raise Compass::Error, "Compass.configuration.parse(filename) has been removed. Please call Compass.add_project_configuration(filename) instead."
      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
      end

      def get_binding
        binding
      end
      def parse_string(contents, filename)
        bind = get_binding
        eval(contents, bind, filename)
        local_vars_set = eval("local_variables", bind)
        local_vars_set.each do |local_var|
          if (ATTRIBUTES+ARRAY_ATTRIBUTES).include?(local_var.to_sym)
            value = eval(local_var.to_s, bind)
            value = value.to_s if value.is_a?(Pathname)
            self.send("#{local_var}=", value)
          end
        end
        if @added_import_paths
          @added_import_paths.each do |p|
            self.additional_import_paths << p unless self.additional_import_paths.include?(p)
          end
        end
        issue_deprecation_warnings
      end

      def serialize
        contents = ""
        (required_libraries || []).each do |lib|
          contents << %Q{require '#{lib}'\n}
        end
        unless (required_libraries || []).include?("compass/import-once/activate") ||
               (required_libraries || []).include?("compass/import-once")
          contents << "require 'compass/import-once/activate'\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 + ARRAY_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 << "\n"
            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)
        if value.respond_to?(:serialize_to_config)
          value.serialize_to_config(prop) + "\n"
        else
          %Q(#{prop} = #{value.inspect}\n)
        end
      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
    class Data
      include Serialization
    end
  end
end


================================================
FILE: cli/lib/compass/dependencies.rb
================================================
begin
  require 'sass'
rescue LoadError
  require 'rubygems'
  begin
    require 'sass'
  rescue LoadError
    puts "Unable to load Sass. Please install it with one of the following commands:"
    puts "  gem install sass --pre"
    raise
  end
end


================================================
FILE: cli/lib/compass/deprecation.rb
================================================
module Compass
  module Deprecation
    class << self
      attr_accessor :issued_deprecations
    end
    self.issued_deprecations = {}

    def self.deprecated!(identifier, message)
      return if Deprecation.issued_deprecations[identifier]
      Deprecation.issued_deprecations[identifier] = true
      warn message
      warn "Called from #{caller[1]}"
    end

    def self.mark_as_issued(identifier)
      Deprecation.issued_deprecations[identifier] = true
    end
  end
end


================================================
FILE: cli/lib/compass/errors.rb
================================================
require 'compass/error'
module Compass
  class FilesystemConflict < Error
  end

  class MissingDependency < Error
  end
  class SpriteException < Error; end
end


================================================
FILE: cli/lib/compass/exec/command_option_parser.rb
================================================
module Compass::Exec
  class CommandOptionParser
    attr_accessor :options, :arguments, :opts
    def initialize(arguments)
      self.arguments = arguments
      self.options = {}
    end
    def parse!
      opts.parse!(arguments)
    end
    def opts
      OptionParser.new do |opts|
        self.set_options(opts)
      end
    end
    def set_options(opts)

    end
    def to_s
      opts.to_s
    end
  end
end


================================================
FILE: cli/lib/compass/exec/global_options_parser.rb
================================================
module Compass::Exec::GlobalOptionsParser
  def set_options(opts)
    super
    set_global_options(opts)
  end
  def set_global_options(opts)
    opts.on('-r LIBRARY', '--require LIBRARY',
            "Require the given ruby LIBRARY before running commands.",
            "  This is used to access compass plugins without having a",
            "  project configuration file."
      ) do |library|
        ::Compass.configuration.require library
      end

    opts.on('-l FRAMEWORK_DIR', '--load FRAMEWORK_DIR',
            "Load the framework or extensions found in the FRAMEWORK directory."
      ) do |framework_dir|
        require 'pathname'
        ::Compass.configuration.load Pathname.new(framework_dir).realpath
      end

    opts.on('-L FRAMEWORKS_DIR', '--load-all FRAMEWORKS_DIR',
            "Load all the frameworks or extensions found in the FRAMEWORKS_DIR directory."
      ) do |frameworks_dir|
        require 'pathname'
        ::Compass.configuration.discover Pathname.new(frameworks_dir).realpath
      end

    opts.on('-I IMPORT_PATH', '--import-path IMPORT_PATH',
            "Makes files under the IMPORT_PATH folder findable by Sass's @import directive."
      ) do |import_path|
        require 'pathname'
        ::Compass.configuration.add_import_path Pathname.new(import_path).realpath
      end

    opts.on('-q', '--quiet', :NONE, 'Quiet mode.') do
      self.options[:quiet] = true
    end

    opts.on('--trace', :NONE, 'Show a full stacktrace on error') do
      self.options[:trace] = true
    end

    opts.on('--force', :NONE, 'Allows compass to overwrite existing files.') do
      self.options[:force] = true
    end

    opts.on('--boring', :NONE, 'Turn off colorized output.') do
      self.options[:color_output] = false
    end

    opts.on_tail("-?", "-h", "--help", "Show this message") do
      puts opts
      exit
    end

  end

end


================================================
FILE: cli/lib/compass/exec/helpers.rb
================================================
module Compass::Exec
  module Helpers
    extend self
    def report_error(e, options)
      $stderr.puts "#{e.class} on line #{get_line e} of #{get_file e}: #{e.message}"
      if options[:trace]
        e.backtrace[1..-1].each { |t| $stderr.puts "  #{t}" }
      else
        $stderr.puts "Run with --trace to see the full backtrace"
      end
    end

    def get_file(exception)
      exception.backtrace[0].split(/:/, 2)[0]
    end

    def get_line(exception)
      exception.backtrace[0].scan(/:(\d+)/)[0]
    end
  end
end


================================================
FILE: cli/lib/compass/exec/project_options_parser.rb
================================================
module Compass::Exec::ProjectOptionsParser
  def set_options(opts)
    super
    set_project_options(opts)
  end
  def set_dir_or_path(type, dir)
    if Pathname.new(dir).absolute?
      self.options[:"#{type}_path"] = dir.tr('\\','/')
    else
      self.options[:"#{type}_dir"] = dir.tr('\\','/')
    end
  end

  def set_project_options(opts)
    opts.on('-c', '--config CONFIG_FILE', 'Specify the location of the configuration file explicitly.') do |configuration_file|
      self.options[:configuration_file] = configuration_file
    end

    opts.on('--app APP', 'Tell compass what kind of application it is integrating with. E.g. rails') do |project_type|
      self.options[:project_type] = project_type.to_sym
    end

    opts.on('--app-dir PATH', 'The base directory for your application.') do |project_path|
      self.options[:project_path] = project_path
    end

    opts.on('--sass-dir SRC_DIR', "The source directory where you keep your sass stylesheets.") do |sass_dir|
      set_dir_or_path(:sass, sass_dir)
    end

    opts.on('--css-dir CSS_DIR', "The target directory where you keep your css stylesheets.") do |css_dir|
      set_dir_or_path(:css, css_dir)
    end

    opts.on('--images-dir IMAGES_DIR', "The directory where you keep your images.") do |images_dir|
      set_dir_or_path(:images, images_dir)
    end

    opts.on('--javascripts-dir JS_DIR', "The directory where you keep your javascripts.") do |javascripts_dir|
      set_dir_or_path(:javascripts, javascripts_dir)
    end

    opts.on('--fonts-dir FONTS_DIR', "The directory where you keep your fonts.") do |fonts_dir|
      set_dir_or_path(:fonts, fonts_dir)
    end

    opts.on('-e ENV', '--environment ENV', [:development, :production], 'Use sensible defaults for your current environment.',
            '  One of: development (default), production') do |env|
      self.options[:environment] = env
    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

    opts.on('--relative-assets', :NONE, 'Make compass asset helpers generate relative urls to assets.') do
      self.options[:relative_assets] = true
    end

    opts.on('--no-line-comments', :NONE, 'Disable line comments.') do
      self.options[:line_comments] = false
    end

    opts.on('--http-path HTTP_PATH', 'Set this to the root of your project when deployed') do |http_path|
      self.options[:http_path] = http_path
    end

    opts.on('--generated-images-path GENERATED_IMAGES_PATH', 'The path where you generate your images') do |generated_images_path|
      self.options[:generated_images_path] = generated_images_path
    end
  end

end


================================================
FILE: cli/lib/compass/exec/sub_command_ui.rb
================================================
require 'compass/exec/global_options_parser'
require 'compass/exec/project_options_parser'

module Compass::Exec
  class SubCommandUI

    attr_accessor :args

    def initialize(args)
      self.args = args
    end

    def run!
      begin
        return perform!
      rescue Exception => e
        raise e if e.is_a? SystemExit
        if e.is_a?(::Compass::Error) || e.is_a?(OptionParser::ParseError)
          $stderr.puts e.message
        else
          ::Compass::Exec::Helpers.report_error(e, @options || {})
        end
        return 1
      end
    end
    
    protected
    
    def perform!
      $command = args.shift
      command_class = Compass::Commands[$command]
      unless command_class
        args.unshift($command)
        $command = "help"
        command_class = Compass::Commands::Default
      end
      @options = if command_class.respond_to?("parse_#{$command}!")
        command_class.send("parse_#{$command}!", args)
      else
        command_class.parse!(args)
      end
      cmd = command_class.new(Dir.getwd, @options)
      cmd.execute
      cmd.successful? ? 0 : 1
    rescue OptionParser::ParseError => e
      puts "Error: #{e.message}"
      puts command_class.usage if command_class.respond_to?(:usage)
    end
    
  end
end


================================================
FILE: cli/lib/compass/exec.rb
================================================
require 'compass/dependencies'
require 'optparse'
require 'compass/logger'
require 'compass/errors'
require 'compass/actions'
require 'compass/installers'
require 'compass/commands'
require 'rbconfig'
require 'pathname'
begin
  require 'win32console' if RbConfig::CONFIG['host_os'] =~ /mswin|mingw/
rescue LoadError
  $boring = true
end

module Compass::Exec
end

%w(helpers sub_command_ui
   global_options_parser project_options_parser
   command_option_parser).each do |lib|
  require "compass/exec/#{lib}"
end


================================================
FILE: cli/lib/compass/generated_version.rb
================================================
module Compass
  # This file intentionall does nothing.
  # The compass build scripts put the release VERSION constant here.
end


================================================
FILE: cli/lib/compass/installers/bare_installer.rb
================================================
module Compass
  module Installers

    class BareInstaller < Base
      def completed_configuration
        nil
      end

      def init
        directory targetize("")
        directory targetize(Compass.configuration.sass_dir)
      end

      def prepare
      end

      def install
        config_file ||= targetize('config.rb')
        write_file config_file, config_contents
      end

      def config_contents
        project_path, Compass.configuration.project_path = Compass.configuration.project_path, nil
        Compass.configuration.serialize
      ensure
        Compass.configuration.project_path = project_path
      end

      def finalize(options = {})
        puts <<-NEXTSTEPS

*********************************************************************
Congratulations! Your compass project has been created.

You may now add sass stylesheets to the #{Compass.configuration.sass_dir} subdirectory of your project.

Sass files beginning with an underscore are called partials and won't be
compiled to CSS, but they can be imported into other sass stylesheets.

You can configure your project by editing the config.rb configuration file.

You must compile your sass stylesheets into CSS when they change.
This can be done in one of the following ways:
  1. To compile on demand:
     compass compile [path/to/project]
  2. To monitor your project for changes and automatically recompile:
     compass watch [path/to/project]

More Resources:
  * Website: http://compass-style.org/
  * Sass: http://sass-lang.com
  * Community: http://groups.google.com/group/compass-users/
NEXTSTEPS
      end

    end
  end
end


================================================
FILE: cli/lib/compass/installers/base.rb
================================================
module Compass
  module Installers

    class Base

      include Actions

      attr_accessor :template_path, :target_path, :working_path
      attr_accessor :options

      def initialize(template_path, target_path, options = {})
        @template_path = template_path
        @target_path = target_path
        @working_path = Dir.getwd
        @options = options
        self.logger = options[:logger]
      end

      [:css_dir, :sass_dir, :images_dir, :javascripts_dir, :http_stylesheets_path, :fonts_dir, :preferred_syntax].each do |dir|
        define_method dir do
          Compass.configuration.send(dir)
        end
        define_method "#{dir}_without_default" do
          Compass.configuration.send("#{dir}_without_default")
        end
      end

      # Runs the installer.
      # Every installer must conform to the installation strategy of prepare, install, and then finalize.
      # A default implementation is provided for each step.
      def run(run_options = {})
        prepare unless run_options[:skip_preparation]
        install unless options[:prepare]
        finalize(options.merge(run_options)) unless options[:prepare] || run_options[:skip_finalization]
      end

      # The default prepare method -- it is a no-op.
      # Generally you would create required directories, etc.
      def prepare
      end

      # The install method override this to install
      def install
        raise "Not Yet Implemented"
      end

      # The default finalize method -- it is a no-op.
      # This could print out a message or something.
      def finalize(options = {})
      end

      def compilation_required?
        false
      end

      def pattern_name_as_dir
        "#{options[:pattern_name]}/" if options[:pattern_name]
      end

      def self.installer(type, installer_opts = {}, &locator)
        locator ||= lambda{|to| to}
        loc_method = "install_location_for_#{type}".to_sym
        define_method("simple_#{loc_method}", locator)
        define_method(loc_method) do |to, options|
          if options[:like] && options[:like] != type
            send("install_location_for_#{options[:like]}", to, options)
          else
            send("simple_#{loc_method}", to)
          end
        end
        define_method "install_#{type}" do |from, to, options|
          from = templatize(from)
          to = targetize(send(loc_method, to, options))
          is_binary = installer_opts[:binary] || options[:binary]
          if is_binary
            copy from, to, nil, is_binary
          else
            contents = File.new(from).read
            if options.delete(:erb)
              ctx = TemplateContext.ctx(:to => to, :options => options)
              contents = process_erb(contents, ctx)
            end
            write_file to, contents
          end
        end
      end

      installer :stylesheet do |to|
        "#{sass_dir}/#{pattern_name_as_dir}#{to}"
      end

      def install_stylesheet(from, to, options)
        from = templatize(from)
        to = targetize(install_location_for_stylesheet(to, options))
        contents = File.new(from).read
        if options.delete(:erb)
          ctx = TemplateContext.ctx(:to => to, :options => options)
          contents = process_erb(contents, ctx)
        end
        if preferred_syntax.to_s != from[-4..-1]
          # logger.record :convert, basename(from)
          tree = Sass::Engine.new(contents, Compass.sass_engine_options.merge(:syntax => from[-4..-1].intern)).to_tree
          contents = tree.send("to_#{preferred_syntax}")
          to[-4..-1] = preferred_syntax.to_s
        end
        write_file to, contents
      end

      installer :css do |to|
        "#{css_dir}/#{to}"
      end

      installer :image, :binary => true do |to|
        "#{images_dir}/#{to}"
      end

      installer :javascript do |to|
        "#{javascripts_dir}/#{to}"
      end

      installer :font do |to|
        "#{fonts_dir}/#{to}"
      end

      installer :file do |to|
        "#{pattern_name_as_dir}#{to}"
      end

      installer :html do |to|
        "#{pattern_name_as_dir}#{to}"
      end

      def install_directory(from, to, options)
        d = if within = options[:within]
          if respond_to?(within)
            targetize("#{send(within)}/#{to}")
          else
            raise Compass::Error, "Unrecognized location: #{within}"
          end
        else
          targetize(to)
        end
        directory d
      end

      alias install_html_without_haml install_html
      def install_html(from, to, options)
        if to =~ /\.haml$/
          require 'haml'
          to = to[0..-(".haml".length+1)]
          if respond_to?(:install_location_for_html)
            to = install_location_for_html(to, options)
          end
          contents = File.read(templatize(from))
          if options.delete(:erb)
            ctx = TemplateContext.ctx(:to => to, :options => options)
            contents = process_erb(contents, ctx)
          end
          Compass.configure_sass_plugin!
          html = Haml::Engine.new(contents, :filename => templatize(from)).render
          write_file(targetize(to), html, options)
        else
          install_html_without_haml(from, to, options)
        end
      end

      # returns an absolute path given a path relative to the current installation target.
      # Paths can use unix style "/" and will be corrected for the current platform.
      def targetize(path)
        strip_trailing_separator File.join(target_path, separate(path))
      end

      # returns an absolute path given a path relative to the current template.
      # Paths can use unix style "/" and will be corrected for the current platform.
      def templatize(path)
        strip_trailing_separator File.join(template_path, separate(path))
      end

      # Emits an HTML fragment that can be used to link to the compiled css files
      def stylesheet_links
        ""
      end
    end
  end
end
require 'compass/installers/bare_installer'
require 'compass/installers/manifest_installer'


================================================
FILE: cli/lib/compass/installers/manifest.rb
================================================
module Compass
  module Installers

    class Manifest
      include Enumerable

      # A Manifest entry
      class Entry < Struct.new(:type, :from, :options)
        def to
          options[:to] || from
        end
      end

      attr_reader :options
      def initialize(manifest_file = nil, options = {})
        @entries = []
        @options = options
        @generate_config = true
        @compile_after_generation = true
        parse(manifest_file) if manifest_file
      end

      def self.known_extensions
        @known_extensions ||= {}
      end

      def self.plural_types
        @plural_types ||= {}
      end

      def self.type(t, options = {})
        Array(options[:extensions]).each do |ext|
          self.known_extensions[ext] = t
        end
        self.plural_types[options[:plural]] = t if options[:plural]
        eval <<-END
          def #{t}(from, options = {})
             @entries << Entry.new(:#{t}, from, options)
          end
          def has_#{t}?
            @entries.detect {|e| e.type == :#{t}}
          end
          def each_#{t}
            @entries.select {|e| e.type == :#{t}}.each {|e| yield e}
          end
        END
      end

      type :stylesheet, :plural => :stylesheets, :extensions => %w(scss sass)
      type :image,      :plural => :images,      :extensions => %w(png gif jpg jpeg tiff gif)
      type :javascript, :plural => :javascripts, :extensions => %w(js)
      type :font,       :plural => :fonts,       :extensions => %w(eot otf woff ttf)
      type :html,       :plural => :html,        :extensions => %w(html haml)
      type :file,       :plural => :files
      type :directory,  :plural => :directories

      def discover(type)
        type = self.class.plural_types[type] || type
        dir = File.dirname(@manifest_file)
        Dir.glob("#{dir}/**/*").each do |file|
          next if /manifest\.rb/ =~ file
          short_name = file[(dir.length+1)..-1]
          options = {}
          ext = if File.extname(short_name) == ".erb"
            options[:erb] = true
            File.extname(short_name[0..-5])
          else
            File.extname(short_name)
          end[1..-1]
          file_type = self.class.known_extensions[ext]
          file_type = :file if file_type.nil?
          file_type = :directory if File.directory?(file)
          if type == :all || type == file_type
            send(file_type, short_name, options)
          end
        end
      end

      def help(value = nil)
        if value
          @help = value
        else
          @help
        end
      end

      attr_reader :welcome_message_options

      def welcome_message(value = nil, options = {})
        if value
          @welcome_message = value
          @welcome_message_options = options
        else
          @welcome_message
        end
      end

      def welcome_message_options
        @welcome_message_options || {}
      end

      def description(value = nil)
        if value
          @description = value
        else
          @description
        end
      end

      # Enumerates over the manifest files
      def each
        @entries.each {|e| yield e}
      end

      def generate_config?
        @generate_config
      end

      def compile?
        @compile_after_generation
      end

      protected

      def no_configuration_file!
        @generate_config = false
      end

      def skip_compilation!
        @compile_after_generation = false
      end

      def with_manifest(manifest_file)
        @manifest_file = manifest_file
        yield
      ensure
        @manifest_file = nil
      end

      # parses a manifest file which is a ruby script
      # evaluated in a Manifest instance context
      def parse(manifest_file)
        with_manifest(manifest_file) do
          if File.exists?(manifest_file)
            open(manifest_file) do |f| 
              eval(f.read, instance_binding, manifest_file)
            end 
          else
              eval("discover :all", instance_binding, manifest_file)
          end 
        end 
      end 


      def instance_binding
        binding
      end
    end

  end
end


================================================
FILE: cli/lib/compass/installers/manifest_installer.rb
================================================
module Compass
  module Installers

    class ManifestInstaller < Base

      attr_accessor :manifest

      def initialize(template_path, target_path, options = {})
        super
        @manifest = Manifest.new(manifest_file, options) if template_path
      end

      def manifest_file
        @manifest_file ||= File.join(template_path, "manifest.rb")
      end

      # Initializes the project to work with compass
      def init
        dirs = manifest.map do |entry|
          unless entry.type == :directory
            loc = send("install_location_for_#{entry.type}", entry.to, entry.options)
            File.dirname(loc)
          end
        end.compact

        if manifest.has_stylesheet?
          dirs << sass_dir
          dirs << css_dir
        end

        dirs.uniq.sort.each do |dir|
          directory targetize(dir)
        end
      end

      # The default install method. Calls install_<type> methods in the order specified by the manifest.
      def install
        manifest.each do |entry|
          send("install_#{entry.type}", entry.from, entry.to, entry.options)
        end
      end

      def stylesheet_links
        html = "<head>\n"
        manifest.each_stylesheet do |stylesheet|
          # Skip partials.
          next if File.basename(stylesheet.from)[0..0] == "_"
          media = if stylesheet.options[:media]
            %Q{ media="#{stylesheet.options[:media]}"}
          end
          ss_line = %Q{  <link href="#{http_stylesheets_path}/#{stylesheet.to.sub(/\.s[ac]ss$/,'.css')}"#{media} rel="stylesheet" type="text/css" />}
          if stylesheet.options[:condition]
            ss_line = "  <!--[if #{stylesheet.options[:condition]}]>\n    #{ss_line}\n  <![endif]-->"
          end
          html << ss_line + "\n"
        end
        html << "</head>"
      end
    end
  end
end


================================================
FILE: cli/lib/compass/installers/template_context.rb
================================================
module Compass
  module Installers
    class TemplateContext

      def self.ctx(*arguments)
        new(*arguments).send(:get_binding)
      end

      def initialize(template, locals = {})
        @template = template
        @locals = locals
      end

      def http_stylesheets_path
        config.http_stylesheets_path ||
        config.default_for(:http_stylesheets_path) ||
        config.http_root_relative(config.css_dir)
      end

      Compass::Configuration::ATTRIBUTES.each do |attribute|
        unless instance_methods.include?(attribute.to_s)
          define_method attribute do
            config.send(attribute) || config.default_for(attribute)
          end
        end
      end

      def config
        Compass.configuration
      end

      alias configuration config

      protected

      def get_binding
        @locals.each do |k, v|
          eval("#{k} = v")
        end
        binding
      end
    end
  end
end

================================================
FILE: cli/lib/compass/installers.rb
================================================
%w(manifest template_context base manifest_installer bare_installer).each do |f|
  require "compass/installers/#{f}"
end


================================================
FILE: cli/lib/compass/logger.rb
================================================
module Compass

  class Logger

    COLORS = { :clear => 0, :red => 31, :green => 32, :yellow => 33, :blue => 34 }

    ACTION_COLORS = {
      :error     => :red,
      :warning   => :yellow,
      :info      => :green,
      :compile   => :green,
      :overwrite => :yellow,
      :modified  => :yellow,
      :clean     => :yellow,
      :write     => :green,
      :create    => :green,
      :remove    => :yellow,
      :delete    => :yellow,
      :deleted   => :yellow,
      :created   => :yellow,
      :exists    => :green,
      :directory => :green,
      :identical => :green,
      :convert   => :green,
      :unchanged => :yellow
    }

    DEFAULT_ACTIONS = ACTION_COLORS.keys

    ACTION_CAN_BE_QUIET = {
      :error     => false,
      :warning   => true,
      :info      => true,
      :compile   => true,
      :overwrite => true,
      :modified  => true,
      :clean     => true,
      :write     => true,
      :create    => true,
      :remove    => true,
      :delete    => true,
      :deleted   => true,
      :created   => true,
      :exists    => true,
      :directory => true,
      :identical => true,
      :convert   => true,
      :unchanged => true
    }

    attr_accessor :actions, :options, :time

    def initialize(*actions)
      self.options = actions.last.is_a?(Hash) ? actions.pop : {}
      @actions = DEFAULT_ACTIONS.dup
      @actions += actions
    end

    # Record an action that has occurred
    def record(action, *arguments)
      return if options[:quiet] && ACTION_CAN_BE_QUIET[action]
      msg = ""
      if time
        msg << Time.now.strftime("%I:%M:%S.%3N %p")
      end
      msg << color(ACTION_COLORS[action]) if Compass.configuration.color_output
      msg << "#{action_padding(action)}#{action}"
      msg << color(:clear) if Compass.configuration.color_output
      msg << " #{arguments.join(' ')}"
      log msg
    end

    def green
      wrap(:green) { yield }
    end

    def red
      wrap(:red) { yield }
    end

    def yellow
      wrap(:yellow) { yield }
    end

    def wrap(c, reset_to = :clear)
      $stderr.write(color(c))
      $stdout.write(color(c))
      yield
    ensure
      $stderr.write(color(reset_to))
      $stdout.write(color(reset_to))
      $stdout.flush
    end

    def color(c)
      if Compass.configuration.color_output && c && COLORS.has_key?(c.to_sym)
        if defined?($boring) && $boring
          ""
        else
          "\e[#{COLORS[c.to_sym]}m"
        end
      else
        ""
      end
    end

    # Emit a log message without a trailing newline
    def emit(msg)
      print msg
      $stdout.flush
    end

    # Emit a log message with a trailing newline
    def log(msg)
      puts msg
      $stdout.flush
    end

    # add padding to the left of an action that was performed.
    def action_padding(action)
      ' ' * [(max_action_length - action.to_s.length), 0].max
    end

    # the maximum length of all the actions known to the logger.
    def max_action_length
      @max_action_length ||= actions.inject(0){|memo, a| [memo, a.to_s.length].max}
    end
  end

  class NullLogger < Logger
    def record(*args)
    end

    def log(msg)
    end

    def emit(msg)
    end
  end
end


================================================
FILE: cli/lib/compass/quick_cache.rb
================================================
module QuickCache

  # cache a value in memory for just a few seconds
  # This can speed up reads of values that change relatively infrequently
  # but might be read many times in a short burst of reads.
  def quick_cache(key, ttl = 1)
    @quick_cache ||= {}
    if @quick_cache[key] && @quick_cache[key].first > Time.now - ttl
      @quick_cache[key].last
    else
      (@quick_cache[key] = [Time.now, yield]).last
    end
  end

end


================================================
FILE: cli/lib/compass/rails.rb
================================================
# Rails requires compass by requiring this file.
require 'compass'


================================================
FILE: cli/lib/compass/sass_compiler.rb
================================================
require 'sass/plugin'

class Compass::SassCompiler

  include Compass::Actions

  attr_writer :logger
  attr_reader :quiet
  attr_reader :error_count
  attr_accessor :config
  attr_accessor :display_compilation_times
  attr_accessor :working_path
  attr_accessor :only_sass_files

  def initialize(options = {}, config = Compass.configuration)
    options = options.dup
    self.config = config
    self.display_compilation_times = options.delete(:time)
    self.working_path = options.delete(:working_path) || Dir.pwd
    self.only_sass_files = options.delete(:only_sass_files) || []
    @quiet = options[:quiet]
    plugin_options = config.to_sass_plugin_options.merge(options)
    if only_sass_files.any?
      plugin_options[:template_location] = []
      plugin_options[:load_paths] = config.sass_load_paths
    end
    plugin_options[:always_update] = true if options.delete(:force)
    plugin_options[:compass] ||= {}
    plugin_options[:compass][:logger] = logger
    @compiler = Sass::Plugin::Compiler.new(plugin_options)
    @start_times = {}
    @error_count = 0

    public_methods(true).grep(/^when_/).each do |callback|
      @compiler.send(callback.to_s.sub(/^when_/, 'on_')) {|*args| send(callback, *args) }
    end
  end

  def compile!
    @compiler.update_stylesheets(individual_files)
  end

  def watch!(options = {}, &block)
    skip_initial_update = options.fetch(:skip_initial_update, false)
    begin
      @compiler.watch(individual_files, options.merge(:skip_initial_update => skip_initial_update), &block)
    rescue Sass::SyntaxError => e
      skip_initial_update = true
      retry
    end
  end

  def individual_files
    only_sass_files.map {|sass_file| [sass_file, corresponding_css_file(sass_file)]}
  end

  def clean!
    @compiler.clean(individual_files)
  end

  def file_list
    @compiler.file_list(individual_files)
  end

  def when_updating_stylesheets(individual_files)
    @start_times = {}
    @error_count = 0
  end

  def when_compilation_starting(sass_file, css, sourcemap)
    @start_times[sass_file] = Time.now
  end

  def when_template_created(sass_file)
    logger.record :created, relativize(sass_file)
  end

  def when_template_deleted(sass_file)
    logger.record :deleted, relativize(sass_file)
  end

  def when_template_modified(sass_file)
    logger.record :modified, relativize(sass_file)
  end

  def when_updated_stylesheet(sass_file, css, sourcemap)
    if css && display_compilation_times && @start_times[sass_file]
      duration = ((Time.now - @start_times[sass_file]) * 1000).round / 1000.0
      logger.record :write, "#{relativize(css)} (#{duration}s)"
    else
      logger.record :write, relativize(css) if css
    end
    config.run_stylesheet_saved(css) if css

    logger.record :write, relativize(sourcemap) if sourcemap
    config.run_sourcemap_saved(sourcemap) if sourcemap
  end

  def when_creating_directory(dirname)
    logger.record :directory, relativize(dirname)
  end

  def when_deleting_css(filename)
    logger.record :delete, relativize(filename)
    config.run_stylesheet_removed(filename) if filename
  end

  def when_deleting_sourcemap(filename)
    logger.record :delete, relativize(filename)
    config.run_sourcemap_removed(filename) if filename
  end

  def when_compilation_error(error, sass_file, css_file, sourcemap_file)
    @error_count += 1
    if error.respond_to?(:sass_filename)
      error_filename = error.sass_filename || sass_file
      if relativize(error_filename) == relativize(sass_file)
        logger.record :error, "#{relativize(sass_file)} (Line #{error.sass_line}: #{error.message})"
      else
        logger.record :error, "#{relativize(sass_file)} (Line #{error.sass_line} of #{relativize(error_filename)}: #{error.message})"
      end
    else
      logger.record :error, "#{relativize(sass_file)} (#{error.backtrace.first}: #{error.message})"
    end
    config.run_stylesheet_error(sass_file, error.message)
  end

  def logger
    @logger ||= Compass::Logger.new(:quiet => quiet)
  end

  def corresponding_css_file(sass_file)
    "#{config.css_path}/#{stylesheet_name(sass_file)}.css"
  end

  def stylesheet_name(sass_file)
    if sass_file.index(config.sass_path) == 0
      sass_file[(config.sass_path.length + 1)..-6].sub(/\.css$/,'')
    else
      raise Compass::Error, "Individual stylesheets must be in the sass directory."
    end
  end

  def sass_files(options = {})
    @compiler.template_location_array.map do |(sass_dir, css_dir)|
      glob = options[:include_partials] ?
               File.join("**","*.s[ac]ss*") :
               File.join("**","[^_]*.s[ac]ss*")
      Dir.glob(File.join(sass_dir, glob))
    end.flatten
  end
end


================================================
FILE: cli/lib/compass/sass_extensions/functions/sprites.rb
================================================
module Compass::SassExtensions::Functions::Sprites

  extend Compass::SassExtensions::Functions::SassDeclarationHelper
  extend Sass::Script::Value::Helpers
  include Sass::Script::Value::Helpers

  ZERO = number(0)
  BOOL_FALSE = bool(false)
  VALID_SELECTORS = %w(hover active target focus)

  # 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.
  module VariableReader
    def get_var(variable_name)
      self[variable_name.to_s.gsub(/-/,"_")]
    end
  end

  # Returns the width of the generated sprite map
  def sprite_width(map, sprite=nil)
    verify_map(map, 'sprite-width')
    file = get_sprite_file(map, sprite)
    width, _ = image_dimensions(file)
    number(width, "px")
  end
  declare :sprite_width, [:map]
  declare :sprite_width, [:map, :sprite]
  
  # Returns the height of the generated sprite map
  def sprite_height(map, sprite=nil)
    verify_map(map, 'sprite-height')
    file = get_sprite_file(map, sprite)
    _, height = image_dimensions(file)
    number(height, "px")
  end
  declare :sprite_height, [:map]
  declare :sprite_height, [:map, :sprite]

  # Returns a list of all sprite names
  def sprite_names(map)
    verify_map(map, 'sprite-names')
    list(map.sprite_names.map { |f| identifier(f) }, :comma)
  end
  declare :sprite_names, [:map]

  # Returns the system path of the sprite file
  def sprite_path(map)
    verify_map(map, 'sprite-path')
    identifier(map.filename)
  end
  declare :sprite_path, [:map]

  # Returns the sprite file as an inline image
  #    @include "icon/*.png";
  #     #{$icon-sprite-base-class} {
  #       background-image: inline-sprite($icon-sprites);
  #      }
  def inline_sprite(map)
    verify_map(map, "sprite-url")
    map.generate
    path = map.filename
    inline_image_string(data(path), compute_mime_type(path))
  end
  declare :inline_sprite, [:map]

  # Creates a Compass::SassExtensions::Sprites::SpriteMap 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");
  #     background: sprite-url($icons) no-repeat;
  #     background: $icons no-repeat;
  #
  # The sprite map object will generate the sprite map image, if necessary,
  # the first time it is converted to a url. Simply constructing it has no side-effects.
  def sprite_map(glob, kwargs = {})
    kwargs.extend VariableReader
    Compass::SassExtensions::Sprites::SpriteMap.from_uri(glob, self, kwargs)
  end
  declare :sprite_map, [:glob], :var_kwargs => true

  # Returns the image and background position for use in a single shorthand property:
  #
  #     $icons: sprite-map("icons/*.png"); // contains icons/new.png among others.
  #     background: sprite($icons, new) no-repeat;
  #
  # Becomes:
  #
  #     background: url('/images/icons.png?12345678') 0 -24px no-repeat;
  #
  # If the `use_percentages` parameter is passed as true, percentages will be
  # used to position the sprite. Example output:
  #     
  #     background: url('/images/icons.png?12345678') 0 50% no-repeat;
  #
  def sprite(map, sprite, offset_x = ZERO, offset_y = ZERO, use_percentages = BOOL_FALSE)
    sprite = convert_sprite_name(sprite)
    verify_map(map)
    verify_sprite(sprite)
    url = sprite_url(map)
    position = sprite_position(map, sprite, offset_x, offset_y, use_percentages)
    list([url] + position.value, :space)
  end
  declare :sprite, [:map, :sprite]
  declare :sprite, [:map, :sprite, :offset_x]
  declare :sprite, [:map, :sprite, :offset_x, :offset_y]
  declare :sprite, [:map, :sprite, :offset_x, :offset_y, :use_percentages]

  # Returns the name of a sprite map
  # The name is derived from the folder than contains the sprites.
  def sprite_map_name(map)
    verify_map(map, "sprite-map-name")
    identifier(map.name)
  end
  declare :sprite_name, [:sprite]

  # Returns the path to the original image file for the sprite with the given name
  def sprite_file(map, sprite)
    sprite = convert_sprite_name(sprite)
    verify_map(map, "sprite")
    verify_sprite(sprite)
    if image = map.image_for(sprite.value)
      image_path = Pathname.new(File.expand_path(image.file))
      images_path = Pathname.new(File.expand_path(Compass.configuration.images_path))
      quoted_string(image_path.relative_path_from(images_path).to_s)
    else
      missing_image!(map, sprite)
    end
  end
  declare :sprite_file, [:map, :sprite]

  # Returns boolean if sprite has a parent
  def sprite_does_not_have_parent(map, sprite)
    sprite = convert_sprite_name(sprite)
    verify_map map
    verify_sprite sprite
    bool(map.image_for(sprite.value).parent.nil?)
  end
  declare :sprite_does_not_have_parent, [:map, :sprite]

  #return the name of the selector file
  def sprite_selector_file(map, sprite, selector)
    sprite = convert_sprite_name(sprite)
    image = map.image_for(sprite)
    if map.send(:"has_#{selector.value}?", sprite.value)
      return identifier(image.send(selector.value).name)
    end

    raise Sass::SyntaxError, "Sprite: #{sprite.value} does not have a #{selector} state"
  end

  declare :sprite_selector_file, [:map, :sprite, :selector]

  # Returns boolean if sprite has the selector
  def sprite_has_selector(map, sprite, selector)
    sprite = convert_sprite_name(sprite)
    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
    bool map.send(:"has_#{selector.value}?", sprite.value)
  end
  
  declare :sprite_has_selector, [:map, :sprite, :selector]

  # Determines if the CSS selector is valid
  IDENTIFIER_RX = /\A#{Sass::SCSS::RX::IDENT}\Z/
  def sprite_has_valid_selector(selector)
    unless selector.value =~ IDENTIFIER_RX
      raise Sass::SyntaxError, "#{selector} must be a legal css identifier"
    end
    bool true
  end

  # Returns a url to the sprite image.
  def sprite_url(map)
    verify_map(map, "sprite-url")
    map.generate
    generated_image_url(identifier("#{map.path}-s#{map.uniqueness_hash}.png"))
  end
  declare :sprite_url, [:map]

  # Returns the position for the original image in the sprite.
  # This is suitable for use as a value to background-position:
  #
  #     $icons: sprite-map("icons/*.png");
  #     background-position: sprite-position($icons, new);
  #
  # Might generate something like:
  #
  #     background-position: 0 -34px;
  #
  # You can adjust the background relative to this position by passing values for
  # `$offset-x` and `$offset-y`:
  #
  #     $icons: sprite-map("icons/*.png");
  #     background-position: sprite-position($icons, new, 3px, -2px);
  #
  # Would change the above output to:
  #
  #     background-position: 3px -36px;
  #
  # If you set the `use_percentages` parameter to true, the position will be
  # expressed in percentages. An example:
  #
  #     background-position: sprite-position($icons, new, 0, 0, true);
  #
  # Would result in something like this:
  #
  #     background-position: 0 42%;
  # 
  def sprite_position(map, sprite = nil, offset_x = ZERO, offset_y = ZERO, use_percentages = BOOL_FALSE)
    assert_type offset_x, :Number
    assert_type offset_y, :Number
    sprite = convert_sprite_name(sprite)
    verify_map(map, "sprite-position")
    unless sprite.is_a?(Sass::Script::Value::String) || sprite.is_a?(Sass::Script::Value::Number)
      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
    image = map.image_for(sprite.value)
    unless image
      missing_image!(map, sprite)
    end
    if use_percentages.value
      xdivis = map.width - image.width;
      x = (offset_x.value + image.left.to_f) / (xdivis.nonzero? || 1) * 100
      x = x == 0 ? number(x) : number(x, "%")
      ydivis = map.height - image.height;
      y = (offset_y.value + image.top.to_f) / (ydivis.nonzero? || 1) * 100
      y = y == 0 ? number(y) : number(y, "%")
    else
      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 = x == 0 ? number(x) : number(x, "px")
      end
      y = offset_y.value - image.top
      y = y == 0 ? number(y) : number(y, "px")
    end
    list(x, y, :space)
  end
  declare :sprite_position, [:map]
  declare :sprite_position, [:map, :sprite]
  declare :sprite_position, [:map, :sprite, :offset_x]
  declare :sprite_position, [:map, :sprite, :offset_x, :offset_y]
  declare :sprite_position, [:map, :sprite, :offset_x, :offset_y, :use_percentages]

protected

  def get_sprite_file(map, sprite=nil)
    if sprite
      map.image_for(sprite).file
    else
      map.filename
    end
  end

  def reversed_color_names
    if Sass::Script::Value::Color.const_defined?(:HTML4_COLORS_REVERSE)
      Sass::Script::Value::Color::HTML4_COLORS_REVERSE
    else
      Sass::Script::Value::Color::COLOR_NAMES_REVERSE
    end
  end

  def convert_sprite_name(sprite)
    case sprite
      when Sass::Script::Value::Color
        rgb = if reversed_color_names.keys.first.size == 3
                sprite.rgb
              else
                # Sass 3.3 includes the alpha channel
                sprite.rgba
              end
        identifier(reversed_color_names[rgb])
      when Sass::Script::Value::Bool
        identifier(sprite.to_s)
      else
        sprite
    end
  end

  def verify_map(map, error = "sprite")
    unless map.is_a?(Compass::SassExtensions::Sprites::SpriteMap)
      missing_sprite!(error)
    end
  end

  def verify_sprite(sprite)
    unless sprite.is_a?(Sass::Script::Value::String) || sprite.is_a?(Sass::Script::Value::Number)
      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

  def missing_sprite!(function_name)
    raise Sass::SyntaxError, %Q(The first argument to #{function_name}() must be a sprite map. See http://beta.compass-style.org/help/tutorials/spriting/ for more information.)
  end

end


================================================
FILE: cli/lib/compass/sass_extensions/functions.rb
================================================
module Compass::SassExtensions::Functions
  module SassDeclarationHelper
    def declare(*args)
      Sass::Script::Functions.declare(*args)
    end
  end
end

%w(sprites).each do |func|
  require "compass/sass_extensions/functions/#{func}"
end

module Sass::Script::Functions
  include Compass::SassExtensions::Functions::Sprites
end


================================================
FILE: cli/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb
================================================
begin
  require 'oily_png'
rescue LoadError
  require 'chunky_png'
end

module Compass
  module SassExtensions
    module Sprites
      class ChunkyPngEngine < Compass::SassExtensions::Sprites::Engine

        def construct_sprite
          @canvas = ChunkyPNG::Image.new(width, height, ChunkyPNG::Color::TRANSPARENT)
          images.each do |image|
            input_png = begin
              ChunkyPNG::Image.from_file(image.file)
            rescue ChunkyPNG::SignatureMismatch
              raise Compass::SpriteException, "You have provided a file that does not have a PNG signature. Only PNG files are supported by the default sprite engine"
            end
            canvas.replace! input_png, image.left, image.top
          end
        end    
        
        def save(filename)
          if canvas.nil?
            construct_sprite
          end
          
          canvas.save(filename,  Compass.configuration.chunky_png_options)
        end
        
      end
    end
  end
end  

================================================
FILE: cli/lib/compass/sass_extensions/sprites/engines.rb
================================================
module Compass
  module SassExtensions
    module Sprites
      class Engine
        attr_accessor :width, :height, :images, :canvas
        def initialize(width, height, images)
          @width, @height, @images = width, height, images
          @canvas = nil
        end
        
        def construct_sprite
          raise ::Compass::Error, "You must implement construct_sprite"
        end
        
        def save(filename)
          raise ::Compass::Error, "You must implement save(filename)"
        end
        
      end
    end
  end
end


require 'compass/sass_extensions/sprites/engines/chunky_png_engine'


================================================
FILE: cli/lib/compass/sass_extensions/sprites/image.rb
================================================
module Compass
  module SassExtensions
    module Sprites
      class Image
        include Sass::Script::Value::Helpers
        ACTIVE = %r{[_-]active$}
        TARGET = %r{[_-]target$}
        HOVER = %r{[_-]hover$}
        FOCUS = %r{[_-]focus$}
        PARENT = %r{(.+)[-_](.+)$}

        REPEAT_X = 'repeat-x'
        REPEAT_Y = 'repeat-y'
        NO_REPEAT = 'no-repeat'

        VALID_REPEATS = [REPEAT_Y, REPEAT_X, NO_REPEAT]

        attr_reader :relative_file, :options, :base, :name
        attr_accessor :top, :left

        def initialize(base, relative_file, options)
          @base, @relative_file, @options = base, relative_file, options
          @left = @top = 0
          @name = File.basename(relative_file, '.png')
        end

        # The Full path to the image
        def file
          @file ||= find_file
        end

        def find_file
          Compass.configuration.sprite_load_path.compact.each do |path|
            f = File.join(path, relative_file)
            if File.exists?(f)
              return f
            end
          end
        end

        # Width of the image
        def width
          dimensions.first
        end

        def size
          @size ||= File.size(file)
        end

        # Height of the image
        def height
          dimensions.last
        end

        def get_var_file(var)
          options.get_var "#{base.name}_#{name}_#{var}"
        end

        # Value of <tt> $#{name}-repeat </tt> or <tt> $repeat </tt>
        def repeat
          @repeat ||= begin
            rep = (get_var_file("repeat") || options.get_var("repeat") || identifier(NO_REPEAT)).value
            unless VALID_REPEATS.include? rep
              raise SpriteException, "Invalid option for repeat \"#{rep}\" - valid options are #{VALID_REPEATS.join(', ')}"
            end

            rep
          end
        end

        def repeat_x?
          repeat == REPEAT_X
        end

        def repeat_y?
          repeat == REPEAT_Y
        end

        def no_repeat?
          repeat == NO_REPEAT
        end

        # Value of <tt> $#{name}-position </tt> or <tt> $position </tt> defaults to <tt>0px</tt>
        def position
          @position ||= get_var_file("position") || options.get_var("position") || number(0, "px")
        end

        # Offset within the sprite
        def offset
          @offset ||= (position.unitless? || position.unit_str == "px") ? position.value : 0
        end

        # Spacing between this image and the next
        def spacing
          @spacing ||= (get_var_file("spacing") || options.get_var("spacing") || number(0, 'px')).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

        # Is hover selector
        def hover?
          name =~ HOVER
        end

        # Hover selector Image object if exsists
        def hover
          base.get_magic_selector_image(name, 'hover')
        end

        # Is target selector
        def target?
          name =~ TARGET
        end

        # Target selector Image object if exsists
        def target
          base.get_magic_selector_image(name, 'target')
        end

        # Is active selector
        def active?
          name =~ ACTIVE
        end

        # Active selector Image object if exsists
        def active
          base.get_magic_selector_image(name, 'active')
        end

        # Is active selector
        def focus?
          name =~ FOCUS
        end

        # Active selector Image object if exsists
        def focus
          base.get_magic_se
Download .txt
gitextract_y675jjmd/

├── .gitignore
├── .travis.yml
├── CONTRIBUTING.md
├── Guardfile
├── LICENSE.markdown
├── README.markdown
├── Rakefile
├── TODO.md
├── cli/
│   ├── .gitignore
│   ├── Gemfile
│   ├── Rakefile
│   ├── VERSION
│   ├── VERSION_NAME
│   ├── bin/
│   │   └── compass
│   ├── compass.gemspec
│   ├── features/
│   │   ├── command_line.feature
│   │   ├── extensions.feature
│   │   └── step_definitions/
│   │       ├── command_line_steps.rb
│   │       └── extension_steps.rb
│   ├── gemfiles/
│   │   ├── listen_2.gemfile
│   │   ├── sass_3_3.gemfile
│   │   └── sass_local.gemfile
│   ├── lib/
│   │   ├── compass/
│   │   │   ├── actions.rb
│   │   │   ├── app_integration/
│   │   │   │   ├── stand_alone/
│   │   │   │   │   ├── configuration_defaults.rb
│   │   │   │   │   └── installer.rb
│   │   │   │   └── stand_alone.rb
│   │   │   ├── app_integration.rb
│   │   │   ├── commands/
│   │   │   │   ├── base.rb
│   │   │   │   ├── clean_project.rb
│   │   │   │   ├── create_project.rb
│   │   │   │   ├── default.rb
│   │   │   │   ├── extension_command.rb
│   │   │   │   ├── help.rb
│   │   │   │   ├── imports.rb
│   │   │   │   ├── installer_command.rb
│   │   │   │   ├── interactive.rb
│   │   │   │   ├── list_frameworks.rb
│   │   │   │   ├── print_version.rb
│   │   │   │   ├── project_base.rb
│   │   │   │   ├── project_stats.rb
│   │   │   │   ├── project_structure.rb
│   │   │   │   ├── registry.rb
│   │   │   │   ├── sprite.rb
│   │   │   │   ├── stamp_pattern.rb
│   │   │   │   ├── unpack_extension.rb
│   │   │   │   ├── update_project.rb
│   │   │   │   ├── validate_project.rb
│   │   │   │   ├── watch_project.rb
│   │   │   │   └── write_configuration.rb
│   │   │   ├── commands.rb
│   │   │   ├── compiler.rb
│   │   │   ├── configuration/
│   │   │   │   ├── comments.rb
│   │   │   │   ├── file_data.rb
│   │   │   │   ├── helpers.rb
│   │   │   │   └── serialization.rb
│   │   │   ├── dependencies.rb
│   │   │   ├── deprecation.rb
│   │   │   ├── errors.rb
│   │   │   ├── exec/
│   │   │   │   ├── command_option_parser.rb
│   │   │   │   ├── global_options_parser.rb
│   │   │   │   ├── helpers.rb
│   │   │   │   ├── project_options_parser.rb
│   │   │   │   └── sub_command_ui.rb
│   │   │   ├── exec.rb
│   │   │   ├── generated_version.rb
│   │   │   ├── installers/
│   │   │   │   ├── bare_installer.rb
│   │   │   │   ├── base.rb
│   │   │   │   ├── manifest.rb
│   │   │   │   ├── manifest_installer.rb
│   │   │   │   └── template_context.rb
│   │   │   ├── installers.rb
│   │   │   ├── logger.rb
│   │   │   ├── quick_cache.rb
│   │   │   ├── rails.rb
│   │   │   ├── sass_compiler.rb
│   │   │   ├── sass_extensions/
│   │   │   │   ├── functions/
│   │   │   │   │   └── sprites.rb
│   │   │   │   ├── functions.rb
│   │   │   │   ├── sprites/
│   │   │   │   │   ├── engines/
│   │   │   │   │   │   └── chunky_png_engine.rb
│   │   │   │   │   ├── engines.rb
│   │   │   │   │   ├── image.rb
│   │   │   │   │   ├── image_methods.rb
│   │   │   │   │   ├── image_row.rb
│   │   │   │   │   ├── images.rb
│   │   │   │   │   ├── layout/
│   │   │   │   │   │   ├── diagonal.rb
│   │   │   │   │   │   ├── horizontal.rb
│   │   │   │   │   │   ├── smart.rb
│   │   │   │   │   │   └── vertical.rb
│   │   │   │   │   ├── layout.rb
│   │   │   │   │   ├── layout_methods.rb
│   │   │   │   │   ├── row_fitter.rb
│   │   │   │   │   ├── sprite_map.rb
│   │   │   │   │   └── sprite_methods.rb
│   │   │   │   └── sprites.rb
│   │   │   ├── sass_extensions.rb
│   │   │   ├── sprite_importer/
│   │   │   │   ├── binding.rb
│   │   │   │   └── content.erb
│   │   │   ├── sprite_importer.rb
│   │   │   ├── stats.rb
│   │   │   ├── test_case.rb
│   │   │   ├── validator.rb
│   │   │   └── version.rb
│   │   └── compass.rb
│   └── test/
│       ├── fixtures/
│       │   ├── extensions/
│       │   │   └── only_stylesheets/
│       │   │       ├── compass_init.rb
│       │   │       └── scss/
│       │   │           └── only_stylesheets/
│       │   │               └── foo.scss
│       │   ├── fonts/
│       │   │   └── bgrove.base64.txt
│       │   └── stylesheets/
│       │       ├── busted_font_urls/
│       │       │   ├── config.rb
│       │       │   ├── css/
│       │       │   │   └── screen.css
│       │       │   └── sass/
│       │       │       └── screen.sass
│       │       ├── busted_image_urls/
│       │       │   ├── config.rb
│       │       │   ├── css/
│       │       │   │   └── screen.css
│       │       │   └── sass/
│       │       │       └── screen.sass
│       │       ├── compass/
│       │       │   ├── config.rb
│       │       │   ├── css/
│       │       │   │   ├── animation-with-legacy-ie.css
│       │       │   │   ├── animation.css
│       │       │   │   ├── appearance.css
│       │       │   │   ├── background-clip.css
│       │       │   │   ├── background-origin.css
│       │       │   │   ├── background-size.css
│       │       │   │   ├── border_radius.css
│       │       │   │   ├── box-sizing.css
│       │       │   │   ├── box.css
│       │       │   │   ├── box_shadow.css
│       │       │   │   ├── brightness.css
│       │       │   │   ├── browser-support.css
│       │       │   │   ├── color.css
│       │       │   │   ├── columns.css
│       │       │   │   ├── filters.css
│       │       │   │   ├── flexbox.css
│       │       │   │   ├── fonts.css
│       │       │   │   ├── force-wrap.css
│       │       │   │   ├── gradients.css
│       │       │   │   ├── grid_background.css
│       │       │   │   ├── hyphenation.css
│       │       │   │   ├── image_size.css
│       │       │   │   ├── images.css
│       │       │   │   ├── layout.css
│       │       │   │   ├── legacy_clearfix.css
│       │       │   │   ├── lists.css
│       │       │   │   ├── opacity.css
│       │       │   │   ├── print.css
│       │       │   │   ├── regions.css
│       │       │   │   ├── replacement.css
│       │       │   │   ├── reset.css
│       │       │   │   ├── selection.css
│       │       │   │   ├── sprites_with_explicit_separator.css
│       │       │   │   ├── stretching.css
│       │       │   │   ├── support.css
│       │       │   │   ├── text_shadow.css
│       │       │   │   ├── transform.css
│       │       │   │   ├── transition.css
│       │       │   │   ├── typography/
│       │       │   │   │   └── links/
│       │       │   │   │       └── hover-link.css
│       │       │   │   ├── units.css
│       │       │   │   ├── user-interface.css
│       │       │   │   ├── utilities.css
│       │       │   │   ├── vertical_rhythm.css
│       │       │   │   ├── vertical_rhythm_with_ems.css
│       │       │   │   ├── vertical_rhythm_with_px.css
│       │       │   │   └── vertical_rhythm_with_rems.css
│       │       │   └── sass/
│       │       │       ├── animation-with-legacy-ie.scss
│       │       │       ├── animation.scss
│       │       │       ├── appearance.scss
│       │       │       ├── background-clip.scss
│       │       │       ├── background-origin.scss
│       │       │       ├── background-size.scss
│       │       │       ├── border_radius.scss
│       │       │       ├── box-sizing.scss
│       │       │       ├── box.sass
│       │       │       ├── box_shadow.scss
│       │       │       ├── brightness.scss
│       │       │       ├── browser-support.scss
│       │       │       ├── color.scss
│       │       │       ├── columns.scss
│       │       │       ├── filters.scss
│       │       │       ├── flexbox.scss
│       │       │       ├── fonts.sass
│       │       │       ├── force-wrap.scss
│       │       │       ├── gradients.sass
│       │       │       ├── grid_background.scss
│       │       │       ├── hyphenation.scss
│       │       │       ├── image_size.sass
│       │       │       ├── images.scss
│       │       │       ├── layout.sass
│       │       │       ├── legacy_clearfix.scss
│       │       │       ├── lists.scss
│       │       │       ├── opacity.scss
│       │       │       ├── print.sass
│       │       │       ├── regions.scss
│       │       │       ├── replacement.scss
│       │       │       ├── reset.sass
│       │       │       ├── selection.scss
│       │       │       ├── sprites_with_explicit_separator.scss
│       │       │       ├── stretching.sass
│       │       │       ├── support.scss
│       │       │       ├── text_shadow.scss
│       │       │       ├── transform.scss
│       │       │       ├── transition.scss
│       │       │       ├── typography/
│       │       │       │   └── links/
│       │       │       │       └── hover-link.scss
│       │       │       ├── units.scss
│       │       │       ├── user-interface.scss
│       │       │       ├── utilities.scss
│       │       │       ├── vertical_rhythm.scss
│       │       │       ├── vertical_rhythm_with_ems.scss
│       │       │       ├── vertical_rhythm_with_px.scss
│       │       │       └── vertical_rhythm_with_rems.scss
│       │       ├── envtest/
│       │       │   ├── config.rb
│       │       │   ├── css/
│       │       │   │   └── env.css
│       │       │   └── sass/
│       │       │       └── env.scss
│       │       ├── error/
│       │       │   ├── config.rb
│       │       │   └── sass/
│       │       │       └── screen.sass
│       │       ├── image_urls/
│       │       │   ├── config.rb
│       │       │   ├── css/
│       │       │   │   └── screen.css
│       │       │   └── sass/
│       │       │       └── screen.sass
│       │       ├── relative/
│       │       │   ├── config.rb
│       │       │   ├── css/
│       │       │   │   ├── ie.css
│       │       │   │   ├── print.css
│       │       │   │   └── screen.css
│       │       │   └── sass/
│       │       │       ├── ie.sass
│       │       │       ├── print.sass
│       │       │       └── screen.sass
│       │       ├── sourcemaps/
│       │       │   ├── config.rb
│       │       │   ├── css/
│       │       │   │   ├── another_simple.css
│       │       │   │   ├── simple.css
│       │       │   │   └── with_libraries.css
│       │       │   └── sass/
│       │       │       ├── another_simple.scss
│       │       │       ├── simple.sass
│       │       │       └── with_libraries.scss
│       │       ├── uses_only_stylesheets_ext/
│       │       │   ├── config.rb
│       │       │   ├── sass/
│       │       │   │   ├── ie.scss
│       │       │   │   ├── print.scss
│       │       │   │   └── screen.scss
│       │       │   └── stylesheets/
│       │       │       ├── ie.css
│       │       │       ├── print.css
│       │       │       └── screen.css
│       │       ├── valid/
│       │       │   ├── config.rb
│       │       │   └── sass/
│       │       │       ├── another_simple.scss
│       │       │       └── simple.sass
│       │       └── with_sass_globbing/
│       │           ├── config.rb
│       │           ├── css/
│       │           │   └── screen.css
│       │           └── sass/
│       │               ├── partials/
│       │               │   ├── _1.scss
│       │               │   ├── _2.scss
│       │               │   └── _3.scss
│       │               └── screen.scss
│       ├── helpers/
│       │   ├── command_line.rb
│       │   ├── diff.rb
│       │   ├── io.rb
│       │   ├── rails.rb
│       │   └── test_case.rb
│       ├── integrations/
│       │   ├── compass_test.rb
│       │   └── sprites_test.rb
│       ├── test_helper.rb
│       └── units/
│           ├── actions_test.rb
│           ├── caniuse_test.rb
│           ├── command_line_test.rb
│           ├── compass_util_test.rb
│           ├── compiler_test.rb
│           ├── configuration_test.rb
│           ├── regressions_test.rb
│           ├── sass_extensions_test.rb
│           ├── sass_extenstions/
│           │   └── gradients_test.rb
│           └── sprites/
│               ├── engine_test.rb
│               ├── image_row_test.rb
│               ├── image_test.rb
│               ├── images_test.rb
│               ├── importer_test.rb
│               ├── layout_test.rb
│               ├── row_fitter_test.rb
│               ├── sprite_command_test.rb
│               └── sprite_map_test.rb
├── compass-style.org/
│   ├── .compass/
│   │   └── config.rb
│   ├── .gitignore
│   ├── .livereload
│   ├── Gemfile
│   ├── Procfile
│   ├── README.markdown
│   ├── Rakefile
│   ├── Rules
│   ├── assets/
│   │   ├── fonts/
│   │   │   └── examples/
│   │   │       └── bgrove.otf
│   │   ├── htaccess
│   │   └── javascripts/
│   │       ├── fixups.js
│   │       ├── install.js
│   │       ├── jquery.cookie.js
│   │       ├── jquery.url.packed.js
│   │       ├── placeholder.js
│   │       ├── shAutoloader.js
│   │       ├── shBrushCss.js
│   │       ├── shBrushPlain.js
│   │       ├── shBrushSass.js
│   │       ├── shBrushScss.js
│   │       ├── shBrushXml.js
│   │       ├── shCore.js
│   │       └── site.js
│   ├── authors.yml
│   ├── config.yaml
│   ├── content/
│   │   ├── .livereload
│   │   ├── CHANGELOG.markdown
│   │   ├── blog/
│   │   │   ├── archive.haml
│   │   │   └── atom.haml
│   │   ├── blog.haml
│   │   ├── copyright.markdown
│   │   ├── examples/
│   │   │   ├── blueprint/
│   │   │   │   └── grid/
│   │   │   │       ├── pull/
│   │   │   │       │   └── stylesheet.scss
│   │   │   │       └── two_cols/
│   │   │   │           └── stylesheet.scss
│   │   │   ├── compass/
│   │   │   │   ├── css3/
│   │   │   │   │   ├── background-clip/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── background-clip.haml
│   │   │   │   │   ├── background-origin/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── background-origin.haml
│   │   │   │   │   ├── background-size/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── background-size.haml
│   │   │   │   │   ├── border_radius/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── border_radius.haml
│   │   │   │   │   ├── box_shadow/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── box_shadow.haml
│   │   │   │   │   ├── box_sizing/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── box_sizing.haml
│   │   │   │   │   ├── columns/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── columns.haml
│   │   │   │   │   ├── flexbox/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── flexbox.haml
│   │   │   │   │   ├── font-face/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── font-face.haml
│   │   │   │   │   ├── gradient/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── gradient.haml
│   │   │   │   │   ├── inline_block/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── inline_block.haml
│   │   │   │   │   ├── input-placeholder/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── input-placeholder.haml
│   │   │   │   │   ├── opacity/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── opacity.haml
│   │   │   │   │   ├── regions/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── regions.haml
│   │   │   │   │   ├── text_shadow/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── text_shadow.haml
│   │   │   │   │   ├── transition/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   └── transition.haml
│   │   │   │   ├── helpers/
│   │   │   │   │   ├── elements-of-type/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── elements-of-type.haml
│   │   │   │   │   ├── enumerate/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── enumerate.haml
│   │   │   │   │   ├── using-extend-in-place-of-enumerate/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   └── using-extend-in-place-of-enumerate.haml
│   │   │   │   ├── layout/
│   │   │   │   │   ├── sticky-footer/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── sticky-footer.haml
│   │   │   │   │   ├── stretching/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   └── stretching.haml
│   │   │   │   ├── tables/
│   │   │   │   │   ├── all/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── all.haml
│   │   │   │   │   ├── borders/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── borders.haml
│   │   │   │   │   ├── scaffolding/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   ├── scaffolding.haml
│   │   │   │   │   ├── striping/
│   │   │   │   │   │   ├── markup.haml
│   │   │   │   │   │   └── stylesheet.scss
│   │   │   │   │   └── striping.haml
│   │   │   │   └── utilities/
│   │   │   │       ├── contrast/
│   │   │   │       │   ├── markup.haml
│   │   │   │       │   └── stylesheet.scss
│   │   │   │       └── contrast.haml
│   │   │   └── index.haml
│   │   ├── frameworks.haml
│   │   ├── get-involved/
│   │   │   └── index.haml
│   │   ├── help/
│   │   │   ├── documentation/
│   │   │   │   ├── command-line.markdown
│   │   │   │   ├── configuration-reference.markdown
│   │   │   │   ├── sass-based-configuration-options.markdown
│   │   │   │   └── tuning-vendor-prefixes.markdown
│   │   │   ├── documentation.haml
│   │   │   ├── index.haml
│   │   │   ├── tutorials/
│   │   │   │   ├── best_practices.markdown
│   │   │   │   ├── configurable-variables.haml
│   │   │   │   ├── contributing.markdown
│   │   │   │   ├── extending.markdown
│   │   │   │   ├── extensions.markdown
│   │   │   │   ├── integration.markdown
│   │   │   │   ├── production-css.markdown
│   │   │   │   ├── spriting/
│   │   │   │   │   ├── customization-options.markdown
│   │   │   │   │   ├── magic-selectors.markdown
│   │   │   │   │   └── sprite-layouts.markdown
│   │   │   │   ├── spriting.markdown
│   │   │   │   ├── testing.markdown
│   │   │   │   ├── upgrading/
│   │   │   │   │   ├── antares.markdown
│   │   │   │   │   ├── im-scared.markdown
│   │   │   │   │   └── lemonade_upgrade_guide.markdown
│   │   │   │   └── upgrading.markdown
│   │   │   └── tutorials.haml
│   │   ├── index/
│   │   │   ├── functions.haml
│   │   │   ├── mixins.haml
│   │   │   └── variables.haml
│   │   ├── index.haml
│   │   ├── install.haml
│   │   ├── posts/
│   │   │   ├── 2011-04-24-v011-release.markdown
│   │   │   ├── 2011-04-26-compass-release-strategy.markdown
│   │   │   ├── 2011-05-09-compass-django.markdown
│   │   │   ├── 2012-01-29-compass-and-rails-integration.markdown
│   │   │   ├── 2012-02-01-compass-0-12-is-released.markdown
│   │   │   ├── 2012-05-20-removing-blueprint.markdown
│   │   │   ├── 2013-11-27-compass-versioning-change.markdown
│   │   │   └── 2014-08-15-omg-compass-1-0.markdown
│   │   ├── reference/
│   │   │   ├── compass/
│   │   │   │   ├── css3/
│   │   │   │   │   ├── animation.haml
│   │   │   │   │   ├── appearance.haml
│   │   │   │   │   ├── background_clip.haml
│   │   │   │   │   ├── background_origin.haml
│   │   │   │   │   ├── background_size.haml
│   │   │   │   │   ├── border_radius.haml
│   │   │   │   │   ├── box.haml
│   │   │   │   │   ├── box_shadow.haml
│   │   │   │   │   ├── box_sizing.haml
│   │   │   │   │   ├── columns.haml
│   │   │   │   │   ├── filter.haml
│   │   │   │   │   ├── flexbox.haml
│   │   │   │   │   ├── font_face.haml
│   │   │   │   │   ├── hyphenation.haml
│   │   │   │   │   ├── images.haml
│   │   │   │   │   ├── inline_block.haml
│   │   │   │   │   ├── opacity.haml
│   │   │   │   │   ├── pie.haml
│   │   │   │   │   ├── regions.haml
│   │   │   │   │   ├── selection.haml
│   │   │   │   │   ├── shared.haml
│   │   │   │   │   ├── text-shadow.haml
│   │   │   │   │   ├── transform.haml
│   │   │   │   │   ├── transition.haml
│   │   │   │   │   └── user_interface.haml
│   │   │   │   ├── css3.haml
│   │   │   │   ├── helpers/
│   │   │   │   │   ├── color-stops.haml
│   │   │   │   │   ├── colors.haml
│   │   │   │   │   ├── constants.haml
│   │   │   │   │   ├── cross-browser.haml
│   │   │   │   │   ├── display.haml
│   │   │   │   │   ├── env.haml
│   │   │   │   │   ├── font-files.haml
│   │   │   │   │   ├── image-dimensions.haml
│   │   │   │   │   ├── inline-data.haml
│   │   │   │   │   ├── math.haml
│   │   │   │   │   ├── selectors.haml
│   │   │   │   │   ├── sprites.haml
│   │   │   │   │   └── urls.haml
│   │   │   │   ├── helpers.haml
│   │   │   │   ├── layout/
│   │   │   │   │   ├── grid_background.haml
│   │   │   │   │   ├── sticky_footer.haml
│   │   │   │   │   └── stretching.haml
│   │   │   │   ├── layout.haml
│   │   │   │   ├── reset/
│   │   │   │   │   └── utilities.haml
│   │   │   │   ├── reset-legacy/
│   │   │   │   │   └── utilities-legacy.haml
│   │   │   │   ├── reset-legacy.haml
│   │   │   │   ├── reset.haml
│   │   │   │   ├── support.haml
│   │   │   │   ├── typography/
│   │   │   │   │   ├── links/
│   │   │   │   │   │   ├── hover_link.haml
│   │   │   │   │   │   ├── link_colors.haml
│   │   │   │   │   │   └── unstyled_link.haml
│   │   │   │   │   ├── links.haml
│   │   │   │   │   ├── lists/
│   │   │   │   │   │   ├── bullets.haml
│   │   │   │   │   │   ├── horizontal_list.haml
│   │   │   │   │   │   ├── inline-block-list.haml
│   │   │   │   │   │   └── inline_list.haml
│   │   │   │   │   ├── lists.haml
│   │   │   │   │   ├── text/
│   │   │   │   │   │   ├── ellipsis.haml
│   │   │   │   │   │   ├── force-wrap.haml
│   │   │   │   │   │   ├── nowrap.haml
│   │   │   │   │   │   └── replacement.haml
│   │   │   │   │   ├── text.haml
│   │   │   │   │   └── vertical_rhythm.haml
│   │   │   │   ├── typography.haml
│   │   │   │   ├── utilities/
│   │   │   │   │   ├── color/
│   │   │   │   │   │   ├── brightness.haml
│   │   │   │   │   │   └── contrast.haml
│   │   │   │   │   ├── color.haml
│   │   │   │   │   ├── general/
│   │   │   │   │   │   ├── clearfix.haml
│   │   │   │   │   │   ├── float.haml
│   │   │   │   │   │   ├── hacks.haml
│   │   │   │   │   │   ├── min.haml
│   │   │   │   │   │   ├── reset.haml
│   │   │   │   │   │   └── tag_cloud.haml
│   │   │   │   │   ├── general.haml
│   │   │   │   │   ├── print.haml
│   │   │   │   │   ├── sprites/
│   │   │   │   │   │   ├── base.haml
│   │   │   │   │   │   └── sprite_img.haml
│   │   │   │   │   ├── sprites.haml
│   │   │   │   │   ├── tables/
│   │   │   │   │   │   ├── alternating_rows_and_columns.haml
│   │   │   │   │   │   ├── borders.haml
│   │   │   │   │   │   └── scaffolding.haml
│   │   │   │   │   └── tables.haml
│   │   │   │   └── utilities.haml
│   │   │   └── compass.haml
│   │   ├── reference.haml
│   │   ├── screencast.haml
│   │   ├── search-data.js.erb
│   │   ├── search.haml
│   │   ├── sitemap.xml
│   │   └── stylesheets/
│   │       ├── core/
│   │       │   ├── _base-classes.sass
│   │       │   ├── _clearing-classes.sass
│   │       │   ├── _extensions.scss
│   │       │   └── _media-block.scss
│   │       ├── home.scss
│   │       ├── ie.scss
│   │       ├── partials/
│   │       │   ├── _ads.scss
│   │       │   ├── _blog.scss
│   │       │   ├── _code.scss
│   │       │   ├── _example.scss
│   │       │   ├── _home.scss
│   │       │   ├── _install.scss
│   │       │   ├── _layout.scss
│   │       │   ├── _main.scss
│   │       │   ├── _nav.scss
│   │       │   ├── _sidebar.scss
│   │       │   ├── _theme.scss
│   │       │   └── _typography.scss
│   │       ├── screen.scss
│   │       └── syntax/
│   │           ├── _shCore.scss
│   │           ├── _shThemeRDark.scss
│   │           ├── _syntax-theme.scss
│   │           └── _theme_template.scss
│   ├── layouts/
│   │   ├── article.haml
│   │   ├── basic.haml
│   │   ├── blog.haml
│   │   ├── core.haml
│   │   ├── default.haml
│   │   ├── documentation.haml
│   │   ├── example.haml
│   │   ├── homepage.haml
│   │   ├── main.haml
│   │   ├── partials/
│   │   │   ├── ad.haml
│   │   │   ├── analytics.haml
│   │   │   ├── breadcrumbs.haml
│   │   │   ├── example.haml
│   │   │   ├── footer.haml
│   │   │   ├── js-core.haml
│   │   │   ├── js-highlighter.haml
│   │   │   ├── main-navigation.haml
│   │   │   ├── reference/
│   │   │   │   ├── const_table.haml
│   │   │   │   ├── constants.haml
│   │   │   │   ├── examples.haml
│   │   │   │   ├── functions.haml
│   │   │   │   ├── import-few.haml
│   │   │   │   ├── import.haml
│   │   │   │   ├── imports.haml
│   │   │   │   ├── mixins.haml
│   │   │   │   └── selectors.haml
│   │   │   ├── sidebar/
│   │   │   │   ├── container.haml
│   │   │   │   ├── heading.haml
│   │   │   │   └── item.haml
│   │   │   └── sidebar.haml
│   │   ├── post.haml
│   │   ├── redirect.haml
│   │   ├── reference.haml
│   │   ├── simple_core.haml
│   │   ├── site.haml
│   │   └── tutorial.haml
│   ├── lib/
│   │   ├── blog.rb
│   │   ├── data_sources/
│   │   │   ├── asset_data_source.rb
│   │   │   ├── better_combined_datasource.rb
│   │   │   ├── core_extensions.rb
│   │   │   ├── nanoc_monkey_patches.rb
│   │   │   └── syntax_highter.rb
│   │   ├── default.rb
│   │   ├── examples.rb
│   │   ├── search.rb
│   │   ├── stylesheets/
│   │   │   └── sass_extensions.rb
│   │   └── stylesheets.rb
│   └── tasks/
│       └── generators.thor
├── core/
│   ├── .gitignore
│   ├── Gemfile
│   ├── LICENSE.txt
│   ├── README.md
│   ├── Rakefile
│   ├── VERSION
│   ├── compass-core.gemspec
│   ├── data/
│   │   ├── caniuse.json
│   │   └── caniuse_extras/
│   │       └── css-placeholder.json
│   ├── lib/
│   │   ├── compass/
│   │   │   ├── browser_support.rb
│   │   │   ├── configuration/
│   │   │   │   ├── adapters.rb
│   │   │   │   ├── data.rb
│   │   │   │   ├── defaults.rb
│   │   │   │   ├── inheritance.rb
│   │   │   │   ├── paths.rb
│   │   │   │   └── watch.rb
│   │   │   ├── configuration.rb
│   │   │   ├── core/
│   │   │   │   ├── caniuse.rb
│   │   │   │   ├── generated_version.rb
│   │   │   │   ├── sass_extensions/
│   │   │   │   │   ├── functions/
│   │   │   │   │   │   ├── colors.rb
│   │   │   │   │   │   ├── configuration.rb
│   │   │   │   │   │   ├── constants.rb
│   │   │   │   │   │   ├── cross_browser_support.rb
│   │   │   │   │   │   ├── display.rb
│   │   │   │   │   │   ├── enumerate.rb
│   │   │   │   │   │   ├── env.rb
│   │   │   │   │   │   ├── files.rb
│   │   │   │   │   │   ├── font_files.rb
│   │   │   │   │   │   ├── gradient_support.rb
│   │   │   │   │   │   ├── image_size.rb
│   │   │   │   │   │   ├── inline_image.rb
│   │   │   │   │   │   ├── lists.rb
│   │   │   │   │   │   ├── math.rb
│   │   │   │   │   │   ├── selectors.rb
│   │   │   │   │   │   └── urls.rb
│   │   │   │   │   ├── functions.rb
│   │   │   │   │   ├── monkey_patches/
│   │   │   │   │   │   ├── browser_support.rb
│   │   │   │   │   │   └── traversal.rb
│   │   │   │   │   └── monkey_patches.rb
│   │   │   │   ├── sass_extensions.rb
│   │   │   │   └── version.rb
│   │   │   ├── core.rb
│   │   │   ├── error.rb
│   │   │   ├── frameworks.rb
│   │   │   └── util.rb
│   │   └── compass-core.rb
│   ├── stylesheets/
│   │   ├── _compass.scss
│   │   ├── _lemonade.scss
│   │   └── compass/
│   │       ├── _configuration.scss
│   │       ├── _css3.scss
│   │       ├── _layout.scss
│   │       ├── _reset-legacy.scss
│   │       ├── _reset.scss
│   │       ├── _support.scss
│   │       ├── _typography.scss
│   │       ├── _utilities.scss
│   │       ├── css3/
│   │       │   ├── _animation.scss
│   │       │   ├── _appearance.scss
│   │       │   ├── _background-clip.scss
│   │       │   ├── _background-origin.scss
│   │       │   ├── _background-size.scss
│   │       │   ├── _border-radius.scss
│   │       │   ├── _box-shadow.scss
│   │       │   ├── _box-sizing.scss
│   │       │   ├── _box.scss
│   │       │   ├── _columns.scss
│   │       │   ├── _deprecated-support.scss
│   │       │   ├── _filter.scss
│   │       │   ├── _flexbox.scss
│   │       │   ├── _font-face.scss
│   │       │   ├── _hyphenation.scss
│   │       │   ├── _images.scss
│   │       │   ├── _inline-block.scss
│   │       │   ├── _opacity.scss
│   │       │   ├── _pie.scss
│   │       │   ├── _regions.scss
│   │       │   ├── _selection.scss
│   │       │   ├── _shared.scss
│   │       │   ├── _text-shadow.scss
│   │       │   ├── _transform.scss
│   │       │   ├── _transition.scss
│   │       │   └── _user-interface.scss
│   │       ├── layout/
│   │       │   ├── _grid-background.scss
│   │       │   ├── _sticky-footer.scss
│   │       │   └── _stretching.scss
│   │       ├── reset/
│   │       │   ├── _utilities-legacy.scss
│   │       │   └── _utilities.scss
│   │       ├── typography/
│   │       │   ├── _links.scss
│   │       │   ├── _lists.scss
│   │       │   ├── _text.scss
│   │       │   ├── _units.scss
│   │       │   ├── _vertical_rhythm.scss
│   │       │   ├── links/
│   │       │   │   ├── _hover-link.scss
│   │       │   │   ├── _link-colors.scss
│   │       │   │   └── _unstyled-link.scss
│   │       │   ├── lists/
│   │       │   │   ├── _bullets.scss
│   │       │   │   ├── _horizontal-list.scss
│   │       │   │   ├── _inline-block-list.scss
│   │       │   │   └── _inline-list.scss
│   │       │   └── text/
│   │       │       ├── _ellipsis.scss
│   │       │       ├── _force-wrap.scss
│   │       │       ├── _nowrap.scss
│   │       │       └── _replacement.scss
│   │       └── utilities/
│   │           ├── _color.scss
│   │           ├── _general.scss
│   │           ├── _links.scss
│   │           ├── _lists.scss
│   │           ├── _print.scss
│   │           ├── _sass.scss
│   │           ├── _sprites.scss
│   │           ├── _tables.scss
│   │           ├── _text.scss
│   │           ├── color/
│   │           │   ├── _brightness.scss
│   │           │   └── _contrast.scss
│   │           ├── general/
│   │           │   ├── _clearfix.scss
│   │           │   ├── _float.scss
│   │           │   ├── _hacks.scss
│   │           │   ├── _min.scss
│   │           │   ├── _reset.scss
│   │           │   ├── _tabs.scss
│   │           │   └── _tag-cloud.scss
│   │           ├── links/
│   │           │   ├── _hover-link.scss
│   │           │   ├── _link-colors.scss
│   │           │   └── _unstyled-link.scss
│   │           ├── lists/
│   │           │   ├── _bullets.scss
│   │           │   ├── _horizontal-list.scss
│   │           │   ├── _inline-block-list.scss
│   │           │   └── _inline-list.scss
│   │           ├── sass/
│   │           │   ├── _lists.scss
│   │           │   └── _maps.scss
│   │           ├── sprites/
│   │           │   ├── _base.scss
│   │           │   └── _sprite-img.scss
│   │           ├── tables/
│   │           │   ├── _alternating-rows-and-columns.scss
│   │           │   ├── _borders.scss
│   │           │   └── _scaffolding.scss
│   │           └── text/
│   │               ├── _ellipsis.scss
│   │               ├── _nowrap.scss
│   │               └── _replacement.scss
│   ├── templates/
│   │   ├── ellipsis/
│   │   │   ├── ellipsis.sass
│   │   │   ├── manifest.rb
│   │   │   └── xml/
│   │   │       └── ellipsis.xml
│   │   ├── extension/
│   │   │   ├── manifest.rb
│   │   │   ├── stylesheets/
│   │   │   │   └── main.sass
│   │   │   └── templates/
│   │   │       └── project/
│   │   │           ├── manifest.rb
│   │   │           └── screen.sass
│   │   └── project/
│   │       ├── USAGE.markdown
│   │       ├── ie.sass
│   │       ├── manifest.rb
│   │       ├── print.sass
│   │       └── screen.sass
│   └── test/
│       ├── helpers/
│       │   └── diff.rb
│       ├── integrations/
│       │   ├── projects/
│       │   │   ├── .gitignore
│       │   │   ├── busted_font_urls/
│       │   │   │   ├── css/
│       │   │   │   │   └── screen.css
│       │   │   │   └── sass/
│       │   │   │       ├── _project-setup.scss
│       │   │   │       └── screen.sass
│       │   │   ├── busted_image_urls/
│       │   │   │   ├── css/
│       │   │   │   │   └── screen.css
│       │   │   │   └── sass/
│       │   │   │       ├── _project-setup.scss
│       │   │   │       └── screen.sass
│       │   │   ├── compass/
│       │   │   │   ├── css/
│       │   │   │   │   ├── animation-with-legacy-ie.css
│       │   │   │   │   ├── animation.css
│       │   │   │   │   ├── appearance.css
│       │   │   │   │   ├── background-clip.css
│       │   │   │   │   ├── background-origin.css
│       │   │   │   │   ├── background-size.css
│       │   │   │   │   ├── border_radius.css
│       │   │   │   │   ├── box-sizing.css
│       │   │   │   │   ├── box.css
│       │   │   │   │   ├── box_shadow.css
│       │   │   │   │   ├── brightness.css
│       │   │   │   │   ├── browser-support.css
│       │   │   │   │   ├── color.css
│       │   │   │   │   ├── columns.css
│       │   │   │   │   ├── env.css
│       │   │   │   │   ├── filters.css
│       │   │   │   │   ├── flexbox.css
│       │   │   │   │   ├── fonts.css
│       │   │   │   │   ├── force-wrap.css
│       │   │   │   │   ├── gradients.css
│       │   │   │   │   ├── grid_background.css
│       │   │   │   │   ├── hyphenation.css
│       │   │   │   │   ├── image_size.css
│       │   │   │   │   ├── images.css
│       │   │   │   │   ├── issue-1853.css
│       │   │   │   │   ├── layout.css
│       │   │   │   │   ├── legacy_clearfix.css
│       │   │   │   │   ├── lists.css
│       │   │   │   │   ├── opacity.css
│       │   │   │   │   ├── print.css
│       │   │   │   │   ├── regions.css
│       │   │   │   │   ├── replacement.css
│       │   │   │   │   ├── reset.css
│       │   │   │   │   ├── selection.css
│       │   │   │   │   ├── selection.css.3.3
│       │   │   │   │   ├── stretching.css
│       │   │   │   │   ├── support.css
│       │   │   │   │   ├── table.css
│       │   │   │   │   ├── text_shadow.css
│       │   │   │   │   ├── transform.css
│       │   │   │   │   ├── transition.css
│       │   │   │   │   ├── typography/
│       │   │   │   │   │   └── links/
│       │   │   │   │   │       └── hover-link.css
│       │   │   │   │   ├── units.css
│       │   │   │   │   ├── user-interface.css
│       │   │   │   │   ├── utilities.css
│       │   │   │   │   ├── utilities.css.3.3
│       │   │   │   │   └── vertical_rhythm.css
│       │   │   │   └── sass/
│       │   │   │       ├── _project-setup.scss
│       │   │   │       ├── animation-with-legacy-ie.scss
│       │   │   │       ├── animation.scss
│       │   │   │       ├── appearance.scss
│       │   │   │       ├── background-clip.scss
│       │   │   │       ├── background-origin.scss
│       │   │   │       ├── background-size.scss
│       │   │   │       ├── border_radius.scss
│       │   │   │       ├── box-sizing.scss
│       │   │   │       ├── box.sass
│       │   │   │       ├── box_shadow.scss
│       │   │   │       ├── brightness.scss
│       │   │   │       ├── browser-support.scss
│       │   │   │       ├── color.scss
│       │   │   │       ├── columns.scss
│       │   │   │       ├── env.scss
│       │   │   │       ├── filters.scss
│       │   │   │       ├── flexbox.scss
│       │   │   │       ├── fonts.sass
│       │   │   │       ├── force-wrap.scss
│       │   │   │       ├── gradients.sass
│       │   │   │       ├── grid_background.scss
│       │   │   │       ├── hyphenation.scss
│       │   │   │       ├── image_size.sass
│       │   │   │       ├── images.scss
│       │   │   │       ├── issue-1853.scss
│       │   │   │       ├── layout.sass
│       │   │   │       ├── legacy_clearfix.scss
│       │   │   │       ├── lists.scss
│       │   │   │       ├── opacity.scss
│       │   │   │       ├── print.sass
│       │   │   │       ├── regions.scss
│       │   │   │       ├── replacement.scss
│       │   │   │       ├── reset.sass
│       │   │   │       ├── selection.scss
│       │   │   │       ├── stretching.sass
│       │   │   │       ├── support.scss
│       │   │   │       ├── table.scss
│       │   │   │       ├── text_shadow.scss
│       │   │   │       ├── transform.scss
│       │   │   │       ├── transition.scss
│       │   │   │       ├── typography/
│       │   │   │       │   └── links/
│       │   │   │       │       └── hover-link.scss
│       │   │   │       ├── units.scss
│       │   │   │       ├── user-interface.scss
│       │   │   │       ├── utilities.scss
│       │   │   │       └── vertical_rhythm.scss
│       │   │   ├── envtest/
│       │   │   │   ├── css/
│       │   │   │   │   └── env.css
│       │   │   │   └── sass/
│       │   │   │       ├── _project-setup.scss
│       │   │   │       └── env.scss
│       │   │   ├── image_urls/
│       │   │   │   ├── css/
│       │   │   │   │   └── screen.css
│       │   │   │   └── sass/
│       │   │   │       ├── _project-setup.scss
│       │   │   │       └── screen.sass
│       │   │   ├── relative/
│       │   │   │   ├── css/
│       │   │   │   │   ├── ie.css
│       │   │   │   │   ├── print.css
│       │   │   │   │   └── screen.css
│       │   │   │   └── sass/
│       │   │   │       ├── _project-setup.scss
│       │   │   │       ├── ie.sass
│       │   │   │       ├── print.sass
│       │   │   │       └── screen.sass
│       │   │   ├── uses_only_stylesheets_ext/
│       │   │   │   ├── css/
│       │   │   │   │   ├── ie.css
│       │   │   │   │   ├── print.css
│       │   │   │   │   └── screen.css
│       │   │   │   └── sass/
│       │   │   │       ├── ie.scss
│       │   │   │       ├── print.scss
│       │   │   │       └── screen.scss
│       │   │   └── valid/
│       │   │       ├── css/
│       │   │       │   └── simple.css
│       │   │       └── sass/
│       │   │           └── simple.sass
│       │   ├── projects_test.rb
│       │   └── test_helper.rb
│       └── units/
│           ├── configuration_test.rb
│           ├── frameworks_test.rb
│           ├── shared_extension_paths_test.rb
│           ├── test_helper.rb
│           └── urls_test.rb
├── import-once/
│   ├── .gitignore
│   ├── Gemfile
│   ├── Gemfile_sass_3_2
│   ├── LICENSE.txt
│   ├── README.md
│   ├── Rakefile
│   ├── VERSION
│   ├── compass-import-once.gemspec
│   ├── lib/
│   │   ├── compass/
│   │   │   ├── import-once/
│   │   │   │   ├── activate.rb
│   │   │   │   ├── engine.rb
│   │   │   │   ├── importer.rb
│   │   │   │   └── version.rb
│   │   │   └── import-once.rb
│   │   └── compass-import-once.rb
│   └── test/
│       ├── diff_as_string.rb
│       ├── fixtures/
│       │   ├── _simple_partial.scss
│       │   ├── basic.css
│       │   ├── basic.scss
│       │   ├── force_import.css
│       │   ├── force_import.scss
│       │   ├── with_globbing.css
│       │   └── with_globbing.scss
│       ├── import_once_test.rb
│       └── test_helper.rb
└── test_all.sh
Download .txt
SYMBOL INDEX (1687 symbols across 168 files)

FILE: cli/lib/compass.rb
  type Compass (line 1) | module Compass
    function base_directory (line 20) | def base_directory
    function lib_directory (line 23) | def lib_directory
  type Compass (line 19) | module Compass
    function base_directory (line 20) | def base_directory
    function lib_directory (line 23) | def lib_directory

FILE: cli/lib/compass/actions.rb
  type Compass (line 1) | module Compass
    type Actions (line 2) | module Actions
      function logger (line 6) | def logger
      function copy (line 11) | def copy(from, to, options = nil, binary = false)
      function directory (line 22) | def directory(dir, options = nil)
      function write_file (line 37) | def write_file(file_name, contents, options = nil, binary = false)
      function process_erb (line 66) | def process_erb(contents, ctx = nil)
      function remove (line 71) | def remove(file_name)
      function basename (line 82) | def basename(file)
      function relativize (line 86) | def relativize(path)
      function separate (line 98) | def separate(path)
      function strip_trailing_separator (line 103) | def strip_trailing_separator(path)
      function log_action (line 107) | def log_action(action, file, options)

FILE: cli/lib/compass/app_integration.rb
  type Compass (line 3) | module Compass
    type AppIntegration (line 4) | module AppIntegration
      type Helpers (line 5) | module Helpers
        function init (line 11) | def init
        function project_types (line 15) | def project_types
        function default? (line 19) | def default?
        function lookup (line 23) | def lookup(type)
        function register (line 31) | def register(type, klass)

FILE: cli/lib/compass/app_integration/stand_alone.rb
  type Compass (line 5) | module Compass
    type AppIntegration (line 6) | module AppIntegration
      type StandAlone (line 7) | module StandAlone
        function installer (line 11) | def installer(*args)
        function configuration (line 15) | def configuration

FILE: cli/lib/compass/app_integration/stand_alone/configuration_defaults.rb
  type Compass (line 1) | module Compass
    type AppIntegration (line 2) | module AppIntegration
      type StandAlone (line 3) | module StandAlone
        type ConfigurationDefaults (line 4) | module ConfigurationDefaults
          function default_project_type (line 5) | def default_project_type
          function sass_dir_without_default (line 9) | def sass_dir_without_default
          function javascripts_dir_without_default (line 13) | def javascripts_dir_without_default
          function css_dir_without_default (line 17) | def css_dir_without_default
          function images_dir_without_default (line 21) | def images_dir_without_default
          function default_cache_dir (line 25) | def default_cache_dir

FILE: cli/lib/compass/app_integration/stand_alone/installer.rb
  type Compass (line 1) | module Compass
    type Installers (line 2) | module Installers
      class Base (line 3) | class Base
      class ManifestInstaller (line 5) | class ManifestInstaller < Base
    type AppIntegration (line 9) | module AppIntegration
      type StandAlone (line 10) | module StandAlone
        class Installer (line 11) | class Installer < Compass::Installers::ManifestInstaller
          method init (line 13) | def init
          method write_configuration_files (line 18) | def write_configuration_files(config_file = nil)
          method config_files_exist? (line 23) | def config_files_exist?
          method config_contents (line 27) | def config_contents
          method prepare (line 34) | def prepare
          method completed_configuration (line 38) | def completed_configuration
          method finalize (line 42) | def finalize(options = {})
          method compilation_required? (line 77) | def compilation_required?

FILE: cli/lib/compass/commands.rb
  type Compass::Commands (line 1) | module Compass::Commands

FILE: cli/lib/compass/commands/base.rb
  type Compass (line 1) | module Compass
    type Commands (line 2) | module Commands
      class Base (line 3) | class Base
        method register (line 4) | def self.register(command_name)
        method initialize (line 12) | def initialize(working_path, options)
        method execute (line 17) | def execute
        method perform (line 21) | def perform
        method successful? (line 25) | def successful?
        method failed! (line 29) | def failed!
        method framework (line 35) | def framework

FILE: cli/lib/compass/commands/clean_project.rb
  type Compass (line 4) | module Compass
    type Commands (line 5) | module Commands
      type CleanProjectOptionsParser (line 6) | module CleanProjectOptionsParser
        function set_options (line 7) | def set_options(opts)
      class CleanProject (line 21) | class CleanProject < UpdateProject
        method initialize (line 25) | def initialize(working_path, options)
        method perform (line 30) | def perform
        method determine_cache_location (line 38) | def determine_cache_location
        method option_parser (line 43) | def option_parser(arguments)
        method usage (line 50) | def usage
        method primary (line 54) | def primary; true; end
        method description (line 56) | def description(command)
        method parse! (line 60) | def parse!(arguments)
        method parse_arguments! (line 67) | def parse_arguments!(parser, arguments)

FILE: cli/lib/compass/commands/create_project.rb
  type Compass (line 4) | module Compass
    type Commands (line 5) | module Commands
      type CreateProjectOptionsParser (line 6) | module CreateProjectOptionsParser
        function set_options (line 7) | def set_options(opts)
      class CreateProject (line 55) | class CreateProject < StampPattern
        method option_parser (line 61) | def option_parser(arguments)
        method usage (line 68) | def usage
        method description (line 72) | def description(command)
        method primary (line 80) | def primary; true; end
        method parse! (line 82) | def parse!(arguments)
        method parse_init! (line 93) | def parse_init!(arguments)
        method parse_options! (line 104) | def parse_options!(parser, arguments)
        method parse_arguments! (line 109) | def parse_arguments!(parser, arguments)
        method set_default_arguments (line 119) | def set_default_arguments(parser)
        method is_project_creation? (line 125) | def is_project_creation?

FILE: cli/lib/compass/commands/default.rb
  type Compass (line 1) | module Compass
    type Commands (line 2) | module Commands
      type DefaultOptionsParser (line 3) | module DefaultOptionsParser
        function set_options (line 4) | def set_options(opts)
      class Default (line 24) | class Default < Base
        method option_parser (line 27) | def option_parser(arguments)
        method parse! (line 35) | def parse!(arguments)
        method execute (line 45) | def execute

FILE: cli/lib/compass/commands/extension_command.rb
  type Compass (line 4) | module Compass
    type Commands (line 5) | module Commands
      type ExtensionsOptionParser (line 6) | module ExtensionsOptionParser
        function set_options (line 7) | def set_options(opts)
      class ExtensionCommand (line 26) | class ExtensionCommand < Base
        method option_parser (line 31) | def option_parser(arguments)
        method usage (line 35) | def usage
        method description (line 38) | def description(command)
        method parse! (line 41) | def parse!(arguments)
        method initialize (line 47) | def initialize(working_path, options)
        method perform (line 52) | def perform

FILE: cli/lib/compass/commands/help.rb
  type Compass (line 1) | module Compass
    type Commands (line 2) | module Commands
      type HelpOptionsParser (line 3) | module HelpOptionsParser
        function set_options (line 4) | def set_options(opts)
        function command_list (line 37) | def command_list(header, commands)
      class Help (line 49) | class Help < Base
        method option_parser (line 53) | def option_parser(arguments)
        method usage (line 58) | def usage
        method description (line 61) | def description(command)
        method parse! (line 64) | def parse!(arguments)
        method execute (line 72) | def execute

FILE: cli/lib/compass/commands/imports.rb
  type Compass (line 1) | module Compass
    type Commands (line 2) | module Commands
      class Imports (line 3) | class Imports < ProjectBase
        method initialize (line 6) | def initialize(working_path, options)
        method execute (line 10) | def execute
        method description (line 16) | def description(command)
        method usage (line 19) | def usage
        method parse! (line 25) | def parse!(arguments)

FILE: cli/lib/compass/commands/installer_command.rb
  type Compass (line 3) | module Compass
    type Commands (line 4) | module Commands
      type InstallerCommand (line 5) | module InstallerCommand
        function configure! (line 8) | def configure!
        function app (line 15) | def app
        function installer (line 19) | def installer
        function installer_args (line 27) | def installer_args

FILE: cli/lib/compass/commands/interactive.rb
  type Compass (line 5) | module Compass
    type Commands (line 6) | module Commands
      type InteractiveOptionsParser (line 7) | module InteractiveOptionsParser
        function set_options (line 8) | def set_options(opts)
      class Interactive (line 21) | class Interactive < ProjectBase
        method initialize (line 25) | def initialize(working_path, options)
        method perform (line 29) | def perform
        method option_parser (line 36) | def option_parser(arguments)
        method usage (line 43) | def usage
        method description (line 47) | def description(command)
        method parse! (line 51) | def parse!(arguments)

FILE: cli/lib/compass/commands/list_frameworks.rb
  type Compass (line 1) | module Compass
    type Commands (line 2) | module Commands
      class ListFrameworks (line 3) | class ListFrameworks < ProjectBase
        method initialize (line 6) | def initialize(working_path, options)
        method execute (line 10) | def execute
        method option_parser (line 21) | def option_parser(arguments)
        method usage (line 25) | def usage
        method description (line 28) | def description(command)
        method parse! (line 31) | def parse!(arguments)

FILE: cli/lib/compass/commands/print_version.rb
  type Compass (line 1) | module Compass
    type Commands (line 2) | module Commands
      type VersionOptionsParser (line 3) | module VersionOptionsParser
        function set_options (line 4) | def set_options(opts)
      class PrintVersion (line 34) | class PrintVersion < Base
        method option_parser (line 38) | def option_parser(arguments)
        method usage (line 42) | def usage
        method description (line 45) | def description(command)
        method parse! (line 48) | def parse!(arguments)
        method long_output_string (line 53) | def long_output_string
        method initialize (line 69) | def initialize(working_path, options)
        method execute (line 73) | def execute

FILE: cli/lib/compass/commands/project_base.rb
  type Compass (line 6) | module Compass
    type Commands (line 7) | module Commands
      class ProjectBase (line 8) | class ProjectBase < Base
        method initialize (line 11) | def initialize(working_path, options = {})
        method execute (line 18) | def execute
        method configure! (line 24) | def configure!
        method add_project_configuration (line 30) | def add_project_configuration
        method projectize (line 42) | def projectize(path)
        method project_directory (line 46) | def project_directory
        method project_css_subdirectory (line 50) | def project_css_subdirectory
        method project_src_subdirectory (line 54) | def project_src_subdirectory
        method project_images_subdirectory (line 58) | def project_images_subdirectory
        method assert_project_directory_exists! (line 62) | def assert_project_directory_exists!
        method determine_project_name (line 72) | def determine_project_name(working_path, options)
        method determine_project_directory (line 80) | def determine_project_directory(working_path, options)
        method absolute_path? (line 92) | def absolute_path?(path)
        method skip_extension_discovery? (line 97) | def skip_extension_discovery?

FILE: cli/lib/compass/commands/project_stats.rb
  type Compass (line 4) | module Compass
    type Commands (line 5) | module Commands
      type StatsOptionsParser (line 6) | module StatsOptionsParser
        function set_options (line 7) | def set_options(opts)
      class ProjectStats (line 22) | class ProjectStats < UpdateProject
        method initialize (line 26) | def initialize(working_path, options)
        method perform (line 31) | def perform
        method pad (line 73) | def pad(c, max, options = {})
        method format_kb (line 87) | def format_kb(v)
        method sorted_sass_files (line 98) | def sorted_sass_files(compiler)
        method filename_columns (line 110) | def filename_columns(sass_file)
        method sass_columns (line 115) | def sass_columns(sass_file)
        method css_columns (line 123) | def css_columns(css_file)
        method option_parser (line 140) | def option_parser(arguments)
        method usage (line 147) | def usage
        method description (line 151) | def description(command)
        method primary (line 155) | def primary; false; end
        method parse! (line 157) | def parse!(arguments)
        method parse_arguments! (line 164) | def parse_arguments!(parser, arguments)

FILE: cli/lib/compass/commands/project_structure.rb
  type Compass (line 4) | module Compass
    type Commands (line 5) | module Commands
      type StructureOptionsParser (line 6) | module StructureOptionsParser
        function set_options (line 7) | def set_options(opts)
      class ProjectStats (line 20) | class ProjectStats < UpdateProject
        method initialize (line 24) | def initialize(working_path, options)
        method perform (line 29) | def perform
        method print_tree (line 36) | def print_tree(file, depth = 0, importer = @compiler.importer)
        method sorted_sass_files (line 43) | def sorted_sass_files
        method option_parser (line 57) | def option_parser(arguments)
        method usage (line 64) | def usage
        method description (line 68) | def description(command)
        method primary (line 72) | def primary; false; end
        method parse! (line 74) | def parse!(arguments)
        method parse_arguments! (line 81) | def parse_arguments!(parser, arguments)

FILE: cli/lib/compass/commands/registry.rb
  type Compass::Commands (line 1) | module Compass::Commands
    type Registry (line 2) | module Registry
      function register (line 3) | def register(name, command_class)
      function get (line 7) | def get(name)
      function abbreviation_of (line 12) | def abbreviation_of(name)
      function abbreviation? (line 25) | def abbreviation?(name)
      function command_exists? (line 29) | def command_exists?(name)
      function all (line 33) | def all

FILE: cli/lib/compass/commands/sprite.rb
  type Compass (line 4) | module Compass
    type Commands (line 5) | module Commands
      type SpriteOptionsParser (line 6) | module SpriteOptionsParser
        function set_options (line 7) | def set_options(opts)
      class Sprite (line 31) | class Sprite < ProjectBase
        method initialize (line 35) | def initialize(working_path, options)
        method perform (line 40) | def perform
        method option_parser (line 56) | def option_parser(arguments)
        method usage (line 63) | def usage
        method description (line 67) | def description(command)
        method parse! (line 71) | def parse!(arguments)
        method parse_arguments! (line 78) | def parse_arguments!(parser, arguments)

FILE: cli/lib/compass/commands/stamp_pattern.rb
  type Compass (line 5) | module Compass
    type Commands (line 6) | module Commands
      type StampPatternOptionsParser (line 7) | module StampPatternOptionsParser
        function set_options (line 8) | def set_options(opts)
      class StampPattern (line 27) | class StampPattern < ProjectBase
        method option_parser (line 32) | def option_parser(arguments)
        method usage (line 38) | def usage
        method description (line 41) | def description(command)
        method parse! (line 44) | def parse!(arguments)
        method parse_arguments! (line 50) | def parse_arguments!(parser, arguments)
        method initialize (line 68) | def initialize(working_path, options)
        method perform (line 73) | def perform
        method is_project_creation? (line 80) | def is_project_creation?
        method template_directory (line 84) | def template_directory(pattern)

FILE: cli/lib/compass/commands/unpack_extension.rb
  type Compass (line 4) | module Compass
    type Commands (line 5) | module Commands
      type ExtensionOptionsParser (line 6) | module ExtensionOptionsParser
        function set_options (line 7) | def set_options(opts)
      class UnpackExtension (line 26) | class UnpackExtension < ProjectBase
        method initialize (line 30) | def initialize(working_path, options)
        method perform (line 35) | def perform
        method readme (line 57) | def readme(framework)
        method skip_extension_discovery? (line 78) | def skip_extension_discovery?
        method option_parser (line 84) | def option_parser(arguments)
        method usage (line 91) | def usage
        method description (line 95) | def description(command)
        method parse! (line 99) | def parse!(arguments)
        method parse_arguments! (line 106) | def parse_arguments!(parser, arguments)

FILE: cli/lib/compass/commands/update_project.rb
  type Compass (line 4) | module Compass
    type Commands (line 5) | module Commands
      type CompileProjectOptionsParser (line 6) | module CompileProjectOptionsParser
        function set_options (line 7) | def set_options(opts)
      class UpdateProject (line 36) | class UpdateProject < ProjectBase
        method initialize (line 40) | def initialize(working_path, options)
        method perform (line 45) | def perform
        method prepare_project! (line 58) | def prepare_project!(compiler)
        method new_config? (line 71) | def new_config?(compiler)
        method check_for_sass_files! (line 81) | def check_for_sass_files!(compiler)
        method new_compiler_instance (line 92) | def new_compiler_instance
        method compiler_options (line 96) | def compiler_options
        method transfer_options (line 100) | def transfer_options(from, to, *keys)
        method option_parser (line 108) | def option_parser(arguments)
        method usage (line 115) | def usage
        method primary (line 119) | def primary; true; end
        method description (line 121) | def description(command)
        method parse! (line 125) | def parse!(arguments)
        method parse_arguments! (line 132) | def parse_arguments!(parser, arguments)
        method absolutize (line 141) | def absolutize(*paths)

FILE: cli/lib/compass/commands/validate_project.rb
  type Compass (line 4) | module Compass
    type Commands (line 5) | module Commands
      type ValidationOptionsParser (line 6) | module ValidationOptionsParser
        function set_options (line 7) | def set_options(opts)
      class ValidateProject (line 22) | class ValidateProject < ProjectBase
        method initialize (line 26) | def initialize(working_path, options)
        method perform (line 31) | def perform
        method option_parser (line 41) | def option_parser(arguments)
        method usage (line 48) | def usage
        method description (line 52) | def description(command)
        method parse! (line 56) | def parse!(arguments)
        method parse_arguments! (line 63) | def parse_arguments!(parser, arguments)

FILE: cli/lib/compass/commands/watch_project.rb
  type Compass (line 7) | module Compass
    type Commands (line 8) | module Commands
      type WatchProjectOptionsParser (line 9) | module WatchProjectOptionsParser
        function set_options (line 10) | def set_options(opts)
      class WatchProject (line 29) | class WatchProject < UpdateProject
        method perform (line 35) | def perform
        method happy_styling! (line 48) | def happy_styling!(logger)
        method compiler_options (line 52) | def compiler_options
        method additional_watch_paths (line 56) | def additional_watch_paths
        method notify_watches (line 70) | def notify_watches(modified, added, removed)
        method relative_to (line 96) | def relative_to(f, dir)
        method description (line 103) | def description(command)
        method option_parser (line 107) | def option_parser(arguments)

FILE: cli/lib/compass/commands/write_configuration.rb
  type Compass (line 3) | module Compass
    type Commands (line 4) | module Commands
      type ConfigurationOptionsParser (line 5) | module ConfigurationOptionsParser
        function set_options (line 6) | def set_options(opts)
      class WriteConfiguration (line 30) | class WriteConfiguration < ProjectBase
        method initialize (line 36) | def initialize(working_path, options)
        method add_project_configuration (line 41) | def add_project_configuration
        method perform (line 45) | def perform
        method installer_args (line 79) | def installer_args
        method explicit_config_file_must_be_readable? (line 83) | def explicit_config_file_must_be_readable?
        method option_parser (line 89) | def option_parser(arguments)
        method usage (line 96) | def usage
        method description (line 100) | def description(command)
        method parse! (line 104) | def parse!(arguments)
        method parse_arguments! (line 111) | def parse_arguments!(parser, arguments)

FILE: cli/lib/compass/compiler.rb
  type Compass (line 3) | module Compass
    class Compiler (line 4) | class Compiler
      method initialize (line 10) | def initialize(working_path, from, to, options)
      method reset_staleness_checker! (line 31) | def reset_staleness_checker!
      method determine_cache_location (line 37) | def determine_cache_location
      method sass_files (line 41) | def sass_files(options = {})
      method relative_stylesheet_name (line 46) | def relative_stylesheet_name(sass_file)
      method stylesheet_name (line 50) | def stylesheet_name(sass_file)
      method css_files (line 58) | def css_files
      method sourcemap_files (line 62) | def sourcemap_files
      method corresponding_css_file (line 66) | def corresponding_css_file(sass_file)
      method corresponding_sourcemap_file (line 70) | def corresponding_sourcemap_file(sass_file)
      method target_directories (line 74) | def target_directories
      method out_of_date? (line 79) | def out_of_date?
      method needs_update? (line 86) | def needs_update?(css_filename, sass_filename)
      method new_config? (line 91) | def new_config?
      method reset! (line 101) | def reset!
      method clean! (line 108) | def clean!
      method run (line 116) | def run
      method compile_if_required (line 144) | def compile_if_required(sass_filename, css_filename, sourcemap_filen...
      method timed (line 153) | def timed(timed_thing = lambda {|res| res})
      method compile (line 166) | def compile(sass_filename, css_filename, sourcemap_filename = nil)
      method relative_path (line 191) | def relative_path(from_path, to_path)
      method should_compile? (line 195) | def should_compile?(sass_filename, css_filename, sourcemap_filename ...
      method engine (line 204) | def engine(sass_filename, css_filename, sourcemap_filename = nil)
      method handle_exception (line 216) | def handle_exception(sass_filename, css_filename, e)
      method error_contents (line 227) | def error_contents(e, sass_filename)
      method show_full_exception? (line 244) | def show_full_exception?

FILE: cli/lib/compass/configuration/comments.rb
  type Compass (line 1) | module Compass
    type Configuration (line 2) | module Configuration
      type Comments (line 4) | module Comments
        function comment_for_http_path (line 6) | def comment_for_http_path
        function comment_for_relative_assets (line 14) | def comment_for_relative_assets
        function comment_for_line_comments (line 24) | def comment_for_line_comments
        function comment_for_output_style (line 34) | def comment_for_output_style
        function comment_for_preferred_syntax (line 44) | def comment_for_preferred_syntax
      class Data (line 58) | class Data

FILE: cli/lib/compass/configuration/file_data.rb
  type Compass (line 1) | module Compass
    type Configuration (line 2) | module Configuration
      class FileData (line 3) | class FileData < Data
        method new_from_file (line 4) | def self.new_from_file(config_file, defaults = nil)
        method new_from_string (line 12) | def self.new_from_string(contents, filename, defaults = nil)

FILE: cli/lib/compass/configuration/helpers.rb
  type Compass (line 1) | module Compass
    type Configuration (line 2) | module Configuration
      type Helpers (line 5) | module Helpers
        function configuration_for (line 6) | def configuration_for(config, filename = nil, defaults = nil)
        function sass_plugin_configuration (line 27) | def sass_plugin_configuration
        function configure_sass_plugin! (line 31) | def configure_sass_plugin!
        function sass_engine_options (line 59) | def sass_engine_options
        function add_project_configuration (line 64) | def add_project_configuration(*args)
        function detect_configuration_file (line 87) | def detect_configuration_file(project_path = nil)
        function handle_configuration_change! (line 92) | def handle_configuration_change!
        function compiler (line 99) | def compiler
        function sass_compiler (line 106) | def sass_compiler(*args)

FILE: cli/lib/compass/configuration/serialization.rb
  type Compass (line 1) | module Compass
    type Configuration (line 2) | module Configuration
      type Serialization (line 4) | module Serialization
        function parse (line 5) | def parse(config_file)
        function _parse (line 10) | def _parse(config_file)
        function get_binding (line 19) | def get_binding
        function parse_string (line 22) | def parse_string(contents, filename)
        function serialize (line 41) | def serialize
        function serialize_property (line 76) | def serialize_property(prop, value)
        function issue_deprecation_warnings (line 84) | def issue_deprecation_warnings
      class Data (line 91) | class Data

FILE: cli/lib/compass/deprecation.rb
  type Compass (line 1) | module Compass
    type Deprecation (line 2) | module Deprecation
      function deprecated! (line 8) | def self.deprecated!(identifier, message)
      function mark_as_issued (line 15) | def self.mark_as_issued(identifier)

FILE: cli/lib/compass/errors.rb
  type Compass (line 2) | module Compass
    class FilesystemConflict (line 3) | class FilesystemConflict < Error
    class MissingDependency (line 6) | class MissingDependency < Error
    class SpriteException (line 8) | class SpriteException < Error; end

FILE: cli/lib/compass/exec.rb
  type Compass::Exec (line 16) | module Compass::Exec

FILE: cli/lib/compass/exec/command_option_parser.rb
  type Compass::Exec (line 1) | module Compass::Exec
    class CommandOptionParser (line 2) | class CommandOptionParser
      method initialize (line 4) | def initialize(arguments)
      method parse! (line 8) | def parse!
      method opts (line 11) | def opts
      method set_options (line 16) | def set_options(opts)
      method to_s (line 19) | def to_s

FILE: cli/lib/compass/exec/global_options_parser.rb
  type Compass::Exec::GlobalOptionsParser (line 1) | module Compass::Exec::GlobalOptionsParser
    function set_options (line 2) | def set_options(opts)
    function set_global_options (line 6) | def set_global_options(opts)

FILE: cli/lib/compass/exec/helpers.rb
  type Compass::Exec (line 1) | module Compass::Exec
    type Helpers (line 2) | module Helpers
      function report_error (line 4) | def report_error(e, options)
      function get_file (line 13) | def get_file(exception)
      function get_line (line 17) | def get_line(exception)

FILE: cli/lib/compass/exec/project_options_parser.rb
  type Compass::Exec::ProjectOptionsParser (line 1) | module Compass::Exec::ProjectOptionsParser
    function set_options (line 2) | def set_options(opts)
    function set_dir_or_path (line 6) | def set_dir_or_path(type, dir)
    function set_project_options (line 14) | def set_project_options(opts)

FILE: cli/lib/compass/exec/sub_command_ui.rb
  type Compass::Exec (line 4) | module Compass::Exec
    class SubCommandUI (line 5) | class SubCommandUI
      method initialize (line 9) | def initialize(args)
      method run! (line 13) | def run!
      method perform! (line 29) | def perform!

FILE: cli/lib/compass/generated_version.rb
  type Compass (line 1) | module Compass

FILE: cli/lib/compass/installers/bare_installer.rb
  type Compass (line 1) | module Compass
    type Installers (line 2) | module Installers
      class BareInstaller (line 4) | class BareInstaller < Base
        method completed_configuration (line 5) | def completed_configuration
        method init (line 9) | def init
        method prepare (line 14) | def prepare
        method install (line 17) | def install
        method config_contents (line 22) | def config_contents
        method finalize (line 29) | def finalize(options = {})

FILE: cli/lib/compass/installers/base.rb
  type Compass (line 1) | module Compass
    type Installers (line 2) | module Installers
      class Base (line 4) | class Base
        method initialize (line 11) | def initialize(template_path, target_path, options = {})
        method run (line 31) | def run(run_options = {})
        method prepare (line 39) | def prepare
        method install (line 43) | def install
        method finalize (line 49) | def finalize(options = {})
        method compilation_required? (line 52) | def compilation_required?
        method pattern_name_as_dir (line 56) | def pattern_name_as_dir
        method installer (line 60) | def self.installer(type, installer_opts = {}, &locator)
        method install_stylesheet (line 92) | def install_stylesheet(from, to, options)
        method install_directory (line 133) | def install_directory(from, to, options)
        method install_html (line 147) | def install_html(from, to, options)
        method targetize (line 169) | def targetize(path)
        method templatize (line 175) | def templatize(path)
        method stylesheet_links (line 180) | def stylesheet_links

FILE: cli/lib/compass/installers/manifest.rb
  type Compass (line 1) | module Compass
    type Installers (line 2) | module Installers
      class Manifest (line 4) | class Manifest
        class Entry (line 8) | class Entry < Struct.new(:type, :from, :options)
          method to (line 9) | def to
        method initialize (line 15) | def initialize(manifest_file = nil, options = {})
        method known_extensions (line 23) | def self.known_extensions
        method plural_types (line 27) | def self.plural_types
        method type (line 31) | def self.type(t, options = {})
        method discover (line 57) | def discover(type)
        method help (line 79) | def help(value = nil)
        method welcome_message (line 89) | def welcome_message(value = nil, options = {})
        method welcome_message_options (line 98) | def welcome_message_options
        method description (line 102) | def description(value = nil)
        method each (line 111) | def each
        method generate_config? (line 115) | def generate_config?
        method compile? (line 119) | def compile?
        method no_configuration_file! (line 125) | def no_configuration_file!
        method skip_compilation! (line 129) | def skip_compilation!
        method with_manifest (line 133) | def with_manifest(manifest_file)
        method parse (line 142) | def parse(manifest_file)
        method instance_binding (line 155) | def instance_binding

FILE: cli/lib/compass/installers/manifest_installer.rb
  type Compass (line 1) | module Compass
    type Installers (line 2) | module Installers
      class ManifestInstaller (line 4) | class ManifestInstaller < Base
        method initialize (line 8) | def initialize(template_path, target_path, options = {})
        method manifest_file (line 13) | def manifest_file
        method init (line 18) | def init
        method install (line 37) | def install
        method stylesheet_links (line 43) | def stylesheet_links

FILE: cli/lib/compass/installers/template_context.rb
  type Compass (line 1) | module Compass
    type Installers (line 2) | module Installers
      class TemplateContext (line 3) | class TemplateContext
        method ctx (line 5) | def self.ctx(*arguments)
        method initialize (line 9) | def initialize(template, locals = {})
        method http_stylesheets_path (line 14) | def http_stylesheets_path
        method config (line 28) | def config
        method get_binding (line 36) | def get_binding

FILE: cli/lib/compass/logger.rb
  type Compass (line 1) | module Compass
    class Logger (line 3) | class Logger
      method initialize (line 53) | def initialize(*actions)
      method record (line 60) | def record(action, *arguments)
      method green (line 73) | def green
      method red (line 77) | def red
      method yellow (line 81) | def yellow
      method wrap (line 85) | def wrap(c, reset_to = :clear)
      method color (line 95) | def color(c)
      method emit (line 108) | def emit(msg)
      method log (line 114) | def log(msg)
      method action_padding (line 120) | def action_padding(action)
      method max_action_length (line 125) | def max_action_length
    class NullLogger (line 130) | class NullLogger < Logger
      method record (line 131) | def record(*args)
      method log (line 134) | def log(msg)
      method emit (line 137) | def emit(msg)

FILE: cli/lib/compass/quick_cache.rb
  type QuickCache (line 1) | module QuickCache
    function quick_cache (line 6) | def quick_cache(key, ttl = 1)

FILE: cli/lib/compass/sass_compiler.rb
  class Compass::SassCompiler (line 3) | class Compass::SassCompiler
    method initialize (line 15) | def initialize(options = {}, config = Compass.configuration)
    method compile! (line 39) | def compile!
    method watch! (line 43) | def watch!(options = {}, &block)
    method individual_files (line 53) | def individual_files
    method clean! (line 57) | def clean!
    method file_list (line 61) | def file_list
    method when_updating_stylesheets (line 65) | def when_updating_stylesheets(individual_files)
    method when_compilation_starting (line 70) | def when_compilation_starting(sass_file, css, sourcemap)
    method when_template_created (line 74) | def when_template_created(sass_file)
    method when_template_deleted (line 78) | def when_template_deleted(sass_file)
    method when_template_modified (line 82) | def when_template_modified(sass_file)
    method when_updated_stylesheet (line 86) | def when_updated_stylesheet(sass_file, css, sourcemap)
    method when_creating_directory (line 99) | def when_creating_directory(dirname)
    method when_deleting_css (line 103) | def when_deleting_css(filename)
    method when_deleting_sourcemap (line 108) | def when_deleting_sourcemap(filename)
    method when_compilation_error (line 113) | def when_compilation_error(error, sass_file, css_file, sourcemap_file)
    method logger (line 128) | def logger
    method corresponding_css_file (line 132) | def corresponding_css_file(sass_file)
    method stylesheet_name (line 136) | def stylesheet_name(sass_file)
    method sass_files (line 144) | def sass_files(options = {})

FILE: cli/lib/compass/sass_extensions.rb
  type Compass::SassExtensions (line 5) | module Compass::SassExtensions

FILE: cli/lib/compass/sass_extensions/functions.rb
  type Compass::SassExtensions::Functions (line 1) | module Compass::SassExtensions::Functions
    type SassDeclarationHelper (line 2) | module SassDeclarationHelper
      function declare (line 3) | def declare(*args)
  type Sass::Script::Functions (line 13) | module Sass::Script::Functions

FILE: cli/lib/compass/sass_extensions/functions/sprites.rb
  type Compass::SassExtensions::Functions::Sprites (line 1) | module Compass::SassExtensions::Functions::Sprites
    type VariableReader (line 14) | module VariableReader
      function get_var (line 15) | def get_var(variable_name)
    function sprite_width (line 21) | def sprite_width(map, sprite=nil)
    function sprite_height (line 31) | def sprite_height(map, sprite=nil)
    function sprite_names (line 41) | def sprite_names(map)
    function sprite_path (line 48) | def sprite_path(map)
    function inline_sprite (line 59) | def inline_sprite(map)
    function sprite_map (line 76) | def sprite_map(glob, kwargs = {})
    function sprite (line 96) | def sprite(map, sprite, offset_x = ZERO, offset_y = ZERO, use_percenta...
    function sprite_map_name (line 111) | def sprite_map_name(map)
    function sprite_file (line 118) | def sprite_file(map, sprite)
    function sprite_does_not_have_parent (line 133) | def sprite_does_not_have_parent(map, sprite)
    function sprite_selector_file (line 142) | def sprite_selector_file(map, sprite, selector)
    function sprite_has_selector (line 155) | def sprite_has_selector(map, sprite, selector)
    function sprite_has_valid_selector (line 169) | def sprite_has_valid_selector(selector)
    function sprite_url (line 177) | def sprite_url(map)
    function sprite_position (line 213) | def sprite_position(map, sprite = nil, offset_x = ZERO, offset_y = ZER...
    function get_sprite_file (line 252) | def get_sprite_file(map, sprite=nil)
    function reversed_color_names (line 260) | def reversed_color_names
    function convert_sprite_name (line 268) | def convert_sprite_name(sprite)
    function verify_map (line 285) | def verify_map(map, error = "sprite")
    function verify_sprite (line 291) | def verify_sprite(sprite)
    function missing_image! (line 297) | def missing_image!(map, sprite)
    function missing_sprite! (line 301) | def missing_sprite!(function_name)

FILE: cli/lib/compass/sass_extensions/sprites.rb
  type Compass (line 4) | module Compass
    type SassExtensions (line 5) | module SassExtensions
      type Sprites (line 6) | module Sprites

FILE: cli/lib/compass/sass_extensions/sprites/engines.rb
  type Compass (line 1) | module Compass
    type SassExtensions (line 2) | module SassExtensions
      type Sprites (line 3) | module Sprites
        class Engine (line 4) | class Engine
          method initialize (line 6) | def initialize(width, height, images)
          method construct_sprite (line 11) | def construct_sprite
          method save (line 15) | def save(filename)

FILE: cli/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb
  type Compass (line 7) | module Compass
    type SassExtensions (line 8) | module SassExtensions
      type Sprites (line 9) | module Sprites
        class ChunkyPngEngine (line 10) | class ChunkyPngEngine < Compass::SassExtensions::Sprites::Engine
          method construct_sprite (line 12) | def construct_sprite
          method save (line 24) | def save(filename)

FILE: cli/lib/compass/sass_extensions/sprites/image.rb
  type Compass (line 1) | module Compass
    type SassExtensions (line 2) | module SassExtensions
      type Sprites (line 3) | module Sprites
        class Image (line 4) | class Image
          method initialize (line 21) | def initialize(base, relative_file, options)
          method file (line 28) | def file
          method find_file (line 32) | def find_file
          method width (line 42) | def width
          method size (line 46) | def size
          method height (line 51) | def height
          method get_var_file (line 55) | def get_var_file(var)
          method repeat (line 60) | def repeat
          method repeat_x? (line 71) | def repeat_x?
          method repeat_y? (line 75) | def repeat_y?
          method no_repeat? (line 79) | def no_repeat?
          method position (line 84) | def position
          method offset (line 89) | def offset
          method spacing (line 94) | def spacing
          method digest (line 99) | def digest
          method mtime (line 104) | def mtime
          method hover? (line 109) | def hover?
          method hover (line 114) | def hover
          method target? (line 119) | def target?
          method target (line 124) | def target
          method active? (line 129) | def active?
          method active (line 134) | def active
          method focus? (line 139) | def focus?
          method focus (line 144) | def focus
          method parent (line 148) | def parent
          method dimensions (line 156) | def dimensions

FILE: cli/lib/compass/sass_extensions/sprites/image_methods.rb
  type Compass (line 1) | module Compass
    type SassExtensions (line 2) | module SassExtensions
      type Sprites (line 3) | module Sprites
        type ImageMethods (line 4) | module ImageMethods
          function image_for (line 6) | def image_for(name)
          function has_hover? (line 15) | def has_hover?(name)
          function has_target? (line 20) | def has_target?(name)
          function has_focus? (line 25) | def has_focus?(name)
          function has_active? (line 30) | def has_active?(name)
          function get_magic_selector_image (line 36) | def get_magic_selector_image(name, selector)
          function sprite_names (line 46) | def sprite_names

FILE: cli/lib/compass/sass_extensions/sprites/image_row.rb
  type Compass (line 3) | module Compass
    type SassExtensions (line 4) | module SassExtensions
      type Sprites (line 5) | module Sprites
        class ImageRow (line 6) | class ImageRow
          method initialize (line 12) | def initialize(max_width)
          method add (line 17) | def add(image)
          method height (line 25) | def height
          method width (line 29) | def width
          method total_width (line 33) | def total_width
          method efficiency (line 37) | def efficiency
          method will_fit? (line 41) | def will_fit?(image)

FILE: cli/lib/compass/sass_extensions/sprites/images.rb
  type Compass (line 1) | module Compass
    type SassExtensions (line 2) | module SassExtensions
      type Sprites (line 3) | module Sprites
        class Images (line 4) | class Images < Array
          method sort_by! (line 6) | def sort_by!(method)

FILE: cli/lib/compass/sass_extensions/sprites/layout.rb
  type Compass (line 2) | module Compass
    type SassExtensions (line 3) | module SassExtensions
      type Sprites (line 4) | module Sprites
        type Layout (line 5) | module Layout
          class SpriteLayout (line 6) | class SpriteLayout
            method initialize (line 11) | def initialize(images, kwargs={})
            method layout! (line 20) | def layout!
            method properties (line 24) | def properties

FILE: cli/lib/compass/sass_extensions/sprites/layout/diagonal.rb
  type Compass (line 1) | module Compass
    type SassExtensions (line 2) | module SassExtensions
      type Sprites (line 3) | module Sprites
        type Layout (line 4) | module Layout
          class Diagonal (line 5) | class Diagonal < SpriteLayout
            method layout! (line 7) | def layout!
            method calculate_width! (line 15) | def calculate_width!
            method calculate_height! (line 19) | def calculate_height!
            method calculate_positions! (line 23) | def calculate_positions!

FILE: cli/lib/compass/sass_extensions/sprites/layout/horizontal.rb
  type Compass (line 1) | module Compass
    type SassExtensions (line 2) | module SassExtensions
      type Sprites (line 3) | module Sprites
        type Layout (line 4) | module Layout
          class Horizontal (line 5) | class Horizontal < SpriteLayout
            method layout! (line 7) | def layout!
            method calculate_height! (line 16) | def calculate_height!
            method calculate_width! (line 24) | def calculate_width!
            method repeating_images? (line 28) | def repeating_images?
            method calculate_repeat_extra_height! (line 32) | def calculate_repeat_extra_height!
            method calculate_positions! (line 38) | def calculate_positions!
            method tile_images_that_repeat! (line 47) | def tile_images_that_repeat!

FILE: cli/lib/compass/sass_extensions/sprites/layout/smart.rb
  type Compass (line 1) | module Compass
    type SassExtensions (line 2) | module SassExtensions
      type Sprites (line 3) | module Sprites
        type Layout (line 4) | module Layout
          class Smart (line 5) | class Smart < SpriteLayout
            method layout! (line 7) | def layout!
            method calculate_positions! (line 13) | def calculate_positions!

FILE: cli/lib/compass/sass_extensions/sprites/layout/vertical.rb
  type Compass (line 1) | module Compass
    type SassExtensions (line 2) | module SassExtensions
      type Sprites (line 3) | module Sprites
        type Layout (line 4) | module Layout
          class Vertical (line 5) | class Vertical < SpriteLayout
            method layout! (line 7) | def layout!
            method calculate_width! (line 16) | def calculate_width!
            method calculate_height! (line 25) | def calculate_height!
            method repeating_images? (line 30) | def repeating_images?
            method calculate_repeat_extra_width! (line 34) | def calculate_repeat_extra_width!
            method calculate_positions! (line 40) | def calculate_positions!
            method tile_images_that_repeat! (line 49) | def tile_images_that_repeat!

FILE: cli/lib/compass/sass_extensions/sprites/layout_methods.rb
  type Compass (line 1) | module Compass
    type SassExtensions (line 2) | module SassExtensions
      type Sprites (line 3) | module Sprites
        type LayoutMethods (line 4) | module LayoutMethods
          function smart? (line 10) | def smart?
          function horizontal? (line 14) | def horizontal?
          function diagonal? (line 18) | def diagonal?
          function vertical? (line 22) | def vertical?
          function layout (line 26) | def layout
          function compute_image_positions! (line 32) | def compute_image_positions!

FILE: cli/lib/compass/sass_extensions/sprites/row_fitter.rb
  type Compass (line 3) | module Compass
    type SassExtensions (line 4) | module SassExtensions
      type Sprites (line 5) | module Sprites
        class RowFitter (line 6) | class RowFitter
          method initialize (line 12) | def initialize(images)
          method fit! (line 23) | def fit!(style = :scan)
          method width (line 28) | def width
          method height (line 32) | def height
          method efficiency (line 36) | def efficiency
          method new_row (line 41) | def new_row(image = nil)
          method fast_fit (line 47) | def fast_fit
          method scan_fit (line 59) | def scan_fit

FILE: cli/lib/compass/sass_extensions/sprites/sprite_map.rb
  type Compass (line 1) | module Compass
    type SassExtensions (line 2) | module SassExtensions
      type Sprites (line 3) | module Sprites
        class SpriteMap (line 4) | class SpriteMap < Sass::Script::Value::Base
          method from_uri (line 16) | def self.from_uri(uri, context, kwargs)
          method relative_name (line 26) | def self.relative_name(sprite)
          method initialize (line 37) | def initialize(sprites, path, name, context, kwargs)
          method sort_method (line 53) | def sort_method
          method inspect (line 57) | def inspect
          method to_s (line 68) | def to_s(kwargs = self.kwargs)
          method respond_to? (line 72) | def respond_to?(meth)
          method method_missing (line 76) | def method_missing(meth, *args, &block)
          method modulize (line 86) | def modulize

FILE: cli/lib/compass/sass_extensions/sprites/sprite_methods.rb
  type Compass (line 1) | module Compass
    type SassExtensions (line 2) | module SassExtensions
      type Sprites (line 3) | module Sprites
        type SpriteMethods (line 4) | module SpriteMethods
          function compute_image_metadata! (line 13) | def compute_image_metadata!
          function init_engine (line 20) | def init_engine
          function init_images (line 28) | def init_images
          function name_and_hash (line 38) | def name_and_hash
          function filename (line 43) | def filename
          function relativize (line 47) | def relativize(path)
          function generate (line 52) | def generate
          function cleanup_old_sprites (line 65) | def cleanup_old_sprites
          function generation_required? (line 74) | def generation_required?
          function uniqueness_hash (line 79) | def uniqueness_hash
          function save! (line 96) | def save!
          function image_filenames (line 106) | def image_filenames
          function outdated? (line 111) | def outdated?
          function mtime (line 119) | def mtime
          function size (line 124) | def size
          function log (line 128) | def log(action, filename, *extra)

FILE: cli/lib/compass/sprite_importer.rb
  type Compass (line 3) | module Compass
    class SpriteImporter (line 4) | class SpriteImporter < Sass::Importers::Base
      method find_all_sprite_map_files (line 16) | def self.find_all_sprite_map_files(path)
      method find (line 22) | def find(uri, options)
      method find_relative (line 29) | def find_relative(uri, base, options)
      method to_s (line 33) | def to_s
      method hash (line 37) | def hash
      method eql? (line 41) | def eql?(other)
      method mtime (line 45) | def mtime(uri, options)
      method key (line 51) | def key(uri, options={})
      method public_url (line 55) | def public_url(*args)
      method path_and_name (line 60) | def self.path_and_name(uri)
      method sprite_name (line 69) | def self.sprite_name(uri)
      method path (line 75) | def self.path(uri)
      method files (line 81) | def self.files(uri)
      method sprite_names (line 93) | def self.sprite_names(uri)
      method sass_options (line 100) | def self.sass_options(uri, importer, options)
      method sass_engine (line 105) | def self.sass_engine(uri, name, importer, options)
      method content_for_images (line 111) | def self.content_for_images(uri, name, skip_overrides = false)

FILE: cli/lib/compass/sprite_importer/binding.rb
  type Compass (line 2) | module Compass
    type Sprites (line 3) | module Sprites
      class Binding (line 4) | class Binding < OpenStruct
        method get_binding (line 6) | def get_binding

FILE: cli/lib/compass/stats.rb
  type Compass (line 1) | module Compass
    type Stats (line 2) | module Stats
      class StatsVisitor (line 3) | class StatsVisitor
        method initialize (line 5) | def initialize
        method visit (line 11) | def visit(node)
        method up (line 19) | def up(node)
        method down (line 21) | def down(node)
        method import? (line 23) | def import?(node)
      class CssFile (line 29) | class CssFile
        method initialize (line 33) | def initialize(path)
        method contents (line 41) | def contents
        method lines (line 44) | def lines
        method analyze! (line 47) | def analyze!
      class SassFile (line 57) | class SassFile
        method initialize (line 62) | def initialize(path)
        method contents (line 65) | def contents
        method tree (line 68) | def tree
        method visit_tree! (line 73) | def visit_tree!
        method analyze! (line 78) | def analyze!
        method lines (line 82) | def lines
        method rule_count (line 85) | def rule_count
        method prop_count (line 88) | def prop_count
        method mixin_def_count (line 91) | def mixin_def_count
        method mixin_count (line 94) | def mixin_count

FILE: cli/lib/compass/test_case.rb
  type Compass (line 1) | module Compass
    class TestCase (line 18) | class TestCase < (defined?(ActiveSupport::TestCase) ? ActiveSupport::T...
      method setup (line 20) | def setup
      method compile (line 25) | def compile(stylesheet)
      method assert_compiles (line 33) | def assert_compiles(stylesheet, &block)

FILE: cli/lib/compass/version.rb
  type Compass (line 2) | module Compass
    type Version (line 3) | module Version
      function scope (line 4) | def scope(file) # :nodoc:
      function parse_version (line 8) | def parse_version(version, name)
      function version (line 28) | def version

FILE: cli/test/helpers/command_line.rb
  type Compass::CommandLineHelper (line 3) | module Compass::CommandLineHelper
    function compass (line 4) | def compass(*arguments)
    function decolorize (line 51) | def decolorize(str)
    class Responder (line 55) | class Responder
      method initialize (line 57) | def initialize
      method respond_to (line 60) | def respond_to(prompt, options = {})
      method response_for (line 63) | def response_for(prompt)
      method assert_required_responses! (line 77) | def assert_required_responses!
    function assert_action_performed (line 86) | def assert_action_performed(action, path)
    function within_tmp_directory (line 99) | def within_tmp_directory(dir = "tmp")
    function execute (line 109) | def execute(*arguments)

FILE: cli/test/helpers/diff.rb
  type Compass (line 3) | module Compass
    type Diff (line 4) | module Diff
      function diff_as_string (line 6) | def diff_as_string(data_old, data_new)
      function format (line 40) | def format
      function context_lines (line 44) | def context_lines

FILE: cli/test/helpers/io.rb
  type Compass (line 1) | module Compass
    type IoHelper (line 2) | module IoHelper
      function capture_output (line 3) | def capture_output
      function capture_warning (line 11) | def capture_warning
      function capture_pipe (line 19) | def capture_pipe(io, options = {})

FILE: cli/test/helpers/rails.rb
  type Compass (line 1) | module Compass
    type RailsHelper (line 2) | module RailsHelper
      function generate_rails_app_directories (line 3) | def generate_rails_app_directories(name)
      function generate_rails_app (line 13) | def generate_rails_app(name, dir = nil)

FILE: cli/test/helpers/test_case.rb
  type Compass (line 1) | module Compass
    type TestCaseHelper (line 2) | module TestCaseHelper
      function absolutize (line 3) | def absolutize(path)
      function compile_for_project (line 14) | def compile_for_project(contents, options = {})
      function assert_correct (line 20) | def assert_correct(before, after)
      type ClassMethods (line 28) | module ClassMethods
        function let (line 30) | def let(method, &block)
        function it (line 34) | def it(name, &block)
        function test (line 38) | def test(name, &block)
        function setup (line 42) | def setup(&block)
        function after (line 48) | def after(&block)
        function underscore (line 56) | def underscore(string)

FILE: cli/test/integrations/compass_test.rb
  class CompassTest (line 7) | class CompassTest < Test::Unit::TestCase
    method setup (line 9) | def setup
    method teardown (line 13) | def teardown
    method test_on_stylesheet_saved_callback (line 21) | def test_on_stylesheet_saved_callback
    method test_on_stylesheet_error_callback (line 35) | def test_on_stylesheet_error_callback
    method test_empty_project (line 46) | def test_empty_project
    method test_compass (line 56) | def test_compass
    method test_sourcemaps (line 67) | def test_sourcemaps
    method test_env_in_development (line 78) | def test_env_in_development
    method test_env_in_production (line 89) | def test_env_in_production
    method test_busted_font_urls (line 100) | def test_busted_font_urls
    method test_busted_image_urls (line 111) | def test_busted_image_urls
    method test_with_sass_globbing (line 122) | def test_with_sass_globbing
    method test_image_urls (line 133) | def test_image_urls
    method test_relative (line 144) | def test_relative
    method assert_no_errors (line 156) | def assert_no_errors(css_file, project_name)
    method assert_renders_correctly (line 162) | def assert_renders_correctly(*arguments)
    method within_project (line 187) | def within_project(project_name, config_block = nil)
    method each_css_file (line 210) | def each_css_file(dir, &block)
    method each_sass_file (line 214) | def each_sass_file(sass_dir = nil)
    method save_output (line 222) | def save_output(dir)
    method project_path (line 227) | def project_path(project_name)
    method configuration_file (line 231) | def configuration_file(project_name)
    method tempfile_path (line 235) | def tempfile_path(project_name)
    method template_path (line 239) | def template_path(project_name)
    method result_path (line 243) | def result_path(project_name)
    method save_path (line 247) | def save_path(project_name)
    method filename (line 251) | def filename
    method output_file (line 255) | def output_file

FILE: cli/test/integrations/sprites_test.rb
  class SpritesTest (line 8) | class SpritesTest < Test::Unit::TestCase
    method setup (line 10) | def setup
    method teardown (line 29) | def teardown
    method map_location (line 36) | def map_location(file)
    method map_files (line 40) | def map_files(glob)
    method image_size (line 44) | def image_size(file)
    method image_md5 (line 48) | def image_md5(file)
    method render (line 54) | def render(scss)
    method clean (line 66) | def clean(string)

FILE: cli/test/test_helper.rb
  class String (line 11) | class String
    method name (line 12) | def name
  class Test::Unit::TestCase (line 22) | class Test::Unit::TestCase
    method fixture_path (line 28) | def fixture_path
  type SpriteHelper (line 34) | module SpriteHelper
    function init_sprite_helper (line 37) | def init_sprite_helper
    function sprite_map_test (line 45) | def sprite_map_test(options, uri = URI)
    function create_sprite_temp (line 55) | def create_sprite_temp
    function clean_up_sprites (line 60) | def clean_up_sprites

FILE: cli/test/units/actions_test.rb
  class ActionsTest (line 4) | class ActionsTest < Test::Unit::TestCase
    class BaseActionExtender (line 5) | class BaseActionExtender
      method options (line 7) | def options
      method working_path (line 10) | def working_path

FILE: cli/test/units/caniuse_test.rb
  class CanIUseTest (line 4) | class CanIUseTest < Test::Unit::TestCase
    method caniuse (line 6) | def caniuse
    method test_unknown_browsers (line 12) | def test_unknown_browsers
    method test_browser_names (line 17) | def test_browser_names
    method test_prefixes (line 21) | def test_prefixes
    method test_prefix (line 26) | def test_prefix
    method test_browsers_with_prefix (line 34) | def test_browsers_with_prefix
    method test_capabilities (line 41) | def test_capabilities
    method test_usage (line 116) | def test_usage
    method test_prefixed_usage (line 132) | def test_prefixed_usage
    method test_requires_prefix (line 140) | def test_requires_prefix
    method test_browser_ranges_only_prefixed (line 150) | def test_browser_ranges_only_prefixed
    method test_ranges_are_empty_when_prefix_doesnt_exit (line 161) | def test_ranges_are_empty_when_prefix_doesnt_exit
    method test_browser_ranges_including_unprefixed (line 167) | def test_browser_ranges_including_unprefixed
    method test_capability_matches (line 178) | def test_capability_matches
    method test_omitted_usage (line 187) | def test_omitted_usage

FILE: cli/test/units/command_line_test.rb
  class CommandLineTest (line 7) | class CommandLineTest < Test::Unit::TestCase
    method teardown (line 12) | def teardown
    method test_print_version (line 16) | def test_print_version
    method test_basic_install (line 21) | def test_basic_install
    method test_basic_update (line 46) | def test_basic_update

FILE: cli/test/units/compass_util_test.rb
  class CompassUtilTest (line 3) | class CompassUtilTest < Test::Unit::TestCase
    method test_warn (line 4) | def test_warn

FILE: cli/test/units/compiler_test.rb
  class CompilerTest (line 4) | class CompilerTest < Test::Unit::TestCase

FILE: cli/test/units/configuration_test.rb
  class ConfigurationTest (line 5) | class ConfigurationTest < Test::Unit::TestCase
    method test_parse_and_serialize (line 22) | def test_parse_and_serialize
    method test_custom_watch (line 64) | def test_custom_watch
    method test_serialization_warns_with_asset_host_set (line 76) | def test_serialization_warns_with_asset_host_set
    class TestData (line 91) | class TestData < Compass::Configuration::FileData
      method initialize (line 92) | def initialize
    method test_accumulated_array_does_not_clobber (line 99) | def test_accumulated_array_does_not_clobber
    method test_inherited_array_can_clobber (line 108) | def test_inherited_array_can_clobber
    method test_inherited_array_can_append (line 117) | def test_inherited_array_can_append
    method test_inherited_array_can_append_2 (line 126) | def test_inherited_array_can_append_2
    method test_inherited_array_can_remove (line 138) | def test_inherited_array_can_remove
    method test_inherited_array_combined_augmentations (line 147) | def test_inherited_array_combined_augmentations
    method test_inherited_array_long_methods (line 157) | def test_inherited_array_long_methods
    method test_inherited_array_augmentations_can_be_clobbered (line 167) | def test_inherited_array_augmentations_can_be_clobbered
    method test_inherited_array_augmentations_after_clobbering (line 178) | def test_inherited_array_augmentations_after_clobbering
    method test_serialization_warns_with_asset_cache_buster_set (line 191) | def test_serialization_warns_with_asset_cache_buster_set
    method test_cache_buster_file_not_passed_when_the_file_does_not_exist (line 208) | def test_cache_buster_file_not_passed_when_the_file_does_not_exist
    method test_cache_buster_file_is_closed (line 229) | def test_cache_buster_file_is_closed
    method test_cache_buster_handles_id_refs_for_images (line 251) | def test_cache_buster_handles_id_refs_for_images
    method test_default_cache_buster_handles_id_refs_for_images (line 279) | def test_default_cache_buster_handles_id_refs_for_images
    method test_cache_buster_handles_id_refs_for_fonts (line 293) | def test_cache_buster_handles_id_refs_for_fonts
    method test_inherited_arrays_augmentations_serialize (line 322) | def test_inherited_arrays_augmentations_serialize
    method test_inherited_arrays_clobbering_with_augmentations_serialize (line 333) | def test_inherited_arrays_clobbering_with_augmentations_serialize
    method test_additional_import_paths (line 344) | def test_additional_import_paths
    method test_additional_import_paths_can_be_importers (line 393) | def test_additional_import_paths_can_be_importers
    method test_config_with_pathname (line 409) | def test_config_with_pathname
    method test_sass_options (line 454) | def test_sass_options
    method test_sprite_load_path_clobbers (line 491) | def test_sprite_load_path_clobbers
    method test_strip_trailing_directory_separators (line 528) | def test_strip_trailing_directory_separators
    method test_custom_configuration_properties (line 554) | def test_custom_configuration_properties
    method load_paths_as_strings (line 607) | def load_paths_as_strings(load_paths)

FILE: cli/test/units/regressions_test.rb
  class RegressionsTest (line 6) | class RegressionsTest < Test::Unit::TestCase
    method setup (line 10) | def setup
    method teardown (line 15) | def teardown
    method test_issue911_sprites_with_globbing_and_line_comments (line 20) | def test_issue911_sprites_with_globbing_and_line_comments

FILE: cli/test/units/sass_extensions_test.rb
  class SassExtensionsTest (line 3) | class SassExtensionsTest < Test::Unit::TestCase
    method test_simple (line 4) | def test_simple
    method test_left_side_expansion (line 7) | def test_left_side_expansion
    method test_right_side_expansion (line 10) | def test_right_side_expansion
    method test_both_sides_expansion (line 13) | def test_both_sides_expansion
    method test_three_selectors_expansion (line 16) | def test_three_selectors_expansion
    method test_third_argument_expansion (line 19) | def test_third_argument_expansion
    method test_enumerate (line 23) | def test_enumerate
    method test_append_selector (line 27) | def test_append_selector
    method test_headers (line 32) | def test_headers
    method test_scale_lightness (line 40) | def test_scale_lightness
    method test_adjust_lightness (line 45) | def test_adjust_lightness
    method test_scale_saturation (line 52) | def test_scale_saturation
    method test_adjust_saturation (line 57) | def test_adjust_saturation
    method test_shade (line 62) | def test_shade
    method test_tint (line 67) | def test_tint
    method test_if_function (line 72) | def test_if_function
    method test_math_functions (line 77) | def test_math_functions
    method test_blank (line 123) | def test_blank
    method test_css2_fallback (line 131) | def test_css2_fallback
    method test_font_files (line 137) | def test_font_files
    method test_inline_font_files (line 191) | def test_inline_font_files
    method test_font_formats (line 200) | def test_font_formats
    method test_linear_gradient_with_calc (line 204) | def test_linear_gradient_with_calc
    method test_image_size_should_respond_to_to_path (line 209) | def test_image_size_should_respond_to_to_path
    method test_reject (line 217) | def test_reject
    method evaluate (line 223) | def evaluate(value)

FILE: cli/test/units/sass_extenstions/gradients_test.rb
  class GradientTestClass (line 1) | class GradientTestClass
    method options (line 4) | def self.options
  class GradientsTest (line 12) | class GradientsTest < Test::Unit::TestCase
    method klass (line 15) | def klass

FILE: cli/test/units/sprites/engine_test.rb
  class EngineTest (line 3) | class EngineTest < Test::Unit::TestCase
    method setup (line 5) | def setup
    method taredown (line 14) | def taredown

FILE: cli/test/units/sprites/image_row_test.rb
  class ImageRowTest (line 3) | class ImageRowTest < Test::Unit::TestCase
    method setup (line 5) | def setup
    method teardown (line 19) | def teardown
    method image_row (line 23) | def image_row(max)
    method populate_row (line 27) | def populate_row

FILE: cli/test/units/sprites/image_test.rb
  class SpritesImageTest (line 5) | class SpritesImageTest < Test::Unit::TestCase
    method setup (line 8) | def setup
    method teardown (line 12) | def teardown
    method sprite_path (line 18) | def sprite_path
    method sprite_name (line 22) | def sprite_name
    method digest (line 26) | def digest
    method test_map (line 30) | def test_map(options ={})
    method test_image (line 35) | def test_image(options ={})

FILE: cli/test/units/sprites/images_test.rb
  class ImagesTest (line 4) | class ImagesTest < Test::Unit::TestCase
    method setup (line 6) | def setup

FILE: cli/test/units/sprites/importer_test.rb
  class ImporterTest (line 3) | class ImporterTest < Test::Unit::TestCase
    method setup (line 6) | def setup
    method teardown (line 13) | def teardown
    method options (line 17) | def options

FILE: cli/test/units/sprites/layout_test.rb
  class LayoutTest (line 3) | class LayoutTest < Test::Unit::TestCase
    method setup (line 6) | def setup
    method teardown (line 16) | def teardown
    method vertical (line 22) | def vertical
    method smart (line 28) | def smart
    method diagonal (line 41) | def diagonal
    method horizontal (line 47) | def horizontal(options= {}, uri=URI)

FILE: cli/test/units/sprites/row_fitter_test.rb
  class RowFitterTest (line 4) | class RowFitterTest < Test::Unit::TestCase
    method setup (line 6) | def setup
    method row_fitter (line 11) | def row_fitter(images = nil)
    method teardown (line 15) | def teardown
    method create_images (line 19) | def create_images(dims)
    method basic_dims (line 27) | def basic_dims

FILE: cli/test/units/sprites/sprite_command_test.rb
  class SpriteCommandTest (line 3) | class SpriteCommandTest < Test::Unit::TestCase
    method setup (line 10) | def setup
    method config_data (line 20) | def config_data
    method create_temp_cli_dir (line 26) | def create_temp_cli_dir
    method run_compass_with_options (line 32) | def run_compass_with_options(options)
    method options_to_cli (line 38) | def options_to_cli(options)
    method teardown (line 42) | def teardown

FILE: cli/test/units/sprites/sprite_map_test.rb
  class SpriteMapTest (line 3) | class SpriteMapTest < Test::Unit::TestCase
    method setup (line 6) | def setup
    method teardown (line 19) | def teardown

FILE: compass-style.org/assets/javascripts/install.js
  function showInstallCommand (line 1) | function showInstallCommand() {
  function attachMadlibBehaviors (line 97) | function attachMadlibBehaviors() {
  function setupMadlib (line 114) | function setupMadlib() {

FILE: compass-style.org/assets/javascripts/shBrushCss.js
  function Brush (line 22) | function Brush()

FILE: compass-style.org/assets/javascripts/shBrushPlain.js
  function Brush (line 22) | function Brush()

FILE: compass-style.org/assets/javascripts/shBrushSass.js
  function Brush (line 22) | function Brush()

FILE: compass-style.org/assets/javascripts/shBrushScss.js
  function Brush (line 22) | function Brush()

FILE: compass-style.org/assets/javascripts/shBrushXml.js
  function Brush (line 22) | function Brush()

FILE: compass-style.org/assets/javascripts/site.js
  function changeTheme (line 1) | function changeTheme(theme, setCookie) {
  function changeSyntax (line 13) | function changeSyntax(style, setCookie){
  function changeExampleStyleSyntax (line 20) | function changeExampleStyleSyntax(style, setCookie){
  function changeExampleMarkupSyntax (line 27) | function changeExampleMarkupSyntax(markup){
  function setThemePreference (line 34) | function setThemePreference(theme) {
  function getThemePreference (line 42) | function getThemePreference(defaultTheme) {
  function setStyleSyntaxPreference (line 51) | function setStyleSyntaxPreference (mainSyntax) {
  function setExampleStyleSyntaxPreference (line 56) | function setExampleStyleSyntaxPreference (exampleStyle) {
  function setExampleMarkupSyntaxPreference (line 61) | function setExampleMarkupSyntaxPreference (exampleMarkup) {
  function getSyntaxPreference (line 66) | function getSyntaxPreference(defaultSyntax, defaultMarkup) {

FILE: compass-style.org/lib/blog.rb
  function blog_posts_in_order (line 5) | def blog_posts_in_order
  function previous_post (line 9) | def previous_post(item = @item)
  function next_post (line 16) | def next_post(item = @item)
  function blog_date (line 23) | def blog_date(item = @item)
  function authors (line 29) | def authors
  function author (line 35) | def author(author_id)

FILE: compass-style.org/lib/data_sources/asset_data_source.rb
  type Nanoc3::DataSources (line 1) | module Nanoc3::DataSources
    class AssetDataSource (line 6) | class AssetDataSource < Nanoc3::DataSource
      method items (line 9) | def items
      method checksum_for (line 40) | def checksum_for(*filenames)

FILE: compass-style.org/lib/data_sources/better_combined_datasource.rb
  class BetterFilesystemCombined (line 3) | class BetterFilesystemCombined < Nanoc3::DataSources::FilesystemCombined
    method parse_file (line 6) | def parse_file(filename, kind)

FILE: compass-style.org/lib/data_sources/core_extensions.rb
  class Object (line 1) | class Object
    method try (line 2) | def try(method, *args, &block)
  class NilClass (line 7) | class NilClass
    method try (line 8) | def try(*args)

FILE: compass-style.org/lib/data_sources/nanoc_monkey_patches.rb
  class Nanoc3::Site (line 1) | class Nanoc3::Site
    method cached (line 2) | def cached(key)
    method cached_stuff (line 9) | def cached_stuff

FILE: compass-style.org/lib/data_sources/syntax_highter.rb
  class SyntaxHighlighterFilter (line 3) | class SyntaxHighlighterFilter < Nanoc3::Filter
    method highlight (line 6) | def highlight(code, type)
    method pygmentize (line 12) | def pygmentize(code, type)
    method coderay (line 21) | def coderay(code, type)
    method run (line 27) | def run(content, params={})

FILE: compass-style.org/lib/default.rb
  function body_class (line 11) | def body_class(item)
  function body_id (line 18) | def body_id(item)
  function body_attributes (line 26) | def body_attributes(item)
  type Enumerable (line 33) | module Enumerable
    function sorted_and_grouped_by_name (line 34) | def sorted_and_grouped_by_name
  class Recycler (line 39) | class Recycler
    method initialize (line 42) | def initialize *values
    method next (line 46) | def next
    method reset! (line 52) | def reset!
  function cycle (line 57) | def cycle(*args)
  function default_path (line 61) | def default_path(item)
  function find (line 65) | def find(identifier)
  function get_var (line 69) | def get_var(instance_var)
  function sidebar_item (line 73) | def sidebar_item(item)
  function sidebar_stylesheet (line 83) | def sidebar_stylesheet(item)
  function item_tree (line 89) | def item_tree(item, options = {})
  function tutorial_item (line 125) | def tutorial_item(path)
  function documentation_item (line 132) | def documentation_item(path)
  function compass_version (line 140) | def compass_version
  function long_compass_version (line 145) | def long_compass_version
  function sprite_tutorial_links (line 151) | def sprite_tutorial_links(index=false)

FILE: compass-style.org/lib/examples.rb
  function example_haml (line 1) | def example_haml
  function example_html (line 6) | def example_html
  function example_scss (line 10) | def example_scss
  function example_sass (line 15) | def example_sass
  function example_css (line 19) | def example_css

FILE: compass-style.org/lib/search.rb
  function search_terms_for (line 36) | def search_terms_for(item)
  function search_index (line 47) | def search_index

FILE: compass-style.org/lib/stylesheets.rb
  function stylesheets_dir (line 3) | def stylesheets_dir(framework)
  function tree_key (line 7) | def tree_key(item)
  function tree (line 11) | def tree(item)
  function imports (line 20) | def imports(item)
  function reference_item (line 31) | def reference_item(options)
  function departialize (line 45) | def departialize(path)
  function reference_path (line 49) | def reference_path(options)
  function import_paths (line 56) | def import_paths
  function stylesheet_path (line 68) | def stylesheet_path(ss)
  function possible_filenames_for_stylesheet (line 81) | def possible_filenames_for_stylesheet(ss)
  function mixins (line 101) | def mixins(item)
  function selectors (line 121) | def selectors(item)
  function functions (line 146) | def functions(item)
  function constants (line 166) | def constants(item)
  function all_constants (line 187) | def all_constants
  function all_mixins (line 195) | def all_mixins
  function all_functions (line 203) | def all_functions
  function sass_functions (line 213) | def sass_functions
  function example_items (line 217) | def example_items
  function item_for_function_name (line 225) | def item_for_function_name(function_name)
  function examples_for_item (line 231) | def examples_for_item(item)
  function examples (line 240) | def examples(item, mixin = nil)
  function format_doc (line 250) | def format_doc(docstring)

FILE: compass-style.org/lib/stylesheets/sass_extensions.rb
  type Sass (line 2) | module Sass
    type Tree (line 3) | module Tree
      class RuleNode (line 4) | class RuleNode
        method identifier (line 6) | def identifier
        method name (line 14) | def name
      class VariableNode (line 18) | class VariableNode < Node
      class DebugNode (line 24) | class DebugNode < Node
        method to_sass (line 25) | def to_sass
      class MixinNode (line 29) | class MixinNode < Node
      class VariableNode (line 33) | class VariableNode < Node
      type HasSignature (line 36) | module HasSignature
        function sass_signature (line 37) | def sass_signature(format = :text)
        function arglist_to_sass (line 42) | def arglist_to_sass(format = :text)
        function arg_to_sass (line 49) | def arg_to_sass(arg, format = :text)
      class MixinDefNode (line 65) | class MixinDefNode < Node
        method sass_signature (line 72) | def sass_signature(mode = :definition, format = :text)
      class FunctionNode (line 83) | class FunctionNode < Node
      class ImportNode (line 89) | class ImportNode < RootNode
      class CommentNode (line 92) | class CommentNode < Node
        method clean (line 99) | def self.clean(docstring)
        method docstring (line 102) | def docstring
        method doc (line 107) | def doc
    type Script (line 116) | module Script
      class Color (line 117) | class Color < Literal
        method to_sass (line 118) | def to_sass(options = {})

FILE: core/lib/compass/browser_support.rb
  type Compass (line 1) | module Compass
    type BrowserSupport (line 2) | module BrowserSupport
      function add_support (line 23) | def add_support(function, *aspects)
      function remove_support (line 45) | def remove_support(function, *aspects)
      function supports? (line 55) | def supports?(function, aspect)
      function has_aspect? (line 59) | def has_aspect?(function)

FILE: core/lib/compass/configuration.rb
  type Compass (line 1) | module Compass
    type Configuration (line 2) | module Configuration
      function attributes_for_directory (line 5) | def attributes_for_directory(dir_name, http_dir_name = dir_name)
      function add_configuration_property (line 21) | def add_configuration_property(name, comment = nil, &default)
      function remove_configuration_property (line 44) | def remove_configuration_property(name)
    function configuration (line 122) | def configuration
    function default_configuration (line 130) | def default_configuration
    function add_configuration (line 134) | def add_configuration(data, filename = nil)
    function reset_configuration! (line 152) | def reset_configuration!
    function projectize (line 157) | def projectize(path, project_path = nil)
    function deprojectize (line 162) | def deprojectize(path, project_path = nil)

FILE: core/lib/compass/configuration/adapters.rb
  type Compass (line 1) | module Compass
    type Configuration (line 2) | module Configuration
      type Adapters (line 5) | module Adapters
        function to_compiler_arguments (line 6) | def to_compiler_arguments(additional_options = {})
        function to_sass_plugin_options (line 16) | def to_sass_plugin_options
        function resolve_additional_import_paths (line 47) | def resolve_additional_import_paths
        function absolute_path? (line 57) | def absolute_path?(path)
        function to_sass_engine_options (line 62) | def to_sass_engine_options
        function sass_load_paths (line 80) | def sass_load_paths
        function sass_3_4? (line 101) | def sass_3_4?
      class Data (line 105) | class Data

FILE: core/lib/compass/configuration/data.rb
  type Compass (line 1) | module Compass
    type Configuration (line 2) | module Configuration
      class Data (line 18) | class Data
        method initialize (line 83) | def initialize(name, attr_hash = nil)
        method set_all (line 90) | def set_all(attr_hash)
        method add_import_path (line 98) | def add_import_path(*paths)
        method asset_host (line 113) | def asset_host(&block)
        method asset_cache_buster (line 140) | def asset_cache_buster(simple = nil, &block)
        method watch (line 161) | def watch(glob, &block)
        method watches (line 166) | def watches
        method require (line 177) | def require(lib)
        method load (line 182) | def load(framework_dir)
        method discover (line 188) | def discover(frameworks_dir)
        method relative_assets? (line 193) | def relative_assets?

FILE: core/lib/compass/configuration/defaults.rb
  type Compass (line 1) | module Compass
    type Configuration (line 2) | module Configuration
      type Defaults (line 3) | module Defaults
        function default_project_path (line 4) | def default_project_path
        function default_project_type (line 8) | def default_project_type
        function default_http_path (line 12) | def default_http_path
        function default_extensions_dir (line 16) | def default_extensions_dir
        function default_css_dir (line 20) | def default_css_dir
        function default_sass_dir (line 24) | def default_sass_dir
        function default_fonts_dir (line 28) | def default_fonts_dir
        function default_images_dir (line 32) | def default_images_dir
        function default_environment (line 36) | def default_environment
        function default_output_style (line 40) | def default_output_style
        function default_line_comments (line 48) | def default_line_comments
        function default_color_output (line 52) | def default_color_output
        function default_sass_path (line 56) | def default_sass_path
        function default_css_path (line 62) | def default_css_path
        function default_images_path (line 68) | def default_images_path
        function default_generated_images_path (line 74) | def default_generated_images_path
        function default_javascripts_path (line 82) | def default_javascripts_path
        function default_extensions_path (line 88) | def default_extensions_path
        function default_fonts_path (line 94) | def default_fonts_path
        function default_cache_dir (line 100) | def default_cache_dir
        function default_cache_path (line 104) | def default_cache_path
        function default_generated_images_dir (line 116) | def default_generated_images_dir
        function default_http_generated_images_dir (line 120) | def default_http_generated_images_dir
        function default_http_images_dir (line 124) | def default_http_images_dir
        function default_sprite_load_path (line 128) | def default_sprite_load_path
        function default_http_images_path (line 132) | def default_http_images_path
        function default_http_stylesheets_dir (line 136) | def default_http_stylesheets_dir
        function default_http_stylesheets_path (line 140) | def default_http_stylesheets_path
        function default_http_generated_images_path (line 144) | def default_http_generated_images_path
        function default_http_fonts_dir (line 148) | def default_http_fonts_dir
        function default_http_fonts_path (line 152) | def default_http_fonts_path
        function default_http_javascripts_dir (line 156) | def default_http_javascripts_dir
        function default_http_javascripts_path (line 160) | def default_http_javascripts_path
        function default_cache (line 164) | def default_cache
        function default_preferred_syntax (line 168) | def default_preferred_syntax
        function default_sprite_engine (line 172) | def default_sprite_engine
        function default_chunky_png_options (line 176) | def default_chunky_png_options
        function http_join (line 186) | def http_join(*segments)
        function http_pathify (line 194) | def http_pathify(path)
        function http_root_relative (line 202) | def http_root_relative(path)

FILE: core/lib/compass/configuration/inheritance.rb
  type Compass (line 1) | module Compass
    type Configuration (line 2) | module Configuration
      type Inheritance (line 6) | module Inheritance
        function included (line 8) | def self.included(base)
        type ClassMethods (line 17) | module ClassMethods
          function inherited_writer (line 18) | def inherited_writer(*attributes)
          function inherited_reader (line 42) | def inherited_reader(*attributes)
          function inherited_accessor (line 59) | def inherited_accessor(*attributes)
          class ArrayProxy (line 64) | class ArrayProxy
            method initialize (line 65) | def initialize(data, attr)
            method to_ary (line 68) | def to_ary
            method to_a (line 71) | def to_a
            method << (line 74) | def <<(v)
            method >> (line 77) | def >>(v)
            method serialize_to_config (line 80) | def serialize_to_config(prop)
            method method_missing (line 102) | def method_missing(m, *args, &block)
          function inherited_array (line 112) | def inherited_array(*attributes)
          function chained_method (line 162) | def chained_method(method)
        type InstanceMethods (line 178) | module InstanceMethods
          function on_top! (line 180) | def on_top!
          function set_top_level (line 184) | def set_top_level(new_top)
          function inherit_from! (line 192) | def inherit_from!(data)
          function reset_inheritance! (line 201) | def reset_inheritance!
          function with_defaults (line 205) | def with_defaults(data)
          function unset! (line 211) | def unset!(attribute)
          function set? (line 218) | def set?(attribute)
          function any_attributes_set? (line 223) | def any_attributes_set?
          function default_for (line 227) | def default_for(attribute)
          function read_without_default (line 235) | def read_without_default(attribute)
          function raw (line 249) | def raw(attribute)
          function read (line 255) | def read(attribute)
          function method_missing (line 263) | def method_missing(meth, *args, &block)
          function respond_to? (line 271) | def respond_to?(meth)
          function chain (line 281) | def chain
          function debug (line 287) | def debug

FILE: core/lib/compass/configuration/paths.rb
  type Compass::Configuration::Paths (line 1) | module Compass::Configuration::Paths
    function strip_trailing_separator (line 5) | def strip_trailing_separator(*attributes)

FILE: core/lib/compass/configuration/watch.rb
  type Compass (line 1) | module Compass
    type Configuration (line 2) | module Configuration
      class Watch (line 3) | class Watch
        method initialize (line 8) | def initialize(glob, &block)
        method run_callback (line 25) | def run_callback(base, relative, action)
        method run_once_per_changeset? (line 29) | def run_once_per_changeset?
        method match? (line 33) | def match?(changed_path)

FILE: core/lib/compass/core.rb
  type Compass (line 3) | module Compass
    type Core (line 4) | module Core
      function base_directory (line 8) | def base_directory(*subdirs)
      function lib_directory (line 11) | def lib_directory(*subdirs)
    type HasDeprecatedConstantsFromCore (line 18) | module HasDeprecatedConstantsFromCore
      function extended (line 19) | def self.extended(base)
    type SassExtensions (line 41) | module SassExtensions
      type Functions (line 44) | module Functions
    function shared_extension_paths (line 49) | def shared_extension_paths

FILE: core/lib/compass/core/caniuse.rb
  class Compass::Core::CanIUse (line 3) | class Compass::Core::CanIUse
    method initialize (line 9) | def initialize
    method browsers (line 42) | def browsers
    method prefix (line 47) | def prefix(browser, version = nil)
    method all_prefixes (line 61) | def all_prefixes(browser)
    method prefixes (line 72) | def prefixes(browsers = browsers())
    method browser_ranges (line 80) | def browser_ranges(capability, prefix = nil, include_unprefixed_versio...
    method find_first_prefixed_version (line 98) | def find_first_prefixed_version(browser, versions, capability, prefix)
    method omitted_usage (line 116) | def omitted_usage(browser, min_version, max_version = nil)
    method browsers_with_prefix (line 137) | def browsers_with_prefix(prefix)
    method capability_matches (line 156) | def capability_matches(support, capability_options_list)
    method prefixed_usage (line 164) | def prefixed_usage(prefix, capability, capability_options_list)
    method next_version (line 180) | def next_version(browser, version)
    method previous_version (line 187) | def previous_version(browser, version)
    method requires_prefix (line 196) | def requires_prefix(browser, min_version, capability, capability_optio...
    method versions (line 235) | def versions(browser, min_usage = 0)
    method capabilities (line 243) | def capabilities
    method usage (line 251) | def usage(browser, version)
    method caniuse_version (line 258) | def caniuse_version(browser, version)
    method inspect (line 263) | def inspect
    method capability_data (line 268) | def capability_data(capability)
    method browser_support (line 272) | def browser_support(browser, version, capability)
    method browser_data (line 278) | def browser_data(browser)
    method assert_valid_prefix (line 283) | def assert_valid_prefix(prefix)
    method assert_valid_browser (line 291) | def assert_valid_browser(browser)
    method assert_valid_capability (line 299) | def assert_valid_capability(capability)
    method assert_valid_version (line 307) | def assert_valid_version(browser, *versions)

FILE: core/lib/compass/core/generated_version.rb
  type Compass (line 1) | module Compass
    type Core (line 2) | module Core

FILE: core/lib/compass/core/sass_extensions.rb
  type Compass::Core::SassExtensions (line 6) | module Compass::Core::SassExtensions

FILE: core/lib/compass/core/sass_extensions/functions.rb
  type Compass::Core::SassExtensions::Functions (line 1) | module Compass::Core::SassExtensions::Functions
    type SassDeclarationHelper (line 2) | module SassDeclarationHelper
      function declare (line 3) | def declare(*args)
  type Sass::Script::Functions (line 19) | module Sass::Script::Functions
  class Sass::Script::Functions::EvaluationContext (line 39) | class Sass::Script::Functions::EvaluationContext

FILE: core/lib/compass/core/sass_extensions/functions/colors.rb
  type Compass::Core::SassExtensions::Functions::Colors (line 1) | module Compass::Core::SassExtensions::Functions::Colors
    function adjust_lightness (line 4) | def adjust_lightness(color, amount)
    function scale_lightness (line 13) | def scale_lightness(color, amount)
    function adjust_saturation (line 20) | def adjust_saturation(color, amount)
    function scale_saturation (line 29) | def scale_saturation(color, amount)
    function shade (line 35) | def shade(color, percentage)
    function tint (line 42) | def tint(color, percentage)
    function ie_hex_str (line 51) | def ie_hex_str(color)
    function scale_color_value (line 59) | def scale_color_value(value, amount)

FILE: core/lib/compass/core/sass_extensions/functions/configuration.rb
  type Compass::Core::SassExtensions::Functions::Configuration (line 2) | module Compass::Core::SassExtensions::Functions::Configuration
    function join_file_segments (line 7) | def join_file_segments(*segments)
    function absolute_path (line 13) | def absolute_path(relative_path)
    function split_filename (line 19) | def split_filename(path)
    function using_compass_compiler (line 29) | def using_compass_compiler
    function reset_configuration (line 34) | def reset_configuration()
    function add_sass_configuration (line 40) | def add_sass_configuration(project_path)
    function add_configuration (line 127) | def add_configuration(options)
    function runtime_writable_attributes (line 146) | def runtime_writable_attributes
    function common_parent_directory (line 150) | def common_parent_directory(directory1, directory2)
    function relative_path_from (line 155) | def relative_path_from(directory1, directory2)
    function update_sass_options! (line 159) | def update_sass_options!

FILE: core/lib/compass/core/sass_extensions/functions/constants.rb
  type Compass::Core::SassExtensions::Functions::Constants (line 1) | module Compass::Core::SassExtensions::Functions::Constants
    function is_position (line 3) | def is_position(position)
    function is_position_list (line 6) | def is_position_list(position_list)
    function opposite_position (line 10) | def opposite_position(position)
    function is_url (line 48) | def is_url(string)

FILE: core/lib/compass/core/sass_extensions/functions/cross_browser_support.rb
  type Compass::Core::SassExtensions::Functions::CrossBrowserSupport (line 1) | module Compass::Core::SassExtensions::Functions::CrossBrowserSupport
    class CSS2FallbackValue (line 4) | class CSS2FallbackValue < Sass::Script::Value::Base
      method children (line 6) | def children
      method initialize (line 9) | def initialize(value, css2_value)
      method inspect (line 13) | def inspect
      method to_s (line 16) | def to_s(options = self.options)
      method supports? (line 19) | def supports?(aspect)
      method has_aspect? (line 22) | def has_aspect?
      method to_css2 (line 25) | def to_css2(options = self.options)
    function prefixed (line 31) | def prefixed(prefix, *args)
    function prefix (line 48) | def prefix(prefix, *objects)
    function css2_fallback (line 69) | def css2_fallback(value, css2_value)
    function browsers (line 76) | def browsers(prefix = nil)
    function browser_capabilities (line 89) | def browser_capabilities
    function browser_versions (line 95) | def browser_versions(browser)
    function browser_requires_prefix (line 105) | def browser_requires_prefix(browser, version, capability, capability_o...
    function browser_prefix (line 120) | def browser_prefix(browser, version = nil)
    function browser_prefixes (line 130) | def browser_prefixes(browsers)
    function omitted_usage (line 143) | def omitted_usage(browser, min_version, max_version = nil)
    function previous_version (line 155) | def previous_version(browser, version)
    function next_version (line 164) | def next_version(browser, version)
    function prefix_usage (line 173) | def prefix_usage(prefix, capability, capability_options)
    function compare_browser_versions (line 189) | def compare_browser_versions(browser, version1, version2)
    function browser_ranges (line 217) | def browser_ranges(capability, prefix = null(), include_unprefixed_ver...
    function unbox_capability_options_list (line 233) | def unbox_capability_options_list(capability_options_list)
    function unbox_capability_options (line 257) | def unbox_capability_options(capability_options)

FILE: core/lib/compass/core/sass_extensions/functions/display.rb
  type Compass::Core::SassExtensions::Functions::Display (line 1) | module Compass::Core::SassExtensions::Functions::Display
    function elements_of_type (line 29) | def elements_of_type(display)

FILE: core/lib/compass/core/sass_extensions/functions/enumerate.rb
  type Compass::Core::SassExtensions::Functions::Enumerate (line 1) | module Compass::Core::SassExtensions::Functions::Enumerate
    function enumerate (line 2) | def enumerate(prefix, from, through, separator = nil)

FILE: core/lib/compass/core/sass_extensions/functions/env.rb
  type Compass::Core::SassExtensions::Functions::Env (line 1) | module Compass::Core::SassExtensions::Functions::Env
    function compass_env (line 5) | def compass_env
    function current_time (line 12) | def current_time(format = DEFAULT_TIME)
    function current_date (line 20) | def current_date(format = DEFAULT_DATE)
    function current_source_file (line 27) | def current_source_file(absolute = NOT_ABSOLUTE)
    function current_output_file (line 40) | def current_output_file(absolute = NOT_ABSOLUTE)
    function compass_extensions (line 53) | def compass_extensions
    function at_stylesheet_root (line 66) | def at_stylesheet_root

FILE: core/lib/compass/core/sass_extensions/functions/files.rb
  type Compass::Core::SassExtensions::Functions::Files (line 3) | module Compass::Core::SassExtensions::Functions::Files
    function md5sum (line 7) | def md5sum(file, format = nil)

FILE: core/lib/compass/core/sass_extensions/functions/font_files.rb
  type Compass::Core::SassExtensions::Functions::FontFiles (line 1) | module Compass::Core::SassExtensions::Functions::FontFiles
    function font_formats (line 13) | def font_formats(*args)
    function font_files (line 21) | def font_files(*args)
    function with_each_font_file (line 31) | def with_each_font_file(*args)

FILE: core/lib/compass/core/sass_extensions/functions/gradient_support.rb
  type Compass::Core::SassExtensions::Functions::GradientSupport (line 1) | module Compass::Core::SassExtensions::Functions::GradientSupport
    class CSS3AngleToSVGConverter (line 5) | class CSS3AngleToSVGConverter
      method initialize (line 8) | def initialize(angle)
      method handle_keywords (line 41) | def handle_keywords(angle)
      method in_radians (line 61) | def in_radians(angle)
      method sin2 (line 76) | def sin2(a)
      method x (line 81) | def x
      method y (line 89) | def y
      method x1 (line 97) | def x1
      method y1 (line 106) | def y1
      method x2 (line 115) | def x2
      method y2 (line 124) | def y2
      method scale (line 133) | def scale(p)
      method round6 (line 137) | def round6(v)
      method result (line 141) | def result(v)
    class ColorStop (line 146) | class ColorStop < Sass::Script::Value::Base
      method children (line 149) | def children
      method initialize (line 152) | def initialize(color, stop = nil)
      method inspect (line 157) | def inspect
      method assert_legal_color! (line 161) | def assert_legal_color!(color)
      method assert_legal_color_stop! (line 169) | def assert_legal_color_stop!(stop)
      method color_to_svg_s (line 179) | def self.color_to_svg_s(c)
      method color_to_svg_alpha (line 191) | def self.color_to_svg_alpha(c)
      method color_to_s (line 203) | def self.color_to_s(c)
      method to_s (line 211) | def to_s(options = self.options)
      method to_sass (line 224) | def to_sass(options = nil)
    type Gradient (line 229) | module Gradient
      function included (line 232) | def self.included(base)
      type ClassMethods (line 236) | module ClassMethods
        function standardized_prefix (line 237) | def standardized_prefix(prefix)
      function inspect (line 246) | def inspect
      function supports? (line 250) | def supports?(aspect)
      function has_aspect? (line 254) | def has_aspect?
      function is_position (line 258) | def is_position(pos)
      function angle? (line 262) | def angle?(value)
    class RadialGradient (line 271) | class RadialGradient < Sass::Script::Value::Base
      method children (line 276) | def children
      method initialize (line 280) | def initialize(position, shape_and_size, color_stops)
      method to_s (line 292) | def to_s(options = self.options)
      method to_s_prefixed (line 296) | def to_s_prefixed(options = self.options)
      method supports? (line 300) | def supports?(aspect)
      method to_webkit (line 312) | def to_webkit(options = self.options)
      method to_moz (line 319) | def to_moz(options = self.options)
      method to_official (line 326) | def to_official
      method new_standard_arguments (line 333) | def new_standard_arguments(options = self.options)
      method old_standard_arguments (line 343) | def old_standard_arguments(options = self.options)
      method to_svg (line 353) | def to_svg(options = self.options)
      method to_css2 (line 358) | def to_css2(options = self.options)
      method array_to_s (line 362) | def array_to_s(array, opts)
    class LinearGradient (line 373) | class LinearGradient < Sass::Script::Value::Base
      method children (line 378) | def children
      method initialize (line 382) | def initialize(position_or_angle, color_stops, legacy=false)
      method to_s_prefixed (line 391) | def to_s_prefixed(options = self.options)
      method convert_to_or_from_legacy (line 402) | def convert_to_or_from_legacy(position_or_angle, options = self.opti...
      method to_s (line 411) | def to_s(options = self.options)
      method supports? (line 426) | def supports?(aspect)
      method to_owg (line 439) | def to_owg(options = self.options)
      method to_svg (line 451) | def to_svg(options = self.options)
      method to_css2 (line 455) | def to_css2(options = self.options)
    type Functions (line 460) | module Functions
      function reverse_side_or_corner (line 463) | def reverse_side_or_corner(position)
      function convert_angle_from_offical (line 481) | def convert_angle_from_offical(deg)
      function grad_point (line 505) | def grad_point(position)
      function color_stops (line 542) | def color_stops(*args)
      function radial_gradient (line 560) | def radial_gradient(position_or_angle, shape_and_size, *color_stops)
      function _build_linear_gradient (line 595) | def _build_linear_gradient(position_or_angle, *color_stops)
      function _linear_gradient (line 612) | def _linear_gradient(position_or_angle, *color_stops)
      function _linear_gradient_legacy (line 617) | def _linear_gradient_legacy(position_or_angle, *color_stops)
      function grad_color_stops (line 623) | def grad_color_stops(color_list)
      function color_stops_in_percentages (line 630) | def color_stops_in_percentages(color_list)
      function linear_end_position (line 650) | def linear_end_position(position_or_angle, start_point, end_target)
      function grad_end_position (line 673) | def grad_end_position(color_list, radial = bool(false))
      function grad_position (line 679) | def grad_position(color_list, index, default, radial = bool(false))
      function linear_svg_gradient (line 705) | def linear_svg_gradient(color_stops, start)
      function radial_svg_gradient (line 713) | def radial_svg_gradient(color_stops, center)
      function color_stop? (line 724) | def color_stop?(arg)
      function normalize_stops (line 732) | def normalize_stops(color_list)
      function parse_color_stop (line 767) | def parse_color_stop(arg)
      function list_of_color_stops? (line 790) | def list_of_color_stops?(arg)
      function linear_svg (line 798) | def linear_svg(color_stops, x1, y1, x2, y2)
      function radial_svg (line 803) | def radial_svg(color_stops, cx, cy, r)
      function color_stops_svg (line 809) | def color_stops_svg(color_stops)
      function svg (line 819) | def svg(gradient)
      function _center_position (line 826) | def _center_position
      function opts (line 830) | def opts(v)
    type Assertions (line 837) | module Assertions
      function assert_type (line 838) | def assert_type(value, type, name = nil)
    class LinearGradient (line 846) | class LinearGradient < Sass::Script::Value::Base
      method children (line 378) | def children
      method initialize (line 382) | def initialize(position_or_angle, color_stops, legacy=false)
      method to_s_prefixed (line 391) | def to_s_prefixed(options = self.options)
      method convert_to_or_from_legacy (line 402) | def convert_to_or_from_legacy(position_or_angle, options = self.opti...
      method to_s (line 411) | def to_s(options = self.options)
      method supports? (line 426) | def supports?(aspect)
      method to_owg (line 439) | def to_owg(options = self.options)
      method to_svg (line 451) | def to_svg(options = self.options)
      method to_css2 (line 455) | def to_css2(options = self.options)
    class RadialGradient (line 853) | class RadialGradient < Sass::Script::Value::Base
      method children (line 276) | def children
      method initialize (line 280) | def initialize(position, shape_and_size, color_stops)
      method to_s (line 292) | def to_s(options = self.options)
      method to_s_prefixed (line 296) | def to_s_prefixed(options = self.options)
      method supports? (line 300) | def supports?(aspect)
      method to_webkit (line 312) | def to_webkit(options = self.options)
      method to_moz (line 319) | def to_moz(options = self.options)
      method to_official (line 326) | def to_official
      method new_standard_arguments (line 333) | def new_standard_arguments(options = self.options)
      method old_standard_arguments (line 343) | def old_standard_arguments(options = self.options)
      method to_svg (line 353) | def to_svg(options = self.options)
      method to_css2 (line 358) | def to_css2(options = self.options)
      method array_to_s (line 362) | def array_to_s(array, opts)

FILE: core/lib/compass/core/sass_extensions/functions/image_size.rb
  type Compass::Core::SassExtensions::Functions::ImageSize (line 1) | module Compass::Core::SassExtensions::Functions::ImageSize
    function image_width (line 5) | def image_width(image_file)
    function image_height (line 11) | def image_height(image_file)
    class ImageProperties (line 16) | class ImageProperties
      method initialize (line 17) | def initialize(file)
      method size (line 25) | def size
      method get_size_for_png (line 30) | def get_size_for_png
      method get_size_for_gif (line 34) | def get_size_for_gif
      method get_size_for_jpg (line 38) | def get_size_for_jpg
      method get_size_for_jpeg (line 42) | def get_size_for_jpeg
    function image_dimensions (line 50) | def image_dimensions(image_file)
    function image_path_for_size (line 57) | def image_path_for_size(image_file)
    function real_path (line 64) | def real_path(image_file)
    class JPEG (line 73) | class JPEG
      method initialize (line 76) | def initialize(file)
      method examine (line 85) | def examine(io)

FILE: core/lib/compass/core/sass_extensions/functions/inline_image.rb
  type Compass::Core::SassExtensions::Functions::InlineImage (line 1) | module Compass::Core::SassExtensions::Functions::InlineImage
    function inline_image (line 3) | def inline_image(path, mime_type = nil)
    function inline_font_files (line 9) | def inline_font_files(*args)
    function inline_image_string (line 21) | def inline_image_string(data, mime_type)
    function compute_mime_type (line 28) | def compute_mime_type(path, mime_type = nil)
    function data (line 56) | def data(real_path)

FILE: core/lib/compass/core/sass_extensions/functions/lists.rb
  type Compass::Core::SassExtensions::Functions::Lists (line 1) | module Compass::Core::SassExtensions::Functions::Lists
    function blank (line 4) | def blank(obj)
    function compact (line 18) | def compact(*args)
    function _compass_nth (line 29) | def _compass_nth(list, place)
    function _compass_list (line 43) | def _compass_list(arg)
    function _compass_space_list (line 53) | def _compass_space_list(list)
    function _compass_list_size (line 62) | def _compass_list_size(list)
    function _compass_slice (line 68) | def _compass_slice(list, start_index, end_index = nil)
    function reject (line 78) | def reject(list, *values)
    function first_value_of (line 83) | def first_value_of(list)
    function assert_list (line 96) | def assert_list(value)

FILE: core/lib/compass/core/sass_extensions/functions/math.rb
  type Compass::Core::SassExtensions::Functions::Math (line 1) | module Compass::Core::SassExtensions::Functions::Math
    function included (line 5) | def self.included(base)
    function pi (line 15) | def pi()
    function deprecated_random (line 20) | def deprecated_random(*args)
    function sin (line 35) | def sin(number)
    function asin (line 40) | def asin(number)
    function cos (line 45) | def cos(number)
    function acos (line 50) | def acos(number)
    function tan (line 55) | def tan(number)
    function atan (line 60) | def atan(number)
    function e (line 65) | def e
    function logarithm (line 70) | def logarithm(number, base = e )
    function sqrt (line 81) | def sqrt(number)
    function pow (line 89) | def pow(number, exponent)
    function trig (line 98) | def trig(operation, number)

FILE: core/lib/compass/core/sass_extensions/functions/selectors.rb
  type Compass::Core::SassExtensions::Functions::Selectors (line 1) | module Compass::Core::SassExtensions::Functions::Selectors
    function nest (line 22) | def nest(*arguments)
    function append_selector (line 50) | def append_selector(selector, to_append)
    function headers (line 63) | def headers(from = nil, to = nil)

FILE: core/lib/compass/core/sass_extensions/functions/urls.rb
  type Compass::Core::SassExtensions::Functions::Urls (line 1) | module Compass::Core::SassExtensions::Functions::Urls
    function has? (line 4) | def self.has?(base, instance_method)
    function included (line 8) | def self.included(base)
    type StylesheetUrl (line 15) | module StylesheetUrl
      function included (line 16) | def self.included(base)
      function stylesheet_url (line 22) | def stylesheet_url(path, only_path = bool(false))
    type FontUrl (line 42) | module FontUrl
      function included (line 43) | def self.included(base)
      function font_url (line 50) | def font_url(path, only_path = bool(false), cache_buster = bool(true))
    type ImageUrl (line 104) | module ImageUrl
      function included (line 105) | def self.included(base)
      function image_url (line 112) | def image_url(path, only_path = bool(false), cache_buster = bool(true))
    type GeneratedImageUrl (line 174) | module GeneratedImageUrl
      function included (line 175) | def self.included(base)
      function generated_image_url (line 181) | def generated_image_url(path, cache_buster = bool(false))
    function clean_path (line 242) | def clean_path(url)
    function clean_url (line 248) | def clean_url(url)
    function relative? (line 252) | def relative?
    function absolute_path? (line 256) | def absolute_path?(path)
    function compute_relative_path (line 260) | def compute_relative_path(path)
    function cache_busted_path (line 268) | def cache_busted_path(path, real_path)
    function compute_cache_buster (line 285) | def compute_cache_buster(path, real_path)
    function default_cache_buster (line 305) | def default_cache_buster(path, real_path)

FILE: core/lib/compass/core/sass_extensions/monkey_patches/browser_support.rb
  type Sass::Script (line 3) | module Sass::Script
    type Value (line 4) | module Value
      class Base (line 5) | class Base
        method children (line 7) | def children
        method opts (line 11) | def opts(value)
      class List (line 17) | class List < Base
        method children (line 18) | def children
      class ArgList (line 23) | class ArgList < List
        method children (line 24) | def children
      class Map (line 29) | class Map < Base
        method children (line 30) | def children
    type HasSimpleCrossBrowserFunctionSupport (line 35) | module HasSimpleCrossBrowserFunctionSupport
      function supports? (line 36) | def supports?(aspect)
      function has_aspect? (line 41) | def has_aspect?(children = nil)
    class CrossBrowserFunctionCall (line 48) | class CrossBrowserFunctionCall < Literal
      method initialize (line 55) | def initialize(name, args)
      method children (line 60) | def children
      method inspect (line 64) | def inspect
      method to_s (line 68) | def to_s(options = self.options)
    class Funcall (line 95) | class Funcall < Node
      method to_value (line 100) | def to_value(args)
    class List (line 109) | class List < Literal
      method supports? (line 110) | def supports?(aspect)
      method has_aspect? (line 114) | def has_aspect?

FILE: core/lib/compass/core/sass_extensions/monkey_patches/traversal.rb
  type Sass (line 1) | module Sass
    type Tree (line 2) | module Tree
      class Node (line 3) | class Node
        method visit_depth_first (line 5) | def visit_depth_first(visitor)

FILE: core/lib/compass/core/version.rb
  type Compass (line 3) | module Compass
    type Core (line 4) | module Core
      function scope (line 6) | def self.scope(file)

FILE: core/lib/compass/error.rb
  type Compass (line 1) | module Compass
    class Error (line 2) | class Error < Sass::SyntaxError

FILE: core/lib/compass/frameworks.rb
  type Compass (line 1) | module Compass
    type Frameworks (line 2) | module Frameworks
      class Framework (line 7) | class Framework
        method initialize (line 12) | def initialize(name, *arguments)
        method template_directories (line 23) | def template_directories
        method manifest_file (line 31) | def manifest_file(pattern)
        method manifest (line 35) | def manifest(pattern, options = {})
      function detect_registration (line 41) | def detect_registration
      function register (line 49) | def register(name, *arguments)
      function [] (line 66) | def [](name)
      function guess_gem_version (line 70) | def guess_gem_version(line_reference)
      function discover (line 79) | def discover(frameworks_directory)
      function register_directory (line 91) | def register_directory(directory)
      function template_exists? (line 106) | def template_exists?(template)
      function template_usage (line 115) | def template_usage(template)
      function pretty_print (line 131) | def pretty_print(skip_patterns = false)
    function discover_gem_extensions! (line 157) | def discover_gem_extensions!
    function discover_extensions! (line 169) | def discover_extensions!

FILE: core/lib/compass/util.rb
  type Compass::Util (line 1) | module Compass::Util
    function compass_warn (line 4) | def compass_warn(*args)
    function blank? (line 8) | def blank?(value)

FILE: core/test/helpers/diff.rb
  type Compass (line 3) | module Compass
    type Diff (line 4) | module Diff
      function diff_as_string (line 6) | def diff_as_string(data_old, data_new)
      function format (line 40) | def format
      function context_lines (line 44) | def context_lines

FILE: core/test/integrations/projects_test.rb
  class ProjectsTest (line 12) | class ProjectsTest < Test::Unit::TestCase
    method setup (line 13) | def setup
    method verbose? (line 17) | def verbose?
    method test_compass (line 21) | def test_compass
    method test_busted_font_urls (line 25) | def test_busted_font_urls
    method test_relative (line 29) | def test_relative
    method test_valid (line 33) | def test_valid
    method test_busted_image_urls (line 37) | def test_busted_image_urls
    method test_envtest (line 41) | def test_envtest
    method test_image_urls (line 47) | def test_image_urls
    method test_uses_only_stylesheets_ext (line 51) | def test_uses_only_stylesheets_ext
    method standard_checks (line 57) | def standard_checks(compiler)
    method assert_renders_correctly (line 73) | def assert_renders_correctly(*arguments)
    method compile_project (line 98) | def compile_project(project_name, options = {})
    method sass_path_env (line 122) | def sass_path_env
    method each_css_file (line 126) | def each_css_file(dir, &block)
    method load_paths (line 130) | def load_paths
    method each_sass_file (line 134) | def each_sass_file(sass_dir = nil)
    method save_output (line 141) | def save_output(dir)
    method projects (line 146) | def projects
    method projects_path (line 152) | def projects_path
    method project_path (line 156) | def project_path(project_name)
    method tempfile_path (line 160) | def tempfile_path(project_name)
    method template_path (line 164) | def template_path(project_name)
    method result_path (line 168) | def result_path(project_name)
    method save_path (line 172) | def save_path(project_name)

FILE: core/test/units/configuration_test.rb
  class ConfigurationTest (line 7) | class ConfigurationTest < Test::Unit::TestCase
    method test_sass_engine_options (line 9) | def test_sass_engine_options
    method test_sass_plugin_options (line 14) | def test_sass_plugin_options

FILE: core/test/units/frameworks_test.rb
  class FrameworksTest (line 6) | class FrameworksTest < Test::Unit::TestCase
    method test_compass_has_the_compass_framework (line 8) | def test_compass_has_the_compass_framework

FILE: core/test/units/shared_extension_paths_test.rb
  class SharedExtensionsTest (line 3) | class SharedExtensionsTest < Test::Unit::TestCase
    method setup (line 5) | def setup
    method teardown (line 11) | def teardown
    method test_shared_extension_paths_with_valid_home (line 16) | def test_shared_extension_paths_with_valid_home
    method test_shared_extension_paths_with_nil_home (line 21) | def test_shared_extension_paths_with_nil_home
    method test_shared_extension_paths_with_file_home (line 26) | def test_shared_extension_paths_with_file_home
    method test_shared_extension_paths_with_relative_home (line 31) | def test_shared_extension_paths_with_relative_home

FILE: core/test/units/urls_test.rb
  class UrlsTest (line 6) | class UrlsTest < Test::Unit::TestCase
    method test_compute_relative_path (line 9) | def test_compute_relative_path
    method options (line 20) | def options

FILE: import-once/lib/compass/import-once.rb
  type Compass (line 6) | module Compass
    type ImportOnce (line 10) | module ImportOnce
      function import_tracker (line 19) | def import_tracker
      function activate! (line 23) | def activate!

FILE: import-once/lib/compass/import-once/activate.rb
  type Sass (line 2) | module Sass
    class Engine (line 3) | class Engine
      method new (line 4) | def self.new(*args)

FILE: import-once/lib/compass/import-once/engine.rb
  type Compass (line 1) | module Compass
    type ImportOnce (line 5) | module ImportOnce
      type Engine (line 8) | module Engine
        function to_css (line 9) | def to_css
        function render (line 15) | def render
        function render_with_sourcemap (line 21) | def render_with_sourcemap(sourcemap_uri)
        function with_import_scope (line 27) | def with_import_scope(css_filename)

FILE: import-once/lib/compass/import-once/importer.rb
  type Compass (line 1) | module Compass
    type ImportOnce (line 2) | module ImportOnce
      type Importer (line 4) | module Importer
        function find_relative (line 5) | def find_relative(uri, base, options, *args)
        function find (line 10) | def find(uri, options, *args)
        function key (line 15) | def key(uri, options, *args)
        function mtime (line 23) | def mtime(uri, options, *args)
        function handle_force_import (line 34) | def handle_force_import(uri)
        function maybe_replace_with_dummy_engine (line 42) | def maybe_replace_with_dummy_engine(engine, options, force_import)
        function tracker (line 51) | def tracker(options)
        function normalize_filesystem_importers (line 57) | def normalize_filesystem_importers(key)
        function import_tracker_key (line 63) | def import_tracker_key(engine, options)
        function dummy_engine (line 67) | def dummy_engine(engine, options)
        function imported? (line 72) | def imported?(engine, options)
        function imported! (line 76) | def imported!(engine, options)

FILE: import-once/lib/compass/import-once/version.rb
  type Compass (line 1) | module Compass
    type ImportOnce (line 2) | module ImportOnce

FILE: import-once/test/diff_as_string.rb
  type DiffAsString (line 4) | module DiffAsString
    function diff_as_string (line 6) | def diff_as_string(data_old, data_new)
    function format (line 40) | def format
    function context_lines (line 44) | def context_lines

FILE: import-once/test/import_once_test.rb
  type Sass::Script::Functions (line 6) | module Sass::Script::Functions
    function filename (line 7) | def filename
    function importer (line 14) | def importer
    function importer_is_import_onced (line 21) | def importer_is_import_onced
  class ImportOnceTest (line 26) | class ImportOnceTest < Test::Unit::TestCase
    method assert_compilation_result (line 44) | def assert_compilation_result(sass_file, css_file, options = {})

FILE: import-once/test/test_helper.rb
  class Test::Unit::TestCase (line 7) | class Test::Unit::TestCase
Condensed preview — 883 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,387K chars).
[
  {
    "path": ".gitignore",
    "chars": 6,
    "preview": "*.gem\n"
  },
  {
    "path": ".travis.yml",
    "chars": 3046,
    "preview": "language: ruby\n\nrvm:\n  - 1.8.7\n  - 1.9.2\n  - 1.9.3\n  - jruby-18mode\n  - jruby-19mode\n  - rbx\n  - ree\n  - 2.0.0\n  - 2.1.0"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 15667,
    "preview": "  Contributing Stylesheets to Compass\n  ===================================\n\n  **Please make all pull requests against t"
  },
  {
    "path": "Guardfile",
    "chars": 482,
    "preview": "group :tests do\n  guard :test do\n    watch(%r{^lib/(.+)\\.rb$}) { |m| \"test/#{m[1]}_test.rb\" }\n    watch(%r{^test/.+_test"
  },
  {
    "path": "LICENSE.markdown",
    "chars": 1542,
    "preview": "Copyright (c) 2009-2014 Christopher M. Eppstein\n\nPermission is hereby granted, free of charge, to any person obtaining\na"
  },
  {
    "path": "README.markdown",
    "chars": 1154,
    "preview": "# Compass Stylesheet Authoring Framework\n\n**Depreciated:** Compass is no longer supported.\n\nBuild Status: [![Build Statu"
  },
  {
    "path": "Rakefile",
    "chars": 1432,
    "preview": "\nGEMS = ['core', 'cli', 'import-once']\n\n\ntask :default => %w[test]\n\ndesc \"Run all tests\"\ntask :test do\n  sh %{./test_all"
  },
  {
    "path": "TODO.md",
    "chars": 3741,
    "preview": "FYI: I'm abandoning the even/odd release numbering scheme in favor of using preview releases. Going forward the master b"
  },
  {
    "path": "cli/.gitignore",
    "chars": 365,
    "preview": "*.DS_Store\n*.tmproj\n*.lock\ntmp/*\ndevbin\n.sass-cache\ntest/tmp\ntest/fixtures/stylesheets/*/tmp\ntest/fixtures/stylesheets/*"
  },
  {
    "path": "cli/Gemfile",
    "chars": 1133,
    "preview": "source 'https://rubygems.org'\n\ngemspec unless defined?(CI)\n\nunless ENV['PKG']\n\n  gem \"sass\", \"~> 3.3.13\" unless defined?"
  },
  {
    "path": "cli/Rakefile",
    "chars": 7333,
    "preview": "sh \"git checkout lib/compass/generated_version.rb\"\nrequire 'rubygems'\nrequire 'rubygems/package_task'\nrequire 'rake/test"
  },
  {
    "path": "cli/VERSION",
    "chars": 5,
    "preview": "1.0.3"
  },
  {
    "path": "cli/VERSION_NAME",
    "chars": 8,
    "preview": "Polaris\n"
  },
  {
    "path": "cli/bin/compass",
    "chars": 901,
    "preview": "#!/usr/bin/env ruby\n# The compass command line utility\n\n# This allows compass to run easily from a git checkout without "
  },
  {
    "path": "cli/compass.gemspec",
    "chars": 1894,
    "preview": "path = File.expand_path(\"lib\", File.dirname(__FILE__))\n$:.unshift(path) unless $:.include?(path)\nrequire 'compass/versio"
  },
  {
    "path": "cli/features/command_line.feature",
    "chars": 8507,
    "preview": "Feature: Command Line\n  In order to manage my stylesheets\n  As a user on the command line\n  I want to create a new proje"
  },
  {
    "path": "cli/features/extensions.feature",
    "chars": 1141,
    "preview": "Feature: Extensions\n  In order to have an open source ecosystem for stylesheets\n  As a compass user\n  I can install exte"
  },
  {
    "path": "cli/features/step_definitions/command_line_steps.rb",
    "chars": 7707,
    "preview": "$:.unshift(File.expand_path(File.join(File.dirname(__FILE__), '../../test')))\n\nrequire 'bundler/setup'\nrequire 'test_hel"
  },
  {
    "path": "cli/features/step_definitions/extension_steps.rb",
    "chars": 801,
    "preview": "Given /^the \"([^\\\"]*)\" directory exists$/ do |directory|\n  directory.gsub!('~', ENV[\"HOME\"]) if directory.include?('~/')"
  },
  {
    "path": "cli/gemfiles/listen_2.gemfile",
    "chars": 340,
    "preview": "CI=true\nmain_gemfile = File.expand_path(File.join(File.dirname(__FILE__), \"..\", \"Gemfile\"))\neval File.read(main_gemfile)"
  },
  {
    "path": "cli/gemfiles/sass_3_3.gemfile",
    "chars": 315,
    "preview": "CI=true\nmain_gemfile = File.expand_path(File.join(File.dirname(__FILE__), \"..\", \"Gemfile\"))\neval File.read(main_gemfile)"
  },
  {
    "path": "cli/gemfiles/sass_local.gemfile",
    "chars": 227,
    "preview": "CI=true\nmain_gemfile = File.expand_path(File.join(File.dirname(__FILE__), \"..\", \"Gemfile\"))\neval File.read(main_gemfile)"
  },
  {
    "path": "cli/lib/compass/actions.rb",
    "chars": 3573,
    "preview": "module Compass\n  module Actions\n\n    attr_writer :logger\n\n    def logger\n      @logger ||= ::Compass::Logger.new\n    end"
  },
  {
    "path": "cli/lib/compass/app_integration/stand_alone/configuration_defaults.rb",
    "chars": 552,
    "preview": "module Compass\n  module AppIntegration\n    module StandAlone\n      module ConfigurationDefaults\n        def default_proj"
  },
  {
    "path": "cli/lib/compass/app_integration/stand_alone/installer.rb",
    "chars": 2506,
    "preview": "module Compass\n  module Installers\n    class Base\n    end\n    class ManifestInstaller < Base\n    end\n  end\n\n  module App"
  },
  {
    "path": "cli/lib/compass/app_integration/stand_alone.rb",
    "chars": 409,
    "preview": "%w(configuration_defaults installer).each do |lib|\n  require \"compass/app_integration/stand_alone/#{lib}\"\nend\n\nmodule Co"
  },
  {
    "path": "cli/lib/compass/app_integration.rb",
    "chars": 812,
    "preview": "require \"compass/app_integration/stand_alone\"\n\nmodule Compass\n  module AppIntegration\n    module Helpers\n      #attr_acc"
  },
  {
    "path": "cli/lib/compass/commands/base.rb",
    "chars": 848,
    "preview": "module Compass\n  module Commands\n    class Base\n      def self.register(command_name)\n        Compass::Commands[command_"
  },
  {
    "path": "cli/lib/compass/commands/clean_project.rb",
    "chars": 2107,
    "preview": "require 'compass/commands/project_base'\nrequire 'compass/compiler'\n\nmodule Compass\n  module Commands\n    module CleanPro"
  },
  {
    "path": "cli/lib/compass/commands/create_project.rb",
    "chars": 3784,
    "preview": "require 'fileutils'\nrequire 'compass/commands/stamp_pattern'\n\nmodule Compass\n  module Commands\n    module CreateProjectO"
  },
  {
    "path": "cli/lib/compass/commands/default.rb",
    "chars": 1336,
    "preview": "module Compass\n  module Commands\n    module DefaultOptionsParser\n      def set_options(opts)\n        opts.on(\"--trace\") "
  },
  {
    "path": "cli/lib/compass/commands/extension_command.rb",
    "chars": 1374,
    "preview": "require 'fileutils'\nrequire 'compass/commands/base'\n\nmodule Compass\n  module Commands\n    module ExtensionsOptionParser\n"
  },
  {
    "path": "cli/lib/compass/commands/help.rb",
    "chars": 2656,
    "preview": "module Compass\n  module Commands\n    module HelpOptionsParser\n      def set_options(opts)\n        banner = %Q{Usage: com"
  },
  {
    "path": "cli/lib/compass/commands/imports.rb",
    "chars": 1005,
    "preview": "module Compass\n  module Commands\n    class Imports < ProjectBase\n      attr_accessor :options\n      register :imports\n  "
  },
  {
    "path": "cli/lib/compass/commands/installer_command.rb",
    "chars": 825,
    "preview": "require 'compass/installers'\n\nmodule Compass\n  module Commands\n    module InstallerCommand\n      include Compass::Instal"
  },
  {
    "path": "cli/lib/compass/commands/interactive.rb",
    "chars": 1316,
    "preview": "\nrequire 'compass/commands/project_base'\nrequire 'compass/commands/update_project'\n\nmodule Compass\n  module Commands\n   "
  },
  {
    "path": "cli/lib/compass/commands/list_frameworks.rb",
    "chars": 1022,
    "preview": "module Compass\n  module Commands\n    class ListFrameworks < ProjectBase\n      attr_accessor :options\n      register :fra"
  },
  {
    "path": "cli/lib/compass/commands/print_version.rb",
    "chars": 2652,
    "preview": "module Compass\n  module Commands\n    module VersionOptionsParser\n      def set_options(opts)\n        opts.banner = %Q{Us"
  },
  {
    "path": "cli/lib/compass/commands/project_base.rb",
    "chars": 2906,
    "preview": "require 'fileutils'\nrequire 'pathname'\nrequire 'compass/commands/base'\nrequire 'compass/commands/installer_command'\n\nmod"
  },
  {
    "path": "cli/lib/compass/commands/project_stats.rb",
    "chars": 6347,
    "preview": "require 'compass/commands/project_base'\nrequire 'compass/commands/update_project'\n\nmodule Compass\n  module Commands\n    "
  },
  {
    "path": "cli/lib/compass/commands/project_structure.rb",
    "chars": 2681,
    "preview": "require 'compass/commands/project_base'\nrequire 'compass/commands/update_project'\n\nmodule Compass\n  module Commands\n    "
  },
  {
    "path": "cli/lib/compass/commands/registry.rb",
    "chars": 1134,
    "preview": "module Compass::Commands\n  module Registry\n    def register(name, command_class)\n      @commands ||= Hash.new\n      @com"
  },
  {
    "path": "cli/lib/compass/commands/sprite.rb",
    "chars": 2854,
    "preview": "require 'compass/commands/project_base'\nrequire 'compass/commands/update_project'\n\nmodule Compass\n  module Commands\n    "
  },
  {
    "path": "cli/lib/compass/commands/stamp_pattern.rb",
    "chars": 2667,
    "preview": "require 'fileutils'\nrequire 'compass/commands/base'\nrequire 'compass/commands/update_project'\n\nmodule Compass\n  module C"
  },
  {
    "path": "cli/lib/compass/commands/unpack_extension.rb",
    "chars": 3925,
    "preview": "require 'compass/commands/project_base'\nrequire 'fileutils'\n\nmodule Compass\n  module Commands\n    module ExtensionOption"
  },
  {
    "path": "cli/lib/compass/commands/update_project.rb",
    "chars": 4519,
    "preview": "require 'compass/commands/project_base'\nrequire 'compass/compiler'\n\nmodule Compass\n  module Commands\n    module CompileP"
  },
  {
    "path": "cli/lib/compass/commands/validate_project.rb",
    "chars": 2006,
    "preview": "require 'compass/commands/project_base'\nrequire 'compass/commands/update_project'\n\nmodule Compass\n  module Commands\n    "
  },
  {
    "path": "cli/lib/compass/commands/watch_project.rb",
    "chars": 3731,
    "preview": "# encoding: UTF-8\nrequire 'fileutils'\nrequire 'pathname'\nrequire 'compass/commands/update_project'\nrequire \"compass/sass"
  },
  {
    "path": "cli/lib/compass/commands/write_configuration.rb",
    "chars": 4023,
    "preview": "require 'compass/commands/project_base'\n\nmodule Compass\n  module Commands\n    module ConfigurationOptionsParser\n      de"
  },
  {
    "path": "cli/lib/compass/commands.rb",
    "chars": 429,
    "preview": "module Compass::Commands\nend\n\nrequire 'compass/commands/registry'\n\n%w(base project_base default help list_frameworks \n  "
  },
  {
    "path": "cli/lib/compass/compiler.rb",
    "chars": 9346,
    "preview": "require 'pathname'\n\nmodule Compass\n  class Compiler\n\n    include Actions\n\n    attr_accessor :working_path, :from, :to, :"
  },
  {
    "path": "cli/lib/compass/configuration/comments.rb",
    "chars": 1765,
    "preview": "module Compass\n  module Configuration\n    # Comments are emitted into the configuration file when serialized and make it"
  },
  {
    "path": "cli/lib/compass/configuration/file_data.rb",
    "chars": 502,
    "preview": "module Compass\n  module Configuration\n    class FileData < Data\n      def self.new_from_file(config_file, defaults = nil"
  },
  {
    "path": "cli/lib/compass/configuration/helpers.rb",
    "chars": 4255,
    "preview": "module Compass\n  module Configuration\n    @callbacks_loaded = false\n    # The helpers are available as methods on the Co"
  },
  {
    "path": "cli/lib/compass/configuration/serialization.rb",
    "chars": 3286,
    "preview": "module Compass\n  module Configuration\n    # The serialization module manages reading and writing the configuration file("
  },
  {
    "path": "cli/lib/compass/dependencies.rb",
    "chars": 249,
    "preview": "begin\n  require 'sass'\nrescue LoadError\n  require 'rubygems'\n  begin\n    require 'sass'\n  rescue LoadError\n    puts \"Una"
  },
  {
    "path": "cli/lib/compass/deprecation.rb",
    "chars": 482,
    "preview": "module Compass\n  module Deprecation\n    class << self\n      attr_accessor :issued_deprecations\n    end\n    self.issued_d"
  },
  {
    "path": "cli/lib/compass/errors.rb",
    "chars": 162,
    "preview": "require 'compass/error'\nmodule Compass\n  class FilesystemConflict < Error\n  end\n\n  class MissingDependency < Error\n  end"
  },
  {
    "path": "cli/lib/compass/exec/command_option_parser.rb",
    "chars": 419,
    "preview": "module Compass::Exec\n  class CommandOptionParser\n    attr_accessor :options, :arguments, :opts\n    def initialize(argume"
  },
  {
    "path": "cli/lib/compass/exec/global_options_parser.rb",
    "chars": 1885,
    "preview": "module Compass::Exec::GlobalOptionsParser\n  def set_options(opts)\n    super\n    set_global_options(opts)\n  end\n  def set"
  },
  {
    "path": "cli/lib/compass/exec/helpers.rb",
    "chars": 531,
    "preview": "module Compass::Exec\n  module Helpers\n    extend self\n    def report_error(e, options)\n      $stderr.puts \"#{e.class} on"
  },
  {
    "path": "cli/lib/compass/exec/project_options_parser.rb",
    "chars": 2807,
    "preview": "module Compass::Exec::ProjectOptionsParser\n  def set_options(opts)\n    super\n    set_project_options(opts)\n  end\n  def s"
  },
  {
    "path": "cli/lib/compass/exec/sub_command_ui.rb",
    "chars": 1273,
    "preview": "require 'compass/exec/global_options_parser'\nrequire 'compass/exec/project_options_parser'\n\nmodule Compass::Exec\n  class"
  },
  {
    "path": "cli/lib/compass/exec.rb",
    "chars": 514,
    "preview": "require 'compass/dependencies'\nrequire 'optparse'\nrequire 'compass/logger'\nrequire 'compass/errors'\nrequire 'compass/act"
  },
  {
    "path": "cli/lib/compass/generated_version.rb",
    "chars": 129,
    "preview": "module Compass\n  # This file intentionall does nothing.\n  # The compass build scripts put the release VERSION constant h"
  },
  {
    "path": "cli/lib/compass/installers/bare_installer.rb",
    "chars": 1629,
    "preview": "module Compass\n  module Installers\n\n    class BareInstaller < Base\n      def completed_configuration\n        nil\n      e"
  },
  {
    "path": "cli/lib/compass/installers/base.rb",
    "chars": 6067,
    "preview": "module Compass\n  module Installers\n\n    class Base\n\n      include Actions\n\n      attr_accessor :template_path, :target_p"
  },
  {
    "path": "cli/lib/compass/installers/manifest.rb",
    "chars": 4150,
    "preview": "module Compass\n  module Installers\n\n    class Manifest\n      include Enumerable\n\n      # A Manifest entry\n      class En"
  },
  {
    "path": "cli/lib/compass/installers/manifest_installer.rb",
    "chars": 1837,
    "preview": "module Compass\n  module Installers\n\n    class ManifestInstaller < Base\n\n      attr_accessor :manifest\n\n      def initial"
  },
  {
    "path": "cli/lib/compass/installers/template_context.rb",
    "chars": 947,
    "preview": "module Compass\n  module Installers\n    class TemplateContext\n\n      def self.ctx(*arguments)\n        new(*arguments).sen"
  },
  {
    "path": "cli/lib/compass/installers.rb",
    "chars": 121,
    "preview": "%w(manifest template_context base manifest_installer bare_installer).each do |f|\n  require \"compass/installers/#{f}\"\nend"
  },
  {
    "path": "cli/lib/compass/logger.rb",
    "chars": 3224,
    "preview": "module Compass\n\n  class Logger\n\n    COLORS = { :clear => 0, :red => 31, :green => 32, :yellow => 33, :blue => 34 }\n\n    "
  },
  {
    "path": "cli/lib/compass/quick_cache.rb",
    "chars": 437,
    "preview": "module QuickCache\n\n  # cache a value in memory for just a few seconds\n  # This can speed up reads of values that change "
  },
  {
    "path": "cli/lib/compass/rails.rb",
    "chars": 67,
    "preview": "# Rails requires compass by requiring this file.\nrequire 'compass'\n"
  },
  {
    "path": "cli/lib/compass/sass_compiler.rb",
    "chars": 4681,
    "preview": "require 'sass/plugin'\n\nclass Compass::SassCompiler\n\n  include Compass::Actions\n\n  attr_writer :logger\n  attr_reader :qui"
  },
  {
    "path": "cli/lib/compass/sass_extensions/functions/sprites.rb",
    "chars": 10550,
    "preview": "module Compass::SassExtensions::Functions::Sprites\n\n  extend Compass::SassExtensions::Functions::SassDeclarationHelper\n "
  },
  {
    "path": "cli/lib/compass/sass_extensions/functions.rb",
    "chars": 335,
    "preview": "module Compass::SassExtensions::Functions\n  module SassDeclarationHelper\n    def declare(*args)\n      Sass::Script::Func"
  },
  {
    "path": "cli/lib/compass/sass_extensions/sprites/engines/chunky_png_engine.rb",
    "chars": 996,
    "preview": "begin\n  require 'oily_png'\nrescue LoadError\n  require 'chunky_png'\nend\n\nmodule Compass\n  module SassExtensions\n    modul"
  },
  {
    "path": "cli/lib/compass/sass_extensions/sprites/engines.rb",
    "chars": 621,
    "preview": "module Compass\n  module SassExtensions\n    module Sprites\n      class Engine\n        attr_accessor :width, :height, :ima"
  },
  {
    "path": "cli/lib/compass/sass_extensions/sprites/image.rb",
    "chars": 4083,
    "preview": "module Compass\n  module SassExtensions\n    module Sprites\n      class Image\n        include Sass::Script::Value::Helpers"
  },
  {
    "path": "cli/lib/compass/sass_extensions/sprites/image_methods.rb",
    "chars": 1539,
    "preview": "module Compass\n  module SassExtensions\n    module Sprites\n      module ImageMethods\n        # Fetches the Sprite::Image "
  },
  {
    "path": "cli/lib/compass/sass_extensions/sprites/image_row.rb",
    "chars": 957,
    "preview": "require 'forwardable'\n\nmodule Compass\n  module SassExtensions\n    module Sprites\n      class ImageRow\n        extend For"
  },
  {
    "path": "cli/lib/compass/sass_extensions/sprites/images.rb",
    "chars": 681,
    "preview": "module Compass\n  module SassExtensions\n    module Sprites\n      class Images < Array\n\n        def sort_by!(method)\n     "
  },
  {
    "path": "cli/lib/compass/sass_extensions/sprites/layout/diagonal.rb",
    "chars": 1104,
    "preview": "module Compass\n  module SassExtensions\n    module Sprites\n      module Layout\n        class Diagonal < SpriteLayout\n\n   "
  },
  {
    "path": "cli/lib/compass/sass_extensions/sprites/layout/horizontal.rb",
    "chars": 2081,
    "preview": "module Compass\n  module SassExtensions\n    module Sprites\n      module Layout\n        class Horizontal < SpriteLayout\n\n "
  },
  {
    "path": "cli/lib/compass/sass_extensions/sprites/layout/smart.rb",
    "chars": 877,
    "preview": "module Compass\n  module SassExtensions\n    module Sprites\n      module Layout\n        class Smart < SpriteLayout\n\n      "
  },
  {
    "path": "cli/lib/compass/sass_extensions/sprites/layout/vertical.rb",
    "chars": 2221,
    "preview": "module Compass\n  module SassExtensions\n    module Sprites\n      module Layout\n        class Vertical < SpriteLayout\n\n   "
  },
  {
    "path": "cli/lib/compass/sass_extensions/sprites/layout.rb",
    "chars": 917,
    "preview": "require 'rational'\nmodule Compass\n  module SassExtensions\n    module Sprites\n      module Layout\n        class SpriteLay"
  },
  {
    "path": "cli/lib/compass/sass_extensions/sprites/layout_methods.rb",
    "chars": 1546,
    "preview": "module Compass\n  module SassExtensions\n    module Sprites\n      module LayoutMethods\n        HORIZONTAL = 'horizontal'\n "
  },
  {
    "path": "cli/lib/compass/sass_extensions/sprites/row_fitter.rb",
    "chars": 2125,
    "preview": "require 'forwardable'\n\nmodule Compass\n  module SassExtensions\n    module Sprites\n      class RowFitter\n        extend Fo"
  },
  {
    "path": "cli/lib/compass/sass_extensions/sprites/sprite_map.rb",
    "chars": 2665,
    "preview": "module Compass\n  module SassExtensions\n    module Sprites\n      class SpriteMap < Sass::Script::Value::Base\n        attr"
  },
  {
    "path": "cli/lib/compass/sass_extensions/sprites/sprite_methods.rb",
    "chars": 4134,
    "preview": "module Compass\n  module SassExtensions\n    module Sprites\n      module SpriteMethods\n        \n        # Changing this st"
  },
  {
    "path": "cli/lib/compass/sass_extensions/sprites.rb",
    "chars": 658,
    "preview": "require 'digest/md5'\nrequire 'compass/sprite_importer'\n\nmodule Compass\n  module SassExtensions\n    module Sprites\n    en"
  },
  {
    "path": "cli/lib/compass/sass_extensions.rb",
    "chars": 368,
    "preview": "unless Sass::Script::Functions.methods.grep(/\\Adeclare\\Z/).any?\n  raise LoadError, \"It looks like you've got an incompat"
  },
  {
    "path": "cli/lib/compass/sprite_importer/binding.rb",
    "chars": 153,
    "preview": "require 'ostruct'\nmodule Compass\n  module Sprites\n    class Binding < OpenStruct\n      \n      def get_binding\n        bi"
  },
  {
    "path": "cli/lib/compass/sprite_importer/content.erb",
    "chars": 4448,
    "preview": "@import \"compass/utilities/sprites/base\";\n\n// General Sprite Defaults\n// You can override them before you import this fi"
  },
  {
    "path": "cli/lib/compass/sprite_importer.rb",
    "chars": 3399,
    "preview": "require 'erb'\nrequire 'compass/sprite_importer/binding'\nmodule Compass\n  class SpriteImporter < Sass::Importers::Base\n  "
  },
  {
    "path": "cli/lib/compass/stats.rb",
    "chars": 2728,
    "preview": "module Compass\n  module Stats\n    class StatsVisitor\n      attr_accessor :rule_count, :prop_count, :mixin_def_count, :mi"
  },
  {
    "path": "cli/lib/compass/test_case.rb",
    "chars": 1085,
    "preview": "module Compass\n  # Write your unit test like this if you want to make sure all your stylesheets compile.\n  #\n  # require"
  },
  {
    "path": "cli/lib/compass/validator.rb",
    "chars": 461,
    "preview": "begin\n  require 'rubygems'\n  require 'compass-validator'\nrescue LoadError => e\n  if e.message =~ /core_ext/\n    raise Co"
  },
  {
    "path": "cli/lib/compass/version.rb",
    "chars": 1271,
    "preview": "require 'compass/generated_version'\nmodule Compass\n  module Version\n    def scope(file) # :nodoc:\n      File.join(File.d"
  },
  {
    "path": "cli/lib/compass.rb",
    "chars": 676,
    "preview": "module Compass\nend\n\n%w(core\n   deprecation\n   dependencies\n   sass_extensions\n   version\n   errors\n   quick_cache\n   log"
  },
  {
    "path": "cli/test/fixtures/extensions/only_stylesheets/compass_init.rb",
    "chars": 111,
    "preview": "Compass::Frameworks.register(\"only-stylesheets\", :stylesheets_dir => File.join(File.dirname(__FILE__),\"scss\"))\n"
  },
  {
    "path": "cli/test/fixtures/extensions/only_stylesheets/scss/only_stylesheets/foo.scss",
    "chars": 42,
    "preview": "@mixin only-stylesheets {\n  color: red;\n}\n"
  },
  {
    "path": "cli/test/fixtures/fonts/bgrove.base64.txt",
    "chars": 24993,
    "preview": "AAEAAAAOAIAAAwBgRkZUTVRX4doAAEkcAAAAHE9TLzJXOYGVAAABaAAAAFZjbWFwo9b83AAAA5wAAAGCY3Z0IAAhAnkAAAUgAAAABGdhc3D//wADAABJFAAA"
  },
  {
    "path": "cli/test/fixtures/stylesheets/busted_font_urls/config.rb",
    "chars": 796,
    "preview": "# Require any additional compass plugins here.\nproject_type = :stand_alone\ncss_dir = \"tmp\"\nsass_dir = \"sass\"\nfonts_dir ="
  },
  {
    "path": "cli/test/fixtures/stylesheets/busted_font_urls/css/screen.css",
    "chars": 431,
    "preview": ".showgrid { font-family: url('http://assets3.example.com/fonts/grid-BUSTED.ttf'); }\n\n.no-buster { font-family: url('http"
  },
  {
    "path": "cli/test/fixtures/stylesheets/busted_font_urls/sass/screen.sass",
    "chars": 397,
    "preview": ".showgrid\n  font-family: font-url(\"grid.ttf\", $only-path: false, $cache-buster: true)\n\n.no-buster\n  font-family: font-ur"
  },
  {
    "path": "cli/test/fixtures/stylesheets/busted_image_urls/config.rb",
    "chars": 746,
    "preview": "# Require any additional compass plugins here.\nproject_type = :stand_alone\ncss_dir = \"tmp\"\nsass_dir = \"sass\"\nimages_dir "
  },
  {
    "path": "cli/test/fixtures/stylesheets/busted_image_urls/css/screen.css",
    "chars": 697,
    "preview": ".showgrid { background-image: url('http://assets0.example.com/images/grid-BUSTED.png'); }\n\n.inlinegrid { background-imag"
  },
  {
    "path": "cli/test/fixtures/stylesheets/busted_image_urls/sass/screen.sass",
    "chars": 304,
    "preview": ".showgrid\n  background-image: image-url(\"grid.png\")\n\n.inlinegrid\n  background-image: inline-image(\"grid.png\")\n\n.no-buste"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/config.rb",
    "chars": 437,
    "preview": "# Require any additional compass plugins here.\nrequire 'true'\nrequire 'compass/import-once/activate'\nproject_type = :sta"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/animation-with-legacy-ie.css",
    "chars": 332,
    "preview": "@-moz-keyframes test {\n  0%, 100% {\n    opacity: 1; }\n\n  50% {\n    opacity: 0; } }\n@-webkit-keyframes test {\n  0%, 100% "
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/animation.css",
    "chars": 401,
    "preview": "@-moz-keyframes test {\n  0%, 100% {\n    background-color: red; }\n\n  50% {\n    background-color: blue; } }\n@-webkit-keyfr"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/appearance.css",
    "chars": 84,
    "preview": ".searchfield {\n  -moz-appearance: searchfield;\n  -webkit-appearance: searchfield; }\n"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/background-clip.css",
    "chars": 404,
    "preview": ".background-clip {\n  -moz-background-clip: border;\n  -o-background-clip: border-box;\n  -webkit-background-clip: border;\n"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/background-origin.css",
    "chars": 424,
    "preview": ".background-origin {\n  -moz-background-origin: border;\n  -o-background-origin: border-box;\n  -webkit-background-origin: "
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/background-size.css",
    "chars": 545,
    "preview": ".background-size-default {\n  -moz-background-size: 100% auto;\n  -o-background-size: 100% auto;\n  -webkit-background-size"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/border_radius.css",
    "chars": 388,
    "preview": ".simple {\n  -moz-border-radius: 4px / 4px;\n  -webkit-border-radius: 4px 4px;\n  border-radius: 4px / 4px; }\n\n.compound {\n"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/box-sizing.css",
    "chars": 305,
    "preview": ".div {\n  -moz-box-sizing: border-box;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box; }\n\n.div {\n  -moz-box-s"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/box.css",
    "chars": 2018,
    "preview": ".hbox {\n  display: -webkit-box;\n  display: -moz-box;\n  display: -ms-box;\n  display: box;\n  -webkit-box-orient: horizonta"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/box_shadow.css",
    "chars": 756,
    "preview": ".no-box-shadow {\n  -moz-box-shadow: none;\n  -webkit-box-shadow: none;\n  box-shadow: none; }\n\n.box-shadow {\n  -moz-box-sh"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/brightness.css",
    "chars": 251,
    "preview": ".black-is-0-percent {\n  brightness: 0%; }\n\n.white-is-100-percent {\n  brightness: 100%; }\n\n.green-is-58-point-7-percent {"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/browser-support.css",
    "chars": 9990,
    "preview": ".android {\n  versions: \"2.1\", \"2.2\", \"2.3\", \"3\", \"4\", \"4.1\", \"4.2-4.3\", \"4.4\", \"4.4.3\";\n  background-img-opts: -webkit;\n"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/color.css",
    "chars": 398,
    "preview": ".handles-null {\n  content: \"there should be no property below this one\"; }\n\n.contrasts-light {\n  background-color: #eeee"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/columns.css",
    "chars": 2930,
    "preview": ".columns {\n  -moz-columns: 20em 5;\n  -webkit-columns: 20em 5;\n  columns: 20em 5; }\n\n.column-count {\n  -moz-column-count:"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/filters.css",
    "chars": 3801,
    "preview": ".blur {\n  /* Capability css-filters is not prefixed with -moz because 0% of users are affected which is less than the th"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/flexbox.css",
    "chars": 2000,
    "preview": ".display {\n  display: -webkit-flex;\n  display: flex; }\n\n.flex-direction {\n  -webkit-flex-direction: row-reverse;\n  flex-"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/fonts.css",
    "chars": 434,
    "preview": "@font-face {\n  font-family: \"font1\";\n  src: url('/fonts/font1.eot?busted=true');\n  src: url('/fonts/font1.eot?&busted=tr"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/force-wrap.css",
    "chars": 216,
    "preview": "pre {\n  white-space: pre;\n  white-space: pre-wrap;\n  white-space: pre-line;\n  white-space: -pre-wrap;\n  white-space: -o-"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/gradients.css",
    "chars": 23282,
    "preview": ".bg-shortcut-simple-image {\n  background: white url(\"foo.png\"); }\n\n.bg-shortcut-linear-gradient {\n  background: white ur"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/grid_background.css",
    "chars": 85090,
    "preview": ".baseline {\n  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2Z"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/hyphenation.css",
    "chars": 299,
    "preview": ".word-break {\n  word-break: keep-all; }\n\n.hyphens {\n  -moz-hyphens: manual;\n  -ms-hyphens: manual;\n  -webkit-hyphens: ma"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/image_size.css",
    "chars": 172,
    "preview": ".png {\n  width: 100px;\n  height: 150px; }\n\n.jpg {\n  width: 100px;\n  height: 150px; }\n\n.jpeg {\n  width: 100px;\n  height: "
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/images.css",
    "chars": 221,
    "preview": ".relative {\n  background-image: url('/images/4x6.png?busted=true'); }\n\n.root-relative {\n  background-image: url('/images"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/layout.css",
    "chars": 259,
    "preview": "html, body {\n  height: 100%; }\n\n#layout {\n  clear: both;\n  min-height: 100%;\n  height: auto !important;\n  height: 100%;\n"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/legacy_clearfix.css",
    "chars": 522,
    "preview": ".clearfix {\n  overflow: hidden;\n  display: inline-block; }\n  .clearfix {\n    display: block; }\n\n.pie-clearfix {\n  displa"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/lists.css",
    "chars": 3066,
    "preview": "ul.horizontal {\n  margin: 0;\n  padding: 0;\n  border: 0;\n  overflow: hidden;\n  *zoom: 1; }\n  ul.horizontal li {\n    list-"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/opacity.css",
    "chars": 176,
    "preview": "div {\n  filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false);\n  opacity: 1; }\n\ndiv {\n  filter: progid:DXImageT"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/print.css",
    "chars": 1612,
    "preview": ".noprint, .no-print {\n  display: none; }\n\naddress.print-only, article.print-only, aside.print-only, blockquote.print-onl"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/regions.css",
    "chars": 182,
    "preview": ".source {\n  -ms-flow-into: target;\n  -webkit-flow-into: target;\n  flow-into: target; }\n\n.new-container {\n  -ms-flow-from"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/replacement.css",
    "chars": 4047,
    "preview": ".basic {\n  text-indent: -119988px;\n  overflow: hidden;\n  text-align: left;\n  text-transform: capitalize;\n  background-im"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/reset.css",
    "chars": 8182,
    "preview": "html, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, bi"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/selection.css",
    "chars": 1254,
    "preview": "*::-moz-selection {\n  background-color: #fe57a1;\n  color: #fff; }\n*::selection {\n  background-color: #fe57a1;\n  color: #"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/sprites_with_explicit_separator.css",
    "chars": 665,
    "preview": ".flag_states_sprite, .flag_states_foo {\n  background-image: url('/images/flag_states-sc42d7bf926.png');\n  background-rep"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/stretching.css",
    "chars": 880,
    "preview": ".stretched-completely {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  right: 0; }\n\n.stretched-horizontally {"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/support.css",
    "chars": 3686,
    "preview": "/* ### Compass Support ---------- */\n/* - [function] set-arglist-default() with no arguments (1 Assertions, 1 Passed, 0 "
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/text_shadow.css",
    "chars": 774,
    "preview": ".default-single-text-shadow {\n  text-shadow: 0px 0px 1px #aaaaaa; }\n\n.none {\n  text-shadow: none; }\n\n.color-only {\n  tex"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/transform.css",
    "chars": 11681,
    "preview": ".apply-origin-2d {\n  -moz-transform-origin: 2px 5%;\n  -ms-transform-origin: 2px 5%;\n  -webkit-transform-origin: 2px 5%;\n"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/transition.css",
    "chars": 4624,
    "preview": ".single-transition-without-delay {\n  -moz-transition: all 0.6s ease-out;\n  -o-transition: all 0.6s ease-out;\n  -webkit-t"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/typography/links/hover-link.css",
    "chars": 86,
    "preview": "a {\n  text-decoration: none; }\n  a:hover, a:focus {\n    text-decoration: underline; }\n"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/units.css",
    "chars": 1007,
    "preview": ".foo {\n  width: 600px;\n  height: 200px; }\n\n.foo .test {\n  /* 16px for margins should be 1em */\n  margin-top: 1em;\n  /* 1"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/user-interface.css",
    "chars": 1384,
    "preview": ".user-select {\n  -moz-user-select: -moz-none;\n  -ms-user-select: none;\n  -webkit-user-select: none;\n  user-select: none;"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/utilities.css",
    "chars": 1534,
    "preview": ".clearfix {\n  overflow: hidden;\n  *zoom: 1; }\n\n.pie-clearfix {\n  *zoom: 1; }\n  .pie-clearfix:after {\n    content: \"\\0020"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/vertical_rhythm.css",
    "chars": 879,
    "preview": "html {\n  font-size: 87.5%;\n  line-height: 1.14286em; }\n\n.small {\n  font-size: 0.85714em;\n  line-height: 1.33333em; }\n\n.p"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/vertical_rhythm_with_ems.css",
    "chars": 1920,
    "preview": "/* New test using em output */\nhtml {\n  font-size: 112.5%;\n  line-height: 1.4em; }\n\n.container {\n  background-image: url"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/vertical_rhythm_with_px.css",
    "chars": 1850,
    "preview": "/* New using px output */\nhtml {\n  font-size: 18px;\n  line-height: 25px; }\n\n.container {\n  background-image: url('data:i"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/css/vertical_rhythm_with_rems.css",
    "chars": 2245,
    "preview": "/* New using rem output with pixel fallbacks */\nhtml {\n  font-size: 112.5%;\n  line-height: 1.4em; }\n\n.container {\n  back"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/animation-with-legacy-ie.scss",
    "chars": 258,
    "preview": "@import \"compass/css3/animation\";\n@import \"compass/css3/opacity\";\n\n$browser-minimum-versions: (ie: \"6\");\n\n@include keyfr"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/animation.scss",
    "chars": 189,
    "preview": "@import \"compass/css3/animation\";\n\n@include keyframes(test) {\n  0%, 100% {\n    background-color: red; }\n  50% {\n    back"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/appearance.scss",
    "chars": 89,
    "preview": "@import \"compass/css3/appearance\";\n\n.searchfield {\n  @include appearance(searchfield);\n}\n"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/background-clip.scss",
    "chars": 199,
    "preview": "@import \"compass/css3/background-clip\";\n\n.background-clip { @include background-clip('border-box'); }\n\n.background-clip-"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/background-origin.scss",
    "chars": 209,
    "preview": "@import \"compass/css3/background-origin\";\n\n.background-origin { @include background-origin('border-box'); }\n\n.background"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/background-size.scss",
    "chars": 257,
    "preview": "@import \"compass/css3/background-size\";\n\n.background-size-default { @include background-size; }\n\n.background-size-single"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/border_radius.scss",
    "chars": 213,
    "preview": "@import \"compass/css3/border-radius\";\n\n.simple   { @include border-radius(4px, 4px); }\n.compound { @include border-radiu"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/box-sizing.scss",
    "chars": 159,
    "preview": "@import \"compass/css3/box-sizing\";\n\n.div {\n  @include box-sizing();\n}\n.div {\n  @include box-sizing(content-box);\n}\n.div "
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/box.sass",
    "chars": 525,
    "preview": "@import compass/css3/box\n\n.hbox\n  +display-box\n  +box-orient\n  +box-align\n  \n  & > *\n    +box-flex\n\n.vbox\n  +display-box"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/box_shadow.scss",
    "chars": 337,
    "preview": "@import \"compass/css3/box-shadow\";\n\n.no-box-shadow { @include box-shadow(none); }\n.box-shadow { @include box-shadow(defa"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/brightness.scss",
    "chars": 364,
    "preview": "@import \"compass/utilities/color/brightness\";\n\n.black-is-0-percent {\n  brightness: brightness(black); }\n.white-is-100-pe"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/browser-support.scss",
    "chars": 1073,
    "preview": "@import \"compass/support\";\n@import \"compass/css3/flexbox\";\n\n@function unprefixed-at-version($browser, $capability) {\n  $"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/color.scss",
    "chars": 510,
    "preview": "$contrasted-dark-default: black;\n$contrasted-light-default: white;\n\n@import \"compass/utilities/color\";\n\n.handles-null {\n"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/columns.scss",
    "chars": 1795,
    "preview": "@import \"compass/css3/columns\";\n\n.columns            { @include columns(20em 5);               }\n.column-count       { @"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/filters.scss",
    "chars": 511,
    "preview": "$debug-browser-support: true;\n@import \"compass/css3/filter\";\n\n.blur {\n  @include filter(blur(5px));\n}\n.brightness {\n  @i"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/flexbox.scss",
    "chars": 1322,
    "preview": "@import \"compass/css3/flexbox\";\n\n.display {\n  @include display-flex;\n}\n\n.flex-direction {\n  @include flex-direction(row-"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/fonts.sass",
    "chars": 268,
    "preview": "@import compass/css3/font-face\n\n+font-face(\"font1\", font-files(\"font1.woff\", woff), \"font1.eot\")\n\n@font-face\n  font-fami"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/force-wrap.scss",
    "chars": 65,
    "preview": "@import \"compass/typography/text\";\n\npre { @include force-wrap; }\n"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/gradients.sass",
    "chars": 4011,
    "preview": "@import compass/css3/images\n\n$svg-gradient-shim-threshold: 0\n\n.bg-shortcut-simple-image\n  +background(white url('foo.png"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/grid_background.scss",
    "chars": 631,
    "preview": "@import \"compass/layout/grid-background\";\n\n.baseline {\n  @include baseline-grid-background;\n}\n\n.columns {\n  @include col"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/hyphenation.scss",
    "chars": 162,
    "preview": "@import \"compass/css3/hyphenation\";\n\n.word-break {\n\t@include word-break(keep-all);\n}\n.hyphens {\n\t@include hyphens(manual"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/image_size.sass",
    "chars": 394,
    "preview": ".png\n  width: image_width(unquote(\"100x150.png\"))\n  height: image_height(unquote(\"100x150.png\"))\n\n.jpg\n  width: image_wi"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/images.scss",
    "chars": 206,
    "preview": ".relative {\n  background-image: image-url(\"4x6.png\");\n}\n.root-relative {\n  background-image: image-url(\"/images/4x6.png\""
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/layout.sass",
    "chars": 112,
    "preview": "@import compass/layout\n\n+sticky-footer(72px, unquote(\"#layout\"), unquote(\"#layout_footer\"), unquote(\"#footer\"))\n"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/legacy_clearfix.scss",
    "chars": 214,
    "preview": "$default-has-layout-approach: block;\n\n@import \"compass/utilities\";\n\n.clearfix {\n    @include clearfix;\n}\n\n.pie-clearfix "
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/lists.scss",
    "chars": 666,
    "preview": "@import \"compass/typography/lists\";\n\nul.horizontal        { @include horizontal-list;             }\nul.wide-horizontal  "
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/opacity.scss",
    "chars": 97,
    "preview": "@import \"compass/css3/opacity\";\n\ndiv {\n  @include opacity(1);\n}\n\ndiv {\n  @include opacity(.2);\n}\n"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/print.sass",
    "chars": 76,
    "preview": "@import compass/utilities/print\n\n+print-utilities\n\n+print-utilities(screen)\n"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/regions.scss",
    "chars": 121,
    "preview": "@import \"compass/css3/regions\";\n\n.source   { @include flow-into(target); }\n.new-container { @include flow-from(target); "
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/replacement.scss",
    "chars": 581,
    "preview": "@import \"compass/typography/text/replacement\";\n.basic {\n  @include replace-text(\"4x6.png\");\n}\n.with-dimensions {\n  @incl"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/reset.sass",
    "chars": 326,
    "preview": "@import compass/reset\n\n// Turn off the display for both of these classes\n.unregistered-only, .registered-only\n  display:"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/selection.scss",
    "chars": 767,
    "preview": "$contrasted-dark-default: black;\n$contrasted-light-default: white;\n\n@import \"compass/css3/selection\";\n\n* {\n  @include se"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/sprites_with_explicit_separator.scss",
    "chars": 220,
    "preview": "$flag_states-sprite-dimensions: true;\n$flag_states-class-separator: \"_\";\n\n@import \"flag_states/*.png\";\n\n@include all-fla"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/stretching.sass",
    "chars": 454,
    "preview": "@import \"compass/layout/stretching\"\n\n.stretched-completely\n  +stretch\n\n.stretched-horizontally\n  +stretch-x\n\n.stretched-"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/support.scss",
    "chars": 7300,
    "preview": "@import \"compass/css3/animation\";\n@import \"compass/css3/opacity\";\n@import \"true\";\n\n$some-default-value: some default val"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/text_shadow.scss",
    "chars": 741,
    "preview": "$default-text-shadow-color: #aaaaaa;\n@import \"compass/css3/text-shadow\";\n\n.default-single-text-shadow { @include single-"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/transform.scss",
    "chars": 5590,
    "preview": "@import \"compass/css3/transform\";\n\n.apply-origin-2d                  { @include apply-origin(2px 5%, false); }\n.apply-or"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/transition.scss",
    "chars": 1658,
    "preview": "@import \"compass/css3/transition\";\n\n.single-transition-without-delay  { @include single-transition(all, 0.6s, ease-out);"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/typography/links/hover-link.scss",
    "chars": 75,
    "preview": "@import \"compass/typography/links/hover-link\";\n\na { @include hover-link; }\n"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/units.scss",
    "chars": 1288,
    "preview": "$base-font-size: 16px;\n\n@import \"compass/typography/units\";\n\n.foo {\n\twidth: 600px;\n\theight: 200px;\n}\n\n.foo .test {\n\t/* 1"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/user-interface.scss",
    "chars": 525,
    "preview": "@import \"compass/css3/user-interface\";\n\n.user-select {\n  @include user-select(none);\n}\n\n* {\n  @include input-placeholder"
  },
  {
    "path": "cli/test/fixtures/stylesheets/compass/sass/utilities.scss",
    "chars": 684,
    "preview": "$contrasted-dark-default: black;\n$contrasted-light-default: white;\n\n@import \"compass/utilities\";\n\n.clearfix {\n    @inclu"
  }
]

// ... and 683 more files (download for full content)

About this extraction

This page contains the full source code of the Compass/compass GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 883 files (2.0 MB), approximately 584.5k tokens, and a symbol index with 1687 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!