commit:     bab51a396f24349976d57cb787bef774808c1693
Author:     Hans de Graaff <graaff <AT> gentoo <DOT> org>
AuthorDate: Thu Nov  9 13:57:45 2023 +0000
Commit:     Hans de Graaff <graaff <AT> gentoo <DOT> org>
CommitDate: Thu Nov  9 13:57:45 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bab51a39

dev-ruby/yard: fix error about beginless range

Signed-off-by: Hans de Graaff <graaff <AT> gentoo.org>

 .../yard/files/yard-0.9.34-beginless-range.patch   | 38 ++++++++++++
 dev-ruby/yard/yard-0.9.34-r1.ebuild                | 70 ++++++++++++++++++++++
 2 files changed, 108 insertions(+)

diff --git a/dev-ruby/yard/files/yard-0.9.34-beginless-range.patch 
b/dev-ruby/yard/files/yard-0.9.34-beginless-range.patch
new file mode 100644
index 000000000000..4284ad83acb9
--- /dev/null
+++ b/dev-ruby/yard/files/yard-0.9.34-beginless-range.patch
@@ -0,0 +1,38 @@
+From 8481180b935922f76a36e29e83914ee6fad782cd Mon Sep 17 00:00:00 2001
+From: Brad Feehan <g...@bradfeehan.com>
+Date: Tue, 21 Jun 2022 17:05:20 +1000
+Subject: [PATCH] Fix "cannot get the first element of beginless range" error
+
+This implements the fix suggested by @akimd:
+
+See https://github.com/lsegal/yard/issues/1434#issuecomment-1087817139
+
+Fixes lsegal/yard#1434.
+---
+ lib/yard/parser/ruby/ast_node.rb | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/lib/yard/parser/ruby/ast_node.rb 
b/lib/yard/parser/ruby/ast_node.rb
+index c9deb3ed1..d10bdfa3a 100644
+--- a/lib/yard/parser/ruby/ast_node.rb
++++ b/lib/yard/parser/ruby/ast_node.rb
+@@ -271,7 +271,7 @@ def has_line?
+ 
+         # @return [Fixnum] the starting line number of the node
+         def line
+-          line_range && line_range.first
++          line_range && line_range.begin || 1
+         end
+ 
+         # @return [String] the first line of source represented by the node.
+@@ -345,8 +345,8 @@ def reset_line_info
+           elsif !children.empty?
+             f = children.first
+             l = children.last
+-            self.line_range = Range.new(f.line_range.first, l.line_range.last)
+-            self.source_range = Range.new(f.source_range.first, 
l.source_range.last)
++            self.line_range = Range.new(f.line_range.begin || 1, 
l.line_range.last)
++            self.source_range = Range.new(f.source_range.begin || 1, 
l.source_range.last)
+           elsif @fallback_line || @fallback_source
+             self.line_range = @fallback_line
+             self.source_range = @fallback_source

diff --git a/dev-ruby/yard/yard-0.9.34-r1.ebuild 
b/dev-ruby/yard/yard-0.9.34-r1.ebuild
new file mode 100644
index 000000000000..e42ad56e8339
--- /dev/null
+++ b/dev-ruby/yard/yard-0.9.34-r1.ebuild
@@ -0,0 +1,70 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby31 ruby32"
+
+RUBY_FAKEGEM_RECIPE_TEST="rspec3"
+RUBY_FAKEGEM_TASK_DOC="yard"
+
+RUBY_FAKEGEM_EXTRADOC="README.md"
+RUBY_FAKEGEM_DOCDIR="doc docs"
+
+RUBY_FAKEGEM_EXTRAINSTALL="templates .yardopts"
+
+RUBY_FAKEGEM_GEMSPEC="yard.gemspec"
+
+inherit ruby-fakegem
+
+DESCRIPTION="Documentation generation tool for the Ruby programming language"
+HOMEPAGE="https://yardoc.org/";
+
+# The gem lacks the gemspec file needed to pass tests.
+SRC_URI="https://github.com/lsegal/yard/archive/v${PV}.tar.gz -> ${P}-git.tgz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 
~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos 
~x64-solaris"
+IUSE=""
+
+PATCHES=( "${FILESDIR}/${P}-beginless-range.patch" )
+
+ruby_add_bdepend "doc? ( || ( dev-ruby/maruku dev-ruby/rdiscount 
dev-ruby/kramdown ) )"
+
+ruby_add_bdepend "test? ( dev-ruby/rack:2.2 >=dev-ruby/rspec-3.11.0 )"
+
+all_ruby_prepare() {
+       sed -i -e '/[Bb]undler/ s:^:#:' -e '3igem "rack", "~> 2.2.0"' 
spec/spec_helper.rb || die
+
+       sed -i -e '/samus/I s:^:#:' Rakefile || die
+
+       sed -i -e 's/git ls-files/find/' ${RUBY_FAKEGEM_GEMSPEC} || die
+
+       # Avoid specs that make assumptions on load ordering that are not
+       # true for us. This may be related to how we install in Gentoo. This
+       # also drops a test requirement on dev-ruby/rack.
+       rm -f spec/cli/server_spec.rb || die
+
+       # Avoid specs that only work with bundler
+       sed -i -e '/#initialize/,/^  end/ s:^:#:' spec/cli/yri_spec.rb || die
+       sed -e '/overwrites options with data in/askip "wrong assumptions on 
file access"' \
+               -e '/loads any gem plugins starting with/askip "wrong 
assumptions on file access"' \
+               -i spec/config_spec.rb || die
+
+       # Avoid specs making assumptions about how rubygems works internally
+       sed -i -e '/searches for .gem file/askip "rubygems internals"' 
spec/cli/diff_spec.rb || die
+
+       # Fix broken spec
+       sed -i -e '/:exist?/aallow(File).to receive(:exist?).and_call_original' 
spec/i18n/locale_spec.rb || die
+
+       # Avoid ruby31 failure on whitespace-only differences
+       sed -i -e '/shows a list of nodes/askip "Whitespace differences on 
ruby31"' spec/parser/ruby/ast_node_spec.rb || die
+
+       # Avoid redcarpet-specific spec that is not optional
+       sed -i -e '/autolinks URLs/askip "make redcarpet optional"' 
spec/templates/helpers/html_helper_spec.rb || die
+
+       # Avoid asciidoc-specific spec that is not optional
+       sed -e '/\(AsciiDoc specific\|AsciiDoc header\)/askip "skipping 
asciidoc test"' \
+               -i spec/templates/helpers/html_helper_spec.rb || die
+}

Reply via email to