Sha256: 8d1fc15fa5becf2e31b9c9e1ca4756794bffd765f0507f60393e39fa2e12ce20

Contents?: true

Size: 1.17 KB

Versions: 1

Compression:

Stored size: 1.17 KB

Contents

module Tdc
  module Generators
    #
    # Abstract class for defining generators that define a single model instance.
    #
    # See also StandardGenerator.
    #
    class SingularGenerator < Tdc::Generators::GeneratorBase
      include Tdc::Generators::InstanceDefinitionConfigurable

      def initialize(data_definition, current_catalog)
        super

        @additional_definitions = {}
      end

      def with_definition(additional_definitions)
        @additional_definitions = additional_definitions.stringify_keys.reject { |_, v| v == :missing_definition }

        self
      end

      def generate
        configure_instance_definition(singular_instance_definition.merge(@additional_definitions))

        run_resolvers_and_generate_instance
      end

      private

      def singular_instance_definition
        all_instance_definitions = instance_definitions

        if all_instance_definitions.many?
          raise Tdc::NonSingularInstanceError, "For the moment we only generate a single model instance"
        end

        # Delete the tag so that the models do not need to filter it out.
        all_instance_definitions.first.except("tag")
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tdc-0.1.2 lib/tdc/generators/singular_generator.rb