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