Class: GherkinLint::BeDeclarative

Inherits:
Linter
  • Object
show all
Defined in:
lib/gherkin_lint/linter/be_declarative.rb

Overview

service class to lint for avoiding periods

Instance Attribute Summary

Attributes inherited from Linter

#issues

Instance Method Summary collapse

Methods inherited from Linter

#add_error, #add_warning, #backgrounds, descendants, #elements, #features, #files, #filled_scenarios, #filter_tag, #line, #lint_files, #name, #reference, #render_step, #render_step_argument, #scenarios, #steps, #suppress, #suppress_tags, #tag?

Constructor Details

#initializeBeDeclarative

Returns a new instance of BeDeclarative.



7
8
9
# File 'lib/gherkin_lint/linter/be_declarative.rb', line 7

def initialize
  super
end

Instance Method Details

#lintObject



11
12
13
14
15
16
17
18
# File 'lib/gherkin_lint/linter/be_declarative.rb', line 11

def lint
  filled_scenarios do |file, feature, scenario|
    scenario[:steps].each do |step|
      references = [reference(file, feature, scenario, step)]
      add_warning(references, 'no verb') unless verb? step
    end
  end
end

#taggerObject



41
42
43
44
45
# File 'lib/gherkin_lint/linter/be_declarative.rb', line 41

def tagger
  @tagger = EngTagger.new unless instance_variable_defined? :@tagger

  @tagger
end

#verb?(step) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
23
24
25
# File 'lib/gherkin_lint/linter/be_declarative.rb', line 20

def verb?(step)
  tagged = tagger.add_tags step[:text]
  step_verbs = verbs tagged

  !step_verbs.empty?
end

#verbs(tagged_text) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/gherkin_lint/linter/be_declarative.rb', line 27

def verbs(tagged_text)
  verbs =
    %i[
      get_infinitive_verbs
      get_past_tense_verbs
      get_gerund_verbs
      get_passive_verbs
      get_present_verbs
      get_base_present_verbs
    ]

  verbs.map { |verb| tagger.send(verb, tagged_text).keys }.flatten
end