Skip to content

Commit

Permalink
Merge array_type and gem_requirement logic in a single method
Browse files Browse the repository at this point in the history
  • Loading branch information
cetinajero committed Nov 13, 2020
1 parent 65758bd commit b602d9c
Showing 1 changed file with 8 additions and 12 deletions.
20 changes: 8 additions & 12 deletions lib/rubocop/target_ruby.rb
Original file line number Diff line number Diff line change
Expand Up @@ -140,22 +140,13 @@ def find_version
version = version_from_gemspec_file(file)
return if version.nil?

if version.array_type?
versions = version.children.map { |v| version_from_str(v.str_content) }
return versions.compact.min
end

return gem_requirement_version(version) if gem_requirement? version
requirement = version.children.last
return version_from_array(version) if version.array_type?
return version_from_array(requirement) if gem_requirement? version

version_from_str(version.str_content)
end

def gem_requirement_version(version)
gem_requirement = version.children.last
versions = gem_requirement.children.map { |v| version_from_str(v) }
versions.compact.min
end

def gemspec_filename
@gemspec_filename ||= begin
basename = Pathname.new(@config.base_dir_for_path_parameters).basename.to_s
Expand All @@ -173,6 +164,11 @@ def version_from_gemspec_file(file)
required_ruby_version(processed_source.ast).first
end

def version_from_array(array)
versions = array.children.map { |v| version_from_str(v.is_a?(String) ? v : v.str_content) }
versions.compact.min
end

def version_from_str(str)
str.match(/^(?:>=|<=)?\s*(?<version>\d+(?:\.\d+)*)/) do |md|
md[:version].to_f
Expand Down

0 comments on commit b602d9c

Please sign in to comment.