diff --git a/lib/active_model/ordered_set.rb b/lib/active_model/ordered_set.rb new file mode 100644 index 00000000..dd76ed41 --- /dev/null +++ b/lib/active_model/ordered_set.rb @@ -0,0 +1,25 @@ +module ActiveModel + class OrderedSet + def initialize(array) + @array = array + @hash = {} + + array.each do |item| + @hash[item] = true + end + end + + def merge!(other) + other.each do |item| + next if @hash.key?(item) + + @hash[item] = true + @array.push item + end + end + + def to_a + @array + end + end +end diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index a301a7f9..82ee0481 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -3,30 +3,6 @@ require "active_support/core_ext/module/anonymous" require "set" module ActiveModel - class OrderedSet - def initialize(array) - @array = array - @hash = {} - - array.each do |item| - @hash[item] = true - end - end - - def merge!(other) - other.each do |item| - next if @hash.key?(item) - - @hash[item] = true - @array.push item - end - end - - def to_a - @array - end - end - # Active Model Serializer # # Provides a basic serializer implementation that allows you to easily diff --git a/lib/active_model_serializers.rb b/lib/active_model_serializers.rb index bfa1639a..33aa902b 100644 --- a/lib/active_model_serializers.rb +++ b/lib/active_model_serializers.rb @@ -2,6 +2,7 @@ require "active_support" require "active_support/core_ext/string/inflections" require "active_support/notifications" require "active_model" +require "active_model/ordered_set" require "active_model/array_serializer" require "active_model/serializer" require "set"