Sha256: ca5ac6ed6f52224428205e3d592c1dc0b4ee78e4e2417154350d73bb507385fa
Contents?: true
Size: 1.39 KB
Versions: 2
Compression:
Stored size: 1.39 KB
Contents
# frozen_string_literal: true require_relative 'offense' module Punchlist # Inspects files for punchlist items class Inspector # @param punchlist_line_regexp [Regexp] a regular expression that matches punchlist items # @param filename [String] the file to inspect # @param file_opener [Class<File>] an object that responds to `open` like `File` def initialize(punchlist_line_regexp, filename, file_opener: File) @file_opener = file_opener @punchlist_line_regexp = punchlist_line_regexp @filename = filename @lines = [] @line_num = 0 end # @return [Array<Offense>] punchlist items for the specified file def run @file_opener.open(filename, 'r') do |file| file.each_line { |line| inspect_line(line) } end @lines end private # @return [Regexp] attr_reader :punchlist_line_regexp # @return [String] attr_reader :filename # Inspects a line for punchlist items and stores it in this objects state # # @param line [String] the line to inspect # @return [void] def inspect_line(line) @line_num += 1 return unless line =~ punchlist_line_regexp @lines << Offense.new(filename, @line_num, line.chomp) rescue ArgumentError => e if e.message != 'invalid byte sequence in UTF-8' # not a simple binary file we should ignore raise end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
punchlist-1.3.2 | lib/punchlist/inspector.rb |
punchlist-1.3.1 | lib/punchlist/inspector.rb |