From 47be5c0737fc12674d4574ce63b31ca6b1163a32 Mon Sep 17 00:00:00 2001 From: Henk <henk.van.der.veen@gmail.com> Date: Wed, 24 Mar 2021 22:06:21 +0100 Subject: [PATCH] Convert options = {} to **options in the dsl. to remove warnings --- lib/quby/compiler/dsl/base.rb | 4 +- lib/quby/compiler/dsl/calls_custom_methods.rb | 3 +- .../compiler/dsl/charting/chart_builder.rb | 6 +-- .../dsl/charting/overview_chart_builder.rb | 2 +- lib/quby/compiler/dsl/helpers.rb | 6 +-- lib/quby/compiler/dsl/panel_builder.rb | 23 ++++++---- lib/quby/compiler/dsl/question_builder.rb | 4 +- .../compiler/dsl/questionnaire_builder.rb | 46 +++++++++---------- lib/quby/compiler/dsl/questions/base.rb | 14 +++--- .../questions/checkbox_question_builder.rb | 2 +- .../dsl/questions/date_question_builder.rb | 2 +- .../questions/deprecated_question_builder.rb | 2 +- .../dsl/questions/float_question_builder.rb | 2 +- .../dsl/questions/integer_question_builder.rb | 2 +- .../dsl/questions/radio_question_builder.rb | 2 +- .../dsl/questions/select_question_builder.rb | 2 +- .../dsl/questions/string_question_builder.rb | 2 +- .../dsl/questions/text_question_builder.rb | 2 +- lib/quby/compiler/dsl/score_builder.rb | 2 +- lib/quby/compiler/dsl/table_builder.rb | 10 ++-- lib/quby/compiler/entities/questionnaire.rb | 4 +- .../dsl/charting/bar_chart_builder_spec.rb | 4 +- .../dsl/charting/chart_builder_spec.rb | 4 +- .../dsl/charting/line_chart_builder_spec.rb | 6 +-- .../dsl/charting/radar_chart_builder_spec.rb | 4 +- .../dsl/questionnaire_builder_spec.rb | 2 +- 26 files changed, 82 insertions(+), 80 deletions(-) diff --git a/lib/quby/compiler/dsl/base.rb b/lib/quby/compiler/dsl/base.rb index 8b1c67a..9949fcd 100644 --- a/lib/quby/compiler/dsl/base.rb +++ b/lib/quby/compiler/dsl/base.rb @@ -9,8 +9,8 @@ module Quby class Base include Helpers - def self.build(*args, &block) - builder = new(*args) + def self.build(*args, **kwargs, &block) + builder = new(*args, **kwargs) builder.instance_eval(&block) if block builder.build end diff --git a/lib/quby/compiler/dsl/calls_custom_methods.rb b/lib/quby/compiler/dsl/calls_custom_methods.rb index b2324fb..724593e 100644 --- a/lib/quby/compiler/dsl/calls_custom_methods.rb +++ b/lib/quby/compiler/dsl/calls_custom_methods.rb @@ -6,8 +6,7 @@ module Quby module CallsCustomMethods attr_reader :custom_methods - def initialize(*args) - options = args.last.is_a?(::Hash) ? args.last : {} + def initialize(*args, **options) @custom_methods = options[:custom_methods] || {} super end diff --git a/lib/quby/compiler/dsl/charting/chart_builder.rb b/lib/quby/compiler/dsl/charting/chart_builder.rb index 3dd669b..57a512b 100644 --- a/lib/quby/compiler/dsl/charting/chart_builder.rb +++ b/lib/quby/compiler/dsl/charting/chart_builder.rb @@ -16,8 +16,8 @@ module Quby @chart_class end - def initialize(questionnaire, key, options = {}) - @chart = self.class.chart_class.new(key, options) + def initialize(questionnaire, key, **options) + @chart = self.class.chart_class.new(key, **options) @questionnaire = questionnaire end @@ -49,7 +49,7 @@ module Quby @chart.plotlines << {value: value, color: color} end - def plot(key, options = {}) + def plot(key, **options) unless plottable = @questionnaire.find_plottable(key) fail "Questionnaire #{@questionnaire.key} chart #{@chart.key} references unknown score or question #{key}" end diff --git a/lib/quby/compiler/dsl/charting/overview_chart_builder.rb b/lib/quby/compiler/dsl/charting/overview_chart_builder.rb index 8d0a442..f871cbf 100644 --- a/lib/quby/compiler/dsl/charting/overview_chart_builder.rb +++ b/lib/quby/compiler/dsl/charting/overview_chart_builder.rb @@ -7,7 +7,7 @@ module Quby class OverviewChartBuilder < ChartBuilder set_chart_class(Entities::Charting::OverviewChart) - def initialize(questionnaire, options = {}) + def initialize(questionnaire, **options) @questionnaire = questionnaire @chart = self.class.chart_class.new end diff --git a/lib/quby/compiler/dsl/helpers.rb b/lib/quby/compiler/dsl/helpers.rb index 1d1f000..4b9f019 100644 --- a/lib/quby/compiler/dsl/helpers.rb +++ b/lib/quby/compiler/dsl/helpers.rb @@ -7,8 +7,8 @@ module Quby include ActionView::Helpers::TagHelper include ActionView::Helpers::OutputSafetyHelper - def image_tag(source, options = {}) - tag.img(options.reverse_merge(src: source, alt: image_alt(source))) + def image_tag(source, **options) + tag.img(**options.reverse_merge(src: source, alt: image_alt(source))) end # Copied from ActionController::Base.helpers.image_alt, because it will be removed from Rails 6.0, but we want @@ -18,7 +18,7 @@ module Quby end def check_question_keys_uniqueness(key, options, questionnaire) - keys = QuestionBuilder.build(key, options).claimed_keys + keys = QuestionBuilder.build(key, **options).claimed_keys if keys.any? { |k| questionnaire.key_in_use? k } fail "#{questionnaire.key}:#{key}: A question or option with input key #{key} is already defined." end diff --git a/lib/quby/compiler/dsl/panel_builder.rb b/lib/quby/compiler/dsl/panel_builder.rb index fec3479..9a95977 100644 --- a/lib/quby/compiler/dsl/panel_builder.rb +++ b/lib/quby/compiler/dsl/panel_builder.rb @@ -9,9 +9,9 @@ module Quby attr_reader :title attr_reader :questionnaire - def initialize(title, options = {}) - @panel = Entities::Panel.new(options.merge(title: title, items: [])) - @default_question_options = options[:default_question_options] || {} + 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 @@ -41,25 +41,28 @@ module Quby @panel.items << Entities::Text.new('', raw_content: video_html) end - def default_question_options(options = {}) + def default_question_options(**options) @default_question_options = @default_question_options.merge(options) end - def question(key, options = {}, &block) + 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) + question = QuestionBuilder.build(key, **options, &block) @questionnaire.register_question(question) @panel.items << question end - def table(options = {}, &block) - table_builder = TableBuilder.new(@panel, options.merge(questionnaire: @panel.questionnaire, - default_question_options: @default_question_options, - custom_methods: @custom_methods)) + 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 diff --git a/lib/quby/compiler/dsl/question_builder.rb b/lib/quby/compiler/dsl/question_builder.rb index 8f4ec18..1e85a29 100644 --- a/lib/quby/compiler/dsl/question_builder.rb +++ b/lib/quby/compiler/dsl/question_builder.rb @@ -31,8 +31,8 @@ module Quby 'hidden' => Questions::DeprecatedQuestionBuilder } - def self.build(key, options = {}, &block) - BUILDERS.fetch(options.fetch(:type).to_s).build(key, options, &block) + def self.build(key, **options, &block) + BUILDERS.fetch(options.fetch(:type).to_s).build(key, **options, &block) end end end diff --git a/lib/quby/compiler/dsl/questionnaire_builder.rb b/lib/quby/compiler/dsl/questionnaire_builder.rb index f18c8f0..cad578f 100644 --- a/lib/quby/compiler/dsl/questionnaire_builder.rb +++ b/lib/quby/compiler/dsl/questionnaire_builder.rb @@ -148,7 +148,7 @@ module Quby end def panel(title = nil, options = {}, &block) - panel = PanelBuilder.build(title, options.merge(default_panel_options), &block) + panel = PanelBuilder.build(title, **options, **default_panel_options, &block) @questionnaire.add_panel(panel) end @@ -167,28 +167,28 @@ module Quby @questionnaire.lookup_tables[key] = {levels: levels, tree: tree} end - def default_question_options(options = {}) + def default_question_options(**options) @default_question_options.merge!(options) end # Short-circuit the question command to perform an implicit panel - def question(key, options = {}, &block) + def question(key, **options, &block) panel(nil, default_panel_options) do - question(key, @default_question_options.merge(options).merge(questionnaire: @questionnaire), &block) + question(key, questionnaire: @questionnaire, **@default_question_options, **options, &block) end end # Short-circuit the text command to perform an implicit panel - def text(value, options = {}) - panel(nil, default_panel_options) do - text(value, options) + def text(value, **options) + panel(nil, **default_panel_options) do + text(value, **options) end end # Short-circuit the table command to perform an implicit panel - def table(options = {}, &block) - panel(nil, default_panel_options) do - table(options, &block) + def table(**options, &block) + panel(nil, **default_panel_options) do + table(**options, &block) end end @@ -197,15 +197,15 @@ module Quby # # variables are private to the score calculation # q01 + q02 + q03 # end - def variable(key, options = {}, &block) - @questionnaire.add_score_calculation ScoreBuilder.new(key, options, &block).build + def variable(key, **options, &block) + @questionnaire.add_score_calculation ScoreBuilder.new(key, **options, &block).build end - def score(key, options = {}, &block) + def score(key, **options, &block) @questionnaire.errors.add "Score #{key}", 'misses label in score call' if options[:label].blank? schema = options.delete(:schema) score_schema(key, options[:label], schema) if schema.present? - variable(key, options.reverse_merge(score: true), &block) + variable(key, score: true, **options, &block) end def score_schema(key, label, options = nil, &block) @@ -222,16 +222,16 @@ module Quby end end - def attention(options = {}, &block) - variable(:attention, options.reverse_merge(action: true), &block) + def attention(**options, &block) + variable(:attention, action: true, **options, &block) end - def alarm(options = {}, &block) - variable(:alarm, options.reverse_merge(action: true), &block) + def alarm(**options, &block) + variable(:alarm, action: true, **options, &block) end - def completion(options = {}, &block) - variable(:completion, options.reverse_merge(completion: true), &block) + def completion(**options, &block) + variable(:completion, completion: true, **options, &block) end def overview_chart(*args, &block) @@ -255,15 +255,15 @@ module Quby @questionnaire.add_chart(builder.build(&block)) end - def flag(flag_options) + def flag(**flag_options) @questionnaire.add_flag flag_options end - def textvar(textvar_options) + def textvar(**textvar_options) @questionnaire.add_textvar textvar_options end - def outcome_table(table_options) + def outcome_table(**table_options) @questionnaire.add_outcome_table table_options end diff --git a/lib/quby/compiler/dsl/questions/base.rb b/lib/quby/compiler/dsl/questions/base.rb index c78d3d9..033c912 100644 --- a/lib/quby/compiler/dsl/questions/base.rb +++ b/lib/quby/compiler/dsl/questions/base.rb @@ -10,8 +10,8 @@ module Quby attr_reader :type attr_reader :questionnaire - def initialize(key, options = {}) - @questionnaire = options[:questionnaire] + def initialize(key, questionnaire:, **options) + @questionnaire = questionnaire end def build @@ -111,7 +111,7 @@ module Quby end module Subquestions - def initialize(key, options = {}, &block) + def initialize(key, **options, &block) super @default_question_options = options[:default_question_options] || {} @title_question = nil @@ -126,7 +126,7 @@ module Quby super end - def title_question(key, options = {}, &block) + def title_question(key, **options, &block) options = @default_question_options.merge({depends_on: @question.key, questionnaire: @questionnaire, parent: @question, @@ -135,13 +135,13 @@ module Quby check_question_keys_uniqueness key, options, @questionnaire - question = QuestionBuilder.build(key, options, &block) + question = QuestionBuilder.build(key, **options, &block) @questionnaire.register_question(question) @title_question = question end - def question(key, options = {}, &block) + def question(key, **options, &block) options = @default_question_options.merge(options) .merge(questionnaire: @questionnaire, parent: @question, @@ -149,7 +149,7 @@ module Quby check_question_keys_uniqueness key, options, @questionnaire - question = QuestionBuilder.build(key, options, &block) + question = QuestionBuilder.build(key, **options, &block) @questionnaire.register_question(question) @question.options.last.questions << question diff --git a/lib/quby/compiler/dsl/questions/checkbox_question_builder.rb b/lib/quby/compiler/dsl/questions/checkbox_question_builder.rb index 0fb9e1b..2a16098 100644 --- a/lib/quby/compiler/dsl/questions/checkbox_question_builder.rb +++ b/lib/quby/compiler/dsl/questions/checkbox_question_builder.rb @@ -9,7 +9,7 @@ module Quby include Subquestions include InnerTitles - def initialize(key, options = {}, &block) + def initialize(key, **options, &block) super @question = Entities::Questions::CheckboxQuestion.new(key, options) end diff --git a/lib/quby/compiler/dsl/questions/date_question_builder.rb b/lib/quby/compiler/dsl/questions/date_question_builder.rb index bed7190..782edee 100644 --- a/lib/quby/compiler/dsl/questions/date_question_builder.rb +++ b/lib/quby/compiler/dsl/questions/date_question_builder.rb @@ -7,7 +7,7 @@ module Quby class DateQuestionBuilder < Base include MinMaxValidations - def initialize(key, options = {}, &block) + def initialize(key, **options, &block) super @question = Entities::Questions::DateQuestion.new(key, options) end diff --git a/lib/quby/compiler/dsl/questions/deprecated_question_builder.rb b/lib/quby/compiler/dsl/questions/deprecated_question_builder.rb index 7acad80..2897596 100644 --- a/lib/quby/compiler/dsl/questions/deprecated_question_builder.rb +++ b/lib/quby/compiler/dsl/questions/deprecated_question_builder.rb @@ -7,7 +7,7 @@ module Quby class DeprecatedQuestionBuilder < Base include MultipleChoice - def initialize(key, options = {}, &block) + def initialize(key, **options, &block) super @question = Entities::Questions::DeprecatedQuestion.new(key, options) end diff --git a/lib/quby/compiler/dsl/questions/float_question_builder.rb b/lib/quby/compiler/dsl/questions/float_question_builder.rb index 02796d9..89fd7ce 100644 --- a/lib/quby/compiler/dsl/questions/float_question_builder.rb +++ b/lib/quby/compiler/dsl/questions/float_question_builder.rb @@ -10,7 +10,7 @@ module Quby include Units include Sizes - def initialize(key, options = {}, &block) + def initialize(key, **options, &block) super @question = Entities::Questions::FloatQuestion.new(key, options) end diff --git a/lib/quby/compiler/dsl/questions/integer_question_builder.rb b/lib/quby/compiler/dsl/questions/integer_question_builder.rb index 0e5ef73..201604f 100644 --- a/lib/quby/compiler/dsl/questions/integer_question_builder.rb +++ b/lib/quby/compiler/dsl/questions/integer_question_builder.rb @@ -10,7 +10,7 @@ module Quby include Units include Sizes - def initialize(key, options = {}, &block) + def initialize(key, **options, &block) super @question = Entities::Questions::IntegerQuestion.new(key, options) end diff --git a/lib/quby/compiler/dsl/questions/radio_question_builder.rb b/lib/quby/compiler/dsl/questions/radio_question_builder.rb index 9b11f31..ec9a689 100644 --- a/lib/quby/compiler/dsl/questions/radio_question_builder.rb +++ b/lib/quby/compiler/dsl/questions/radio_question_builder.rb @@ -9,7 +9,7 @@ module Quby include Subquestions include InnerTitles - def initialize(key, options = {}, &block) + def initialize(key, **options, &block) super @question = Entities::Questions::RadioQuestion.new(key, options) end diff --git a/lib/quby/compiler/dsl/questions/select_question_builder.rb b/lib/quby/compiler/dsl/questions/select_question_builder.rb index fa9ec6d..d99e018 100644 --- a/lib/quby/compiler/dsl/questions/select_question_builder.rb +++ b/lib/quby/compiler/dsl/questions/select_question_builder.rb @@ -7,7 +7,7 @@ module Quby class SelectQuestionBuilder < Base include MultipleChoice - def initialize(key, options = {}, &block) + def initialize(key, **options, &block) super @question = Entities::Questions::SelectQuestion.new(key, options) end diff --git a/lib/quby/compiler/dsl/questions/string_question_builder.rb b/lib/quby/compiler/dsl/questions/string_question_builder.rb index 2dddd2d..f185361 100644 --- a/lib/quby/compiler/dsl/questions/string_question_builder.rb +++ b/lib/quby/compiler/dsl/questions/string_question_builder.rb @@ -9,7 +9,7 @@ module Quby include Units include Sizes - def initialize(key, options = {}, &block) + def initialize(key, **options, &block) super @question = Entities::Questions::StringQuestion.new(key, options) end diff --git a/lib/quby/compiler/dsl/questions/text_question_builder.rb b/lib/quby/compiler/dsl/questions/text_question_builder.rb index d7df15d..ad8b88c 100644 --- a/lib/quby/compiler/dsl/questions/text_question_builder.rb +++ b/lib/quby/compiler/dsl/questions/text_question_builder.rb @@ -7,7 +7,7 @@ module Quby class TextQuestionBuilder < Base include RegexpValidations - def initialize(key, options = {}, &block) + def initialize(key, **options, &block) super @question = Entities::Questions::TextQuestion.new(key, options) end diff --git a/lib/quby/compiler/dsl/score_builder.rb b/lib/quby/compiler/dsl/score_builder.rb index f898a3c..ea30451 100644 --- a/lib/quby/compiler/dsl/score_builder.rb +++ b/lib/quby/compiler/dsl/score_builder.rb @@ -9,7 +9,7 @@ module Quby attr_reader :key attr_reader :calculation - def initialize(key, options = {}, &block) + def initialize(key, **options, &block) @score = Entities::ScoreCalculation.new(key, options, &block) end diff --git a/lib/quby/compiler/dsl/table_builder.rb b/lib/quby/compiler/dsl/table_builder.rb index f44e8b2..0fadaee 100644 --- a/lib/quby/compiler/dsl/table_builder.rb +++ b/lib/quby/compiler/dsl/table_builder.rb @@ -9,10 +9,10 @@ module Quby prepend CallsCustomMethods include Helpers - def initialize(panel, options = {}) + def initialize(panel, default_question_options: {}, **options) @panel = panel @table = Entities::Table.new(options) - @default_question_options = options[:default_question_options] || {} + @default_question_options = default_question_options @panel.items << @table end @@ -24,11 +24,11 @@ module Quby @table.description = value end - def text(value, options = {}) + def text(value, **options) @table.items << Entities::Text.new(value.to_s, options) end - def question(key, options = {}, &block) + def question(key, **options, &block) options = @default_question_options.merge(options) .merge(table: @table, questionnaire: @panel.questionnaire) @@ -36,7 +36,7 @@ module Quby check_question_keys_uniqueness key, options, @panel.questionnaire fail "You can't create a slider in a table at the moment" if options[:as] == :slider - question = QuestionBuilder.build(key, options, &block) + question = QuestionBuilder.build(key, **options, &block) @panel.questionnaire.register_question(question) @table.items << question diff --git a/lib/quby/compiler/entities/questionnaire.rb b/lib/quby/compiler/entities/questionnaire.rb index c22c25b..5a96efc 100755 --- a/lib/quby/compiler/entities/questionnaire.rb +++ b/lib/quby/compiler/entities/questionnaire.rb @@ -283,7 +283,7 @@ module Quby end flag_options[:key] = flag_key fail(ArgumentError, "Flag '#{flag_key}' already defined") if flags.key?(flag_key) - flags[flag_key] = Flag.new(flag_options) + flags[flag_key] = Flag.new(**flag_options) end def filter_flags(given_flags) @@ -297,7 +297,7 @@ module Quby textvar_options[:key] = textvar_key validate_textvar_keys_unique(textvar_key) validate_depends_on_flag(textvar_key, textvar_options) - textvars[textvar_key] = Textvar.new(textvar_options) + textvars[textvar_key] = Textvar.new(**textvar_options) end def filter_textvars(given_textvars) diff --git a/spec/quby/compiler/dsl/charting/bar_chart_builder_spec.rb b/spec/quby/compiler/dsl/charting/bar_chart_builder_spec.rb index e6337b8..30bdbf5 100644 --- a/spec/quby/compiler/dsl/charting/bar_chart_builder_spec.rb +++ b/spec/quby/compiler/dsl/charting/bar_chart_builder_spec.rb @@ -12,8 +12,8 @@ module Quby::Compiler::DSL expect(dsl { }).to be_an_instance_of(::Quby::Compiler::Entities::Charting::BarChart) end - def dsl(key = :test, options = {}, &block) - builder = BarChartBuilder.new(questionnaire, key, options) + def dsl(key = :test, **options, &block) + builder = BarChartBuilder.new(questionnaire, key, **options) builder.build(&block) end diff --git a/spec/quby/compiler/dsl/charting/chart_builder_spec.rb b/spec/quby/compiler/dsl/charting/chart_builder_spec.rb index fd74c84..6ad0890 100644 --- a/spec/quby/compiler/dsl/charting/chart_builder_spec.rb +++ b/spec/quby/compiler/dsl/charting/chart_builder_spec.rb @@ -17,8 +17,8 @@ module Quby::Compiler::DSL before { ChartBuilder.set_chart_class(chart_class) } let(:chart_builder) { ChartBuilder.new questionnaire, 'chart_key' } - def dsl(key = :test, options = {}, &block) - builder = ChartBuilder.new(questionnaire, key, options) + def dsl(key = :test, **options, &block) + builder = ChartBuilder.new(questionnaire, key, **options) builder.build(&block) end diff --git a/spec/quby/compiler/dsl/charting/line_chart_builder_spec.rb b/spec/quby/compiler/dsl/charting/line_chart_builder_spec.rb index 6130e31..3c58f26 100644 --- a/spec/quby/compiler/dsl/charting/line_chart_builder_spec.rb +++ b/spec/quby/compiler/dsl/charting/line_chart_builder_spec.rb @@ -21,7 +21,7 @@ module Quby::Compiler::DSL end it 'raises when y-axis range is not specified' do - expect { dsl(:test, {}) { } }.to raise_error(/no range specified/) + expect { dsl(:test, y_range: nil) { } }.to raise_error(/no range specified/) end it 'sets tonality' do @@ -40,8 +40,8 @@ module Quby::Compiler::DSL expect(dsl { }).to be_an_instance_of(::Quby::Compiler::Entities::Charting::LineChart) end - def dsl(key = :test, options = {y_range: (0..20)}, &block) - builder = LineChartBuilder.new(questionnaire, key, options) + def dsl(key = :test, y_range: (0..20), **options, &block) + builder = LineChartBuilder.new(questionnaire, key, y_range: y_range, **options) builder.build(&block) end end diff --git a/spec/quby/compiler/dsl/charting/radar_chart_builder_spec.rb b/spec/quby/compiler/dsl/charting/radar_chart_builder_spec.rb index 81a4809..b381af5 100644 --- a/spec/quby/compiler/dsl/charting/radar_chart_builder_spec.rb +++ b/spec/quby/compiler/dsl/charting/radar_chart_builder_spec.rb @@ -20,8 +20,8 @@ module Quby::Compiler::DSL expect(dsl { tick_interval 1 }.tick_interval).to eq 1 end - def dsl(key = :test, options = {}, &block) - builder = RadarChartBuilder.new(questionnaire, key, options) + def dsl(key = :test, **options, &block) + builder = RadarChartBuilder.new(questionnaire, key, **options) builder.build(&block) end end diff --git a/spec/quby/compiler/dsl/questionnaire_builder_spec.rb b/spec/quby/compiler/dsl/questionnaire_builder_spec.rb index 03bbc36..3d82920 100644 --- a/spec/quby/compiler/dsl/questionnaire_builder_spec.rb +++ b/spec/quby/compiler/dsl/questionnaire_builder_spec.rb @@ -425,7 +425,7 @@ module Quby::Compiler::DSL } dsl do - add_lookup_tree :interpretations, lookup_options + add_lookup_tree :interpretations, **lookup_options end expect(questionnaire.lookup_tables[:interpretations]).to eq(lookup_options) -- GitLab