Sha256: f029baff3c961eab52df68c48f14dd03291333202771255c1ee9ca60baa59ab5
Contents?: true
Size: 1.02 KB
Versions: 1
Compression:
Stored size: 1.02 KB
Contents
module Screengem module Factories # # Knows how to create a Question from a question name. # class QuestionFactory < BasicObject include ::Singleton definition = ::RUBY_VERSION >= "2.7" ? "..." : "*args" class_eval <<~RUBY, __FILE__, __LINE__ + 1 def method_missing(question_name, #{definition}) question_class_name = "\#{question_name}_question".camelize question_class = "\#{question_scope}::\#{question_class_name}".constantize question_class.new(#{definition}) rescue => e QuestionError.new(<<~MSG) Unable to create question: '\#{question_class_name}'. Details: \#{e.message} MSG end RUBY def respond_to_missing?(_question_name, *) true end class QuestionError < ::Screengem::Question include FactoryCreationError end private def question_scope @question_scope ||= ::Screengem.configuration.question_scope end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
screengem-0.18.0 | lib/screengem/factories/question_factory.rb |