montague 0.2.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 +7 -0
- data/.gitignore +18 -0
- data/CHANGELOG.md +17 -0
- data/Gemfile +4 -0
- data/README.md +138 -0
- data/Rakefile +2 -0
- data/lib/montague.rb +9 -0
- data/lib/montague/api/api.rb +12 -0
- data/lib/montague/api/base.rb +27 -0
- data/lib/montague/api/client.rb +27 -0
- data/lib/montague/api/journal.rb +52 -0
- data/lib/montague/api/publisher.rb +52 -0
- data/lib/montague/model/archiving.rb +26 -0
- data/lib/montague/model/copyright_link.rb +26 -0
- data/lib/montague/model/funder.rb +26 -0
- data/lib/montague/model/header.rb +22 -0
- data/lib/montague/model/journal.rb +26 -0
- data/lib/montague/model/journal_report.rb +15 -0
- data/lib/montague/model/journals_report.rb +15 -0
- data/lib/montague/model/mandate.rb +44 -0
- data/lib/montague/model/model.rb +22 -0
- data/lib/montague/model/paid_access.rb +34 -0
- data/lib/montague/model/publisher.rb +46 -0
- data/lib/montague/model/publisher_report.rb +12 -0
- data/lib/montague/model/publishers_report.rb +14 -0
- data/lib/montague/model/report_header_mixin.rb +12 -0
- data/lib/montague/model/report_http_response_mixin.rb +12 -0
- data/lib/montague/model/report_publisher_mixin.rb +12 -0
- data/lib/montague/model/structure.rb +18 -0
- data/lib/montague/reporter/journal.rb +26 -0
- data/lib/montague/reporter/journals.rb +26 -0
- data/lib/montague/reporter/publisher.rb +24 -0
- data/lib/montague/reporter/publishers.rb +24 -0
- data/lib/montague/reporter/reporter.rb +11 -0
- data/lib/montague/version.rb +5 -0
- data/lib/montague/xml_extractor/base.rb +58 -0
- data/lib/montague/xml_extractor/header.rb +43 -0
- data/lib/montague/xml_extractor/journal.rb +31 -0
- data/lib/montague/xml_extractor/publisher.rb +164 -0
- data/lib/montague/xml_extractor/xml_extractor.rb +13 -0
- data/montague.gemspec +22 -0
- data/test/test_helper.rb +102 -0
- data/test/test_search_by_journal.rb +90 -0
- data/test/test_search_by_publisher_api.rb +36 -0
- metadata +131 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
module Montague
|
2
|
+
module Model
|
3
|
+
# Header
|
4
|
+
#
|
5
|
+
class Header
|
6
|
+
|
7
|
+
# @return [String, nil]
|
8
|
+
attr_accessor :api_control
|
9
|
+
|
10
|
+
# @return [Fixnum, nil]
|
11
|
+
attr_accessor :hits
|
12
|
+
|
13
|
+
# @return [String, nil]
|
14
|
+
attr_accessor :message
|
15
|
+
|
16
|
+
# @return [String, nil]
|
17
|
+
attr_accessor :outcome
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Montague
|
2
|
+
module Model
|
3
|
+
|
4
|
+
# Journal
|
5
|
+
#
|
6
|
+
class Journal < Montague::Model::Structure
|
7
|
+
|
8
|
+
# @return [String, nil]
|
9
|
+
attr_reader :issn
|
10
|
+
|
11
|
+
# @return [String, nil]
|
12
|
+
attr_reader :title
|
13
|
+
|
14
|
+
# @param v [String]
|
15
|
+
def issn=(v)
|
16
|
+
@issn = v if v && !v.empty?
|
17
|
+
end
|
18
|
+
|
19
|
+
# @param v [String]
|
20
|
+
def title=(v)
|
21
|
+
@title = v if v && !v.empty?
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Montague
|
2
|
+
module Model
|
3
|
+
# Journal report
|
4
|
+
#
|
5
|
+
class JournalReport
|
6
|
+
include Montague::Model::ReportHeaderMixin
|
7
|
+
include Montague::Model::ReportHTTPResponseMixin
|
8
|
+
include Montague::Model::ReportPublisherMixin
|
9
|
+
|
10
|
+
# @return [Montague::Model::Journal, nil]
|
11
|
+
attr_accessor :journal
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Montague
|
2
|
+
module Model
|
3
|
+
# Journals report
|
4
|
+
#
|
5
|
+
class JournalsReport
|
6
|
+
include Montague::Model::ReportHeaderMixin
|
7
|
+
include Montague::Model::ReportHTTPResponseMixin
|
8
|
+
include Montague::Model::ReportPublisherMixin
|
9
|
+
|
10
|
+
# @return [Array<Montague::Model::Journal>]
|
11
|
+
attr_accessor :journals
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Montague
|
2
|
+
module Model
|
3
|
+
|
4
|
+
# Funder compliance mandate
|
5
|
+
#
|
6
|
+
class Mandate < Montague::Model::Structure
|
7
|
+
|
8
|
+
# @return [Montague::Model::Funder, nil]
|
9
|
+
attr_reader :funder
|
10
|
+
|
11
|
+
# @return [String, nil]
|
12
|
+
attr_reader :publisher_complies
|
13
|
+
|
14
|
+
# @return [String, nil]
|
15
|
+
attr_reader :compliance_type
|
16
|
+
|
17
|
+
# @return [String, nil]
|
18
|
+
attr_reader :selected_titles
|
19
|
+
|
20
|
+
# @param v [String]
|
21
|
+
def funder=(v)
|
22
|
+
@funder = v if v && v.data?
|
23
|
+
end
|
24
|
+
|
25
|
+
# @param v [String]
|
26
|
+
def publisher_complies=(v)
|
27
|
+
@publisher_complies = v if v && !v.empty?
|
28
|
+
end
|
29
|
+
|
30
|
+
# @param v [String]
|
31
|
+
def compliance_type=(v)
|
32
|
+
@compliance_type = v if v && !v.empty?
|
33
|
+
end
|
34
|
+
|
35
|
+
# @param v [String]
|
36
|
+
def selected_titles=(v)
|
37
|
+
# handle absent negative value in API
|
38
|
+
v = 'no' if v.empty?
|
39
|
+
@selected_titles = v if v && !v.empty?
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'montague/model/structure'
|
2
|
+
require 'montague/model/archiving'
|
3
|
+
require 'montague/model/copyright_link'
|
4
|
+
require 'montague/model/funder'
|
5
|
+
require 'montague/model/publisher'
|
6
|
+
require 'montague/model/header'
|
7
|
+
require 'montague/model/journal'
|
8
|
+
require 'montague/model/mandate'
|
9
|
+
require 'montague/model/paid_access'
|
10
|
+
require 'montague/model/report_header_mixin'
|
11
|
+
require 'montague/model/report_http_response_mixin'
|
12
|
+
require 'montague/model/report_publisher_mixin'
|
13
|
+
require 'montague/model/journal_report'
|
14
|
+
require 'montague/model/journals_report'
|
15
|
+
require 'montague/model/publisher_report'
|
16
|
+
require 'montague/model/publishers_report'
|
17
|
+
|
18
|
+
module Montague
|
19
|
+
# Model
|
20
|
+
module Model
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Montague
|
2
|
+
module Model
|
3
|
+
|
4
|
+
# Paid access
|
5
|
+
#
|
6
|
+
class PaidAccess < Montague::Model::Structure
|
7
|
+
|
8
|
+
# @return [String, nil]
|
9
|
+
attr_reader :url
|
10
|
+
|
11
|
+
# @return [String, nil]
|
12
|
+
attr_reader :name
|
13
|
+
|
14
|
+
# @return [String, nil]
|
15
|
+
attr_reader :notes
|
16
|
+
|
17
|
+
# @param v [String]
|
18
|
+
def url=(v)
|
19
|
+
@url = v if v && !v.empty?
|
20
|
+
end
|
21
|
+
|
22
|
+
# @param v [String]
|
23
|
+
def name=(v)
|
24
|
+
@name = v if v && !v.empty?
|
25
|
+
end
|
26
|
+
|
27
|
+
# @param v [String]
|
28
|
+
def notes=(v)
|
29
|
+
@notes = v if v && !v.empty?
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Montague
|
2
|
+
module Model
|
3
|
+
|
4
|
+
# Publisher
|
5
|
+
#
|
6
|
+
class Publisher
|
7
|
+
|
8
|
+
# @return [String]
|
9
|
+
attr_accessor :alias
|
10
|
+
|
11
|
+
# @return [Array<String>]
|
12
|
+
attr_accessor :conditions
|
13
|
+
|
14
|
+
# @return [Array<Montague::Model::CopyrightLink>]
|
15
|
+
attr_accessor :copyright_links
|
16
|
+
|
17
|
+
# @return [String]
|
18
|
+
attr_accessor :id
|
19
|
+
|
20
|
+
# Publisher compliance with the open access mandates of research funding agencies
|
21
|
+
# @return [Array<Montague::Model::Mandate>]
|
22
|
+
attr_accessor :mandates
|
23
|
+
|
24
|
+
# @return [String, nil]
|
25
|
+
attr_accessor :name
|
26
|
+
|
27
|
+
# @return [Montague::Model::PaidAccess, nil]
|
28
|
+
attr_accessor :paid_access
|
29
|
+
|
30
|
+
# Publisher version, with formatting
|
31
|
+
# @return [Montague::Model::Archiving, nil]
|
32
|
+
attr_accessor :pdf_version
|
33
|
+
|
34
|
+
# Submitted version, before peer-review
|
35
|
+
# @return [Montague::Model::Archiving, nil]
|
36
|
+
attr_accessor :pre_prints
|
37
|
+
|
38
|
+
# Accepted version, after peer-review
|
39
|
+
# @return [Montague::Model::Archiving, nil]
|
40
|
+
attr_accessor :post_prints
|
41
|
+
|
42
|
+
# @return [String, nil]
|
43
|
+
attr_accessor :romeo_colour
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Montague
|
2
|
+
module Model
|
3
|
+
# Publishers report
|
4
|
+
#
|
5
|
+
class PublishersReport
|
6
|
+
include Montague::Model::ReportHeaderMixin
|
7
|
+
include Montague::Model::ReportHTTPResponseMixin
|
8
|
+
|
9
|
+
# @return [Array<Montague::Model::Publisher>]
|
10
|
+
attr_accessor :publishers
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Montague
|
2
|
+
module Reporter
|
3
|
+
# Journal reporter
|
4
|
+
#
|
5
|
+
class Journal
|
6
|
+
|
7
|
+
def initialize(response)
|
8
|
+
@response = response
|
9
|
+
@header_extractor = Montague::XMLExtractor::Header.new response.to_s
|
10
|
+
@journal_extractor = Montague::XMLExtractor::Journal.new response.to_s
|
11
|
+
@publisher_extractor = Montague::XMLExtractor::Publisher.new response.to_s
|
12
|
+
end
|
13
|
+
|
14
|
+
# @return [Montague::Model::JournalReport]
|
15
|
+
def report
|
16
|
+
h = Montague::Model::JournalReport.new
|
17
|
+
h.http_response = @response
|
18
|
+
h.header = @header_extractor.model
|
19
|
+
h.journal = @journal_extractor.model
|
20
|
+
h.publisher = @publisher_extractor.model
|
21
|
+
h
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Montague
|
2
|
+
module Reporter
|
3
|
+
# Journals reporter
|
4
|
+
#
|
5
|
+
class Journals
|
6
|
+
|
7
|
+
def initialize(response)
|
8
|
+
@response = response
|
9
|
+
@header_extractor = Montague::XMLExtractor::Header.new response.to_s
|
10
|
+
@journal_extractor = Montague::XMLExtractor::Journal.new response.to_s
|
11
|
+
@publisher_extractor = Montague::XMLExtractor::Publisher.new response.to_s
|
12
|
+
end
|
13
|
+
|
14
|
+
# @return [Montague::Model::JournalsReport]
|
15
|
+
def report
|
16
|
+
h = Montague::Model::JournalsReport.new
|
17
|
+
h.http_response = @response
|
18
|
+
h.header = @header_extractor.model
|
19
|
+
h.journals = @journal_extractor.models
|
20
|
+
h.publisher = @publisher_extractor.model
|
21
|
+
h
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Montague
|
2
|
+
module Reporter
|
3
|
+
# Publisher reporter
|
4
|
+
#
|
5
|
+
class Publisher
|
6
|
+
|
7
|
+
def initialize(response)
|
8
|
+
@response = response
|
9
|
+
@header_extractor = Montague::XMLExtractor::Header.new response.to_s
|
10
|
+
@publisher_extractor = Montague::XMLExtractor::Publisher.new response.to_s
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [Montague::Model::PublisherReport]
|
14
|
+
def report
|
15
|
+
h = Montague::Model::PublisherReport.new
|
16
|
+
h.http_response = @response
|
17
|
+
h.header = @header_extractor.model
|
18
|
+
h.publisher = @publisher_extractor.model
|
19
|
+
h
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Montague
|
2
|
+
module Reporter
|
3
|
+
# Publishers reporter
|
4
|
+
#
|
5
|
+
class Publishers
|
6
|
+
|
7
|
+
def initialize(response)
|
8
|
+
@response = response
|
9
|
+
@header_extractor = Montague::XMLExtractor::Header.new response.to_s
|
10
|
+
@publisher_extractor = Montague::XMLExtractor::Publisher.new response.to_s
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [Montague::Model::PublishersReport]
|
14
|
+
def report
|
15
|
+
h = Montague::Model::PublishersReport.new
|
16
|
+
h.http_response = @response
|
17
|
+
h.header = @header_extractor.model
|
18
|
+
h.publishers = @publisher_extractor.models
|
19
|
+
h
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|