Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Remove redundant checks for valid character regexp in ActiveSupport::…

…Multibyte#clean and #verify.

[#3181 state:committed]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
  • Loading branch information...
commit 81d828a14c82b882e31612431a56f830bdc1076f 1 parent 5b8b417
Beau Harrington authored September 09, 2009 jeremy committed September 10, 2009
84  activesupport/lib/active_support/multibyte/utils.rb
... ...
@@ -1,39 +1,53 @@
1 1
 module ActiveSupport #:nodoc:
2  
- module Multibyte #:nodoc:
3  
-   # Returns a regular expression that matches valid characters in the current encoding
4  
-   def self.valid_character
5  
-     case $KCODE
6  
-     when 'UTF8'
7  
-       VALID_CHARACTER['UTF-8']
8  
-     when 'SJIS'
9  
-       VALID_CHARACTER['Shift_JIS']
10  
-     end
11  
-   end
  2
+  module Multibyte #:nodoc:
  3
+    # Returns a regular expression that matches valid characters in the current encoding
  4
+    def self.valid_character
  5
+      case $KCODE
  6
+      when 'UTF8'
  7
+        VALID_CHARACTER['UTF-8']
  8
+      when 'SJIS'
  9
+        VALID_CHARACTER['Shift_JIS']
  10
+      end
  11
+    end
12 12
 
13  
-   # Verifies the encoding of a string
14  
-   def self.verify(string)
15  
-     if expression = valid_character
16  
-       for c in string.split(//)
17  
-         return false unless valid_character.match(c)
18  
-       end
19  
-     end
20  
-     true
21  
-   end
  13
+    if 'string'.respond_to?(:valid_encoding?)
  14
+      # Verifies the encoding of a string
  15
+      def self.verify(string)
  16
+        string.valid_encoding?
  17
+      end
  18
+    else
  19
+      def self.verify(string)
  20
+        if expression = valid_character
  21
+          for c in string.split(//)
  22
+            return false unless expression.match(c)
  23
+          end
  24
+        end
  25
+        true
  26
+      end
  27
+    end
22 28
 
23  
-   # Verifies the encoding of the string and raises an exception when it's not valid
24  
-   def self.verify!(string)
25  
-     raise ActiveSupport::Multibyte::Handlers::EncodingError.new("Found characters with invalid encoding") unless verify(string)
26  
-   end
  29
+    # Verifies the encoding of the string and raises an exception when it's not valid
  30
+    def self.verify!(string)
  31
+      raise ActiveSupport::Multibyte::Handlers::EncodingError.new("Found characters with invalid encoding") unless verify(string)
  32
+    end
27 33
 
28  
-   # Removes all invalid characters from the string
29  
-   def self.clean(string)
30  
-     if expression = valid_character
31  
-       stripped = []; for c in string.split(//)
32  
-         stripped << c if valid_character.match(c)
33  
-       end; stripped.join
34  
-     else
35  
-       string
36  
-     end
37  
-   end
38  
- end
39  
-end
  34
+    if 'string'.respond_to?(:force_encoding)
  35
+      # Removes all invalid characters from the string.
  36
+      #
  37
+      # Note: this method is a no-op in Ruby 1.9
  38
+      def self.clean(string)
  39
+        string
  40
+      end
  41
+    else
  42
+      def self.clean(string)
  43
+        if expression = valid_character
  44
+          stripped = []; for c in string.split(//)
  45
+            stripped << c if expression.match(c)
  46
+          end; stripped.join
  47
+        else
  48
+          string
  49
+        end
  50
+      end
  51
+    end
  52
+  end
  53
+end

0 notes on commit 81d828a

Please sign in to comment.
Something went wrong with that request. Please try again.