Sha256: 4cc9b7593abec74d840c3235dc47bf5797b6d09db688c7864bda1ce6dc7e3075

Contents?: true

Size: 890 Bytes

Versions: 1

Compression:

Stored size: 890 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

      attr_reader :raw_fields, :root

      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

1 entries across 1 versions & 1 rubygems

Version Path
active_model_serializers-0.10.0.rc2 lib/active_model/serializer/fieldset.rb