class Quby::Compiler::DSL::PanelBuilder
Attributes
questionnaire[R]
title[R]
Public Class Methods
new(title, default_question_options: {}, **options)
click to toggle source
# File lib/quby/compiler/dsl/panel_builder.rb, line 12 def initialize(title, default_question_options: {}, **options) @panel = Entities::Panel.new({title: title, items: [], **options}) @default_question_options = default_question_options @questionnaire = options[:questionnaire] @custom_methods = options[:custom_methods] || {} end
Public Instance Methods
build()
click to toggle source
# File lib/quby/compiler/dsl/panel_builder.rb, line 19 def build @panel end
default_question_options(**options)
click to toggle source
# File lib/quby/compiler/dsl/panel_builder.rb, line 44 def default_question_options(**options) @default_question_options = @default_question_options.merge(options) end
html(value)
click to toggle source
# File lib/quby/compiler/dsl/panel_builder.rb, line 31 def html(value) @panel.items << Entities::Text.new('', html_content: value.to_s) end
method_missing(method_sym, *args, &block)
click to toggle source
Calls superclass method
# File lib/quby/compiler/dsl/panel_builder.rb, line 69 def method_missing(method_sym, *args, &block) if @custom_methods.key? method_sym instance_exec(*args, &@custom_methods[method_sym]) else super end end
question(key, **options, &block)
click to toggle source
# File lib/quby/compiler/dsl/panel_builder.rb, line 48 def question(key, **options, &block) options = @default_question_options.merge(options).merge(questionnaire: @panel.questionnaire) check_question_keys_uniqueness key, options, @questionnaire question = QuestionBuilder.build(key, **options, &block) @questionnaire.register_question(question) @panel.items << question end
raw_html(value)
click to toggle source
# File lib/quby/compiler/dsl/panel_builder.rb, line 35 def raw_html(value) @panel.items << Entities::Text.new('', raw_content: value.to_s) end
respond_to_missing?(method_name, include_private = false)
click to toggle source
Calls superclass method
# File lib/quby/compiler/dsl/panel_builder.rb, line 77 def respond_to_missing?(method_name, include_private = false) @custom_methods.key?(method_name) || super end
table(**options, &block)
click to toggle source
# File lib/quby/compiler/dsl/panel_builder.rb, line 59 def table(**options, &block) table_builder = TableBuilder.new \ @panel, questionnaire: @panel.questionnaire, default_question_options: @default_question_options, custom_methods: @custom_methods, **options table_builder.instance_eval(&block) if block end
text(value, options = {})
click to toggle source
# File lib/quby/compiler/dsl/panel_builder.rb, line 27 def text(value, options = {}) @panel.items << Entities::Text.new(value.to_s, options) end
video(*urls, **options)
click to toggle source
# File lib/quby/compiler/dsl/panel_builder.rb, line 39 def video(*urls, **options) video_html = video_tag *urls, **options @panel.items << Entities::Text.new('', raw_content: video_html) end