class BenefitsWordDocProcessor def initialize(word_doc, process=nil) @word_doc = word_doc if process @process = process else @process = EmployerSetupProcess.new end end def call doc = Docx::Document.open(@word_doc) data_lines = doc.paragraphs.map { |p| p.to_s.squish }.reject!(&:empty?) start_of_plans_index = data_lines.index { |s| s == 'Medical Plan'} employer_information = data_lines.slice(0, start_of_plans_index) plan_information = data_lines.slice(start_of_plans_index + 1..) BenefitsWordDoc::MapEmployerInformation.new(@process, employer_information).call BenefitsWordDoc::MapEmployerLogo.new(@process, @word_doc).call BenefitsWordDoc::MapPlansInformation.new(@process, plan_information).call @process end end