--- portage/dev-ruby/asciidoctor-diagram/asciidoctor-diagram-2.0.5-r1.ebuild	2023-04-08 11:40:23.000000000 +0200
+++ overlays/personal/dev-ruby/asciidoctor-diagram/asciidoctor-diagram-2.0.5-r1.ebuild	2023-09-10 19:30:27.893592688 +0200
@@ -20,25 +20,68 @@
 LICENSE="MIT"
 SLOT="0"
 KEYWORDS="~amd64"
+
+backends=(
+ 	"barcode" "dev-ruby/rqrcode dev-ruby/barby"
+ 	"ditaa" "media-gfx/ditaa virtual/jre"
+ 	"gnuplot" "sci-visualization/gnuplot"
+ 	"graphviz" "media-gfx/graphviz"
+ 	"lilypond" "media-sound/lilypond"
+ 	"meme" "media-gfx/imagemagick[png]"
+ 	"mscgen" "media-gfx/mscgen[png]"
+ 	"plantuml" "media-gfx/plantuml virtual/jre"
+ 	"tikz" "dev-tex/pgf"
+)
+
 IUSE=""
+RDEPEND=""
+DEPEND="test? ("
+
+i=0
+while (( i < ${#backends[@]} ))
+do
+    	backend="${backends[i]}"
+    	deps="${backends[i+1]}"
+
+    	IUSE+=" $backend"
+    	RDEPEND+=" $backend? ( $deps )"
+    	DEPEND+=" $deps"
+
+    	((i+=2))
+done
+
+DEPEND+=" )"
 
-RDEPEND+=" virtual/jre"
-DEPEND+=" test? (
-	dev-texlive/texlive-latex
-	dev-texlive/texlive-latexextra
-	media-gfx/imagemagick[png,postscript]
-	media-gfx/graphviz
-	media-sound/lilypond
-	sci-visualization/gnuplot
-)"
 ruby_add_rdepend ">=dev-ruby/asciidoctor-1.5.7 <dev-ruby/asciidoctor-3"
 
 all_ruby_prepare() {
 	rm Gemfile || die
 	sed -i -e '/c.formatter/ s:^:#:' spec/test_helper.rb || die
 
-	# Avoid specs for unpackaged tools
-	rm -f spec/{a2s,blockdiag,bpmn,bytefield,dpic,erd,mermaid,msc,nomnoml,pikchr,shaape,smcat,svgbob,symbolator,syntrax,umlet,vega,wavedrom}_spec.rb || die
+        # Delete everything related to unsupported backends. Obtain list of backends from spec/
+        for spec in spec/*_spec.rb
+        do
+        	backend="${spec##spec/}"
+        	backend="${backend%%_spec.rb}"
+
+		if
+	              	(
+	              		i=0
+                        	while (( i < ${#backends[@]} ))
+                        	do
+                            		if [[ "${backends[i]}" == "$backend" ]]
+                            		then
+                                		exit 1;
+                            		fi
+
+                            		((i+=2))
+                        	done
+                        ) || ! use "$backend"
+                then
+			rm -f "spec/$backend_spec.rb"
+			rm -Rf "lib/asciidoctor-diagram/"{"$backend.rb","$backend"}
+        	fi
+        done
 }
 
 all_ruby_install() {