]> source.dussan.org Git - sonarqube.git/commitdiff
Add ruby methods Api::Utils#insensitive_sort(arr) and Api::Utils#insensitive_sort...
authorSimon Brandhof <simon.brandhof@gmail.com>
Tue, 27 Mar 2012 12:58:09 +0000 (14:58 +0200)
committerSimon Brandhof <simon.brandhof@gmail.com>
Tue, 27 Mar 2012 13:02:57 +0000 (15:02 +0200)
sonar-server/src/main/webapp/WEB-INF/app/models/api/utils.rb

index 6d89067a59183fb6ad2d0544c5fff9a544ed9839..e8a6b4038a0c56cdf5539d204972ff654ff69a4e 100644 (file)
@@ -77,4 +77,51 @@ class Api::Utils
     end
     result
   end
+
+  # Returns a new array created by sorting arr
+  # Since Sonar 2.15
+  #
+  # Examples :
+  # Api::Utils.insensitive_sort(['foo', 'bar'])
+  # Api::Utils.insensitive_sort([foo, bar]) { |elt| elt.nullable_field_to_compare }
+  #
+  def self.insensitive_sort(arr)
+    if block_given?
+      arr.sort do |a, b|
+        a_string=yield(a) || ''
+        b_string=yield(b) || ''
+        a_string.downcase <=> b_string.downcase || a_string <=> b_string
+      end
+    else
+      arr.sort do |a, b|
+        a_string=a || ''
+        b_string=b || ''
+        a_string.downcase <=> b_string.downcase || a_string <=> b_string
+      end
+    end
+  end
+
+
+  # Sorts arr
+  # Since Sonar 2.15
+  #
+  # Examples :
+  # Api::Utils.insensitive_sort!(['foo', 'bar'])
+  # Api::Utils.insensitive_sort!([foo, bar]) { |elt| elt.nullable_field_to_compare }
+  #
+  def self.insensitive_sort!(arr)
+    if block_given?
+      arr.sort! do |a, b|
+        a_string=yield(a) || ''
+        b_string=yield(b) || ''
+        a_string.downcase <=> b_string.downcase || a_string <=> b_string
+      end
+    else
+      arr.sort! do |a, b|
+        a_string=a || ''
+        b_string=b || ''
+        a_string.downcase <=> b_string.downcase || a_string <=> b_string
+      end
+    end
+  end
 end