]> jaekl.net Git - quanlib.git/commitdiff
Add Util::Inspector to reduce code complexity.
authorChris Jaekl <chris@jaekl.net>
Fri, 28 Jun 2024 01:05:18 +0000 (21:05 -0400)
committerChris Jaekl <chris@jaekl.net>
Fri, 28 Jun 2024 01:05:18 +0000 (21:05 -0400)
app/author.rb
app/book.rb
app/classification.rb
app/series.rb
test/classification_test.rb

index 716f5aa2e05552ec35c6e28cd4bff51c234d4f49..964f48e4e9e3dee250b73fb61054a745d683a069 100644 (file)
@@ -1,5 +1,7 @@
 # frozen_string_literal: true
 
+require "util/inspector"
+
 # Encapsulates information about an author
 class Author
   attr_accessor :grouping, :reading_order, :sort_order
@@ -13,13 +15,7 @@ class Author
   end
 
   def inspect
-    field_info = [
-      grouping.nil? ? nil : "grouping=\"#{grouping}\"",
-      reading_order.nil? ? nil : "reading_order=\"#{reading_order}\"",
-      sort_order.nil? ? nil : "sort_order=\"#{sort_order}\"",
-    ].compact.join(" ")
-
-    "(Author: #{field_info})"
+    Util::Inspector.inspect(self, %w[grouping reading_order sort_order])
   end
 
   def to_s
index bc4afb7ce5a8c8485d3a9b6e37331fbc6e8558a2..7c9012b92d5b071d94ae440b867ae82e506b7ffe 100644 (file)
@@ -60,16 +60,7 @@ class Book
   end
 
   def inspect
-    field_info = [
-      author.nil? ? nil : "author=\"#{author.inspect}",
-      series_id.nil? ? nil : "series_id=\"#{series_id.inspect}",
-      volume.nil? ? nil : "volume=\"#{volume.inspect}",
-      title.nil? ? nil : "title=\"#{title.inspect}",
-      cover.nil? ? nil : "cover=\"#{cover.inspect}",
-      path.nil? ? nil : "path=\"#{path.inspect}",
-    ].compact.join(" ")
-
-    "(Book: #{field_info})"
+    Inspector.inspect(self, %w[author series_id volume title cover path])
   end
 
   def to_s
index c9055a13dbd1252e007d738311fc2f6b8026f5ed..92c7e25461606c6b3f3a07b4a414466c407a6983 100644 (file)
@@ -1,5 +1,7 @@
 # frozen_string_literal: true
 
+require "util/inspector"
+
 # Encapsulates information about a book's classification, under the
 # Dewey Decimal and/or Library of Congress systems.
 class Classification
@@ -16,16 +18,7 @@ class Classification
   end
 
   def inspect
-    field_info = [
-      ddc.nil? ? nil : "Dewey=#{ddc.inspect}",
-      lcc.nil? ? nil : "LCC=#{lcc.inspect}",
-      author_grouping.nil? ? nil : "author_grouping=#{author_grouping.inspect}",
-      author.nil? ? nil : "author=#{author.inspect}",
-      title_grouping.nil? ? nil : "title_grouping=#{title_grouping.inspect}",
-      title.nil? ? nil : "title=#{title.inspect}",
-    ].compact.join(", ")
-
-    "(Classification: #{field_info})"
+    Util::Inspector.inspect(self, %w[ddc lcc author_grouping author title_grouping title])
   end
 
   def to_s
index 418c70e98f2cad0ff5b49806d9b8ef4794197f49..70a4246b389f1fff7323a0323686f5ac2a0283f0 100644 (file)
@@ -1,5 +1,7 @@
 # frozen_string_literal: true
 
+require "util/inspector"
+
 # Encapsulates data about a series of books
 class Series
   attr_reader :id
@@ -16,15 +18,7 @@ class Series
   end
 
   def inspect
-    field_info = [
-      age.nil? ? nil : "age=#{age.inspect}",
-      code.nil? ? nil : "code=#{code.inspect}",
-      descr.nil? ? nil : "descr=#{descr.inspect}",
-      genre.nil? ? nil : "genre=#{genre.inspect}",
-      grouping.nil? ? nil : "grouping=#{grouping.inspect}",
-    ].compact.join(" ")
-
-    "(Series: #{field_info})"
+    Util::Inspector.inspect(self, %w[age code descr genre grouping])
   end
 
   def key
index 570393cb3721c0ed280e371cde1bf14dc59b579e..3049106760badb72dd0fdbb6c19e95de2277d550 100644 (file)
@@ -14,8 +14,8 @@ class ClassificationTest < Minitest::Test
 
     classification = Classification.new(ddc, lcc, author_grouping, author_sort, title_grouping, title)
 
-    expected = '(Classification: Dewey="973.3/092 B", LCC="E302.6.F7", author_grouping="BenjaminFranklin", ' \
-      'author="Franklin, Benjamin", title_grouping="Autobiography_of_Benjamin_Franklin", title="Autobiography ' \
+    expected = '(Classification: ddc="973.3/092 B" lcc="E302.6.F7" author_grouping="BenjaminFranklin" ' \
+      'author="Franklin, Benjamin" title_grouping="Autobiography_of_Benjamin_Franklin" title="Autobiography ' \
       'of Benjamin Franklin")'
     actual = classification.inspect