class IOSGen::Generator::BaseGenerator

Base Generator

Constants

INTERACTORS_KEY
VIEWCONTROLLER_KEY
VIEWMODEL_KEY

Attributes

destination[R]
factory[R]
file_spec[R]
formatter[R]
test_formatter[R]
type[R]
view_controller[R]
view_model[R]

Public Class Methods

new(hash = {}) click to toggle source
# File lib/ios_gen/generator/base_generator.rb, line 16
def initialize(hash = {})
  @type = hash[:type]
  @file_spec = hash[:file_spec]
  @destination = hash[:destination]
  @factory = IOSGen::Base::BaseFactory.new
  interactor_formatter = Objc::InteractorFormatter.new
  view_model_formatter = Objc::ViewModelFormatter.new(interactor_formatter)
  view_controller_formatter = Objc::ViewControllerFormatter.new(view_model_formatter)
  @formatter = Objc::Formatter.new(view_controller_formatter, view_model_formatter, interactor_formatter)
  @test_formatter = Objc::XctestcaseFormatter.new
  parse
end

Public Instance Methods

generate() click to toggle source
# File lib/ios_gen/generator/base_generator.rb, line 29
def generate
  @formatter.generate do |file_name, template|
    generate_template(file_name, template, @destination)
    puts "[+] Created Source File: #{file_name}".green
  end
end
generate_test() click to toggle source
# File lib/ios_gen/generator/base_generator.rb, line 36
def generate_test
  generate_test_object(@view_model)
  @view_model.interactors.each do |interactor|
    generate_test_object(interactor)
  end
end

Private Instance Methods

generate_template(name, template, destination = '.') click to toggle source
# File lib/ios_gen/generator/base_generator.rb, line 55
def generate_template(name, template, destination = '.')
  path_template = File.expand_path("../../../#{template}", File.dirname(__FILE__))
  renderer = ERB.new(File.read(path_template))
  destination_path = "#{destination}#{name}"
  File.open(destination_path, 'w') do |f|
    f.write renderer.result(binding)
  end
end
generate_test_object(object) click to toggle source
# File lib/ios_gen/generator/base_generator.rb, line 64
def generate_test_object(object)
  @test_formatter.object = object
  @test_formatter.generate do |file_name, template|
    generate_template(file_name, template, @destination)
    puts "[+] Created Test File: #{file_name}".green
  end
end
parse() click to toggle source
# File lib/ios_gen/generator/base_generator.rb, line 45
def parse
  file = File.read(@file_spec)
  hash = JSON.parse(file)
  @view_model = @factory.parse_view_model(hash[VIEWMODEL_KEY])
  @view_controller = @factory.parse_view_controller(hash[VIEWCONTROLLER_KEY])
  @view_controller.view_model = @view_model unless @view_controller.nil?
  @formatter.view_model = @view_model unless @view_model.nil?
  @formatter.view_controller = @view_controller unless @view_controller.nil?
end