[Configuration] Strip trailing slash and directory separtors from directory and path configuration variables.
Closes GH-77.
This commit is contained in:
parent
fd2ab06f60
commit
5078d0a0a9
@ -41,6 +41,6 @@ module Compass
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
['adapters', 'comments', 'defaults', 'helpers', 'inheritance', 'serialization', 'data'].each do |lib|
|
['adapters', 'comments', 'defaults', 'helpers', 'inheritance', 'serialization', 'paths', 'data'].each do |lib|
|
||||||
require "compass/configuration/#{lib}"
|
require "compass/configuration/#{lib}"
|
||||||
end
|
end
|
||||||
|
@ -22,10 +22,13 @@ module Compass
|
|||||||
include Compass::Configuration::Inheritance
|
include Compass::Configuration::Inheritance
|
||||||
include Compass::Configuration::Serialization
|
include Compass::Configuration::Serialization
|
||||||
include Compass::Configuration::Adapters
|
include Compass::Configuration::Adapters
|
||||||
|
extend Compass::Configuration::Paths
|
||||||
|
|
||||||
inherited_accessor *ATTRIBUTES
|
inherited_accessor *ATTRIBUTES
|
||||||
inherited_accessor :required_libraries #XXX we should make this array add up cumulatively.
|
inherited_accessor :required_libraries #XXX we should make this array add up cumulatively.
|
||||||
|
|
||||||
|
strip_trailing_separator *ATTRIBUTES.select{|a| a.to_s =~ /dir|path/}
|
||||||
|
|
||||||
def initialize(name, attr_hash = nil)
|
def initialize(name, attr_hash = nil)
|
||||||
raise "I need a name!" unless name
|
raise "I need a name!" unless name
|
||||||
@name = name
|
@name = name
|
||||||
|
19
lib/compass/configuration/paths.rb
Normal file
19
lib/compass/configuration/paths.rb
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
module Compass::Configuration::Paths
|
||||||
|
|
||||||
|
TRAILING_SEPARATOR = %r{.(/|#{Regexp.escape(File::SEPARATOR)})$}
|
||||||
|
|
||||||
|
def strip_trailing_separator(*attributes)
|
||||||
|
attributes.each do |attr|
|
||||||
|
alias_method "#{attr}_with_trailing_separator".to_sym, attr
|
||||||
|
class_eval %Q{
|
||||||
|
def #{attr} # def css_dir
|
||||||
|
path = #{attr}_with_trailing_separator # path = css_dir_with_trailing_separator
|
||||||
|
if path =~ TRAILING_SEPARATOR # if path =~ TRAILING_SEPARATOR
|
||||||
|
path = path[0..-($1.length+1)] # path = path[0..-($1.length+1)]
|
||||||
|
end # end
|
||||||
|
path # path
|
||||||
|
end # end
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -120,4 +120,29 @@ EXPECTED
|
|||||||
assert_equal expected_serialization, Compass.configuration.serialize
|
assert_equal expected_serialization, Compass.configuration.serialize
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_strip_trailing_directory_separators
|
||||||
|
contents = StringIO.new(<<-CONFIG)
|
||||||
|
css_dir = "css/"
|
||||||
|
sass_dir = "sass/"
|
||||||
|
images_dir = "images/"
|
||||||
|
javascripts_dir = "js/"
|
||||||
|
fonts_dir = "fonts/"
|
||||||
|
extensions_dir = "extensions/"
|
||||||
|
css_path = "css/"
|
||||||
|
sass_path = "sass/"
|
||||||
|
images_path = "images/"
|
||||||
|
javascripts_path = "js/"
|
||||||
|
fonts_path = "fonts/"
|
||||||
|
extensions_path = "extensions/"
|
||||||
|
CONFIG
|
||||||
|
|
||||||
|
Compass.add_configuration(contents, "test_strip_trailing_directory_separators")
|
||||||
|
|
||||||
|
assert_equal "css", Compass.configuration.css_dir
|
||||||
|
assert_equal "sass", Compass.configuration.sass_dir
|
||||||
|
assert_equal "images", Compass.configuration.images_dir
|
||||||
|
assert_equal "js", Compass.configuration.javascripts_dir
|
||||||
|
assert_equal "fonts", Compass.configuration.fonts_dir
|
||||||
|
assert_equal "extensions", Compass.configuration.extensions_dir
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user