pennmarc 1.0.10 → 1.0.11.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitlab-ci.yml +72 -0
- data/Gemfile.lock +3 -0
- data/README.md +17 -19
- data/lib/pennmarc/enriched_marc.rb +2 -0
- data/lib/pennmarc/helpers/access.rb +2 -4
- data/lib/pennmarc/helpers/date.rb +2 -1
- data/lib/pennmarc/helpers/format.rb +20 -8
- data/lib/pennmarc/helpers/location.rb +6 -1
- data/lib/pennmarc/mappings/locations.yml +13 -197
- data/lib/pennmarc/version.rb +1 -1
- data/pennmarc.gemspec +1 -1
- data/spec/lib/pennmarc/helpers/access_spec.rb +2 -2
- data/spec/lib/pennmarc/helpers/format_spec.rb +25 -5
- data/spec/lib/pennmarc/helpers/link_spec.rb +4 -4
- data/spec/lib/pennmarc/helpers/location_spec.rb +12 -0
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e89c7ae1f5253ceee759c36db5d99ee7daaa3673163af674218808342f489883
|
4
|
+
data.tar.gz: 30fd359ec86a47f7b8fd210ecd73869b1d7aa2f64986f8a7480476be74bb9a1f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19a771bafdb69d3d27a83831727546f2f27fcf1a45e00d6c9e31c567039012a34ff8b05a8ad6cb8d9b3ae40d93dd9f56a5e4d23d35f7619b039d0628e73fa2a2
|
7
|
+
data.tar.gz: 791cd2e30f8a43588fdc64ccfffdef3e6f0bdbcbfa66db2c8f9e58ab62c98f8c3aa55b52d8d2c29b0f71ee046e3350cce59847e8c0a901321f9ba54a3cdd7f40
|
data/.gitlab-ci.yml
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
include:
|
2
|
+
- project: "devops/gitlab/ci-templates/ruby"
|
3
|
+
ref: "sans-dind"
|
4
|
+
file:
|
5
|
+
- ".rspec.yml"
|
6
|
+
- ".rubocop.yml"
|
7
|
+
- template: "Workflows/MergeRequest-Pipelines.gitlab-ci.yml"
|
8
|
+
|
9
|
+
stages:
|
10
|
+
- test
|
11
|
+
- deploy
|
12
|
+
|
13
|
+
rspec_app_test:
|
14
|
+
stage: test
|
15
|
+
image: ruby:3.2.2
|
16
|
+
before_script:
|
17
|
+
- bundle install -j $(nproc)
|
18
|
+
extends:
|
19
|
+
- .rspec
|
20
|
+
tags:
|
21
|
+
- build
|
22
|
+
|
23
|
+
rubocop_app_test:
|
24
|
+
stage: test
|
25
|
+
image: ruby:3.2.2
|
26
|
+
before_script:
|
27
|
+
- bundle install -j $(nproc)
|
28
|
+
extends:
|
29
|
+
- .rubocop
|
30
|
+
tags:
|
31
|
+
- build
|
32
|
+
allow_failure: true
|
33
|
+
|
34
|
+
# This step was inspired from Gitlab's example of gem publication:
|
35
|
+
# https://gitlab.com/gitlab-org/quality/pipeline-common/-/blob/master/ci/gem-release.yml
|
36
|
+
gem_publication:
|
37
|
+
stage: deploy
|
38
|
+
image: ruby:3.2.2
|
39
|
+
variables:
|
40
|
+
GEMSPEC_FILE: "${CI_PROJECT_NAME}.gemspec"
|
41
|
+
VAULT_VERSION: "1.10.1"
|
42
|
+
before_script:
|
43
|
+
- |
|
44
|
+
apt-get update && apt-get -y install \
|
45
|
+
wget \
|
46
|
+
unzip && \
|
47
|
+
wget https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip -O /tmp/vault_${VAULT_VERSION}.zip && \
|
48
|
+
unzip /tmp/vault_${VAULT_VERSION}.zip -d /usr/bin && \
|
49
|
+
rm -fr /tmp/vault_${VAULT_VERSION}.zip && \
|
50
|
+
apt-get remove -y wget unzip && \
|
51
|
+
apt-get clean
|
52
|
+
- export VAULT_ADDR=${VAULT_URL}
|
53
|
+
- export VAULT_TOKEN="$(vault write -field=token auth/jwt/${CI_SERVER_HOST}/login role=${JWT_ROLE} jwt=${CI_JOB_JWT})"
|
54
|
+
- export GEM_HOST_API_KEY="$(vault kv get -field=rubygems_api_key ${VAULT_KV_ENDPOINT}${ENVIRONMENT})"
|
55
|
+
- |
|
56
|
+
gem -v
|
57
|
+
rm -f ./*.gem
|
58
|
+
[ -f "${GEMSPEC_FILE}" ] || (echo "No ${GEMSPEC_FILE} file found!" && exit 1)
|
59
|
+
- '[ -n "${GEM_HOST_API_KEY}" ] || (echo "GEM_HOST_API_KEY is not set!" && exit 1)'
|
60
|
+
script:
|
61
|
+
- GEM_FILE=$(echo "${CI_PROJECT_NAME}-${CI_COMMIT_TAG:1}.gem")
|
62
|
+
- |
|
63
|
+
gem build "${GEMSPEC_FILE}"
|
64
|
+
[ -f "${GEM_FILE}" ] || (echo "No ${GEM_FILE} file found!" && exit 1)
|
65
|
+
- '[ "${DISABLE_GEM_PUSH}" == "true" ] || gem push "${GEM_FILE}"'
|
66
|
+
rules:
|
67
|
+
- if: $CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+(\.[a-zA-Z0-9]+)?$/
|
68
|
+
artifacts:
|
69
|
+
paths:
|
70
|
+
- "*.gem"
|
71
|
+
tags:
|
72
|
+
- deploy
|
data/Gemfile.lock
CHANGED
@@ -23,6 +23,8 @@ GEM
|
|
23
23
|
racc (~> 1.4)
|
24
24
|
nokogiri (1.15.2-x64-mingw-ucrt)
|
25
25
|
racc (~> 1.4)
|
26
|
+
nokogiri (1.15.2-x86_64-darwin)
|
27
|
+
racc (~> 1.4)
|
26
28
|
nokogiri (1.15.2-x86_64-linux)
|
27
29
|
racc (~> 1.4)
|
28
30
|
parallel (1.23.0)
|
@@ -104,6 +106,7 @@ PLATFORMS
|
|
104
106
|
arm64-darwin-21
|
105
107
|
arm64-darwin-22
|
106
108
|
x64-mingw-ucrt
|
109
|
+
x86_64-darwin-21
|
107
110
|
x86_64-linux
|
108
111
|
|
109
112
|
DEPENDENCIES
|
data/README.md
CHANGED
@@ -71,22 +71,20 @@ rspec
|
|
71
71
|
|
72
72
|
## Publishing the Gem
|
73
73
|
|
74
|
-
1. Update the `VERSION` constant in
|
75
|
-
2.
|
76
|
-
3.
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
- rubocop check
|
92
|
-
- rdoc/yard coverage checks?
|
74
|
+
1. Update the `VERSION` constant in [lib/pennmarc/version.rb](lib/pennmarc/version.rb) following this gem's versioning pattern (ex 1.1.0).
|
75
|
+
2. Merge the change into `main`.
|
76
|
+
3. Create a Gitlab Release:
|
77
|
+
1. Go to https://gitlab.library.upenn.edu/dld/catalog/pennmarc/-/releases/new
|
78
|
+
2. Create a new tag that matches the version set in step 1 (ex: v1.1.0).
|
79
|
+
3. Add a release title that is the same as the tag name.
|
80
|
+
4. Submit by clicking "Create Release".
|
81
|
+
4. Once the release is created a pipeline will run to publish the gem to RubyGems.
|
82
|
+
|
83
|
+
### Versioning Guidelines
|
84
|
+
|
85
|
+
We do not explicitly follow [Semantic Versioning](https://semver.org/) principles, but follow it's general principles.
|
86
|
+
In common cases, here's what to do:
|
87
|
+
|
88
|
+
- Increment **MAJOR_VERSION** if the `Parser` class functionality is modified in a breaking fashion.
|
89
|
+
- Increment **MINOR_VERSION** if a `Helper` class is renamed, or if an existing helper method is renamed.
|
90
|
+
- Increment **PATCH_VERSION** if a new `Helper` class or method is added, of if any non-breaking bugfix is made.
|
@@ -5,8 +5,6 @@ module PennMARC
|
|
5
5
|
class Access < Helper
|
6
6
|
ONLINE = 'Online'
|
7
7
|
AT_THE_LIBRARY = 'At the library'
|
8
|
-
ELEC_AVAILABILITY_TAG = 'AVE'
|
9
|
-
PHYS_AVAILABILITY_TAG = 'AVA'
|
10
8
|
|
11
9
|
class << self
|
12
10
|
# Based on enhanced metadata fields added by Alma publishing process or API, determine if the record has
|
@@ -35,14 +33,14 @@ module PennMARC
|
|
35
33
|
# @param [MARC::Field] field
|
36
34
|
# @return [Boolean]
|
37
35
|
def electronic_holding_tag?(field)
|
38
|
-
field.tag.in? [EnrichedMarc::TAG_ELECTRONIC_INVENTORY,
|
36
|
+
field.tag.in? [EnrichedMarc::TAG_ELECTRONIC_INVENTORY, EnrichedMarc::AlmaApi::TAG_ELECTRONIC_INVENTORY]
|
39
37
|
end
|
40
38
|
|
41
39
|
# Does the record have added physical holding info?
|
42
40
|
# @param [MARC::Field] field
|
43
41
|
# @return [Boolean]
|
44
42
|
def physical_holding_tag?(field)
|
45
|
-
field.tag.in? [EnrichedMarc::TAG_HOLDING,
|
43
|
+
field.tag.in? [EnrichedMarc::TAG_HOLDING, EnrichedMarc::AlmaApi::TAG_PHYSICAL_INVENTORY]
|
46
44
|
end
|
47
45
|
|
48
46
|
# Check if a record contains an 856 entry for an online finding aid, meeting these criteria:
|
@@ -20,7 +20,8 @@ module PennMARC
|
|
20
20
|
end
|
21
21
|
|
22
22
|
# Retrieve date added (subfield 'q') from enriched marc 'itm' field.
|
23
|
-
# {PennMARC::EnrichedMarc} maps enriched marc fields and subfields created during Alma publishing.
|
23
|
+
# {PennMARC::EnrichedMarc} maps enriched marc fields and subfields created during Alma publishing. The enriched
|
24
|
+
# metadata provided by the Alma API does not include the date created value, so we can't work with that here.
|
24
25
|
# @param [MARC::Record] record
|
25
26
|
# @return [DateTime, nil] The date added, or nil if date found in record is invalid
|
26
27
|
def added(record)
|
@@ -80,13 +80,6 @@ module PennMARC
|
|
80
80
|
title_medium = subfield_values_for tag: '245', subfield: :h, record: record
|
81
81
|
media_type = subfield_values_for tag: '337', subfield: :a, record: record
|
82
82
|
|
83
|
-
# Get Call Number for holdings - ǂh gives us the 'Classification part' which can contain strings like
|
84
|
-
# 'Microfilm'
|
85
|
-
call_nums = record.fields(EnrichedMarc::TAG_HOLDING).map do |field|
|
86
|
-
join_subfields(field, &subfield_in?([EnrichedMarc::SUB_HOLDING_CLASSIFICATION_PART,
|
87
|
-
EnrichedMarc::SUB_HOLDING_ITEM_PART]))
|
88
|
-
end
|
89
|
-
|
90
83
|
# get all specific_location values from inventory info
|
91
84
|
locations = Location.location record: record, location_map: location_map,
|
92
85
|
display_value: :specific_location
|
@@ -95,7 +88,7 @@ module PennMARC
|
|
95
88
|
formats << MANUSCRIPT
|
96
89
|
elsif archives_but_not_cajs_or_nursing?(locations)
|
97
90
|
formats << ARCHIVE
|
98
|
-
elsif micro_or_microform?(call_nums, locations, media_type, title_medium)
|
91
|
+
elsif micro_or_microform?(call_nums(record), locations, media_type, title_medium)
|
99
92
|
formats << MICROFORMAT
|
100
93
|
else
|
101
94
|
# any of these
|
@@ -167,6 +160,25 @@ module PennMARC
|
|
167
160
|
|
168
161
|
private
|
169
162
|
|
163
|
+
# Get Call Numbers for holdings using the 'Classification part' which can contain strings like
|
164
|
+
# 'Microfilm'. Look in enriched tags used by both Alma Publishing and API.
|
165
|
+
# @param [MARC::Record] record
|
166
|
+
# @return [Array]
|
167
|
+
def call_nums(record)
|
168
|
+
if field_defined?(record, EnrichedMarc::TAG_HOLDING)
|
169
|
+
record.fields(EnrichedMarc::TAG_HOLDING).map do |field|
|
170
|
+
join_subfields(field, &subfield_in?([EnrichedMarc::SUB_HOLDING_CLASSIFICATION_PART,
|
171
|
+
EnrichedMarc::SUB_HOLDING_ITEM_PART]))
|
172
|
+
end
|
173
|
+
elsif field_defined?(record, EnrichedMarc::AlmaApi::TAG_PHYSICAL_INVENTORY)
|
174
|
+
record.fields(EnrichedMarc::AlmaApi::TAG_PHYSICAL_INVENTORY).map do |field|
|
175
|
+
join_subfields(field, &subfield_in?([EnrichedMarc::AlmaApi::SUB_PHYSICAL_CALL_NUMBER_TYPE]))
|
176
|
+
end
|
177
|
+
else
|
178
|
+
[]
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
170
182
|
# Get 'Curated' format from.
|
171
183
|
# {https://upennlibrary.atlassian.net/wiki/spaces/ALMA/pages/323912493/Local+9XX+Field+Use+in+Alma local field
|
172
184
|
# 944} ǂa, as long as it is not a numerical value.
|
@@ -85,9 +85,14 @@ module PennMARC
|
|
85
85
|
tag = PennMARC::EnrichedMarc::TAG_HOLDING
|
86
86
|
subfield_code = PennMARC::EnrichedMarc::SUB_HOLDING_SHELVING_LOCATION
|
87
87
|
|
88
|
-
if record
|
88
|
+
# if the record has an enriched item field present, use it
|
89
|
+
if field_defined?(record, PennMARC::EnrichedMarc::TAG_ITEM)
|
89
90
|
tag = PennMARC::EnrichedMarc::TAG_ITEM
|
90
91
|
subfield_code = PennMARC::EnrichedMarc::SUB_ITEM_CURRENT_LOCATION
|
92
|
+
# otherwise, use the api enriched field value
|
93
|
+
elsif field_defined?(record, EnrichedMarc::AlmaApi::TAG_PHYSICAL_INVENTORY)
|
94
|
+
tag = EnrichedMarc::AlmaApi::TAG_PHYSICAL_INVENTORY
|
95
|
+
subfield_code = EnrichedMarc::AlmaApi::SUB_HOLDING_LOCATION_CODE
|
91
96
|
end
|
92
97
|
|
93
98
|
{ tag: tag, subfield_code: subfield_code }
|
@@ -1,8 +1,4 @@
|
|
1
1
|
---
|
2
|
-
3eastelev:
|
3
|
-
specific_location: Van Pelt - third floor east elevator lobby
|
4
|
-
library: Van Pelt-Dietrich Library Center
|
5
|
-
display: Van Pelt - third floor east elevator lobby
|
6
2
|
afro:
|
7
3
|
specific_location: Van Pelt - Africana Studies Resource Room
|
8
4
|
library: Van Pelt-Dietrich Library Center
|
@@ -177,12 +173,6 @@ biomlibr:
|
|
177
173
|
- Health Sciences Libraries
|
178
174
|
- Holman Biotech Commons
|
179
175
|
display: Holman Biotech Commons - Librarian's Office
|
180
|
-
biomonli:
|
181
|
-
specific_location: Holman Biotech Commons - Online Office
|
182
|
-
library:
|
183
|
-
- Health Sciences Libraries
|
184
|
-
- Holman Biotech Commons
|
185
|
-
display: Holman Biotech Commons - Online Office
|
186
176
|
biomperi:
|
187
177
|
specific_location: Holman Biotech Commons - Periodicals
|
188
178
|
library:
|
@@ -550,10 +540,6 @@ dncirc:
|
|
550
540
|
- Health Sciences Libraries
|
551
541
|
- Levy Dental Medicine Library
|
552
542
|
display: Levy Dental Medicine Library - Circulation
|
553
|
-
easiacom:
|
554
|
-
specific_location: Van Pelt - East Asia Compact Shelving
|
555
|
-
library: Van Pelt-Dietrich Library Center
|
556
|
-
display: Van Pelt - East Asia Compact Shelving
|
557
543
|
easiacmx:
|
558
544
|
specific_location: Van Pelt - East Asia Comics
|
559
545
|
library: Van Pelt-Dietrich Library Center
|
@@ -576,40 +562,6 @@ edcomm:
|
|
576
562
|
- Van Pelt-Dietrich Library Center
|
577
563
|
- Education Commons
|
578
564
|
display: Education Commons
|
579
|
-
engi:
|
580
|
-
specific_location: Engineering Library
|
581
|
-
library: Engineering Library
|
582
|
-
display: Engineering Library
|
583
|
-
engicirc:
|
584
|
-
specific_location: Engineering Library - Circulation Desk
|
585
|
-
library: Engineering Library
|
586
|
-
display: Engineering Library - Circulation Desk
|
587
|
-
enginewbk:
|
588
|
-
specific_location: Engineering Library - New Book
|
589
|
-
library: Engineering Library
|
590
|
-
display: Engineering Library - New Book
|
591
|
-
engiperi:
|
592
|
-
specific_location: Engineering Library - Periodicals
|
593
|
-
library: Engineering Library
|
594
|
-
display: Engineering Library - Periodicals (alphabetical by title)
|
595
|
-
engirefe:
|
596
|
-
specific_location: Engineering Library - Reference
|
597
|
-
library: Engineering Library
|
598
|
-
display: Engineering Library - Reference
|
599
|
-
engirese:
|
600
|
-
specific_location: Engineering Library - Reserve
|
601
|
-
library:
|
602
|
-
- Engineering Library
|
603
|
-
- Reserve
|
604
|
-
display: Engineering Library - Reserve
|
605
|
-
engsc:
|
606
|
-
specific_location: Engineering Library - Study Collection
|
607
|
-
library: Engineering Library
|
608
|
-
display: Engineering Library - Study Collection
|
609
|
-
eres:
|
610
|
-
specific_location:
|
611
|
-
library:
|
612
|
-
display: E-reserves
|
613
565
|
fanewbook:
|
614
566
|
specific_location: Fisher Fine Arts Library - New Book Display
|
615
567
|
library: Fisher Fine Arts Library
|
@@ -684,10 +636,6 @@ finestudio:
|
|
684
636
|
specific_location: Fisher Fine Arts Library - Studio Collection
|
685
637
|
library: Fisher Fine Arts Library
|
686
638
|
display: Fine Arts Library - Studio Collection
|
687
|
-
HARR:
|
688
|
-
specific_location:
|
689
|
-
library:
|
690
|
-
display:
|
691
639
|
judaica:
|
692
640
|
specific_location: Van Pelt - Judaica and Ancient Near East Resource Room
|
693
641
|
library: Van Pelt-Dietrich Library Center
|
@@ -822,20 +770,6 @@ mideastres:
|
|
822
770
|
- Van Pelt-Dietrich Library Center
|
823
771
|
- Reserve
|
824
772
|
display: Van Pelt - Middle East Seminar Reserve
|
825
|
-
moor:
|
826
|
-
specific_location: Engineering Library
|
827
|
-
library: Engineering Library
|
828
|
-
display: Engineering Library
|
829
|
-
moorrefe:
|
830
|
-
specific_location: Engineering Library - Reference
|
831
|
-
library: Engineering Library
|
832
|
-
display: Engineering Library - Reference
|
833
|
-
moorrese:
|
834
|
-
specific_location: Engineering Library - Reserve
|
835
|
-
library:
|
836
|
-
- Engineering Library
|
837
|
-
- Reserve
|
838
|
-
display: Engineering Library - Reserve
|
839
773
|
muse:
|
840
774
|
specific_location: Penn Museum Library
|
841
775
|
library: Penn Museum Library
|
@@ -876,6 +810,10 @@ musemedia:
|
|
876
810
|
specific_location: Penn Museum Library - Media
|
877
811
|
library: Penn Museum Library
|
878
812
|
display: Penn Museum Library - Media
|
813
|
+
musenewbk:
|
814
|
+
specific_location: Penn Museum Library - New Books Display
|
815
|
+
library: Penn Museum Library
|
816
|
+
display: Penn Museum Library - New Books Display
|
879
817
|
muserefe:
|
880
818
|
specific_location: Penn Museum Library - Reference
|
881
819
|
library: Penn Museum Library
|
@@ -965,83 +903,6 @@ nursarch:
|
|
965
903
|
specific_location: Nursing Archives
|
966
904
|
library: Nursing Archives
|
967
905
|
display: Barbara Bates Center for History of Nursing - Fagin Hall 2U
|
968
|
-
oobiom:
|
969
|
-
specific_location: On Order
|
970
|
-
library:
|
971
|
-
- Health Sciences Libraries
|
972
|
-
- Holman Biotech Commons
|
973
|
-
display: Ordered for Holman Biotech Commons
|
974
|
-
oochem:
|
975
|
-
specific_location: On Order
|
976
|
-
library: Chemistry Library
|
977
|
-
display: Ordered for Chemistry Library
|
978
|
-
oocjs:
|
979
|
-
specific_location: On Order
|
980
|
-
library: Library at the Katz Center for Advanced Judaic Studies
|
981
|
-
display: Ordered for Center for Judaic Studies Library
|
982
|
-
oodental:
|
983
|
-
specific_location: On Order
|
984
|
-
library:
|
985
|
-
- Health Sciences Libraries
|
986
|
-
- Levy Dental Medicine Library
|
987
|
-
display: Ordered for Levy Dental Medicine Library
|
988
|
-
ooeastasia:
|
989
|
-
specific_location: On Order
|
990
|
-
library: Van Pelt-Dietrich Library Center
|
991
|
-
display: Ordered for East Asia
|
992
|
-
ooengi:
|
993
|
-
specific_location: On Order
|
994
|
-
library: Engineering Library
|
995
|
-
display: Ordered for Engineering Library
|
996
|
-
oofine:
|
997
|
-
specific_location: On Order
|
998
|
-
library: Fisher Fine Arts Library
|
999
|
-
display: Ordered for Fine Arts Library
|
1000
|
-
oolipp:
|
1001
|
-
specific_location: On Order
|
1002
|
-
library: Lippincott Library
|
1003
|
-
display: Ordered for Lippincott Library
|
1004
|
-
oomath:
|
1005
|
-
specific_location: On Order
|
1006
|
-
library: Math/Physics/Astronomy Library
|
1007
|
-
display: Ordered for Math-Physics-Astronomy Library
|
1008
|
-
oomuse:
|
1009
|
-
specific_location: On Order
|
1010
|
-
library: Penn Museum Library
|
1011
|
-
display: Ordered for Museum Library
|
1012
|
-
oomusic:
|
1013
|
-
specific_location: On Order
|
1014
|
-
library: Van Pelt-Dietrich Library Center
|
1015
|
-
display: Ordered for Music Library
|
1016
|
-
oonewbolt:
|
1017
|
-
specific_location: On Order
|
1018
|
-
library:
|
1019
|
-
- Health Sciences Libraries
|
1020
|
-
- Veterinary
|
1021
|
-
- 'Veterinary: du Pont Library (New Bolton)'
|
1022
|
-
display: Ordered for New Bolton Library
|
1023
|
-
ooormandy:
|
1024
|
-
specific_location: On Order
|
1025
|
-
library: Van Pelt-Dietrich Library Center
|
1026
|
-
display: Ordered for Ormandy Center
|
1027
|
-
oostor:
|
1028
|
-
specific_location: On Order
|
1029
|
-
library: LIBRA
|
1030
|
-
display: Ordered for LIBRA
|
1031
|
-
oovanp:
|
1032
|
-
specific_location: On Order
|
1033
|
-
library: Van Pelt-Dietrich Library Center
|
1034
|
-
display: Ordered for Van Pelt Library
|
1035
|
-
oovete:
|
1036
|
-
specific_location: On Order
|
1037
|
-
library:
|
1038
|
-
- Health Sciences Libraries
|
1039
|
-
- Veterinary
|
1040
|
-
display: 'Ordered for Veterinary: Atwood Library (Campus)'
|
1041
|
-
ooyarn:
|
1042
|
-
specific_location: On Order
|
1043
|
-
library: Yarnall Collection
|
1044
|
-
display: Ordered for Yarnall collection
|
1045
906
|
pah:
|
1046
907
|
specific_location: Pennsylvania Hospital Library
|
1047
908
|
library:
|
@@ -1108,24 +969,6 @@ religious:
|
|
1108
969
|
specific_location: Van Pelt - Medieval Studies Resource Room
|
1109
970
|
library: Van Pelt-Dietrich Library Center
|
1110
971
|
display: Van Pelt - Medieval Studies Resource Room (405)
|
1111
|
-
rosedesk:
|
1112
|
-
specific_location: Van Pelt - Rosengarten Reserve
|
1113
|
-
library:
|
1114
|
-
- Van Pelt-Dietrich Library Center
|
1115
|
-
- Reserve
|
1116
|
-
display: Van Pelt - Rosengarten Reserve Desk
|
1117
|
-
roserefe:
|
1118
|
-
specific_location: Van Pelt - Rosengarten Reserve
|
1119
|
-
library:
|
1120
|
-
- Van Pelt-Dietrich Library Center
|
1121
|
-
- Reserve
|
1122
|
-
display: Van Pelt - Rosengarten Reserve Reference
|
1123
|
-
roserese:
|
1124
|
-
specific_location: Van Pelt - Rosengarten Reserve
|
1125
|
-
library:
|
1126
|
-
- Van Pelt-Dietrich Library Center
|
1127
|
-
- Reserve
|
1128
|
-
display: Van Pelt - Rosengarten Reserve
|
1129
972
|
rotc:
|
1130
973
|
specific_location:
|
1131
974
|
library:
|
@@ -1526,41 +1369,14 @@ scrunning:
|
|
1526
1369
|
- Special Collections
|
1527
1370
|
- LIBRA
|
1528
1371
|
display: LIBRA Running Press Collection
|
1529
|
-
sw3rdfl:
|
1530
|
-
specific_location: Van Pelt - Temporarily shelved on third floor southwest corner
|
1531
|
-
library: Van Pelt-Dietrich Library Center
|
1532
|
-
display: Van Pelt - Temporarily shelved on third floor southwest corner
|
1533
|
-
refsw3rdfl:
|
1534
|
-
specific_location: Van Pelt - Temporarily shelved on third floor southwest reference
|
1535
|
-
corner
|
1536
|
-
library: Van Pelt-Dietrich Library Center
|
1537
|
-
display: Van Pelt - Temporarily shelved on third floor southwest reference corner
|
1538
|
-
town:
|
1539
|
-
specific_location: Engineering Library
|
1540
|
-
library: Engineering Library
|
1541
|
-
display: Engineering Library
|
1542
|
-
townrefe:
|
1543
|
-
specific_location: Engineering Library - Reference
|
1544
|
-
library: Engineering Library
|
1545
|
-
display: Engineering Library - Reference
|
1546
|
-
townrese:
|
1547
|
-
specific_location: Engineering Library - Reserve
|
1548
|
-
library:
|
1549
|
-
- Engineering Library
|
1550
|
-
- Reserve
|
1551
|
-
display: Engineering Library - Reserve
|
1552
|
-
townthes:
|
1553
|
-
specific_location: Engineering Library - Theses
|
1554
|
-
library: Engineering Library
|
1555
|
-
display: Engineering Library - Theses
|
1556
|
-
twcirc:
|
1557
|
-
specific_location:
|
1558
|
-
library: Engineering Library
|
1559
|
-
display: Engineering Library - Circulation Desk
|
1560
1372
|
univarch:
|
1561
1373
|
specific_location: University Archives
|
1562
1374
|
library: University Archives
|
1563
1375
|
display: University Archives
|
1376
|
+
RDDSXBooks:
|
1377
|
+
specific_location: Van Pelt - RDDSX Books
|
1378
|
+
library: Van Pelt-Dietrich Library Center
|
1379
|
+
display: Van Pelt - RDDSX Books
|
1564
1380
|
vanp:
|
1565
1381
|
specific_location: Van Pelt - Stacks
|
1566
1382
|
library: Van Pelt-Dietrich Library Center
|
@@ -1577,14 +1393,14 @@ vanpcgc:
|
|
1577
1393
|
specific_location: Van Pelt - Center for Global Collections
|
1578
1394
|
library: Van Pelt-Dietrich Library Center
|
1579
1395
|
display: Van Pelt - Center for Global Collections
|
1396
|
+
vanpcgccm:
|
1397
|
+
specific_location: Van Pelt - Global Comics Collection
|
1398
|
+
library: Van Pelt-Dietrich Library Center
|
1399
|
+
display: Van Pelt - Global Comics Collection
|
1580
1400
|
vanpmicro:
|
1581
1401
|
specific_location: Van Pelt - Microtext
|
1582
1402
|
library: Van Pelt-Dietrich Library Center
|
1583
1403
|
display: Van Pelt - Microtext
|
1584
|
-
vanpmiddle:
|
1585
|
-
specific_location:
|
1586
|
-
library:
|
1587
|
-
display: Van Pelt - Middle East Tech Services
|
1588
1404
|
vanpNoCirc:
|
1589
1405
|
specific_location: Van Pelt - Non Circulating
|
1590
1406
|
library: Van Pelt-Dietrich Library Center
|
@@ -1798,4 +1614,4 @@ hspref:
|
|
1798
1614
|
hspstafref:
|
1799
1615
|
specific_location: Historical Society of Pennsylvania - Staff Reference
|
1800
1616
|
library: Historical Society of Pennsylvania
|
1801
|
-
display: Historical Society of Pennsylvania - Staff Reference
|
1617
|
+
display: Historical Society of Pennsylvania - Staff Reference
|
data/lib/pennmarc/version.rb
CHANGED
data/pennmarc.gemspec
CHANGED
@@ -18,7 +18,7 @@ describe 'PennMARC::Access' do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
context 'with enrichment with availability info via the Alma API' do
|
21
|
-
let(:tag) { PennMARC::
|
21
|
+
let(:tag) { PennMARC::EnrichedMarc::AlmaApi::TAG_ELECTRONIC_INVENTORY }
|
22
22
|
|
23
23
|
it 'returns expected access value' do
|
24
24
|
expect(helper.facet(record)).to contain_exactly(PennMARC::Access::ONLINE)
|
@@ -38,7 +38,7 @@ describe 'PennMARC::Access' do
|
|
38
38
|
end
|
39
39
|
|
40
40
|
context 'with enrichment with availability info via the Alma API' do
|
41
|
-
let(:tag) { PennMARC::
|
41
|
+
let(:tag) { PennMARC::EnrichedMarc::AlmaApi::TAG_PHYSICAL_INVENTORY }
|
42
42
|
|
43
43
|
it 'returns expected access value' do
|
44
44
|
expect(helper.facet(record)).to contain_exactly(PennMARC::Access::AT_THE_LIBRARY)
|
@@ -60,18 +60,38 @@ describe 'PennMARC::Format' do
|
|
60
60
|
end
|
61
61
|
|
62
62
|
it 'returns a facet value of only "Microformat"' do
|
63
|
-
# expect(formats).to eq %w[Microformat Thesis/Dissertation]
|
64
63
|
expect(formats).to eq %w[Microformat]
|
65
64
|
end
|
66
65
|
end
|
67
66
|
|
68
67
|
context 'with Microformats as determined by the holding call numbers' do
|
69
|
-
|
70
|
-
|
68
|
+
context 'with API enriched fields' do
|
69
|
+
let(:record) do
|
70
|
+
marc_record fields: [
|
71
|
+
marc_field(tag: PennMARC::EnrichedMarc::AlmaApi::TAG_PHYSICAL_INVENTORY, subfields: {
|
72
|
+
:h => 'AB123',
|
73
|
+
PennMARC::EnrichedMarc::AlmaApi::SUB_PHYSICAL_CALL_NUMBER_TYPE => '.456 Microfilm'
|
74
|
+
})
|
75
|
+
]
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'returns a facet value of "Microformat"' do
|
79
|
+
expect(formats).to eq ['Microformat']
|
80
|
+
end
|
71
81
|
end
|
72
82
|
|
73
|
-
|
74
|
-
|
83
|
+
context 'with publishing enriched fields' do
|
84
|
+
let(:record) do
|
85
|
+
marc_record fields: [
|
86
|
+
marc_field(tag: PennMARC::EnrichedMarc::TAG_HOLDING,
|
87
|
+
subfields: { :h => 'AB123',
|
88
|
+
PennMARC::EnrichedMarc::SUB_ITEM_CALL_NUMBER_TYPE => '.456 Microfilm' })
|
89
|
+
]
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'returns a facet value of "Microformat"' do
|
93
|
+
expect(formats).to eq ['Microformat']
|
94
|
+
end
|
75
95
|
end
|
76
96
|
end
|
77
97
|
|
@@ -15,8 +15,8 @@ describe 'PennMARC::Link' do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'returns full text link text and url' do
|
18
|
-
expect(helper.
|
19
|
-
|
18
|
+
expect(helper.full_text_links(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
|
|
@@ -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.
|
34
|
-
|
33
|
+
expect(helper.web_links(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
|
@@ -67,5 +67,17 @@ describe 'PennMARC::Location' do
|
|
67
67
|
display_value: :library)).to contain_exactly('LIBRA', 'Online library')
|
68
68
|
end
|
69
69
|
end
|
70
|
+
|
71
|
+
context 'with AVA fields' do
|
72
|
+
let(:record) do
|
73
|
+
marc_record(fields: [marc_field(tag: 'AVA', subfields: { b: 'Libra', c: 'LIBRA', j: 'stor' })])
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'returns expected values' do
|
77
|
+
expect(helper.location(record: record, location_map: mapping, display_value: :library)).to(
|
78
|
+
contain_exactly('LIBRA')
|
79
|
+
)
|
80
|
+
end
|
81
|
+
end
|
70
82
|
end
|
71
83
|
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.
|
4
|
+
version: 1.0.11.pre2
|
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:
|
13
|
+
date: 2024-01-11 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -77,6 +77,7 @@ extensions: []
|
|
77
77
|
extra_rdoc_files: []
|
78
78
|
files:
|
79
79
|
- ".gitignore"
|
80
|
+
- ".gitlab-ci.yml"
|
80
81
|
- ".gitleaks.toml"
|
81
82
|
- ".rspec"
|
82
83
|
- ".rubocop.yml"
|
@@ -148,7 +149,7 @@ homepage: https://gitlab.library.upenn.edu/dld/catalog/pennmarc
|
|
148
149
|
licenses:
|
149
150
|
- MIT
|
150
151
|
metadata:
|
151
|
-
rubygems_mfa_required: '
|
152
|
+
rubygems_mfa_required: 'false'
|
152
153
|
post_install_message:
|
153
154
|
rdoc_options: []
|
154
155
|
require_paths:
|
@@ -160,9 +161,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
160
161
|
version: '3.2'
|
161
162
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
163
|
requirements:
|
163
|
-
- - "
|
164
|
+
- - ">"
|
164
165
|
- !ruby/object:Gem::Version
|
165
|
-
version:
|
166
|
+
version: 1.3.1
|
166
167
|
requirements: []
|
167
168
|
rubygems_version: 3.4.10
|
168
169
|
signing_key:
|