Merge pull request #554 from arthanzel/529-sort_natural

Merge pull request 554
This commit is contained in:
Justin Li
2015-05-12 13:19:24 -04:00
2 changed files with 44 additions and 0 deletions
+14
View File
@@ -122,6 +122,20 @@ module Liquid
end
end
# Sort elements of an array ignoring case if strings
# provide optional property with which to sort an array of hashes or drops
def sort_natural(input, property = nil)
ary = InputIterator.new(input)
if property.nil?
ary.sort {|a,b| a.casecmp(b) }
elsif ary.first.respond_to?(:[]) && !ary.first[property].nil?
ary.sort {|a,b| a[property].casecmp(b[property]) }
elsif ary.first.respond_to?(property)
ary.sort {|a,b| a.send(property).casecmp(b.send(property)) }
end
end
# Remove duplicate elements from an array
# provide optional property with which to determine uniqueness
def uniq(input, property = nil)