Sha256: f3ff3ec4ac9a3d7327c7f1068423a7d9ed06a5425475d63407b8a4453c98e9b4
Contents?: true
Size: 1.96 KB
Versions: 17
Compression:
Stored size: 1.96 KB
Contents
module Tdc module Generators # # Knows how to provide a configurable instance definition. # class StandardGenerator < Tdc::Generators::GeneratorBase include Tdc::Generators::DefinitionSourcable attr_reader :instance_definition source_definition_from :instance_definition def generate CatalogEntries.new.tap do |catalog_entries| instance_definitions.each do |instance_definition| configure_instance_definition(instance_definition) # Delete the tag so that the models do not need to filter it out. tag = instance_definition.delete("tag") generated = run_resolvers_and_generate_instance # Add generated instance to the catalog entries whenever a tag provided. catalog_entries.add_catalog_entry(tag, generated) if tag end end end def run_resolvers_and_generate_instance run_extended_attribute_interpreters(instance_definition) run_definition_resolvers(instance_definition) generate_instance end # # Hook method: subclasses are expected to define how to generate a model instance. # def generate_instance raise Tdc::MissingOverrideError, "Implement the 'generate_instance' method" end # # Hook method: subclasses may include the DefinitionResolvable concern to override. # def run_definition_resolvers(_instance_definition) # Do nothing end private def configure_instance_definition(instance_definition) @instance_definition = instance_definition configure_definition_source(instance_definition) end def run_extended_attribute_interpreters(instance_definition) interpreters.each { |interpreter| interpreter.interpret(instance_definition) } end def interpreters Tdc::ExtendedAttributes::InterpreterRegistry.instance.interpreters end end end end
Version data entries
17 entries across 17 versions & 1 rubygems