ebsco-eds 0.0.7.pre → 0.0.8.pre
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/ebsco-eds.gemspec +7 -1
- data/lib/ebsco/eds/csl/styles/apa.csl +658 -0
- data/lib/ebsco/eds/csl/styles/chicago-author-date.csl +650 -0
- data/lib/ebsco/eds/csl/styles/modern-language-association.csl +457 -0
- data/lib/ebsco/eds/record.rb +86 -20
- data/lib/ebsco/eds/results.rb +38 -0
- data/lib/ebsco/eds/version.rb +1 -1
- metadata +82 -5
data/lib/ebsco/eds/record.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'json'
|
3
|
+
require 'citeproc'
|
4
|
+
require 'csl/styles'
|
3
5
|
require 'bibtex'
|
4
6
|
require 'cgi'
|
5
7
|
|
@@ -75,7 +77,8 @@ module EBSCO
|
|
75
77
|
|
76
78
|
# The title.
|
77
79
|
def title
|
78
|
-
_retval = get_item_data_by_name('Title') || bib_title
|
80
|
+
# _retval = get_item_data_by_name('Title') || bib_title
|
81
|
+
_retval = bib_title || get_item_data_by_name('Title')
|
79
82
|
# TODO: make this configurable
|
80
83
|
if _retval.nil?
|
81
84
|
_retval = 'This title is unavailable for guests, please login to see more information.'
|
@@ -209,7 +212,7 @@ module EBSCO
|
|
209
212
|
|
210
213
|
# List of ISBNs
|
211
214
|
def isbns
|
212
|
-
bib_isbns
|
215
|
+
bib_isbns || item_related_isbns
|
213
216
|
end
|
214
217
|
|
215
218
|
# Print ISBN
|
@@ -435,8 +438,8 @@ module EBSCO
|
|
435
438
|
# Experimental bibtex support.
|
436
439
|
def retrieve_bibtex
|
437
440
|
|
438
|
-
@bibtex.key =
|
439
|
-
@bibtex.title =
|
441
|
+
@bibtex.key = accession_number
|
442
|
+
@bibtex.title = title.gsub('<highlight>', '').gsub('</highlight>', '')
|
440
443
|
if self.bib_authors_list.length > 0
|
441
444
|
@bibtex.author = self.bib_authors_list.join(' and ').chomp
|
442
445
|
end
|
@@ -447,15 +450,15 @@ module EBSCO
|
|
447
450
|
case _type
|
448
451
|
when 'Academic Journal'
|
449
452
|
@bibtex.type = :article
|
450
|
-
@bibtex.journal =
|
451
|
-
|
452
|
-
@bibtex.issue =
|
453
|
+
@bibtex.journal = source_title
|
454
|
+
unless issue.nil?
|
455
|
+
@bibtex.issue = issue
|
453
456
|
end
|
454
|
-
|
455
|
-
@bibtex.number =
|
457
|
+
unless volume.nil?
|
458
|
+
@bibtex.number = volume
|
456
459
|
end
|
457
|
-
if
|
458
|
-
@bibtex.pages =
|
460
|
+
if page_start && page_count
|
461
|
+
@bibtex.pages = page_start + '-' + (page_start.to_i + page_count.to_i-1).to_s
|
459
462
|
end
|
460
463
|
if self.bib_publication_month
|
461
464
|
@bibtex.month = self.bib_publication_month.to_i
|
@@ -492,7 +495,8 @@ module EBSCO
|
|
492
495
|
if self.bib_publication_month
|
493
496
|
@bibtex.month = self.bib_publication_month.to_i
|
494
497
|
end
|
495
|
-
if
|
498
|
+
if isbns
|
499
|
+
puts 'ISBNS: ' + isbns.inspect
|
496
500
|
@bibtex.isbn = self.isbns.first
|
497
501
|
end
|
498
502
|
else
|
@@ -501,6 +505,12 @@ module EBSCO
|
|
501
505
|
@bibtex
|
502
506
|
end
|
503
507
|
|
508
|
+
def bibtex_bibliography
|
509
|
+
bib = BibTeX::Bibliography.new
|
510
|
+
bib << retrieve_bibtex
|
511
|
+
bib
|
512
|
+
end
|
513
|
+
|
504
514
|
# ====================================================================================
|
505
515
|
# HEADER: DbId, DbLabel, An, PubType, PubTypeId, AccessLevel
|
506
516
|
# ====================================================================================
|
@@ -568,7 +578,12 @@ module EBSCO
|
|
568
578
|
end
|
569
579
|
|
570
580
|
def item_related_isbns
|
571
|
-
get_item_data_by_label('Related ISBNs')
|
581
|
+
isbns = get_item_data_by_label('Related ISBNs')
|
582
|
+
if isbns
|
583
|
+
isbns.split(' ').map!{|item| item.gsub(/\.$/, '')}
|
584
|
+
else
|
585
|
+
nil
|
586
|
+
end
|
572
587
|
end
|
573
588
|
|
574
589
|
# ====================================================================================
|
@@ -649,7 +664,12 @@ module EBSCO
|
|
649
664
|
|
650
665
|
def bib_source_title
|
651
666
|
if @bib_part && @bib_part.fetch('BibEntity',{}).fetch('Titles',{}).any?
|
652
|
-
@bib_part.fetch('BibEntity',{}).fetch('Titles',{}).find{|item| item['Type'] == 'main'}
|
667
|
+
item_title_full = @bib_part.fetch('BibEntity',{}).fetch('Titles',{}).find{|item| item['Type'] == 'main'}
|
668
|
+
if item_title_full
|
669
|
+
item_title_full['TitleFull']
|
670
|
+
else
|
671
|
+
nil
|
672
|
+
end
|
653
673
|
else
|
654
674
|
nil
|
655
675
|
end
|
@@ -657,7 +677,12 @@ module EBSCO
|
|
657
677
|
|
658
678
|
def bib_issn_print
|
659
679
|
if @bib_part && @bib_part.fetch('BibEntity',{}).fetch('Identifiers',{}).any?
|
660
|
-
@bib_part.fetch('BibEntity',{}).fetch('Identifiers',{}).find{|item| item['Type'] == 'issn-print'}
|
680
|
+
item_issn_p = @bib_part.fetch('BibEntity',{}).fetch('Identifiers',{}).find{|item| item['Type'] == 'issn-print'}
|
681
|
+
if item_issn_p
|
682
|
+
item_issn_p['Value']
|
683
|
+
else
|
684
|
+
nil
|
685
|
+
end
|
661
686
|
else
|
662
687
|
nil
|
663
688
|
end
|
@@ -665,7 +690,12 @@ module EBSCO
|
|
665
690
|
|
666
691
|
def bib_issn_electronic
|
667
692
|
if @bib_part && @bib_part.fetch('BibEntity',{}).fetch('Identifiers',{}).any?
|
668
|
-
@bib_part.fetch('BibEntity',{}).fetch('Identifiers',{}).find{|item| item['Type'] == 'issn-electronic'}
|
693
|
+
item_issn_e = @bib_part.fetch('BibEntity',{}).fetch('Identifiers',{}).find{|item| item['Type'] == 'issn-electronic'}
|
694
|
+
if item_issn_e
|
695
|
+
item_issn_e['Value']
|
696
|
+
else
|
697
|
+
nil
|
698
|
+
end
|
669
699
|
else
|
670
700
|
nil
|
671
701
|
end
|
@@ -685,7 +715,12 @@ module EBSCO
|
|
685
715
|
|
686
716
|
def bib_isbn_print
|
687
717
|
if @bib_part && @bib_part.fetch('BibEntity',{}).fetch('Identifiers',{}).any?
|
688
|
-
@bib_part.fetch('BibEntity',{}).fetch('Identifiers',{}).find{|item| item['Type'] == 'isbn-print'}
|
718
|
+
item_isbn_p = @bib_part.fetch('BibEntity',{}).fetch('Identifiers',{}).find{|item| item['Type'] == 'isbn-print'}
|
719
|
+
if item_isbn_p
|
720
|
+
item_isbn_p['Value']
|
721
|
+
else
|
722
|
+
nil
|
723
|
+
end
|
689
724
|
else
|
690
725
|
nil
|
691
726
|
end
|
@@ -693,7 +728,12 @@ module EBSCO
|
|
693
728
|
|
694
729
|
def bib_isbn_electronic
|
695
730
|
if @bib_part && @bib_part.fetch('BibEntity',{}).fetch('Identifiers',{}).any?
|
696
|
-
@bib_part.fetch('BibEntity',{}).fetch('Identifiers',{}).find{|item| item['Type'] == 'isbn-electronic'}
|
731
|
+
item_isbn_e = @bib_part.fetch('BibEntity',{}).fetch('Identifiers',{}).find{|item| item['Type'] == 'isbn-electronic'}
|
732
|
+
if item_isbn_e
|
733
|
+
item_isbn_e['Value']
|
734
|
+
else
|
735
|
+
nil
|
736
|
+
end
|
697
737
|
else
|
698
738
|
nil
|
699
739
|
end
|
@@ -757,7 +797,12 @@ module EBSCO
|
|
757
797
|
|
758
798
|
def bib_volume
|
759
799
|
if @bib_part && @bib_part.fetch('BibEntity',{}).fetch('Numbering',{}).any?
|
760
|
-
@bib_part.fetch('BibEntity',{}).fetch('Numbering',{}).find{|item| item['Type'] == 'volume'}
|
800
|
+
item_volume = @bib_part.fetch('BibEntity',{}).fetch('Numbering',{}).find{|item| item['Type'] == 'volume'}
|
801
|
+
if item_volume
|
802
|
+
item_volume['Value']
|
803
|
+
else
|
804
|
+
nil
|
805
|
+
end
|
761
806
|
else
|
762
807
|
nil
|
763
808
|
end
|
@@ -765,7 +810,12 @@ module EBSCO
|
|
765
810
|
|
766
811
|
def bib_issue
|
767
812
|
if @bib_part && @bib_part.fetch('BibEntity',{}).fetch('Numbering',{}).any?
|
768
|
-
@bib_part.fetch('BibEntity',{}).fetch('Numbering',{}).find{|item| item['Type'] == 'issue'}
|
813
|
+
item_issue = @bib_part.fetch('BibEntity',{}).fetch('Numbering',{}).find{|item| item['Type'] == 'issue'}
|
814
|
+
if item_issue
|
815
|
+
item_issue['Value']
|
816
|
+
else
|
817
|
+
nil
|
818
|
+
end
|
769
819
|
else
|
770
820
|
nil
|
771
821
|
end
|
@@ -812,6 +862,11 @@ module EBSCO
|
|
812
862
|
if all_links
|
813
863
|
hash['links'] = all_links
|
814
864
|
end
|
865
|
+
unless @bibtex.has_type?(:other)
|
866
|
+
hash['citation_apa'] = citation('apa').first.to_s
|
867
|
+
hash['citation_mla'] = citation('modern-language-association').first.to_s
|
868
|
+
hash['citation_chicago'] = citation('chicago-author-date').first.to_s
|
869
|
+
end
|
815
870
|
hash
|
816
871
|
end
|
817
872
|
|
@@ -829,6 +884,17 @@ module EBSCO
|
|
829
884
|
}
|
830
885
|
end
|
831
886
|
|
887
|
+
def citation(style = 'apa')
|
888
|
+
# TODO: catch CSL::ParseError when style can't be found
|
889
|
+
# TODO: fix isbns issue
|
890
|
+
CSL::Style.root = File.join(__dir__, 'csl/styles')
|
891
|
+
cp = CiteProc::Processor.new style: style, format: 'text'
|
892
|
+
bib_entry = retrieve_bibtex
|
893
|
+
bib_entry_id = bib_entry.to_citeproc['id']
|
894
|
+
cp.import bibtex_bibliography.to_citeproc
|
895
|
+
cp.render :bibliography, id: bib_entry_id
|
896
|
+
end
|
897
|
+
|
832
898
|
end # Class Record
|
833
899
|
end # Module EDS
|
834
900
|
end # Module EBSCO
|
data/lib/ebsco/eds/results.rb
CHANGED
@@ -122,6 +122,7 @@ module EBSCO
|
|
122
122
|
facet = true
|
123
123
|
|
124
124
|
# solr response
|
125
|
+
solr_response =
|
125
126
|
{
|
126
127
|
'responseHeader' => {
|
127
128
|
'status' => status,
|
@@ -158,6 +159,43 @@ module EBSCO
|
|
158
159
|
}
|
159
160
|
}
|
160
161
|
|
162
|
+
solr_response.update(solr_spellcheck) if solr_spellcheck
|
163
|
+
solr_response
|
164
|
+
end
|
165
|
+
|
166
|
+
#
|
167
|
+
# Example:
|
168
|
+
#
|
169
|
+
# "spellcheck":{
|
170
|
+
# "suggestions":[
|
171
|
+
# "blesing",{
|
172
|
+
# "numFound":1,
|
173
|
+
# "startOffset":0,
|
174
|
+
# "endOffset":7,
|
175
|
+
# "origFreq":0,
|
176
|
+
# "suggestion":[{
|
177
|
+
# "word":"blessings",
|
178
|
+
# "freq":1}]}],
|
179
|
+
# "correctlySpelled":false}}
|
180
|
+
def solr_spellcheck
|
181
|
+
unless did_you_mean.nil?
|
182
|
+
{
|
183
|
+
'spellcheck' => {
|
184
|
+
'suggestions' => [
|
185
|
+
search_terms.first.to_s, {
|
186
|
+
'numFound' => 1,
|
187
|
+
'startOffset' => 0,
|
188
|
+
'endOffset' => 7,
|
189
|
+
'origFreq' => 0,
|
190
|
+
'suggestion' => [{
|
191
|
+
'word' => did_you_mean.to_s,
|
192
|
+
'freq' => 1 }]
|
193
|
+
}
|
194
|
+
],
|
195
|
+
'correctlySpelled' => false
|
196
|
+
}
|
197
|
+
}
|
198
|
+
end
|
161
199
|
end
|
162
200
|
|
163
201
|
# Publication date facets:
|
data/lib/ebsco/eds/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ebsco-eds
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bill McKinney
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-03
|
12
|
+
date: 2017-04-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|
@@ -123,20 +123,94 @@ dependencies:
|
|
123
123
|
- - "~>"
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '4.0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: citeproc
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 1.0.4
|
133
|
+
- - "<"
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '2.0'
|
136
|
+
type: :runtime
|
137
|
+
prerelease: false
|
138
|
+
version_requirements: !ruby/object:Gem::Requirement
|
139
|
+
requirements:
|
140
|
+
- - ">="
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: 1.0.4
|
143
|
+
- - "<"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '2.0'
|
146
|
+
- !ruby/object:Gem::Dependency
|
147
|
+
name: csl
|
148
|
+
requirement: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '1.4'
|
153
|
+
type: :runtime
|
154
|
+
prerelease: false
|
155
|
+
version_requirements: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '1.4'
|
160
|
+
- !ruby/object:Gem::Dependency
|
161
|
+
name: citeproc-ruby
|
162
|
+
requirement: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '1.0'
|
167
|
+
- - ">="
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: 1.0.2
|
170
|
+
type: :runtime
|
171
|
+
prerelease: false
|
172
|
+
version_requirements: !ruby/object:Gem::Requirement
|
173
|
+
requirements:
|
174
|
+
- - "~>"
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: '1.0'
|
177
|
+
- - ">="
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: 1.0.2
|
180
|
+
- !ruby/object:Gem::Dependency
|
181
|
+
name: csl-styles
|
182
|
+
requirement: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - "~>"
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '1.0'
|
187
|
+
- - ">="
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: 1.0.1.5
|
190
|
+
type: :runtime
|
191
|
+
prerelease: false
|
192
|
+
version_requirements: !ruby/object:Gem::Requirement
|
193
|
+
requirements:
|
194
|
+
- - "~>"
|
195
|
+
- !ruby/object:Gem::Version
|
196
|
+
version: '1.0'
|
197
|
+
- - ">="
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: 1.0.1.5
|
126
200
|
- !ruby/object:Gem::Dependency
|
127
201
|
name: activesupport
|
128
202
|
requirement: !ruby/object:Gem::Requirement
|
129
203
|
requirements:
|
130
204
|
- - "~>"
|
131
205
|
- !ruby/object:Gem::Version
|
132
|
-
version: '
|
206
|
+
version: '5.0'
|
133
207
|
type: :runtime
|
134
208
|
prerelease: false
|
135
209
|
version_requirements: !ruby/object:Gem::Requirement
|
136
210
|
requirements:
|
137
211
|
- - "~>"
|
138
212
|
- !ruby/object:Gem::Version
|
139
|
-
version: '
|
213
|
+
version: '5.0'
|
140
214
|
- !ruby/object:Gem::Dependency
|
141
215
|
name: bundler
|
142
216
|
requirement: !ruby/object:Gem::Requirement
|
@@ -225,6 +299,9 @@ files:
|
|
225
299
|
- bin/setup
|
226
300
|
- ebsco-eds.gemspec
|
227
301
|
- lib/ebsco/eds.rb
|
302
|
+
- lib/ebsco/eds/csl/styles/apa.csl
|
303
|
+
- lib/ebsco/eds/csl/styles/chicago-author-date.csl
|
304
|
+
- lib/ebsco/eds/csl/styles/modern-language-association.csl
|
228
305
|
- lib/ebsco/eds/error.rb
|
229
306
|
- lib/ebsco/eds/info.rb
|
230
307
|
- lib/ebsco/eds/jsonable.rb
|
@@ -247,7 +324,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
247
324
|
requirements:
|
248
325
|
- - ">="
|
249
326
|
- !ruby/object:Gem::Version
|
250
|
-
version:
|
327
|
+
version: 1.9.3
|
251
328
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
252
329
|
requirements:
|
253
330
|
- - ">"
|