Class: YARD::Handlers::Ruby::Legacy::StepDefinitionHandler
- Inherits:
-
Base
- Object
- Base
- YARD::Handlers::Ruby::Legacy::StepDefinitionHandler
- Defined in:
- lib/yard/handlers/legacy/step_definition_handler.rb
Constant Summary collapse
- STEP_DEFINITION_MATCH =
TODO: This needs to become language independent.
/^((When|Given|And|Then)\s*(\/.+\/)\s+do(?:\s*\|.+\|)?\s*)$/
- @@unique_name =
0
Instance Method Summary collapse
-
#find_steps_defined_in_block(block) ⇒ Object
Step Definitions can contain defined steps within them.
- #process ⇒ Object
Instance Method Details
#find_steps_defined_in_block(block) ⇒ Object
Step Definitions can contain defined steps within them. While it is likely that they could not very easily be parsed because of variables that are only calculated at runtime, it would be nice to at least list those in use within a step definition and if you can find a match, go ahead and make it
32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/yard/handlers/legacy/step_definition_handler.rb', line 32 def find_steps_defined_in_block(block) #log.debug "#{block} #{block.class}" block.each_with_index do |token,index| #log.debug "Token #{token.class} #{token.text}" if token.is_a?(YARD::Parser::Ruby::Legacy::RubyToken::TkCONSTANT) && token.text =~ /^(given|when|then|and)$/i && block[index + 2].is_a?(YARD::Parser::Ruby::Legacy::RubyToken::TkSTRING) log.debug "Step found in Step Definition: #{block[index + 2].text} " end end end |
#process ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/yard/handlers/legacy/step_definition_handler.rb', line 8 def process keyword = statement.tokens.to_s[STEP_DEFINITION_MATCH,2] step_definition = statement.tokens.to_s[STEP_DEFINITION_MATCH,3] @@unique_name = @@unique_name + 1 stepdef_instance = StepDefinitionObject.new(YARD::CodeObjects::Cucumber::CUCUMBER_STEPTRANSFORM_NAMESPACE, "definition_#{@@unique_name}") do |o| o.source = "#{keyword} #{step_definition} do #{statement.block.to_s =~ /^\s*\|.+/ ? '' : "\n "}#{statement.block.to_s}\nend" o.value = step_definition o.keyword = keyword end obj = register stepdef_instance parse_block :owner => obj rescue YARD::Handlers::NamespaceMissingError end |