Sha256: 12fe863dbf9d5a83dd7ece8b37c5eee74d8fbf1d8ec25d82817471e9e40b0a3c

Contents?: true

Size: 1.8 KB

Versions: 26

Compression:

Stored size: 1.8 KB

Contents

module Tdc
  module Generators
    #
    # Knows how to resolve attribute values in an instance definition. The attribute value will be replaced
    # by the result of invoking the registered resolver.
    #
    # The resolve_tag class macro is provided for generators to define tag resolution. The test data definition
    # YAML file has attribute values than contain a catalog entry tag.
    #
    # Example:
    #
    # Suppose a particular instance definition contained { subcomponent: sc_snackers_minis } then a generator
    # could resolve the subcomponent tag to the current catalog by defining:
    #
    #   resolve_tag key: :subcomponent, source: "item_master.items"
    #
    # The register_definition_resolver class macro is provided for generators to define and register their own
    # definition resolvers. The test data  definition YAML file has attribute values than contain an arbitrary
    # value that will typically be replaced by an instance of an object returned by the specified resolver.
    #
    module DefinitionResolvable
      extend ActiveSupport::Concern

      included do
        class_attribute :_definition_resolvers, instance_writer: false

        self._definition_resolvers = []
      end

      class_methods do
        def register_definition_resolver(resolver_instance)
          _definition_resolvers << resolver_instance
        end

        def resolve_tag(key:, source:)
          register_definition_resolver(Tdc::DefinitionResolvers::TagResolver.new(key: key, source: source))
        end
      end

      def run_definition_resolvers(instance_definition)
        _definition_resolvers.each do |definition_resolver|
          definition_resolver.configure_current_catalog(current_catalog)

          definition_resolver.resolve(instance_definition)
        end
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
tdc-1.1 lib/tdc/generators/definition_resolvable.rb
tdc-1.0 lib/tdc/generators/definition_resolvable.rb
tdc-0.6.2 lib/tdc/generators/definition_resolvable.rb
tdc-0.6.1 lib/tdc/generators/definition_resolvable.rb
tdc-0.6.0 lib/tdc/generators/definition_resolvable.rb
tdc-0.5.0 lib/tdc/generators/definition_resolvable.rb
tdc-0.4.7 lib/tdc/generators/definition_resolvable.rb
tdc-0.4.6.1 lib/tdc/generators/definition_resolvable.rb
tdc-0.4.6 lib/tdc/generators/definition_resolvable.rb
tdc-0.4.4.1 lib/tdc/generators/definition_resolvable.rb
tdc-0.4.4 lib/tdc/generators/definition_resolvable.rb
tdc-0.4.3.1 lib/tdc/generators/definition_resolvable.rb
tdc-0.4.3 lib/tdc/generators/definition_resolvable.rb
tdc-0.4.2 lib/tdc/generators/definition_resolvable.rb
tdc-0.4.1 lib/tdc/generators/definition_resolvable.rb
tdc-0.4.0 lib/tdc/generators/definition_resolvable.rb
tdc-0.3.9 lib/tdc/generators/definition_resolvable.rb
tdc-0.3.8 lib/tdc/generators/definition_resolvable.rb
tdc-0.3.7 lib/tdc/generators/definition_resolvable.rb
tdc-0.3.6.1 lib/tdc/generators/definition_resolvable.rb