gem_updater 7.5.0 → 7.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a3d949310e7a61e9e85d4bf83e72cebae111d791cda497f2b2234224409495a
4
- data.tar.gz: e6c5ef35d5980fc19a0a0848f4bb14b6dd0228af70867baacf407f09ee3e7c4e
3
+ metadata.gz: bc28af31cedc3f68fabaefd09d1979f5dba525a38c87170f39dc6e734b936891
4
+ data.tar.gz: 57949346d13e189f93bb970f649cae9427e1d50e82ace2c6c80c9a821bf9443c
5
5
  SHA512:
6
- metadata.gz: 8ce4c6800245f7a82cf13c9ad26ae0e1db0c468fa496a0ae8278d515a51e25cf70ff7e3eafbd5f8170115c9c1ebef316410f2ee1d446fbebaa3564aa0a1dc710
7
- data.tar.gz: 560a612ec6a6d6e7500e8418b0d96ad4ad01d6b2ad43ee2f959506c9b8500913d5a1e861e564c6f676af7bef1969bf26af66c97b2f21b60380805b137014308f
6
+ metadata.gz: 9b4173acc20153e9c7a4e426ee81e9ae197e655c47a177dda809ce69b5120bba4a40708f0ccde05a7d2618e978e3488f957a9ac3e2b528fea9037b7e34e8f3e0
7
+ data.tar.gz: 8bf92fb70dde11e5a81f2ad09f846ec99c6af7d3d8d3be21c5492b9925034184150c733ed61132b9427b2656582d76cdaec8b6f6d1586c53be1b50a3fc1e8063
@@ -7,7 +7,8 @@ module GemUpdater
7
7
  class ChangelogParser
8
8
  # ChangelogParser is responsible for parsing a changelog hosted on github.
9
9
  class GithubParser
10
- ANCHOR_XPATH = '//a[contains(@class, "anchor")]'
10
+ REACT_DATA_XPATH = '//script[@data-target="react-app.embeddedData"]'
11
+ REACT_PAYLOAD_TOC_PATH = %w[payload blob headerInfo toc].freeze
11
12
 
12
13
  attr_reader :uri, :version
13
14
 
@@ -39,12 +40,16 @@ module GemUpdater
39
40
  # @param doc [Nokogiri::HTML4::Document] document
40
41
  # @return [String, nil] anchor's href
41
42
  def find_anchor(doc)
42
- anchor = doc.xpath(ANCHOR_XPATH).find do |element|
43
- element.attr('aria-label').match(version)
44
- end
43
+ react_data = doc.at_xpath(REACT_DATA_XPATH)
44
+ return unless react_data
45
+
46
+ react_content = JSON.parse(react_data.text)
47
+ anchor = react_content
48
+ .dig(*REACT_PAYLOAD_TOC_PATH).to_a
49
+ .find { |item| item['text'].match(version) }&.[]('anchor')
45
50
  return unless anchor
46
51
 
47
- anchor.attr('href').gsub(%(\\"), '')
52
+ "##{anchor}"
48
53
  end
49
54
  end
50
55
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GemUpdater
4
- VERSION = '7.5.0'
4
+ VERSION = '7.6.0'
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem_updater
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.5.0
4
+ version: 7.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maxime Demolin
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-04-02 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: bundler
@@ -173,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
173
  - !ruby/object:Gem::Version
174
174
  version: '0'
175
175
  requirements: []
176
- rubygems_version: 3.6.2
176
+ rubygems_version: 3.6.7
177
177
  specification_version: 4
178
178
  summary: Update your gems and find their changelogs
179
179
  test_files: []