class Tdc::Generators::StandardGenerator

Knows how to provide a configurable instance definition.

Attributes

instance_definition[R]

Public Instance Methods

generate() click to toggle source
# File lib/tdc/generators/standard_generator.rb, line 13
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
generate_instance() click to toggle source

Hook method: subclasses are expected to define how to generate a model instance.

# File lib/tdc/generators/standard_generator.rb, line 39
def generate_instance
  raise Tdc::MissingOverrideError, "Implement the 'generate_instance' method"
end
run_definition_resolvers(_instance_definition) click to toggle source

Hook method: subclasses may include the DefinitionResolvable concern to override.

# File lib/tdc/generators/standard_generator.rb, line 46
def run_definition_resolvers(_instance_definition)
  # Do nothing
end
run_resolvers_and_generate_instance() click to toggle source
# File lib/tdc/generators/standard_generator.rb, line 29
def run_resolvers_and_generate_instance
  run_extended_attribute_interpreters(instance_definition)
  run_definition_resolvers(instance_definition)

  generate_instance
end

Private Instance Methods

configure_instance_definition(instance_definition) click to toggle source
# File lib/tdc/generators/standard_generator.rb, line 52
def configure_instance_definition(instance_definition)
  @instance_definition = instance_definition

  configure_definition_source(instance_definition)
end
interpreters() click to toggle source
# File lib/tdc/generators/standard_generator.rb, line 62
def interpreters
  Tdc::ExtendedAttributes::InterpreterRegistry.instance.interpreters
end
run_extended_attribute_interpreters(instance_definition) click to toggle source
# File lib/tdc/generators/standard_generator.rb, line 58
def run_extended_attribute_interpreters(instance_definition)
  interpreters.each { |interpreter| interpreter.interpret(instance_definition) }
end