ebsco-eds 0.0.7.pre → 0.0.8.pre
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
- - ">"
|