diff --git a/lib/string_tools.rb b/lib/string_tools.rb index ee06910..dfdbef2 100644 --- a/lib/string_tools.rb +++ b/lib/string_tools.rb @@ -12,11 +12,8 @@ module CharDet # Возвращает true если строка содержит допустимую # последовательность байтов для кодировки utf8 и false в обратном случае # см. http://en.wikipedia.org/wiki/UTF-8 - def valid_utf8? string - case string - when String then string.is_utf8? - else false - end + def valid_utf8?(string) + string.respond_to?(:is_utf8?) && string.is_utf8? end # shorthand @@ -66,7 +63,7 @@ def truncate_words(text, length = 75) module ActionControllerExtension def accepts_non_utf8_params(*args) args.each do |arg| - next unless arg.is_a?(Symbol) || arg.is_a?(String) + next unless arg.is_a?(Symbol) || arg.is_a?(::String) arg = arg.to_sym class_eval do diff --git a/spec/string_tools_spec.rb b/spec/string_tools_spec.rb index 36c4dde..db97de3 100644 --- a/spec/string_tools_spec.rb +++ b/spec/string_tools_spec.rb @@ -137,4 +137,9 @@ end end end + + describe '#valid_utf8?' do + it { expect(StringTools.valid_utf8?('foobar')).to be true } + it { expect(StringTools.valid_utf8?(nil)).to be false } + end end