class Wizardry::Framework
Framework
holds data on how the wizard itself is constructed. It’ll be the same for every instance
Attributes
class_name[RW]
completion_flag[RW]
edit_path_helper[RW]
name[RW]
pages[RW]
update_path_helper[RW]
Public Class Methods
new(name:, pages:, class_name:, edit_path_helper:, update_path_helper:, completion_flag: 'complete')
click to toggle source
# File lib/wizardry/framework.rb, line 7 def initialize(name:, pages:, class_name:, edit_path_helper:, update_path_helper:, completion_flag: 'complete') @name = name @pages = setup_pages(pages) @class_name = class_name @edit_path_helper = edit_path_helper @update_path_helper = update_path_helper @completion_flag = completion_flag page_sense_check end
Public Instance Methods
branch_pages()
click to toggle source
# File lib/wizardry/framework.rb, line 30 def branch_pages pages.select(&:branch?) end
page(name)
click to toggle source
# File lib/wizardry/framework.rb, line 34 def page(name) pages.detect { |p| p.name == name } end
page_names()
click to toggle source
# File lib/wizardry/framework.rb, line 22 def page_names pages.map(&:name) end
trunk_pages()
click to toggle source
# File lib/wizardry/framework.rb, line 26 def trunk_pages pages.reject(&:branch?) end
Private Instance Methods
page_sense_check()
click to toggle source
# File lib/wizardry/framework.rb, line 40 def page_sense_check # should have no more than one check your answers page pages.count { |page| page.is_a?(Wizardry::Pages::CheckYourAnswersPage) }.tap do |check_your_answers_pages| Rails.logger.warn("🧙 More than one check your answers page detected") if check_your_answers_pages > 1 end # should have no more than one completion page pages.count { |page| page.is_a?(Wizardry::Pages::CompletionPage) }.tap do |completion_pages| Rails.logger.warn("🧙 More than one completion page detected") if completion_pages > 1 end end
setup_pages(pages)
click to toggle source
# File lib/wizardry/framework.rb, line 52 def setup_pages(pages) pages.map { |page| [page, page.pages.each(&:branch!)].select(&:presence) }.flatten end