Sha256: f413180a6712ebb8202f0f35507e81557a8507530aa7cbeec9cab4af0931eb5b

Contents?: true

Size: 953 Bytes

Versions: 3

Compression:

Stored size: 953 Bytes

Contents

module ActiveModel
  class Serializer
    class Fieldset
      def initialize(fields, root = nil)
        @root       = root
        @raw_fields = fields
      end

      def fields
        @fields ||= parsed_fields
      end

      def fields_for(serializer)
        key = serializer.json_key
        fields[key.to_sym] || fields[key.pluralize.to_sym]
      end

      private

      ActiveModelSerializers.silence_warnings do
      attr_reader :raw_fields, :root
      end

      def parsed_fields
        if raw_fields.is_a?(Hash)
          raw_fields.inject({}) { |h, (k, v)| h[k.to_sym] = v.map(&:to_sym); h }
        elsif raw_fields.is_a?(Array)
          if root.nil?
            raise ArgumentError, 'The root argument must be specified if the fileds argument is an array.'
          end
          hash = {}
          hash[root.to_sym] = raw_fields.map(&:to_sym)
          hash
        else
          {}
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cheap_ams-0.10.8 lib/active_model/serializer/fieldset.rb
cheap_ams-0.10.7 lib/active_model/serializer/fieldset.rb
cheap_ams-0.10.6 lib/active_model/serializer/fieldset.rb