lib/cucumber/glue/snippet.rb in cucumber-3.2.0 vs lib/cucumber/glue/snippet.rb in cucumber-4.0.0.rc.1

- old
+ new

@@ -1,11 +1,11 @@ # frozen_string_literal: true module Cucumber module Glue module Snippet - ARGUMENT_PATTERNS = ['"([^"]*)"', '(\d+)'] + ARGUMENT_PATTERNS = ['"([^"]*)"', '(\d+)'].freeze class Generator def self.register_on(configuration) configuration.snippet_generators << new end @@ -40,11 +40,11 @@ def step "#{code_keyword}#{typed_pattern}" end def self.cli_option_string(type, cucumber_expression_generator) - format('%-7s: %-28s e.g. %s', type, description, example(cucumber_expression_generator)) + format('%<type>-7s: %<description>-28s e.g. %<example>s', type: type, description: description, example: example(cucumber_expression_generator)) end private attr_reader :code_keyword, :pattern, :generated_expressions, :multiline_argument, :number_of_arguments @@ -59,52 +59,56 @@ modified_pattern end def do_block - do_block = String.new + do_block = String.new # rubocop:disable Style/EmptyLiteral do_block << "do#{parameters}\n" multiline_argument.append_comment_to(do_block) do_block << " pending # Write code here that turns the phrase above into concrete actions\n" do_block << 'end' do_block end def parameters block_args = (0...number_of_arguments).map { |n| "arg#{n + 1}" } multiline_argument.append_block_parameter_to(block_args) - block_args.empty? ? '' : " |#{block_args.join(", ")}|" + block_args.empty? ? '' : " |#{block_args.join(', ')}|" end - def self.example(cucumber_expression_generator) - new(cucumber_expression_generator, 'Given', 'I have 2 cukes', MultilineArgument::None.new).step + class << self + private + + def example(cucumber_expression_generator) + new(cucumber_expression_generator, 'Given', 'I have 2 cukes', MultilineArgument::None.new).step + end end end class CucumberExpression < BaseSnippet def typed_pattern "(\"#{generated_expressions[0].source}\")" end def to_s header = generated_expressions.each_with_index.map do |expr, i| - prefix = i == 0 ? '' : '# ' + prefix = i.zero? ? '' : '# ' "#{prefix}#{code_keyword}(\"#{expr.source}\") do#{parameters(expr)}" end.join("\n") - body = String.new + body = String.new # rubocop:disable Style/EmptyLiteral multiline_argument.append_comment_to(body) body << " pending # Write code here that turns the phrase above into concrete actions\n" body << 'end' "#{header}\n#{body}" end def parameters(expr) parameter_names = expr.parameter_names multiline_argument.append_block_parameter_to(parameter_names) - parameter_names.empty? ? '' : " |#{parameter_names.join(", ")}|" + parameter_names.empty? ? '' : " |#{parameter_names.join(', ')}|" end def self.description 'Cucumber Expressions' end @@ -139,15 +143,15 @@ 'Snippets with percent regexp' end end SNIPPET_TYPES = { - :cucumber_expression => CucumberExpression, - :regexp => Regexp, - :classic => Classic, - :percent => Percent - } + cucumber_expression: CucumberExpression, + regexp: Regexp, + classic: Classic, + percent: Percent + }.freeze module MultilineArgumentSnippet def self.new(multiline_argument) builder = Builder.new multiline_argument.describe_to(builder) @@ -171,12 +175,11 @@ class DocString def append_block_parameter_to(array) array << 'string' end - def append_comment_to(string) - end + def append_comment_to(string); end end class DataTable def initialize(table) @table = table @@ -190,14 +193,12 @@ string << " # table is a #{Cucumber::MultilineArgument::DataTable}\n" end end class None - def append_block_parameter_to(array) - end + def append_block_parameter_to(array); end - def append_comment_to(string) - end + def append_comment_to(string); end end end end end end