class Dependabot::Bundler::FileUpdater::RequirementReplacer
Attributes
dependency[R]
file_type[R]
previous_requirement[R]
updated_requirement[R]
Public Class Methods
new(dependency:, file_type:, updated_requirement:, previous_requirement: nil, insert_if_bare: false)
click to toggle source
# File lib/dependabot/bundler/file_updater/requirement_replacer.rb, line 13 def initialize(dependency:, file_type:, updated_requirement:, previous_requirement: nil, insert_if_bare: false) @dependency = dependency @file_type = file_type @updated_requirement = updated_requirement @previous_requirement = previous_requirement @insert_if_bare = insert_if_bare end
Public Instance Methods
rewrite(content)
click to toggle source
# File lib/dependabot/bundler/file_updater/requirement_replacer.rb, line 22 def rewrite(content) buffer = Parser::Source::Buffer.new("(gemfile_content)") buffer.source = content ast = Parser::CurrentRuby.new.parse(buffer) updated_content = Rewriter.new( dependency: dependency, file_type: file_type, updated_requirement: updated_requirement, insert_if_bare: insert_if_bare? ).rewrite(buffer, ast) update_comment_spacing_if_required(content, updated_content) end
Private Instance Methods
insert_if_bare?()
click to toggle source
# File lib/dependabot/bundler/file_updater/requirement_replacer.rb, line 39 def insert_if_bare? @insert_if_bare end
length_change()
click to toggle source
# File lib/dependabot/bundler/file_updater/requirement_replacer.rb, line 66 def length_change return updated_requirement.length - previous_requirement.length unless previous_requirement.start_with?("=") updated_requirement.length - previous_requirement.gsub(/^=/, "").strip.length end
update_comment_spacing_if_required(content, updated_content)
click to toggle source
# File lib/dependabot/bundler/file_updater/requirement_replacer.rb, line 43 def update_comment_spacing_if_required(content, updated_content) return updated_content unless previous_requirement return updated_content if updated_content == content return updated_content if length_change.zero? updated_lines = updated_content.lines updated_line_index = updated_lines.length. times.find { |i| content.lines[i] != updated_content.lines[i] } updated_line = updated_lines[updated_line_index] updated_line = if length_change.positive? updated_line.sub(/(?<=\s)\s{#{length_change}}#/, "#") elsif length_change.negative? updated_line.sub(/(?<=\s{2})#/, " " * length_change.abs + "#") end updated_lines[updated_line_index] = updated_line updated_lines.join end