lib/pmd/pmd_file.rb in danger-pmd-0.1.1 vs lib/pmd/pmd_file.rb in danger-pmd-0.2.0
- old
+ new
@@ -1,31 +1,46 @@
# frozen_string_literal: true
class PmdFile
require_relative "./pmd_violation"
+
attr_accessor :file
- def initialize(file)
+ # An absolute path to this file
+ #
+ # @return [String]
+ attr_reader :absolute_path
+
+ # A relative path to this file
+ #
+ # @return [String]
+ attr_reader :relative_path
+
+ def initialize(prefix, file)
@file = file
- end
+ @absolute_path = file.attribute("name").value.to_s
- def source_path
- @source_path ||= file.attribute("name").value.to_s
- end
+ if prefix.end_with?(file_separator)
+ @prefix = prefix
+ else
+ @prefix = prefix + file_separator
+ end
- def absolute_path
- dirname = File.basename(Dir.getwd)
- if source_path.index(dirname)
- index_start = source_path.index(dirname) + dirname.length + 1
+ if @absolute_path.start_with?(@prefix)
+ @relative_path = @absolute_path[@prefix.length, @absolute_path.length - @prefix.length]
else
- index_start = 0
+ @relative_path = @absolute_path
end
- index_end = source_path.length
- @absolute_path ||= Pathname.new(source_path[index_start, index_end]).to_s
end
def violations
@violations ||= file.xpath("violation").map do |pmd_violation|
PmdViolation.new(pmd_violation)
end
+ end
+
+ private
+
+ def file_separator
+ File::ALT_SEPARATOR || File::SEPARATOR
end
end