2 changed files with 101 additions and 0 deletions
@ -0,0 +1,92 @@ |
|||||||
|
module Spike |
||||||
|
class FormGeneratorService |
||||||
|
def initialize; end |
||||||
|
|
||||||
|
def call |
||||||
|
form = Form.new("config/forms/2022_2023.json") |
||||||
|
|
||||||
|
form.sections.reject { |subsection| subsection.id == "setup" }.each do |section| |
||||||
|
section.subsections.each do |subsection| |
||||||
|
subsection.pages.each do |page| |
||||||
|
page.questions.each do |question| |
||||||
|
create_question(question) |
||||||
|
end |
||||||
|
create_page(page) |
||||||
|
end |
||||||
|
create_subsection(subsection) |
||||||
|
end |
||||||
|
create_section(section) |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
def create_section(section) |
||||||
|
subsections_array = section.subsections.map { |s| "Form::Lettings::Subsections::#{section.id.camelize}::#{s.id.camelize}.new(nil, nil, self)" } |
||||||
|
out_file = File.new("app/models/form/lettings/sections/#{section.id}.rb", "w") |
||||||
|
out_file.puts("class Form::Lettings::Sections::#{section.id.camelize} < ::Form::Section |
||||||
|
def initialize(id, hsh, form) |
||||||
|
super |
||||||
|
@id = \"#{section.id}\" |
||||||
|
@label = \"#{section.id}\" |
||||||
|
@description = \"#{section.description}\" |
||||||
|
@form = form |
||||||
|
@subsections = #{subsections_array} |
||||||
|
end |
||||||
|
end") |
||||||
|
out_file.close |
||||||
|
end |
||||||
|
|
||||||
|
def create_subsection(subsection) |
||||||
|
pages_array = subsection.pages.map { |page| "Form::Lettings::Pages::#{page.id.camelize}.new(nil, nil, self)" } |
||||||
|
out_file = File.new("app/models/form/lettings/subsections/#{subsection.id}.rb", "w") |
||||||
|
out_file.puts("class Form::Lettings::Subsections::#{subsection.id.camelize} < ::Form::Subsection |
||||||
|
def initialize(id, hsh, section) |
||||||
|
super |
||||||
|
@id = \"#{subsection.id}\" |
||||||
|
@label = \"#{subsection.label}\" |
||||||
|
@section = section |
||||||
|
end |
||||||
|
|
||||||
|
def pages |
||||||
|
@pages ||= #{pages_array}.compact |
||||||
|
end") |
||||||
|
out_file.close |
||||||
|
end |
||||||
|
|
||||||
|
def create_page(page) |
||||||
|
questions_array = page.questions.map { |question| "Form::Lettings::Questions::#{question.id.camelize}.new(nil, nil, self)" } |
||||||
|
out_file = File.new("app/models/form/lettings/pages/#{page.id}.rb", "w") |
||||||
|
out_file.puts("class Form::Lettings::Pages::#{page.id.camelize} < ::Form::Page |
||||||
|
def initialize(id, hsh, subsection) |
||||||
|
super |
||||||
|
@id = \"#{page.id}\" |
||||||
|
@header = \"#{page.header}\" |
||||||
|
@depends_on = #{page.depends_on} |
||||||
|
end |
||||||
|
|
||||||
|
def questions |
||||||
|
@questions ||= #{questions_array} |
||||||
|
end |
||||||
|
end") |
||||||
|
out_file.close |
||||||
|
end |
||||||
|
|
||||||
|
def create_question(question) |
||||||
|
out_file = File.new("app/models/form/lettings/questions/#{question.id}.rb", "w") |
||||||
|
out_file.puts("class Form::Sales::Questions::#{question.id.camelize} < ::Form::Question |
||||||
|
def initialize(id, hsh, page) |
||||||
|
super |
||||||
|
@id = \"#{question.id}\" |
||||||
|
@check_answer_label = \"#{question.check_answer_label}\" |
||||||
|
@header = \"#{question.header}\" |
||||||
|
@type = \"#{question.type}\" |
||||||
|
@width = #{question.width} |
||||||
|
@inferred_check_answers_value = #{question.inferred_check_answers_value} |
||||||
|
@check_answers_card_number = #{question.check_answer_label} |
||||||
|
@max = #{question.max} |
||||||
|
@min = #{question.min} |
||||||
|
end |
||||||
|
end") |
||||||
|
out_file.close |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
Loading…
Reference in new issue