Class: Uniword::Lint::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/uniword/lint/result.rb

Overview

Aggregated lint result with severity counts.

Constant Summary collapse

SEVERITY_ORDER =
%i[error warning info].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeResult

Returns a new instance of Result.



11
12
13
# File 'lib/uniword/lint/result.rb', line 11

def initialize
  @findings = []
end

Instance Attribute Details

#findingsObject (readonly)

Returns the value of attribute findings.



9
10
11
# File 'lib/uniword/lint/result.rb', line 9

def findings
  @findings
end

Instance Method Details

#add(finding) ⇒ void

This method returns an undefined value.

Parameters:

  • finding (Hash)


17
18
19
# File 'lib/uniword/lint/result.rb', line 17

def add(finding)
  @findings << finding
end

#by_ruleHash{Symbol => Integer}

Count by rule name.

Returns:

  • (Hash{Symbol => Integer})


39
40
41
42
# File 'lib/uniword/lint/result.rb', line 39

def by_rule
  @findings.group_by { |f| f[:rule] }
    .transform_values(&:count)
end

#by_severityHash{Symbol => Integer}

Count by severity.

Returns:

  • (Hash{Symbol => Integer})


31
32
33
34
# File 'lib/uniword/lint/result.rb', line 31

def by_severity
  @findings.group_by { |f| f[:severity] }
    .transform_values(&:count)
end

#countInteger

Total finding count.

Returns:

  • (Integer)


47
48
49
# File 'lib/uniword/lint/result.rb', line 47

def count
  @findings.length
end

#empty?Boolean

True when zero findings.

Returns:

  • (Boolean)


54
55
56
# File 'lib/uniword/lint/result.rb', line 54

def empty?
  @findings.empty?
end

#errors?Boolean

True when at least one :error severity finding exists.

Returns:

  • (Boolean)


24
25
26
# File 'lib/uniword/lint/result.rb', line 24

def errors?
  @findings.any? { |f| f[:severity] == :error }
end