Commit Graph

11 Commits

Author SHA1 Message Date
Chris Eppstein
f59ca512ce Refactor of the internal datastructures used to access project
configuration. Configuration is now a singly linked list of configuration objects
that inherit values and defaults from the next configuration instance.
All instances hold a reference to the top of the configuration chain.

There is now a consistent API for reading configuration property values:

                <attr>: Reads the fully-resolved attribute after taking
                        configuration inheritance and defaults into account.
            raw_<attr>: reads attribute from a configuration object without
                        inheritance or defaults.
   default_for(<attr>): reads the default value for an attribute
    default_for_<attr>: specifies the default value for an attribute.
<attr>_without_default: reads the inherited attribute without applying defaults.
    comment_for_<attr>: Specifies a comment that will be emitted above the
                        property when serializing the configuration to a file.

Additionally, method_missing and respond_to both work down the
configuration chain, so any method that is added to a configuration
instance, can be accessed from the top level.

The distinction between default and explicitly set values allows compass
to more correctly manage the serialization of attributes when creating
configuration files for projects.

The compass configuration can still be accessed via
Compass.configuration, however, the configuration object is no longer a
singleton. This means that you can build several configuration chains
to track several projects at once. This should ease the use of compass
in other frameworks and plugins that want to use compass internally.
2009-08-29 13:20:32 -07:00
Chris Eppstein
6555ab3952 [Configuration] A more logical and consistent approach to http path locations. 2009-07-06 07:18:25 -07:00
Chris Eppstein
956c437fe9 [Configuration] [Command Line] Whether to generate relative links to assets is now controlled by a separate configuration flag and can be set via a command-line switch. 2009-07-06 07:18:25 -07:00
Chris Eppstein
802bca6174 [Configuration] Allow additional sass options to be specified in the compass configuration using the sass_options property. 2009-06-27 13:05:30 -07:00
Chris Eppstein
047be06a0a [Configuration] Allow additional import paths to be declared within the compass configuration. 2009-06-27 12:15:28 -07:00
Chris Eppstein
ec6c12092e Test that serialization of configuration fails when using blocks. 2009-06-27 11:28:16 -07:00
Chris Eppstein
a2462db334 Need to reset the configuration before each configuration test case. 2009-05-08 08:11:42 -07:00
Chris Eppstein
d4aa36f0f0 Fix some failing tests and refactor the tests to make better use of new compass facilities that didn't exist when the tests were first written. 2009-05-08 08:09:43 -07:00
Chris Eppstein
1170d324a7 Fix failing test cases. 2009-04-07 00:22:21 -07:00
Chris Eppstein
95fd94428a Refactored the Configuration Singleton and the UpdateProject command so that it now relies more heavily on the configuration object. 2009-02-21 00:15:19 -08:00
Chris Eppstein
39a4b48b5e Fixed a bug in the configuration parser.
Added Compass#sass_engine_options method to emit sass options suitable
for passing to Sass::Engine#new.

Added require tracking in the configuration parser and serializer.
2009-02-12 23:19:32 -08:00