class Cucumber::Glue::Snippet::BaseSnippet
Attributes
Public Class Methods
Source
# File lib/cucumber/glue/snippet.rb, line 44 def self.cli_option_string(type, cucumber_expression_generator) format('%<type>-7s: %<description>-28s e.g. %<example>s', type: type, description: description, example: example(cucumber_expression_generator)) end
Source
# File lib/cucumber/glue/snippet.rb, line 28 def initialize(cucumber_expression_generator, code_keyword, step_name, multiline_argument) @number_of_arguments = 0 @code_keyword = code_keyword @pattern = replace_and_count_capturing_groups(step_name) @generated_expressions = cucumber_expression_generator.generate_expressions(step_name) @multiline_argument = MultilineArgumentSnippet.new(multiline_argument) end
Private Class Methods
Source
# File lib/cucumber/glue/snippet.rb, line 81 def example(cucumber_expression_generator) new(cucumber_expression_generator, 'Given', 'I have 2 cukes', MultilineArgument::None.new).step end
Public Instance Methods
Source
# File lib/cucumber/glue/snippet.rb, line 40 def step "#{code_keyword}#{typed_pattern}" end
Private Instance Methods
Source
# File lib/cucumber/glue/snippet.rb, line 63 def do_block 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
Source
# File lib/cucumber/glue/snippet.rb, line 72 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(', ')}|" end
Source
# File lib/cucumber/glue/snippet.rb, line 52 def replace_and_count_capturing_groups(pattern) modified_pattern = ::Regexp.escape(pattern).gsub('\ ', ' ').gsub('/', '\/') ARGUMENT_PATTERNS.each do |argument_pattern| modified_pattern.gsub!(::Regexp.new(argument_pattern), argument_pattern) @number_of_arguments += modified_pattern.scan(argument_pattern).length end modified_pattern end