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