relaton-render 0.5.12 → 0.5.14

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc53c422d4ce23993d680552ab161d6adfdc2d20d2404df34ff7584b1ea6f3ef
4
- data.tar.gz: d7a69378efe30b0e71423aa2b027afcb2cd617d4d8dbd52f20ddee8c63fdc74b
3
+ metadata.gz: 4a59266f60d60c8d152141f675eac858ef9f9b81e4c8d9ac2bfe9dd158db148d
4
+ data.tar.gz: 40d269013ae823a85f21c335b7157e13c6062572e6e06190e6a06688b5508061
5
5
  SHA512:
6
- metadata.gz: 57a7197ead73c25e93192d5c8981829aa346c3806b7f140adb5b5be4d00820b9567f6c82b90d00c0b3eca4b388fcd0193e75fcb4afbe5c1426d82d60c1b944cc
7
- data.tar.gz: 68be12ff63e3232cd156e6742c8d7a2a3bcdf78a542ba1098cea48a9e47618f3048598101ad17f0b3985d46647c24c1e26fcdf483fb37dc30e228f8ce1e50e78
6
+ metadata.gz: a084f59643670d47b6e237c00df3b831f7b50781aa39bbf153bf1fc6912dd6358c77d8d04f5ce6a8742d6c3586bd5d025c2a6ceddb70f5db8f0b0d4f2200f07e
7
+ data.tar.gz: 1ae9f86ae3ee701eeece1ac44c6cfcfd41ce34320ea263c413c3417609c0b919c2924bdafda02b0db828e9f16ce7de0aaec1f25bee3ec53a33a9da5ff14896d9
@@ -7,11 +7,13 @@ on:
7
7
  inputs:
8
8
  next_version:
9
9
  description: |
10
- Next release version. Possible values: x.y.z, major, minor, patch or pre|rc|etc
10
+ Next release version. Possible values: x.y.z, major, minor, patch (or pre|rc|etc).
11
+ Also, you can pass 'skip' to skip 'git tag' and do 'gem push' for the current version
11
12
  required: true
12
13
  default: 'skip'
13
- push:
14
- tags: [ v* ]
14
+ repository_dispatch:
15
+ types: [ do-release ]
16
+
15
17
 
16
18
  jobs:
17
19
  release:
@@ -105,11 +105,13 @@ module Relaton
105
105
  end
106
106
 
107
107
  def role_inflect(contribs, role)
108
- role.nil? || contribs.size.zero? ||
108
+ role.nil? || contribs.empty? ||
109
109
  %w(author publisher distributor
110
110
  authorizer).include?(role) and return nil
111
111
  number = contribs.size > 1 ? "pl" : "sg"
112
- @r.i18n.get[role][number] || role
112
+ x = @r.i18n.get[role]
113
+ x.is_a?(Hash) or return role
114
+ x[number] || role
113
115
  end
114
116
 
115
117
  def editionformat(edn, num)
@@ -135,7 +137,7 @@ module Relaton
135
137
  num.nil? ||
136
138
  (num.is_a?(Hash) && num[:status].nil? &&
137
139
  num[:iteration].nil?) and return nil
138
- @r.i18n.draft.sub(/%/, num)
140
+ @r.i18n.draft.sub("%", num)
139
141
  end
140
142
 
141
143
  def extentformat(extent, hash)
@@ -145,7 +147,7 @@ module Relaton
145
147
  extentformat1(k, v, m, e1)
146
148
  m
147
149
  end
148
- @r.extenttemplate.render(ret.merge(type: hash[:type]))
150
+ @r.extenttemplate.render(hash.merge(ret))
149
151
  end.join("; ")
150
152
  end
151
153
 
@@ -195,7 +197,7 @@ module Relaton
195
197
  value_raw[:to] or num = "sg"
196
198
  end
197
199
  @r.i18n.l10n(@r.i18n.get[is_size ? "size" : "extent"][type][num]
198
- .sub(/%/, value))
200
+ .sub("%", value))
199
201
  end
200
202
 
201
203
  def date_range(hash)
@@ -22,6 +22,7 @@ extenttemplate:
22
22
  standard: book
23
23
  techreport: book
24
24
  inbook: "{{ volume }}: {{ page }}"
25
+ article: "{{ volume }} {{issue}} , {{ page }}, {{ duration }}"
25
26
  misc: "{{ volume }} {{issue}} , {{ page }}, {{ duration }}"
26
27
  sizetemplate:
27
28
  dataset: "{{ data }}"
@@ -2,7 +2,9 @@ require_relative "render_classes"
2
2
  require_relative "citations"
3
3
  require "yaml"
4
4
  require "liquid"
5
+ require "date"
5
6
  require "relaton_bib"
7
+ require "net/http"
6
8
  require_relative "../template/template"
7
9
  require_relative "../../../isodoc/i18n"
8
10
 
@@ -133,6 +135,7 @@ module Relaton
133
135
  def parse1(doc)
134
136
  r = renderer(doc.type || "misc")
135
137
  data = @parse.extract(doc)
138
+ enhance_data(data, r.template_raw)
136
139
  data_liquid = @fieldsklass.new(renderer: self)
137
140
  .compound_fields_format(data)
138
141
  valid_parse(@i18n.l10n(r.render(data_liquid)))
@@ -173,6 +176,23 @@ module Relaton
173
176
  end
174
177
  end
175
178
 
179
+ # add to liquid data based on template
180
+ def enhance_data(data, template)
181
+ template.is_a?(String) or return
182
+ add_date_accessed(data, template)
183
+ end
184
+
185
+ def add_date_accessed(data, template)
186
+ (/\{\{\s*date_accessed\s*\}\}/.match?(template) &&
187
+ /\{\{\s*uri\s*\}\}/.match?(template) &&
188
+ data[:uri_raw] && !data[:date_accessed]) or return
189
+ if url_exist?(data[:uri_raw])
190
+ data[:date_accessed] = { on: ::Date.today.to_s }
191
+ else
192
+ warn "BIBLIOGRAPHY WARNING: cannot access #{data[:uri_raw]}"
193
+ end
194
+ end
195
+
176
196
  private
177
197
 
178
198
  def template_hash_fill(templates)
@@ -182,6 +202,23 @@ module Relaton
182
202
  m[type] = template
183
203
  end
184
204
  end
205
+
206
+ def url_exist?(url_string)
207
+ res = access_url(url_string)
208
+ res.is_a?(Net::HTTPRedirection) and return url_exist?(res["location"])
209
+ res.code[0] != "4"
210
+ rescue Errno::ENOENT, SocketError
211
+ false # false if can't find the server
212
+ end
213
+
214
+ def access_url(url_string)
215
+ url = URI.parse(url_string)
216
+ req = Net::HTTP.new(url.host, url.port)
217
+ req.use_ssl = (url.scheme == "https")
218
+ path = url.path or return false
219
+ path.empty? and path = "/"
220
+ req.request_head(path)
221
+ end
185
222
  end
186
223
  end
187
224
  end
@@ -109,7 +109,7 @@ module Relaton
109
109
  ret = date.detect { |x| x.type == t } and
110
110
  return ret
111
111
  end
112
- date.first
112
+ date.reject { |x| x.type == "accessed" }.first
113
113
  end
114
114
 
115
115
  # year-only
@@ -5,6 +5,8 @@ module Relaton
5
5
  module Render
6
6
  module Template
7
7
  class General
8
+ attr_reader :template_raw
9
+
8
10
  def initialize(opt = {})
9
11
  @htmlentities = HTMLEntities.new
10
12
  customise_liquid
@@ -43,7 +45,7 @@ module Relaton
43
45
 
44
46
  def punct_field?(name)
45
47
  name or return false
46
- name = name.gsub(/'/, '"')
48
+ name = name.gsub("'", '"')
47
49
  %w(labels["qq-open"] labels["qq-close"] labels["q-open"]
48
50
  labels["q-close"]).include?(name)
49
51
  end
@@ -60,7 +62,7 @@ module Relaton
60
62
  a[3] = "}}#{FIELD_DELIM}"
61
63
  end
62
64
  a.join
63
- end.join.gsub(/\t/, " ")
65
+ end.join.gsub("\t", " ")
64
66
  t.gsub(/\}\}#{FIELD_DELIM}\|/o, "}}#{FIELD_DELIM}\t")
65
67
  .gsub(/\|#{FIELD_DELIM}\{\{/o, "\t#{FIELD_DELIM}{{")
66
68
  end
@@ -96,7 +98,7 @@ module Relaton
96
98
  .sub(/^\s*[,.:;]\s*/, "")
97
99
  .sub(/[,:;]\s*$/, "")
98
100
  .gsub(/(?<!\\)_/, " ")
99
- .gsub(/\\_/, "_")
101
+ .gsub("\\_", "_")
100
102
  .gsub(/#{NON_SPACING_DELIM}/o, "").gsub(/\s+/, " ")
101
103
  end
102
104
 
@@ -110,7 +112,7 @@ module Relaton
110
112
  when Array
111
113
  hash.map { |v| liquid_hash(v) }
112
114
  when String
113
- hash.empty? ? nil : hash.gsub(/_/, "\\_").gsub(/ /, "_")
115
+ hash.empty? ? nil : hash.gsub("_", "\\_").gsub(/ /, "_")
114
116
  else hash
115
117
  end
116
118
  end
@@ -165,7 +167,7 @@ module Relaton
165
167
  t = nametemplate_split(template)
166
168
 
167
169
  mid = (1..size - 2).each_with_object([]) do |i, m|
168
- m << t[1].gsub(/\[1\]/, "[#{i}]")
170
+ m << t[1].gsub("[1]", "[#{i}]")
169
171
  end
170
172
  t[1] = mid.join
171
173
  t[2].gsub!(/\[\d+\]/, "[#{size - 1}]")
@@ -1,5 +1,5 @@
1
1
  module Relaton
2
2
  module Render
3
- VERSION = "0.5.12".freeze
3
+ VERSION = "0.5.14".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-render
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.12
4
+ version: 0.5.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-08 00:00:00.000000000 Z
11
+ date: 2023-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -239,7 +239,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
239
239
  - !ruby/object:Gem::Version
240
240
  version: '0'
241
241
  requirements: []
242
- rubygems_version: 3.1.6
242
+ rubygems_version: 3.3.26
243
243
  signing_key:
244
244
  specification_version: 4
245
245
  summary: Rendering of ISO 690 XML