pennmarc 1.0.8 → 1.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2dbb99dde790dda81ab9af2e7fdcc003a6ebc06a5ff447816705ef0836594a30
4
- data.tar.gz: 75ab2803be0bc910f62ecb177490ab4de09c13cadabbf5b55921197f7e713ef9
3
+ metadata.gz: 27d9b9618c0824c62064d486d486850948dd079dd9667c2955cc7c04556e4656
4
+ data.tar.gz: d741e303841db97060e8747e751ebfa79e3b37b9391eec6ab072d71cb560267a
5
5
  SHA512:
6
- metadata.gz: 755bce4545eedf08220d746d7a01a0d2e2d5a0abfc777cd94aff4a2e33d7f34a457f7bd181031bc934c8c2435a5c8e8fe5a20a301ba363974ce2dcafa6d81783
7
- data.tar.gz: 8613afeaf7fbe166fc1ce62acd792bcc85f89537ad0f515da140b811b17c2a62e3136fbeb8335758068ae672fb3a579f847cc6c12fcd2a696fa3358f85a10524
6
+ metadata.gz: 36b165a655fc431225d39004be0470e35760a41d62693455a63c2e6b6f346391803fdd7955b418b890a7531eb45b3a687fb5f9a5cd0a8aecce884ae3f8d2b82f
7
+ data.tar.gz: 01cfac580c76988881af4b639957f6351db48f6998947b84e68aa3450c9c905bef9c04c5895489db063296d8e7810c332218fb5cf36ff42b3f4bb5cb519ea098
@@ -32,5 +32,16 @@ module PennMARC
32
32
  # a subfield code NOT used by the MARC 21 spec for 852 holdings records.
33
33
  # we add this subfield during preprocessing to store boundwith record IDs.
34
34
  SUB_BOUND_WITH_ID = 'y'
35
+
36
+ # MARC enrichment originating from Alma Api
37
+ # @see https://developers.exlibrisgroup.com/alma/apis/docs/bibs/R0VUIC9hbG1hd3MvdjEvYmlicy97bW1zX2lkfQ==/ Alma docs
38
+ module AlmaApi
39
+ TAG_PHYSICAL_INVENTORY = 'AVA'
40
+ TAG_DIGITAL_INVENTORY = 'AVA'
41
+ TAG_ELECTRONIC_INVENTORY = 'AVE'
42
+
43
+ SUB_PHYSICAL_CALL_NUMBER = 'd'
44
+ SUB_PHYSICAL_CALL_NUMBER_TYPE = 'k'
45
+ end
35
46
  end
36
47
  end
@@ -0,0 +1,95 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PennMARC
4
+ # Generates library of congress and dewey classifications using call number data.
5
+ class Classification < Helper
6
+ # Subfield value that identifies Library of Congress call number
7
+ LOC_CALL_NUMBER_TYPE = '0'
8
+
9
+ # Subfield value that identifies Dewey call number
10
+ DEWEY_CALL_NUMBER_TYPE = '1'
11
+
12
+ # Hash that maps call number type to the appropriate mapper
13
+ CLASSIFICATION_MAPS = {
14
+ LOC_CALL_NUMBER_TYPE => Mappers.loc_classification,
15
+ DEWEY_CALL_NUMBER_TYPE => Mappers.dewey_classification
16
+ }.freeze
17
+
18
+ # Enriched MARC tags that hold classification data
19
+ TAGS = [EnrichedMarc::TAG_ITEM, EnrichedMarc::AlmaApi::TAG_PHYSICAL_INVENTORY].freeze
20
+
21
+ class << self
22
+ # Parse classification values for faceting. We retrieve classification values from enriched MARC fields 'itm' or
23
+ # 'AVA' originating respectively from the Alma publishing process or from the Alma Api. We return the
24
+ # highest level LOC or Dewey classifications from each available call number, joining the class code with
25
+ # its title in a single string. See {PennMARC::EnrichedMarc} and {PennMARC::EnrichedMarc::AlmaApi} for more
26
+ # information on the enriched MARC fields.
27
+ # @see https://developers.exlibrisgroup.com/alma/apis/docs/bibs/R0VUIC9hbG1hd3MvdjEvYmlicy97bW1zX2lkfQ==/ AVA docs
28
+ # @param [MARC::Record] record
29
+ # @return [Array<String>] array of classifications
30
+ def facet(record)
31
+ record.fields(TAGS).flat_map do |field|
32
+ call_number_type = subfield_values(field, call_number_type_sf(field))&.first
33
+ call_numbers = subfield_values(field, call_number_sf(field))
34
+
35
+ call_numbers.filter_map do |call_number|
36
+ class_code = call_number[0]
37
+ title = translate_classification(class_code, call_number_type)
38
+ next if title.blank?
39
+
40
+ format_facet(class_code, call_number_type, title)
41
+ end
42
+ end
43
+ end
44
+
45
+ private
46
+
47
+ # Retrieve subfield code that stores the call number on enriched marc field
48
+ # @param [MARC::DataField] field
49
+ # @return [String]
50
+ def call_number_sf(field)
51
+ return EnrichedMarc::SUB_ITEM_CALL_NUMBER if field.tag == EnrichedMarc::TAG_ITEM
52
+
53
+ EnrichedMarc::AlmaApi::SUB_PHYSICAL_CALL_NUMBER
54
+ end
55
+
56
+ # Retrieve subfield code that stores call number type on enriched marc field
57
+ # @param [MARC::DataField] field
58
+ # @return [String]
59
+ def call_number_type_sf(field)
60
+ return EnrichedMarc::SUB_ITEM_CALL_NUMBER_TYPE if field.tag == EnrichedMarc::TAG_ITEM
61
+
62
+ EnrichedMarc::AlmaApi::SUB_PHYSICAL_CALL_NUMBER_TYPE
63
+ end
64
+
65
+ # retrieve title of classification based on single char classification code and call number type
66
+ # @param[String] class_code classification code
67
+ # @param[String] call_number_type value from call number type subfield
68
+ # @return [String, NilClass]
69
+ def translate_classification(class_code, call_number_type)
70
+ map = CLASSIFICATION_MAPS[call_number_type]
71
+
72
+ return if map.blank?
73
+
74
+ translate_relator(class_code, map)
75
+ end
76
+
77
+ # format classification facet by joining single character classification code with its corresponding title.
78
+ # Our Dewey mapping codes are single digit, so we must concatenate '00' to the class code to accurately reflect
79
+ # Dewey class codes.
80
+ # @return [String]
81
+ def format_facet(class_code, call_number_type, title)
82
+ return [class_code, title].join(' - ') if loc_call_number_type?(call_number_type)
83
+
84
+ ["#{class_code}00", title].join(' - ')
85
+ end
86
+
87
+ # Determine whether call number type is library of congress
88
+ # @param [String] call_number_type value from call number type subfield
89
+ # @return [Boolean]
90
+ def loc_call_number_type?(call_number_type)
91
+ call_number_type == '0'
92
+ end
93
+ end
94
+ end
95
+ end
@@ -18,7 +18,7 @@ module PennMARC
18
18
  # local field 944}. Only returns database subtype if Penn's Database facet value is present in subfield 'a'.
19
19
  # @param [Marc::Record]
20
20
  # @return [Array<string>] Array of types
21
- def type(record)
21
+ def type_facet(record)
22
22
  record.fields('944').filter_map do |field|
23
23
  # skip unless specified database format type present
24
24
  next unless subfield_value?(field, 'a', /#{DATABASES_FACET_VALUE}/o)
@@ -34,7 +34,7 @@ module PennMARC
34
34
  # subfield '2'.
35
35
  # @param [Marc::Record]
36
36
  # @return [Array<string>] Array of categories
37
- def db_category(record)
37
+ def category_facet(record)
38
38
  return [] unless curated_db?(record)
39
39
 
40
40
  record.fields('943').filter_map do |field|
@@ -55,7 +55,7 @@ module PennMARC
55
55
  # an empty array.
56
56
  # @param [Marc::Record]
57
57
  # @return [Array<string>] Array of "category--subcategory"
58
- def db_subcategory(record)
58
+ def subcategory_facet(record)
59
59
  return [] unless curated_db?(record)
60
60
 
61
61
  record.fields('943').filter_map do |field|
@@ -13,7 +13,7 @@ module PennMARC
13
13
  # Full text links from MARC 856 fields.
14
14
  # @param [MARC::Record] record
15
15
  # @return [Array] array of hashes
16
- def full_text(record)
16
+ def full_text_links(record)
17
17
  indicator2_options = %w[0 1]
18
18
  links_from_record(record, indicator2_options)
19
19
  end
@@ -21,7 +21,7 @@ module PennMARC
21
21
  # Web text links from MARC 856 fields.
22
22
  # @param [MARC::Record] record
23
23
  # @return [Array] array of hashes
24
- def web(record)
24
+ def web_links(record)
25
25
  indicator2_options = ['2', ' ', '']
26
26
  links_from_record(record, indicator2_options)
27
27
  end
@@ -6,15 +6,16 @@ module PennMARC
6
6
  class << self
7
7
  # Retrieve notes for display from fields {https://www.oclc.org/bibformats/en/5xx/500.html 500},
8
8
  # {https://www.oclc.org/bibformats/en/5xx/502.html 502}, {https://www.oclc.org/bibformats/en/5xx/504.html 504},
9
- # {https://www.oclc.org/bibformats/en/5xx/515.html 515}, {https://www.oclc.org/bibformats/en/5xx/518.html 518}
9
+ # {https://www.oclc.org/bibformats/en/5xx/515.html 515}, {https://www.oclc.org/bibformats/en/5xx/518.html 518},
10
10
  # {https://www.oclc.org/bibformats/en/5xx/525.html 525}, {https://www.oclc.org/bibformats/en/5xx/533.html 533},
11
- # {https://www.oclc.org/bibformats/en/5xx/550.html 550}, {https://www.oclc.org/bibformats/en/5xx/580.html 580},
12
- # {https://www.oclc.org/bibformats/en/5xx/586.html 586}, {https://www.oclc.org/bibformats/en/5xx/588.html 588},
11
+ # {https://www.oclc.org/bibformats/en/5xx/540.html 540}, {https://www.oclc.org/bibformats/en/5xx/550.html 550},
12
+ # {https://www.oclc.org/bibformats/en/5xx/580.html 580}, {https://www.oclc.org/bibformats/en/5xx/586.html 586},
13
+ # {https://www.oclc.org/bibformats/en/5xx/588.html 588}
13
14
  # and their linked alternates.
14
15
  # @param [MARC::Record] record
15
16
  # @return [Array<String>]
16
17
  def notes_show(record)
17
- notes_fields = %w[500 502 504 515 518 525 533 550 580 586 588]
18
+ notes_fields = %w[500 502 504 515 518 525 533 540 550 580 586 588]
18
19
  record.fields(notes_fields + ['880']).filter_map do |field|
19
20
  next if field.tag == '880' && subfield_value_not_in?(field, '6', notes_fields)
20
21
 
@@ -84,7 +84,7 @@ module PennMARC
84
84
  # https://www.loc.gov/marc/bibliographic/bd780.html
85
85
  # @param [MARC::Record] record
86
86
  # @return [String] continues fields string
87
- def get_continues_display(record)
87
+ def get_continues_show(record)
88
88
  continues(record, '780')
89
89
  end
90
90
 
@@ -94,7 +94,7 @@ module PennMARC
94
94
  # https://www.loc.gov/marc/bibliographic/bd785.html
95
95
  # @param [MARC::Record] record
96
96
  # @return [String] continued by fields string
97
- def get_continued_by_display(record)
97
+ def get_continued_by_show(record)
98
98
  continues(record, '785')
99
99
  end
100
100
 
@@ -149,7 +149,7 @@ module PennMARC
149
149
  # title browse and we will not be supporting that at this time
150
150
  # @param [MARC::Record] record
151
151
  # @return [Array<String>] Array of standardized titles as strings
152
- def standardized(record)
152
+ def standardized_show(record)
153
153
  standardized_titles = record.fields(%w[130 240]).map do |field|
154
154
  join_subfields(field, &subfield_not_in?(%w[0 6 8 e w]))
155
155
  end
@@ -177,7 +177,7 @@ module PennMARC
177
177
  #
178
178
  # @param [MARC::Record] record
179
179
  # @return [Array<String>] Array of other titles as strings
180
- def other(record)
180
+ def other_show(record)
181
181
  other_titles = record.fields('246').map do |field|
182
182
  join_subfields(field, &subfield_not_in?(%w[6 8]))
183
183
  end
@@ -202,7 +202,7 @@ module PennMARC
202
202
  # @todo what are e and w subfields?
203
203
  # @param [MARC::Record] record
204
204
  # @return [Array<String>] array of former titles
205
- def former(record)
205
+ def former_show(record)
206
206
  record.fields
207
207
  .filter_map do |field|
208
208
  next unless field.tag == '247' || (field.tag == '880' && subfield_value?(field, '6', /^247/))
@@ -23,6 +23,16 @@ module PennMARC
23
23
  @relator ||= load_map('relator.yml')
24
24
  end
25
25
 
26
+ # @return [Hash]
27
+ def loc_classification
28
+ @loc_classification ||= load_map('loc_classification.yml')
29
+ end
30
+
31
+ # @return [Hash]
32
+ def dewey_classification
33
+ @dewey_classification ||= load_map('dewey_classification.yml')
34
+ end
35
+
26
36
  # @param [String] filename of mapping file in config directory, with file extension
27
37
  # @return [Hash] mapping as hash
28
38
  def load_map(filename)
@@ -0,0 +1,11 @@
1
+ ---
2
+ '0': Computer science, information & general works
3
+ '1': Philosophy & psychology
4
+ '2': Religion
5
+ '3': Social sciences
6
+ '4': Language
7
+ '5': Science
8
+ '6': Technology
9
+ '7': Arts & recreation
10
+ '8': Literature
11
+ '9': History & geography
@@ -0,0 +1,22 @@
1
+ ---
2
+ A: General Works
3
+ B: Philosophy, Psychology, Religion
4
+ C: 'History: Auxiliary Sciences'
5
+ D: 'History: General & European'
6
+ E: 'History: United States'
7
+ F: 'History: Western Hemisphere'
8
+ G: Geography, Anthropology, Recreation
9
+ H: Social Science, Economics, Sociology
10
+ J: Political Science
11
+ K: Law
12
+ L: Education
13
+ M: Music
14
+ N: Fine Arts
15
+ P: Literature & Languages
16
+ Q: Science
17
+ R: Medicine
18
+ S: Agriculture
19
+ T: Technology
20
+ U: Military Science
21
+ V: Naval Science
22
+ Z: Bibliography & Library Science
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PennMARC
4
- VERSION = '1.0.8'
4
+ VERSION = '1.0.10'
5
5
  end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe 'PennMARC::Classification' do
4
+ include MarcSpecHelpers
5
+
6
+ let(:helper) { PennMARC::Classification }
7
+ let(:record) do
8
+ marc_record fields: [marc_field(tag: tag,
9
+ subfields: { call_number_type_sf => '0', call_number_sf => 'TA683 .B3 1909b' }),
10
+ marc_field(tag: tag,
11
+ subfields: { call_number_type_sf => '0', call_number_sf => 'QL756 .S643' }),
12
+ marc_field(tag: tag,
13
+ subfields: { call_number_type_sf => '1', call_number_sf => '691.3 B2141' }),
14
+ marc_field(tag: tag,
15
+ subfields: { call_number_type_sf => '1', call_number_sf => '378.748 POS1952.29' })]
16
+ end
17
+
18
+ describe '.facet' do
19
+ context 'with enrichment via the Alma publishing process' do
20
+ let(:tag) { PennMARC::EnrichedMarc::TAG_ITEM }
21
+ let(:call_number_type_sf) { PennMARC::EnrichedMarc::SUB_ITEM_CALL_NUMBER_TYPE }
22
+ let(:call_number_sf) { PennMARC::EnrichedMarc::SUB_ITEM_CALL_NUMBER }
23
+
24
+ it 'returns expected values' do
25
+ expect(helper.facet(record)).to contain_exactly('T - Technology', '600 - Technology',
26
+ '300 - Social sciences', 'Q - Science')
27
+ end
28
+ end
29
+
30
+ context 'with enrichment with availability info via Alma Api' do
31
+ let(:tag) { PennMARC::EnrichedMarc::AlmaApi::TAG_PHYSICAL_INVENTORY }
32
+ let(:call_number_type_sf) { PennMARC::EnrichedMarc::AlmaApi::SUB_PHYSICAL_CALL_NUMBER_TYPE }
33
+ let(:call_number_sf) { PennMARC::EnrichedMarc::AlmaApi::SUB_PHYSICAL_CALL_NUMBER }
34
+
35
+ it 'returns expected values' do
36
+ expect(helper.facet(record)).to contain_exactly('T - Technology', '600 - Technology',
37
+ '300 - Social sciences', 'Q - Science')
38
+ end
39
+ end
40
+ end
41
+ end
@@ -21,39 +21,39 @@ describe 'PennMARC::Database' do
21
21
  ])
22
22
  end
23
23
 
24
- describe '.type' do
24
+ describe '.type_facet' do
25
25
  it 'returns database types' do
26
- expect(helper.type(record)).to contain_exactly('Dictionaries and Thesauri (language based)',
27
- 'Reference and Handbooks')
26
+ expect(helper.type_facet(record)).to contain_exactly('Dictionaries and Thesauri (language based)',
27
+ 'Reference and Handbooks')
28
28
  end
29
29
 
30
30
  context 'with uncurated database' do
31
31
  it 'returns empty array' do
32
- expect(helper.type(record_uncurated_db)).to be_empty
32
+ expect(helper.type_facet(record_uncurated_db)).to be_empty
33
33
  end
34
34
  end
35
35
  end
36
36
 
37
- describe '.db_category' do
37
+ describe '.category_facet' do
38
38
  it 'returns database categories' do
39
- expect(helper.db_category(record)).to contain_exactly('Humanities', 'Social Sciences')
39
+ expect(helper.category_facet(record)).to contain_exactly('Humanities', 'Social Sciences')
40
40
  end
41
41
 
42
42
  context 'with uncurated database' do
43
43
  it 'returns empty array' do
44
- expect(helper.db_category(record_uncurated_db)).to be_empty
44
+ expect(helper.category_facet(record_uncurated_db)).to be_empty
45
45
  end
46
46
  end
47
47
  end
48
48
 
49
- describe '.db_subcategory' do
49
+ describe '.subcategory_facet' do
50
50
  it 'returns database subcategories' do
51
- expect(helper.db_subcategory(record)).to contain_exactly('Social Sciences--Linguistics')
51
+ expect(helper.subcategory_facet(record)).to contain_exactly('Social Sciences--Linguistics')
52
52
  end
53
53
 
54
54
  context 'with uncurated database' do
55
55
  it 'returns empty array' do
56
- expect(helper.db_subcategory(record_uncurated_db)).to be_empty
56
+ expect(helper.subcategory_facet(record_uncurated_db)).to be_empty
57
57
  end
58
58
  end
59
59
  end
@@ -5,7 +5,7 @@ describe 'PennMARC::Link' do
5
5
 
6
6
  let(:helper) { PennMARC::Link }
7
7
 
8
- describe '.full_text' do
8
+ describe '.full_text_link' do
9
9
  let(:record) do
10
10
  marc_record fields: [marc_field(tag: '856', subfields: { '3': 'Materials specified',
11
11
  z: 'Public note',
@@ -15,12 +15,12 @@ describe 'PennMARC::Link' do
15
15
  end
16
16
 
17
17
  it 'returns full text link text and url' do
18
- expect(helper.full_text(record)).to contain_exactly({ link_text: 'Materials specified Public note',
19
- link_url: 'https://www.test-uri.com/' })
18
+ expect(helper.full_text_link(record)).to contain_exactly({ link_text: 'Materials specified Public note',
19
+ link_url: 'https://www.test-uri.com/' })
20
20
  end
21
21
  end
22
22
 
23
- describe '.web' do
23
+ describe '.web_link' do
24
24
  let(:record) do
25
25
  marc_record fields: [marc_field(tag: '856', subfields: { '3': 'Materials specified',
26
26
  z: 'Public note',
@@ -30,8 +30,8 @@ describe 'PennMARC::Link' do
30
30
  end
31
31
 
32
32
  it 'returns web link text and url' do
33
- expect(helper.web(record)).to contain_exactly({ link_text: 'Materials specified Public note',
34
- link_url: 'https://www.test-uri.com/' })
33
+ expect(helper.web_link(record)).to contain_exactly({ link_text: 'Materials specified Public note',
34
+ link_url: 'https://www.test-uri.com/' })
35
35
  end
36
36
  end
37
37
  end
@@ -18,6 +18,7 @@ describe 'PennMARC::Note' do
18
18
  b: 'UK', c: 'Historical Association',
19
19
  d: '1917', e: '434 reels',
20
20
  f: '(Seized records)' }),
21
+ marc_field(tag: '540', subfields: { a: 'Restricted: Copying allowed only for nonprofit organizations' }),
21
22
  marc_field(tag: '588', subfields: { a: 'Print version record', '5': 'LoC' }),
22
23
  marc_field(tag: '880', subfields: { b: 'Alt PhD', c: 'Alt UPenn', d: 'Alt 2021', '6': '502' }),
23
24
  marc_field(tag: '880', subfields: { b: 'Ignore Note', '6': '501' })
@@ -32,6 +33,7 @@ describe 'PennMARC::Note' do
32
33
  'PhD University of Pennsylvania 2021',
33
34
  'Includes bibliographical references (pages 329-[342]) and index.',
34
35
  'Archives Microfilm UK Historical Association 1917 434 reels (Seized records)',
36
+ 'Restricted: Copying allowed only for nonprofit organizations',
35
37
  'Print version record', 'Alt PhD Alt UPenn Alt 2021')
36
38
  end
37
39
  end
@@ -18,7 +18,7 @@ describe 'PennMARC::Series' do
18
18
  end
19
19
 
20
20
  describe '.show' do
21
- it 'returns the series' do
21
+ it 'returns the series values for display' do
22
22
  expect(helper.show(record, relator_map: mapping)).to contain_exactly(
23
23
  'Bean Bagatolvski 1997- bk. 1',
24
24
  'Teachings of the feathered pillow',
@@ -28,7 +28,7 @@ describe 'PennMARC::Series' do
28
28
  end
29
29
 
30
30
  describe '.values' do
31
- it 'returns the values' do
31
+ it 'returns the series values' do
32
32
  expect(helper.values(record, relator_map: mapping)).to contain_exactly('Bean Bagatolvski 1997- bk. 1.')
33
33
  end
34
34
  end
@@ -43,15 +43,15 @@ describe 'PennMARC::Series' do
43
43
  end
44
44
  end
45
45
 
46
- describe '.get_continues_display' do
47
- it 'gets continues for display' do
48
- expect(helper.get_continues_display(record)).to contain_exactly('National Comfort Association')
46
+ describe '.get_continues_show' do
47
+ it 'gets continues values for display' do
48
+ expect(helper.get_continues_show(record)).to contain_exactly('National Comfort Association')
49
49
  end
50
50
  end
51
51
 
52
- describe '.get_continued_by_display' do
53
- it 'gets continued by display' do
54
- expect(helper.get_continued_by_display(record)).to contain_exactly('NCA quarterly comfortology bulletin')
52
+ describe '.get_continued_by_show' do
53
+ it 'gets continued by values for display' do
54
+ expect(helper.get_continued_by_show(record)).to contain_exactly('NCA quarterly comfortology bulletin')
55
55
  end
56
56
  end
57
57
  end
@@ -195,7 +195,7 @@ describe 'PennMARC::Title' do
195
195
  end
196
196
  end
197
197
 
198
- describe '.standardized' do
198
+ describe '.standardized_show' do
199
199
  let(:record) do
200
200
  marc_record fields: [
201
201
  marc_field(tag: '130', subfields: { a: 'Uniform Title', f: '2000', '8': 'Not Included' }),
@@ -208,7 +208,7 @@ describe 'PennMARC::Title' do
208
208
  end
209
209
 
210
210
  it 'returns the expected standardized title display values' do
211
- values = helper.standardized(record)
211
+ values = helper.standardized_show(record)
212
212
  expect(values).to contain_exactly(
213
213
  'Another Uniform Title', 'Translated Uniform Title', 'Uniform Title 2000', 'Yet Another Uniform Title'
214
214
  )
@@ -216,7 +216,7 @@ describe 'PennMARC::Title' do
216
216
  end
217
217
  end
218
218
 
219
- describe '.other' do
219
+ describe '.other_show' do
220
220
  let(:record) do
221
221
  marc_record fields: [
222
222
  marc_field(tag: '246', subfields: { a: 'Varied Title', f: '2000', '8': 'Not Included' }),
@@ -227,13 +227,13 @@ describe 'PennMARC::Title' do
227
227
  end
228
228
 
229
229
  it 'returns the expected other title display values' do
230
- expect(helper.other(record)).to contain_exactly(
230
+ expect(helper.other_show(record)).to contain_exactly(
231
231
  'Alternate Varied Title', 'Uncontrolled Title', 'Varied Title 2000'
232
232
  )
233
233
  end
234
234
  end
235
235
 
236
- describe '.former' do
236
+ describe '.former_show' do
237
237
  let(:record) do
238
238
  marc_record fields: [
239
239
  marc_field(tag: '247', subfields: { a: 'Former Title', n: 'Part', '6': 'Linkage', e: 'Append' }),
@@ -242,7 +242,7 @@ describe 'PennMARC::Title' do
242
242
  end
243
243
 
244
244
  it 'returns the expected former title value' do
245
- values = helper.former(record)
245
+ values = helper.former_show(record)
246
246
  expect(values).to contain_exactly 'Former Title Part Append', 'Alt Title Part'
247
247
  expect(values).not_to include 'Linkage', '247'
248
248
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pennmarc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Kanning
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-12-07 00:00:00.000000000 Z
13
+ date: 2023-12-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -91,6 +91,7 @@ files:
91
91
  - lib/pennmarc/heading_control.rb
92
92
  - lib/pennmarc/helpers/access.rb
93
93
  - lib/pennmarc/helpers/citation.rb
94
+ - lib/pennmarc/helpers/classification.rb
94
95
  - lib/pennmarc/helpers/creator.rb
95
96
  - lib/pennmarc/helpers/database.rb
96
97
  - lib/pennmarc/helpers/date.rb
@@ -109,8 +110,10 @@ files:
109
110
  - lib/pennmarc/helpers/subject.rb
110
111
  - lib/pennmarc/helpers/title.rb
111
112
  - lib/pennmarc/mappers.rb
113
+ - lib/pennmarc/mappings/dewey_classification.yml
112
114
  - lib/pennmarc/mappings/iso639-2-languages.yml
113
115
  - lib/pennmarc/mappings/iso639-3-languages.yml
116
+ - lib/pennmarc/mappings/loc_classification.yml
114
117
  - lib/pennmarc/mappings/locations.yml
115
118
  - lib/pennmarc/mappings/relator.yml
116
119
  - lib/pennmarc/parser.rb
@@ -120,6 +123,7 @@ files:
120
123
  - spec/fixtures/marcxml/test.xml
121
124
  - spec/lib/pennmarc/helpers/access_spec.rb
122
125
  - spec/lib/pennmarc/helpers/citation_spec.rb
126
+ - spec/lib/pennmarc/helpers/classification_spec.rb
123
127
  - spec/lib/pennmarc/helpers/creator_spec.rb
124
128
  - spec/lib/pennmarc/helpers/database_spec.rb
125
129
  - spec/lib/pennmarc/helpers/date_spec.rb