blacklight 6.21.0 → 6.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/app/models/concerns/blacklight/document.rb +16 -0
- data/app/values/blacklight/types.rb +28 -0
- data/app/views/catalog/_per_page_widget.html.erb +1 -1
- data/app/views/catalog/_sort_widget.html.erb +1 -1
- data/spec/models/solr_document_spec.rb +25 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd14b6772e7c5627ce2b623fba876af4d008965be530552de9d3b879edada1f9
|
4
|
+
data.tar.gz: dbc0fe7d619a9259adabe10a8a92655ec56b2c4b7f00474d89914b86e10740f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4bd4e37af22eb9055ce3a6fb596f607aed1bedea8a215bebfbaf7863f16f8dac2d852528520116c1518daa0277168d92ab2599d5d8c274a2b8afe19f3d95a84
|
7
|
+
data.tar.gz: 7670f38bf4afe72c7697f4dbcd095aadf9cdb858659419c9f1979cf19fb25c83e0fc0736a0a55cba86a5b6fd4abec420c886f0a1f454c5db37e8a395d66a840b
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
6.
|
1
|
+
6.22.0
|
@@ -144,6 +144,22 @@ module Blacklight::Document
|
|
144
144
|
def unique_key
|
145
145
|
@unique_key ||= 'id'
|
146
146
|
end
|
147
|
+
|
148
|
+
# Define an attribute reader on a document model
|
149
|
+
# @Example
|
150
|
+
# class SolrDocument
|
151
|
+
# include Blacklight::Solr::Document
|
152
|
+
# attribute :title, Blacklight::Types::String, 'title_tesim'
|
153
|
+
# end
|
154
|
+
#
|
155
|
+
# doc = SolrDocument.new(title_tesim: ["One flew over the cuckoo's nest"])
|
156
|
+
# doc.title
|
157
|
+
# #=> "One flew over the cuckoo's nest"
|
158
|
+
def attribute(name, type, field)
|
159
|
+
define_method name do
|
160
|
+
type.coerce(self[field])
|
161
|
+
end
|
162
|
+
end
|
147
163
|
end
|
148
164
|
|
149
165
|
private
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Blacklight
|
2
|
+
# These are data types that blacklight can use to coerce values from the index
|
3
|
+
module Types
|
4
|
+
class Array
|
5
|
+
def self.coerce(input)
|
6
|
+
::Array.wrap(input)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class String
|
11
|
+
def self.coerce(input)
|
12
|
+
::Array.wrap(input).first
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class Date
|
17
|
+
def self.coerce(input)
|
18
|
+
field = String.coerce(input)
|
19
|
+
return if field.blank?
|
20
|
+
begin
|
21
|
+
::Date.parse(field)
|
22
|
+
rescue ArgumentError
|
23
|
+
Rails.logger.info "Unable to parse date: #{field.first.inspect}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -7,7 +7,7 @@
|
|
7
7
|
</button>
|
8
8
|
<ul class="dropdown-menu" role="menu">
|
9
9
|
<%- per_page_options_for_select.each do |(label, count)| %>
|
10
|
-
<li><%= link_to(label, url_for(search_state.params_for_search(per_page: count))) %></li>
|
10
|
+
<li role="menuitem"><%= link_to(label, url_for(search_state.params_for_search(per_page: count))) %></li>
|
11
11
|
<%- end -%>
|
12
12
|
</ul>
|
13
13
|
</div>
|
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
<ul class="dropdown-menu" role="menu">
|
8
8
|
<%- active_sort_fields.each do |sort_key, field_config| %>
|
9
|
-
<li><%= link_to(sort_field_label(sort_key), url_for(search_state.params_for_search(sort: sort_key))) %></li>
|
9
|
+
<li role="menuitem"><%= link_to(sort_field_label(sort_key), url_for(search_state.params_for_search(sort: sort_key))) %></li>
|
10
10
|
<%- end -%>
|
11
11
|
</ul>
|
12
12
|
</div>
|
@@ -18,10 +18,34 @@ RSpec.describe SolrDocument do
|
|
18
18
|
it { is_expected.to eq ['Book'] }
|
19
19
|
end
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
describe "#id" do
|
23
23
|
subject { solrdoc.id }
|
24
24
|
it { is_expected.to eq '00282214' }
|
25
25
|
end
|
26
26
|
end
|
27
|
+
|
28
|
+
describe '.attribute' do
|
29
|
+
subject(:title) { document.title }
|
30
|
+
let(:doc_class) do
|
31
|
+
Class.new(SolrDocument) do
|
32
|
+
attribute :title, Blacklight::Types::String, 'title_tesim'
|
33
|
+
attribute :author, Blacklight::Types::Array, 'author_tesim'
|
34
|
+
attribute :date, Blacklight::Types::Date, 'date_dtsi'
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
let(:document) do
|
39
|
+
doc_class.new(id: '123',
|
40
|
+
title_tesim: ['Good Omens'],
|
41
|
+
author_tesim: ['Neil Gaiman', 'Terry Pratchett'],
|
42
|
+
date_dtsi: '1990-01-01T00:00:00Z')
|
43
|
+
end
|
44
|
+
|
45
|
+
it "casts the attributes" do
|
46
|
+
expect(document.title).to eq 'Good Omens'
|
47
|
+
expect(document.author).to eq ['Neil Gaiman', 'Terry Pratchett']
|
48
|
+
expect(document.date).to eq Date.new(1990)
|
49
|
+
end
|
50
|
+
end
|
27
51
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blacklight
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.22.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Rochkind
|
@@ -17,7 +17,7 @@ authors:
|
|
17
17
|
autorequire:
|
18
18
|
bindir: exe
|
19
19
|
cert_chain: []
|
20
|
-
date:
|
20
|
+
date: 2020-01-29 00:00:00.000000000 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
name: rails
|
@@ -478,6 +478,7 @@ files:
|
|
478
478
|
- app/presenters/blacklight/rendering/terminator.rb
|
479
479
|
- app/presenters/blacklight/show_presenter.rb
|
480
480
|
- app/services/blacklight/field_retriever.rb
|
481
|
+
- app/values/blacklight/types.rb
|
481
482
|
- app/views/_flash_msg.html.erb
|
482
483
|
- app/views/_user_util_links.html.erb
|
483
484
|
- app/views/blacklight/nav/_bookmark.html.erb
|