diff --git a/lib/friendly_id/slug_string.rb b/lib/friendly_id/slug_string.rb index 989fc9271..0e80e3b3b 100644 --- a/lib/friendly_id/slug_string.rb +++ b/lib/friendly_id/slug_string.rb @@ -191,7 +191,7 @@ def initialize(string) # @param *args # @return String def approximate_ascii!(*args) - @maps = (self.class.approximations + args + [:common]).flatten.uniq + @maps = (self.class.approximations + args.flatten + [:common]).flatten.uniq @wrapped_string = normalize_utf8(:c).unpack("U*").map { |char| approx_char(char) }.flatten.pack("U*") end @@ -235,7 +235,7 @@ def word_chars! # @param config [FriendlyId::Configuration] # @return String def normalize_for!(config) - approximate_ascii! if config.approximate_ascii? + approximate_ascii!(config.ascii_approximation_options) if config.approximate_ascii? to_ascii! if config.strip_non_ascii? normalize! end diff --git a/lib/friendly_id/test.rb b/lib/friendly_id/test.rb index 84a33d17b..069d067d6 100644 --- a/lib/friendly_id/test.rb +++ b/lib/friendly_id/test.rb @@ -194,6 +194,19 @@ module Slugged end end + test "should approximate ascii if configured" do + klass.friendly_id_config.stubs(:approximate_ascii?).returns(true) + instance = klass.send(create_method, :name => "Cañón") + assert_equal "canon", instance.friendly_id + end + + test "should approximate ascii with options if configured" do + klass.friendly_id_config.stubs(:approximate_ascii?).returns(true) + klass.friendly_id_config.stubs(:ascii_approximation_options).returns(:spanish) + instance = klass.send(create_method, :name => "Cañón") + assert_equal "cannon", instance.friendly_id + end + end # Tests for FriendlyId::Status.