theoj 1.3.6 → 1.4.1
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/CHANGELOG.md +10 -1
- data/lib/theoj/journal.rb +9 -0
- data/lib/theoj/journals_data.rb +2 -0
- data/lib/theoj/submission.rb +105 -51
- data/lib/theoj/version.rb +1 -1
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9486cf3fe9aaf56c43efbe6123016ce9b90a054398b2cd936b3bb5dbe4d31f2a
|
4
|
+
data.tar.gz: 8709e9a5baa199b67f6debe4e2cc839fd4d7a892f6ecf8997449c119b655a9b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 896db89c08cf36344bcd312ed433b63ea759f232b7892ec3ae3711f92e40247aed257dba1a04e03d33de9bd4acde2e0ab17fcea2d3d436593dfa04b5878966a0
|
7
|
+
data.tar.gz: 6dd748505af068cbe1019e621419ce0dbae212f9eefec025554e5ee4afb670b819082a98c30bd5ca08379582e6eb69b14b69dadf5e565c76eb16c8331ab02668
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,17 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 1.4.1 (2022-09-28)
|
4
|
+
|
5
|
+
- Added method to Submission to get track information
|
6
|
+
|
7
|
+
## 1.4.0 (2022-08-01)
|
8
|
+
|
9
|
+
- Added method to Journal to get year/volume/issue information for any date
|
10
|
+
- Submission metadata now takes into account published paper status
|
11
|
+
|
3
12
|
## 1.3.6 (2022-07-11)
|
4
13
|
|
5
|
-
- Improve parsing
|
14
|
+
- Improve parsing of author names
|
6
15
|
|
7
16
|
## 1.3.5 (2022-07-01)
|
8
17
|
|
data/lib/theoj/journal.rb
CHANGED
@@ -42,6 +42,15 @@ module Theoj
|
|
42
42
|
reviews_url
|
43
43
|
end
|
44
44
|
|
45
|
+
def year_volume_issue_for_date(d)
|
46
|
+
d = Date.parse(d) if d.is_a? String
|
47
|
+
year = d.year
|
48
|
+
volume = year - (launch_year - 1)
|
49
|
+
issue = (1 + ((year * 12 + d.month) - (launch_year * 12 + launch_month)))
|
50
|
+
|
51
|
+
[year, volume, issue]
|
52
|
+
end
|
53
|
+
|
45
54
|
private
|
46
55
|
|
47
56
|
def set_data(custom_data)
|
data/lib/theoj/journals_data.rb
CHANGED
data/lib/theoj/submission.rb
CHANGED
@@ -20,58 +20,105 @@ module Theoj
|
|
20
20
|
# Create the payload to use to post for depositing with Open Journals
|
21
21
|
def deposit_payload
|
22
22
|
{
|
23
|
-
id:
|
23
|
+
id: metadata_info[:review_issue_id],
|
24
24
|
metadata: Base64.encode64(metadata_payload),
|
25
|
-
doi:
|
26
|
-
archive_doi:
|
25
|
+
doi: metadata_info[:doi],
|
26
|
+
archive_doi: metadata_info[:archive_doi],
|
27
27
|
citation_string: citation_string,
|
28
|
-
title:
|
28
|
+
title: metadata_info[:title]
|
29
29
|
}
|
30
30
|
end
|
31
31
|
|
32
32
|
# Create a metadata json payload
|
33
33
|
def metadata_payload
|
34
|
-
|
34
|
+
{
|
35
35
|
paper: {
|
36
|
-
title:
|
37
|
-
tags:
|
38
|
-
languages:
|
39
|
-
authors:
|
40
|
-
doi:
|
41
|
-
archive_doi:
|
42
|
-
repository_address:
|
43
|
-
editor:
|
44
|
-
reviewers:
|
45
|
-
volume:
|
46
|
-
issue:
|
47
|
-
year:
|
48
|
-
page:
|
36
|
+
title: metadata_info[:title],
|
37
|
+
tags: metadata_info[:tags],
|
38
|
+
languages: metadata_info[:languages],
|
39
|
+
authors: metadata_info[:authors],
|
40
|
+
doi: metadata_info[:doi],
|
41
|
+
archive_doi: metadata_info[:archive_doi],
|
42
|
+
repository_address: metadata_info[:software_repository_url],
|
43
|
+
editor: metadata_info[:review_editor],
|
44
|
+
reviewers: metadata_info[:reviewers].collect(&:strip),
|
45
|
+
volume: metadata_info[:volume],
|
46
|
+
issue: metadata_info[:issue],
|
47
|
+
year: metadata_info[:year],
|
48
|
+
page: metadata_info[:page]
|
49
49
|
}
|
50
|
-
}
|
51
|
-
|
52
|
-
metadata.to_json
|
50
|
+
}.to_json
|
53
51
|
end
|
54
52
|
|
55
53
|
# Create metadata used to generate PDF/JATS outputs
|
56
54
|
def article_metadata
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
55
|
+
{
|
56
|
+
title: metadata_info[:title],
|
57
|
+
tags: metadata_info[:tags],
|
58
|
+
authors: metadata_info[:authors],
|
59
|
+
doi: metadata_info[:doi],
|
60
|
+
software_repository_url: metadata_info[:software_repository_url],
|
61
|
+
reviewers: metadata_info[:reviewers].collect{|r| user_login(r)},
|
62
|
+
volume: metadata_info[:volume],
|
63
|
+
issue: metadata_info[:issue],
|
64
|
+
year: metadata_info[:year],
|
65
|
+
page: metadata_info[:page],
|
66
|
+
journal_alias: metadata_info[:journal_alias],
|
67
|
+
software_review_url: metadata_info[:software_review_url],
|
68
|
+
archive_doi: metadata_info[:archive_doi],
|
69
|
+
citation_string: metadata_info[:citation_string],
|
70
|
+
editor: metadata_info[:editor],
|
71
|
+
submitted_at: metadata_info[:submitted_at],
|
72
|
+
published_at: metadata_info[:published_at]
|
73
|
+
}
|
74
|
+
end
|
75
|
+
|
76
|
+
def metadata_info
|
77
|
+
@metadata_info ||= all_metadata
|
78
|
+
end
|
79
|
+
|
80
|
+
def deposit!(secret)
|
81
|
+
parameters = deposit_payload.merge(secret: secret)
|
82
|
+
Faraday.post(journal.data[:deposit_url], parameters.to_json, {"Content-Type" => "application/json"})
|
83
|
+
end
|
84
|
+
|
85
|
+
def citation_string
|
86
|
+
metadata_info[:citation_string]
|
87
|
+
end
|
73
88
|
|
74
|
-
|
89
|
+
def paper_id
|
90
|
+
journal.paper_id_from_issue(review_issue.issue_id)
|
91
|
+
end
|
92
|
+
|
93
|
+
def paper_doi
|
94
|
+
journal.paper_doi_for_id(paper_id)
|
95
|
+
end
|
96
|
+
|
97
|
+
def all_metadata
|
98
|
+
metadata = {
|
99
|
+
title: paper.title,
|
100
|
+
tags: paper.tags,
|
101
|
+
languages: paper.languages,
|
102
|
+
authors: paper.authors.collect { |a| a.to_h },
|
103
|
+
doi: paper_doi,
|
104
|
+
software_repository_url: review_issue.target_repository,
|
105
|
+
review_issue_id: review_issue.issue_id,
|
106
|
+
review_editor: review_issue.editor,
|
107
|
+
reviewers: review_issue.reviewers,
|
108
|
+
volume: journal.current_volume,
|
109
|
+
issue: journal.current_issue,
|
110
|
+
year: journal.current_year,
|
111
|
+
page: review_issue.issue_id,
|
112
|
+
journal_alias: journal.alias,
|
113
|
+
journal_name: journal.name,
|
114
|
+
software_review_url: journal.reviews_repository_url(review_issue.issue_id),
|
115
|
+
archive_doi: review_issue.archive,
|
116
|
+
citation_author: paper.citation_author
|
117
|
+
}
|
118
|
+
|
119
|
+
metadata.merge!(editor_info, dates_info)
|
120
|
+
metadata[:citation_string] = build_citation_string(metadata)
|
121
|
+
metadata
|
75
122
|
end
|
76
123
|
|
77
124
|
def editor_info
|
@@ -106,30 +153,37 @@ module Theoj
|
|
106
153
|
dates_info[:submitted_at] = format_date(info[:submitted]) if info[:submitted]
|
107
154
|
dates_info[:published_at] = format_date(info[:accepted]) if info[:accepted]
|
108
155
|
end
|
156
|
+
|
157
|
+
if dates_info[:published_at]
|
158
|
+
yvi = journal.year_volume_issue_for_date(Date.parse(dates_info[:published_at]))
|
159
|
+
dates_info[:year] = yvi[0]
|
160
|
+
dates_info[:volume] = yvi[1]
|
161
|
+
dates_info[:issue] = yvi[2]
|
162
|
+
end
|
109
163
|
end
|
110
164
|
|
111
165
|
dates_info
|
112
166
|
end
|
113
167
|
|
114
|
-
def
|
115
|
-
|
116
|
-
Faraday.post(journal.data[:deposit_url], parameters.to_json, {"Content-Type" => "application/json"})
|
117
|
-
end
|
168
|
+
def track
|
169
|
+
track_info = { name: nil, short_name: nil, code: nil, label: nil, parameterized: nil}
|
118
170
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
171
|
+
if review_issue.issue_id
|
172
|
+
track_lookup = Faraday.get(journal.url + "/papers/" + review_issue.issue_id.to_s + "/lookup_track" )
|
173
|
+
if track_lookup.status == 200
|
174
|
+
track_info = JSON.parse(track_lookup.body, symbolize_names: true)
|
175
|
+
end
|
176
|
+
end
|
123
177
|
|
124
|
-
|
125
|
-
journal.paper_id_from_issue(review_issue.issue_id)
|
178
|
+
track_info
|
126
179
|
end
|
127
180
|
|
128
|
-
|
129
|
-
|
181
|
+
private
|
182
|
+
|
183
|
+
def build_citation_string(metadata)
|
184
|
+
"#{metadata[:citation_author]}, (#{metadata[:year]}). #{metadata[:title]}. #{metadata[:journal_name]}, #{metadata[:volume]}(#{metadata[:issue]}), #{metadata[:review_issue_id]}, https://doi.org/#{metadata[:doi]}"
|
130
185
|
end
|
131
186
|
|
132
|
-
private
|
133
187
|
def format_date(date_string)
|
134
188
|
Date.parse(date_string.to_s).strftime("%Y-%m-%d")
|
135
189
|
rescue Date::Error
|
data/lib/theoj/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: theoj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juanjo Bazán
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: octokit
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 5.6.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 5.6.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: faraday
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 2.
|
33
|
+
version: 2.5.2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 2.
|
40
|
+
version: 2.5.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: openjournals-nameable
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,28 +58,28 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 7.
|
61
|
+
version: 7.23.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 7.
|
68
|
+
version: 7.23.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rugged
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 1.
|
75
|
+
version: 1.5.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 1.
|
82
|
+
version: 1.5.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|