Class: SCNR::Introspector::Coverage::Resource

Inherits:
Object
  • Object
show all
Defined in:
lib/scnr/introspector/coverage/resource.rb,
lib/scnr/introspector/coverage/resource/line.rb

Defined Under Namespace

Classes: Line

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ Resource

Returns a new instance of Resource.

Parameters:

  • path (String)

    Path to the resource.



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/scnr/introspector/coverage/resource.rb', line 17

def initialize( path )
    @path  = path
    @lines = []

    IO.binread( path ).lines.each.with_index do |line, number|
        @lines << Line.new(
            number:   number,
            content:  line.rstrip,
            resource: self
        )
    end
end

Instance Attribute Details

#linesArray<Line>

Returns:



13
14
15
# File 'lib/scnr/introspector/coverage/resource.rb', line 13

def lines
  @lines
end

#pathString (readonly)

Returns:

  • (String)


10
11
12
# File 'lib/scnr/introspector/coverage/resource.rb', line 10

def path
  @path
end

Instance Method Details

#[](line_number) ⇒ Line

Parameters:

  • line_number (Integer)

    Number of the line to return (0-indexed).

Returns:



34
35
36
# File 'lib/scnr/introspector/coverage/resource.rb', line 34

def []( line_number )
    @lines[line_number]
end

#empty?Bool

Returns ‘true` if #lines are empty, `false` otherwise.

Returns:

  • (Bool)

    ‘true` if #lines are empty, `false` otherwise.



82
83
84
# File 'lib/scnr/introspector/coverage/resource.rb', line 82

def empty?
    lines.empty?
end

#hit_linesArray<Line>

Returns Hit lines.

Returns:



40
41
42
# File 'lib/scnr/introspector/coverage/resource.rb', line 40

def hit_lines
    lines.select(&:hit?)
end

#hit_percentageFloat

Returns Percentage of #hit_lines.

Returns:

  • (Float)

    Percentage of #hit_lines.



65
66
67
68
69
70
71
72
# File 'lib/scnr/introspector/coverage/resource.rb', line 65

def hit_percentage
    return 100.0 if empty?

    lines_to_include = Float(lines.size - skipped_lines.size)
    return 100.0 if lines_to_include == 0

    (hit_lines.size / lines_to_include) * 100.0
end

#included_linesArray<Line>

Returns Lines which should be considered in coverage (i.e. all lines except for #skipped_lines).

Returns:

  • (Array<Line>)

    Lines which should be considered in coverage (i.e. all lines except for #skipped_lines).



59
60
61
# File 'lib/scnr/introspector/coverage/resource.rb', line 59

def included_lines
    lines - skipped_lines
end

#miss_percentageFloat

Returns Percentage of #missed_lines.

Returns:

  • (Float)

    Percentage of #missed_lines.



76
77
78
# File 'lib/scnr/introspector/coverage/resource.rb', line 76

def miss_percentage
    100.0 - hit_percentage
end

#missed_linesArray<Line>

Returns Missed lines.

Returns:



46
47
48
# File 'lib/scnr/introspector/coverage/resource.rb', line 46

def missed_lines
    lines.select(&:missed?)
end

#skipped_linesArray<Line>

Returns Skipped lines.

Returns:



52
53
54
# File 'lib/scnr/introspector/coverage/resource.rb', line 52

def skipped_lines
    lines.select(&:skipped?)
end