Sha256: 4b11f051b24542895f955a0c70009c99e7cd96299a27a39fa33648e8a16219e4

Contents?: true

Size: 963 Bytes

Versions: 5

Compression:

Stored size: 963 Bytes

Contents

module SoberSwag
  class OutputObject
    ##
    # Syntax for definitions that can add fields.
    module FieldSyntax
      def field(name, serializer, from: nil, &block)
        add_field!(Field.new(name, serializer, from: from, &block))
      end

      ##
      # Similar to #field, but adds multiple at once.
      # Named #multi because #fields was already taken.
      def multi(names, serializer)
        names.each { |name| field(name, serializer) }
      end

      ##
      # Given a symbol to this, we will use a primitive name
      def primitive(name)
        SoberSwag::Serializer.primitive(SoberSwag::Types.const_get(name))
      end

      ##
      # Merge in anything that has a list of fields, and use it.
      # Note that merging in a full blueprint *will not* also merge in views, just fields defined on the base.
      def merge(other)
        other.fields.each do |field|
          add_field!(field)
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
sober_swag-0.19.0 lib/sober_swag/output_object/field_syntax.rb
sober_swag-0.18.0 lib/sober_swag/output_object/field_syntax.rb
sober_swag-0.17.0 lib/sober_swag/output_object/field_syntax.rb
sober_swag-0.16.0 lib/sober_swag/output_object/field_syntax.rb
sober_swag-0.15.0 lib/sober_swag/output_object/field_syntax.rb