Sha256: e35f6d433d7505c155af2dab30f9bf5821bfaebe45684cda5a56b88b0e8a5913
Contents?: true
Size: 1.49 KB
Versions: 8
Compression:
Stored size: 1.49 KB
Contents
# Copyright (c) 2020 Jerome Arbez-Gindre # frozen_string_literal: true module DefMastership # modify one line after another class UpdateDefVersionLineModifier < LineModifierBase attr_accessor :document, :ref_document def self.from_config(hash) new.from_config(hash) end def initialize super @config = { def_type: '', ref_document: '', first_version: '' } end def replace(line) match = matched?(line) return line unless match return line unless match[:type] == def_type version_and_checksum = '' if match[:explicit_checksum] || version_string(match) version_and_checksum = "(#{version_string(match)}#{match[:explicit_checksum]})" end line.gsub(Regexp.new("#{match[:reference]}#{DMRegexp::DEF_VERSION_AND_CHECKSUM}")) do "#{match[:reference]}#{version_and_checksum}" end end private def matched?(line) return if line.commented? return unless line =~ DMRegexp::DEFINITION Regexp.last_match end def version_string(match) ref_definition = @ref_document.ref_to_def(match[:reference]) definition = @document.ref_to_def(match[:reference]) return if ref_definition.nil? return ref_definition.explicit_version if definition.sha256 == ref_definition.sha256 ref_version = @ref_document.ref_to_def(match[:reference]).explicit_version ref_version.nil? ? @config[:first_version] : ref_version.next end end end
Version data entries
8 entries across 8 versions & 1 rubygems