Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions config/traject/ead2_config.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# frozen_string_literal: true

def remove_to_field_def(field_name)
instance_variable_get(:@index_steps).reject! { |f| f.instance_variable_get(:@field_name) == field_name }
end

# Load the arclight gem's default EAD2 traject configuration first.
# All additions and modifications below are kept separate from the upstream defaults.
load_config_file Arclight::Engine.root.join("lib/arclight/traject/ead2_config.rb").to_s
Expand All @@ -8,3 +12,24 @@
# Boxrunner-specific additions / overrides
# ==========================================

# Utilize genreform for Formats facet

remove_to_field_def "access_subjects_ssim"
remove_to_field_def "access_subjects_ssm"

to_field "access_subjects_ssim", extract_xpath("/ead/archdesc/controlaccess", to_text: false) do |_record, accumulator|
accumulator.map! do |element|
%w[subject function occupation].map do |selector|
element.xpath(".//#{selector}").map(&:text)
end
end.flatten!
end

to_field "access_subjects_ssm" do |_record, accumulator, context|
accumulator.concat Array.wrap(context.output_hash["access_subjects_ssim"])
end

to_field "formats_ssim", extract_xpath("/ead/archdesc/controlaccess/genreform|/ead/archdesc/controlaccess/controlaccess/genreform")
to_field "formats_ssm" do |_record, accumulator, context|
accumulator.concat Array.wrap(context.output_hash["formats_ssim"])
end
11 changes: 9 additions & 2 deletions spec/config/traject/ead2_config_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -133,14 +133,21 @@
it "maps access_subjects_ssim from controlaccess subjects" do
expect(result["access_subjects_ssim"]).to include "Women in science."
expect(result["access_subjects_ssim"]).to include "Women engineers."
expect(result["access_subjects_ssim"]).to_not include "Digital file formats."
end

it "maps access_subjects_ssm from access_subjects_ssim" do
expect(result["access_subjects_ssm"]).to eq result["access_subjects_ssim"]
end
end

describe "formats" do
it "maps genreform to formats_ssim" do
expect(result["formats_ssim"]).to include "Digital file formats."
end

it "maps genreform_ssim from controlaccess" do
expect(result["genreform_ssim"]).to include "Photographs."
it "maps formats_ssim to formats_ssm" do
expect(result["formats_ssim"]).to eq result["formats_ssm"]
end
end

Expand Down