From 9ebbe622307a590c97c17a2c63335d8b62172ee2 Mon Sep 17 00:00:00 2001 From: Nathan Weizenbaum Date: Sat, 22 Nov 2008 17:39:59 -0800 Subject: [PATCH] Support Unicode-escapes in Sass strings. --- lib/sass/script/lexer.rb | 2 +- test/sass/script_test.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/sass/script/lexer.rb b/lib/sass/script/lexer.rb index 6fca904a..96652d5e 100644 --- a/lib/sass/script/lexer.rb +++ b/lib/sass/script/lexer.rb @@ -85,7 +85,7 @@ module Sass def string return unless @scanner.scan(REGULAR_EXPRESSIONS[:string]) - [:string, Script::String.new(@scanner[1].gsub(/\\(.)/, '\1'))] + [:string, Script::String.new(@scanner[1].gsub(/\\([^0-9a-f])/, '\1').gsub(/\\([0-9a-f]{1,4})/, "\\\\\\1"))] end def number diff --git a/test/sass/script_test.rb b/test/sass/script_test.rb index 2dd2ead6..f3ee1269 100644 --- a/test/sass/script_test.rb +++ b/test/sass/script_test.rb @@ -5,8 +5,18 @@ require 'sass/engine' class SassScriptTest < Test::Unit::TestCase include Sass::Script + def eval(str, environment = {}) + Sass::Script.resolve(str, 0, environment) + end + def test_color_checks_input assert_raise(Sass::SyntaxError, "Color values must be between 0 and 255") {Color.new([1, 2, -1])} assert_raise(Sass::SyntaxError, "Color values must be between 0 and 255") {Color.new([256, 2, 3])} end + + def test_string_escapes + assert_equal '"', eval("\"\\\"\"") + assert_equal "\\", eval("\"\\\\\"") + assert_equal "\\02fa", eval("\"\\02fa\"") + end end