relaton-render 0.1.0 → 3.0.0.pre.alpha.25
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/.github/workflows/rake.yml +4 -1
- data/.github/workflows/release.yml +24 -0
- data/.gitignore +14 -0
- data/.rubocop.yml +2 -2
- data/Gemfile +17 -1
- data/README.adoc +61 -197
- data/docs/citation-style-pack.adoc +367 -0
- data/lib/relaton/render/general.rb +305 -0
- data/lib/relaton/render/iso690/element.rb +153 -0
- data/lib/relaton/render/iso690/elements/access.rb +44 -0
- data/lib/relaton/render/iso690/elements/authorizer.rb +30 -0
- data/lib/relaton/render/iso690/elements/citeid.rb +39 -0
- data/lib/relaton/render/iso690/elements/component_part.rb +99 -0
- data/lib/relaton/render/iso690/elements/creator.rb +258 -0
- data/lib/relaton/render/iso690/elements/edition.rb +92 -0
- data/lib/relaton/render/iso690/elements/extent.rb +71 -0
- data/lib/relaton/render/iso690/elements/identifier.rb +46 -0
- data/lib/relaton/render/iso690/elements/location.rb +73 -0
- data/lib/relaton/render/iso690/elements/medium.rb +32 -0
- data/lib/relaton/render/iso690/elements/numeration.rb +26 -0
- data/lib/relaton/render/iso690/elements/production.rb +92 -0
- data/lib/relaton/render/iso690/elements/pub_date.rb +56 -0
- data/lib/relaton/render/iso690/elements/series.rb +66 -0
- data/lib/relaton/render/iso690/elements/size.rb +41 -0
- data/lib/relaton/render/iso690/elements/status.rb +30 -0
- data/lib/relaton/render/iso690/elements/stddoc.rb +40 -0
- data/lib/relaton/render/iso690/elements/title.rb +56 -0
- data/lib/relaton/render/iso690/elements/updated.rb +38 -0
- data/lib/relaton/render/iso690/elements.rb +67 -0
- data/lib/relaton/render/iso690/fields.rb +142 -0
- data/lib/relaton/render/iso690/i18n/en.yml +47 -0
- data/lib/relaton/render/iso690/i18n/fr.yml +14 -0
- data/lib/relaton/render/iso690/i18n/ja.yml +38 -0
- data/lib/relaton/render/iso690/i18n.rb +83 -0
- data/lib/relaton/render/iso690/identifier_kinds.rb +29 -0
- data/lib/relaton/render/iso690/index_renderer.rb +57 -0
- data/lib/relaton/render/iso690/kinds.rb +53 -0
- data/lib/relaton/render/iso690/renderer.rb +148 -0
- data/lib/relaton/render/iso690/style/locale.rb +53 -0
- data/lib/relaton/render/iso690/style/name_form.rb +87 -0
- data/lib/relaton/render/iso690/style/scheme.rb +33 -0
- data/lib/relaton/render/iso690/style/sort_rule.rb +25 -0
- data/lib/relaton/render/iso690/style/template_map.rb +40 -0
- data/lib/relaton/render/iso690/style/type_template.rb +37 -0
- data/lib/relaton/render/iso690/style.rb +119 -0
- data/lib/relaton/render/iso690/styles/author-date.yml +31 -0
- data/lib/relaton/render/iso690/template.rb +248 -0
- data/lib/relaton/render/iso690.rb +26 -0
- data/lib/relaton/render/version.rb +5 -0
- data/lib/relaton-render.rb +12 -5
- data/relaton-render.gemspec +7 -11
- metadata +57 -86
- data/lib/isodoc/i18n.rb +0 -24
- data/lib/isodoc-yaml/i18n-ar.yaml +0 -2
- data/lib/isodoc-yaml/i18n-de.yaml +0 -2
- data/lib/isodoc-yaml/i18n-en.yaml +0 -22
- data/lib/isodoc-yaml/i18n-es.yaml +0 -2
- data/lib/isodoc-yaml/i18n-fr.yaml +0 -2
- data/lib/isodoc-yaml/i18n-ru.yaml +0 -23
- data/lib/isodoc-yaml/i18n-zh-Hans.yaml +0 -2
- data/lib/parse/parse.rb +0 -54
- data/lib/parse/parse_contributors.rb +0 -96
- data/lib/parse/parse_extract.rb +0 -155
- data/lib/relaton/config.yml +0 -67
- data/lib/relaton/render.rb +0 -123
- data/lib/relaton/render_classes.rb +0 -126
- data/lib/relaton/render_fields.rb +0 -151
- data/lib/relaton/version.rb +0 -5
- data/lib/template/template.rb +0 -152
- data/lib/utils/utils.rb +0 -27
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Relaton
|
|
4
|
+
module Render
|
|
5
|
+
module Iso690
|
|
6
|
+
# A citation template as declared in a style instance: literal text
|
|
7
|
+
# interleaved with {{slot}} placeholders resolved against the ISO 690
|
|
8
|
+
# data element inventory. A leading literal attaches to the first
|
|
9
|
+
# slot, and a literal between two slots to the preceding one, so an
|
|
10
|
+
# absent field never orphans punctuation around it. The last rendered
|
|
11
|
+
# slot gives up its trailing literal in favour of the template
|
|
12
|
+
# terminator, appended once when any field rendered and the output
|
|
13
|
+
# does not already end with it.
|
|
14
|
+
class Template
|
|
15
|
+
SLOT = /\{\{\s*([\w-]+)\s*\}\}/.freeze
|
|
16
|
+
|
|
17
|
+
Field = Struct.new(:present?, :text)
|
|
18
|
+
|
|
19
|
+
def initialize(source)
|
|
20
|
+
@chunks = []
|
|
21
|
+
@terminator = ""
|
|
22
|
+
scan(source.to_s)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# The short cite renders the reference with the first-biblio
|
|
26
|
+
# marker appended to its first component: isodoc's styled
|
|
27
|
+
# references (eref2linkshort) split there (the 1.x
|
|
28
|
+
# fmt-first-biblio-delim)
|
|
29
|
+
def evaluate_short(fields, delim)
|
|
30
|
+
present = present_indices(fields)
|
|
31
|
+
return "" if present.empty?
|
|
32
|
+
|
|
33
|
+
# The split marker follows the leading run of present slots
|
|
34
|
+
# (the 1.x first SEGMENT: "{{creator}}{{role}}" splits after
|
|
35
|
+
# the role), before the first literal that follows it
|
|
36
|
+
lead_slots = []
|
|
37
|
+
@chunks.each_with_index do |(kind, _value), i|
|
|
38
|
+
break if kind != :slot || !present.include?(i)
|
|
39
|
+
|
|
40
|
+
lead_slots << i
|
|
41
|
+
end
|
|
42
|
+
split_at = lead_slots.last ? lead_slots.last + 1 : nil
|
|
43
|
+
|
|
44
|
+
out = +""
|
|
45
|
+
@chunks.each_with_index do |(kind, value), i|
|
|
46
|
+
text =
|
|
47
|
+
case kind
|
|
48
|
+
when :slot
|
|
49
|
+
field = fields[normalise(value)]
|
|
50
|
+
next unless field&.present?
|
|
51
|
+
|
|
52
|
+
field.text
|
|
53
|
+
else
|
|
54
|
+
next unless bridged?(i, present)
|
|
55
|
+
|
|
56
|
+
value
|
|
57
|
+
end
|
|
58
|
+
if split_at == i
|
|
59
|
+
out << fieldless(lead_slots, fields) if false
|
|
60
|
+
out << delim.to_s
|
|
61
|
+
split_at = nil
|
|
62
|
+
end
|
|
63
|
+
out << text unless text.nil?
|
|
64
|
+
end
|
|
65
|
+
out << delim.to_s if split_at == @chunks.length
|
|
66
|
+
terminate(out).rstrip
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# 1.x segment-join semantics: present elements joined with the
|
|
70
|
+
# template's separators — a literal renders only when it
|
|
71
|
+
# separates (a run of absent elements between) two present
|
|
72
|
+
# elements; leading and trailing literals drop with the
|
|
73
|
+
# elements they would have attached to
|
|
74
|
+
def evaluate(fields)
|
|
75
|
+
present = present_indices(fields)
|
|
76
|
+
return "" if present.empty?
|
|
77
|
+
|
|
78
|
+
out = +"".dup
|
|
79
|
+
# Parenthetical groups balance on the template's literal
|
|
80
|
+
# parens alone: data text (a series run "(N.S.)", a host
|
|
81
|
+
# creator's closing paren) carries parens of its own that
|
|
82
|
+
# are no part of the template's group structure
|
|
83
|
+
paren_balance = 0
|
|
84
|
+
@chunks.each_with_index do |(kind, value), i|
|
|
85
|
+
if kind == :slot
|
|
86
|
+
field = fields[normalise(value)]
|
|
87
|
+
out << field.text if field&.present?
|
|
88
|
+
elsif value.to_s.match?(/\A[))]/)
|
|
89
|
+
# Symmetric close: with no pending open the close-paren
|
|
90
|
+
# drops, and any trailing punctuation bridges normally
|
|
91
|
+
closes = value.to_s[/\A[))]+/]
|
|
92
|
+
emitted = [paren_balance, closes.size].min
|
|
93
|
+
if emitted.positive?
|
|
94
|
+
out << closes[0, emitted] +
|
|
95
|
+
value.to_s[closes.size..].to_s
|
|
96
|
+
paren_balance -= emitted
|
|
97
|
+
else
|
|
98
|
+
rest = value.to_s.sub(/\A[))]+/, "")
|
|
99
|
+
# the trailing separator of a dropped group bridges as
|
|
100
|
+
# though the group were never there
|
|
101
|
+
if !rest.empty? && present.any? { |j| j > i } &&
|
|
102
|
+
group_gap?(i, present)
|
|
103
|
+
out << rest
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
elsif value.to_s.match?(/[((]\z/)
|
|
107
|
+
# A literal opening a parenthetical group ("({{series}})",
|
|
108
|
+
# "。({{series}})") attaches its paren to the slot it
|
|
109
|
+
# opens — the pair drops with an absent element, while
|
|
110
|
+
# any leading punctuation bridges normally
|
|
111
|
+
lead, paren = value.to_s.match(/\A(.*)([((])\z/).captures
|
|
112
|
+
out << lead if bridged_text?(i, lead, present)
|
|
113
|
+
if present.include?(i + 1)
|
|
114
|
+
out << paren
|
|
115
|
+
paren_balance += 1
|
|
116
|
+
end
|
|
117
|
+
elsif bridged?(i, present) ||
|
|
118
|
+
(value.include?("<") && present.any? { |j| j < i })
|
|
119
|
+
# markup attaches to the element it closes
|
|
120
|
+
out << value
|
|
121
|
+
elsif close_pending_paren?(out, value)
|
|
122
|
+
out << value
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
terminate(out).rstrip
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
private
|
|
129
|
+
|
|
130
|
+
def scan(source)
|
|
131
|
+
rest = source
|
|
132
|
+
while (slot = SLOT.match(rest))
|
|
133
|
+
@chunks << [:text, rest[0...slot.begin(0)]] if
|
|
134
|
+
slot.begin(0).positive?
|
|
135
|
+
@chunks << [:slot, slot[1]]
|
|
136
|
+
rest = rest[slot.end(0)..]
|
|
137
|
+
end
|
|
138
|
+
@terminator = rest
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def present_indices(fields)
|
|
142
|
+
@chunks.each_index.select do |i|
|
|
143
|
+
kind, value = @chunks[i]
|
|
144
|
+
next false unless kind == :slot
|
|
145
|
+
|
|
146
|
+
field = fields[normalise(value)]
|
|
147
|
+
!field.nil? && field.present?
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# The texts between this close and the last present slot are
|
|
152
|
+
# all parenthetical-group parts (each dropped or partial)
|
|
153
|
+
def group_gap?(index, present)
|
|
154
|
+
left = present.select { |i| i < index }.max
|
|
155
|
+
@chunks[(left + 1)...index].all? do |(_, text)|
|
|
156
|
+
text.to_s.match?(/\A[))]|[((]\z/)
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
# The leading punctuation of a paren-opening literal bridges
|
|
161
|
+
# per the segment-join rule (a bare paren has no lead)
|
|
162
|
+
def bridged_text?(index, lead, present)
|
|
163
|
+
return true if lead.empty?
|
|
164
|
+
|
|
165
|
+
first_slot = @chunks.index { |(kind, _)| kind == :slot }
|
|
166
|
+
return present.include?(first_slot) if index < first_slot
|
|
167
|
+
|
|
168
|
+
left = present.select { |i| i < index }.max
|
|
169
|
+
left && present.any? { |i| i > index } &&
|
|
170
|
+
!@chunks[(left + 1)...index].any? do |(kind, _)|
|
|
171
|
+
kind == :text
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
# A literal is the trailing separator of the element that
|
|
176
|
+
# precedes it: it renders when that element renders and a
|
|
177
|
+
# later element renders, and it is the FIRST literal of its
|
|
178
|
+
# gap (the 1.x segment join — absent elements between two
|
|
179
|
+
# present ones leave the single separator that follows the
|
|
180
|
+
# earlier present element; an absent slot directly before a
|
|
181
|
+
# present one, as "{{date}}{{disambiguator}}, {{access}}",
|
|
182
|
+
# does not swallow it). A leading literal (no slot precedes
|
|
183
|
+
# it) attaches to the first slot, emitting only when that
|
|
184
|
+
# slot is present.
|
|
185
|
+
def bridged?(index, present)
|
|
186
|
+
first_slot = @chunks.index { |(kind, _)| kind == :slot }
|
|
187
|
+
return present.include?(first_slot) if index < first_slot
|
|
188
|
+
|
|
189
|
+
left = present.select { |i| i < index }.max
|
|
190
|
+
left && present.any? { |i| i > index } &&
|
|
191
|
+
!@chunks[(left + 1)...index].any? do |(kind, _)|
|
|
192
|
+
kind == :text
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
# A template's paired literal ("({{production}})") closes even
|
|
197
|
+
# when nothing follows the present element it wraps. Fullwidth
|
|
198
|
+
# parens (CJK) pair the same way
|
|
199
|
+
def close_pending_paren?(out, value)
|
|
200
|
+
return false unless value.start_with?(")", "\uFF09")
|
|
201
|
+
|
|
202
|
+
opens = out.count("(") + out.count("\uFF08")
|
|
203
|
+
closes = out.count(")") + out.count("\uFF09")
|
|
204
|
+
opens > closes
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
def terminate(body)
|
|
208
|
+
# 1.x punctuation cleanup: a sentence period before a spaced
|
|
209
|
+
# comma yields to the comma (", 2013" over ". , 2013"; an
|
|
210
|
+
# initials period before a comma ("P.,") stands, being
|
|
211
|
+
# unspaced), and stacked separators around absent elements
|
|
212
|
+
# collapse into one (". : ." into ". "); an empty pair left
|
|
213
|
+
# by an absent element drops
|
|
214
|
+
body = body.gsub(/:\s*\.\s*/, ": ")
|
|
215
|
+
body = body.gsub(/\.\s+,/, ",")
|
|
216
|
+
body = body.gsub(/(?:[.,:;]\s+)+[.,:;]/, ". ")
|
|
217
|
+
body = body.gsub(/\.\s*\./, ". ")
|
|
218
|
+
body = body.gsub(/:\s*\.\s*/, ": ")
|
|
219
|
+
body = body.gsub(/\(\s*\)/, "")
|
|
220
|
+
body = body.gsub(/ +/, " ").gsub(" ,", ",")
|
|
221
|
+
terminator = unbalanced_close(body, @terminator)
|
|
222
|
+
return body if terminator.strip.empty?
|
|
223
|
+
if terminator !~ /[<\w]/ && body.rstrip.end_with?(terminator.strip)
|
|
224
|
+
return body
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
"#{body}#{terminator}"
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
# The terminator's closing parens stand only when the body
|
|
231
|
+
# opened them (their "(" died with an absent element)
|
|
232
|
+
def unbalanced_close(body, terminator)
|
|
233
|
+
return terminator unless terminator.start_with?(")")
|
|
234
|
+
|
|
235
|
+
open = body.count("(") - body.count(")")
|
|
236
|
+
return terminator.sub(/\A\)+/) { |closes| closes[0, open] } if
|
|
237
|
+
open.positive?
|
|
238
|
+
|
|
239
|
+
terminator.sub(/\A\)+/, "")
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
def normalise(slot)
|
|
243
|
+
slot.to_s.delete("_").downcase
|
|
244
|
+
end
|
|
245
|
+
end
|
|
246
|
+
end
|
|
247
|
+
end
|
|
248
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Relaton
|
|
4
|
+
module Render
|
|
5
|
+
# Citation rendering per the ISO 690 architecture: a style instance
|
|
6
|
+
# places the inventory's data elements (clause 7) in each resource
|
|
7
|
+
# kind's order (clause 8); the engine is a template evaluator over a
|
|
8
|
+
# field resolver and holds no styles, no vocabularies, no i18n.
|
|
9
|
+
# The v1 compatibility facade (relaton-render#90): isodoc's
|
|
10
|
+
# render-isodoc subclasses Relaton::Render::General.
|
|
11
|
+
autoload :General, "relaton/render/general"
|
|
12
|
+
|
|
13
|
+
module Iso690
|
|
14
|
+
autoload :Element, "relaton/render/iso690/element"
|
|
15
|
+
autoload :Elements, "relaton/render/iso690/elements"
|
|
16
|
+
autoload :Fields, "relaton/render/iso690/fields"
|
|
17
|
+
autoload :I18n, "relaton/render/iso690/i18n"
|
|
18
|
+
autoload :IndexRenderer, "relaton/render/iso690/index_renderer"
|
|
19
|
+
autoload :IdentifierKinds, "relaton/render/iso690/identifier_kinds"
|
|
20
|
+
autoload :Kinds, "relaton/render/iso690/kinds"
|
|
21
|
+
autoload :Renderer, "relaton/render/iso690/renderer"
|
|
22
|
+
autoload :Style, "relaton/render/iso690/style"
|
|
23
|
+
autoload :Template, "relaton/render/iso690/template"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
data/lib/relaton-render.rb
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
require "relaton/render"
|
|
3
|
-
require "parse/parse"
|
|
4
|
-
require "template/template"
|
|
5
|
-
require "isodoc/i18n"
|
|
1
|
+
# frozen_string_literal: true
|
|
6
2
|
|
|
3
|
+
require "relaton/render/version"
|
|
4
|
+
require "relaton/render/iso690"
|
|
5
|
+
|
|
6
|
+
module Relaton
|
|
7
|
+
module Render
|
|
8
|
+
# A bibliographic item whose style template resolves to nothing: the
|
|
9
|
+
# single-item API raises, the batch API skips
|
|
10
|
+
class Unrenderable < StandardError; end
|
|
11
|
+
|
|
12
|
+
end
|
|
13
|
+
end
|
data/relaton-render.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
lib = File.expand_path("lib", __dir__)
|
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
|
-
require "relaton/version"
|
|
3
|
+
require "relaton/render/version"
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |spec|
|
|
6
6
|
spec.name = "relaton-render"
|
|
@@ -19,17 +19,13 @@ Gem::Specification.new do |spec|
|
|
|
19
19
|
spec.bindir = "exe"
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
21
21
|
spec.require_paths = ["lib"]
|
|
22
|
-
spec.required_ruby_version = Gem::Requirement.new(">=
|
|
22
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 3.3.0")
|
|
23
23
|
|
|
24
|
-
spec.
|
|
25
|
-
spec.add_development_dependency "
|
|
26
|
-
spec.
|
|
27
|
-
spec.
|
|
28
|
-
spec.add_development_dependency "rspec", "~> 3.0"
|
|
29
|
-
spec.add_development_dependency "simplecov"
|
|
30
|
-
|
|
31
|
-
spec.add_dependency "isodoc-i18n"
|
|
32
|
-
spec.add_dependency "liquid", "~> 4"
|
|
24
|
+
spec.add_dependency "htmlentities"
|
|
25
|
+
spec.add_development_dependency "relaton-bib"
|
|
26
|
+
spec.add_dependency "liquid", "~> 5"
|
|
27
|
+
spec.add_dependency "lutaml-model"
|
|
33
28
|
spec.add_dependency "nokogiri"
|
|
34
29
|
spec.add_dependency "twitter_cldr"
|
|
30
|
+
# spec.metadata["rubygems_mfa_required"] = "true"
|
|
35
31
|
end
|
metadata
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: relaton-render
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 3.0.0.pre.alpha.25
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-10-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
14
|
+
name: htmlentities
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: '0'
|
|
20
|
-
type: :
|
|
20
|
+
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
@@ -25,7 +25,7 @@ dependencies:
|
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name:
|
|
28
|
+
name: relaton-bib
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - ">="
|
|
@@ -39,63 +39,21 @@ dependencies:
|
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - "~>"
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0.6'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - "~>"
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0.6'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: rake
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - ">="
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: 12.3.3
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - ">="
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: 12.3.3
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: rspec
|
|
42
|
+
name: liquid
|
|
71
43
|
requirement: !ruby/object:Gem::Requirement
|
|
72
44
|
requirements:
|
|
73
45
|
- - "~>"
|
|
74
46
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '
|
|
76
|
-
type: :
|
|
47
|
+
version: '5'
|
|
48
|
+
type: :runtime
|
|
77
49
|
prerelease: false
|
|
78
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
51
|
requirements:
|
|
80
52
|
- - "~>"
|
|
81
53
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: simplecov
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - ">="
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '0'
|
|
90
|
-
type: :development
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - ">="
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '0'
|
|
54
|
+
version: '5'
|
|
97
55
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
56
|
+
name: lutaml-model
|
|
99
57
|
requirement: !ruby/object:Gem::Requirement
|
|
100
58
|
requirements:
|
|
101
59
|
- - ">="
|
|
@@ -108,20 +66,6 @@ dependencies:
|
|
|
108
66
|
- - ">="
|
|
109
67
|
- !ruby/object:Gem::Version
|
|
110
68
|
version: '0'
|
|
111
|
-
- !ruby/object:Gem::Dependency
|
|
112
|
-
name: liquid
|
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
|
114
|
-
requirements:
|
|
115
|
-
- - "~>"
|
|
116
|
-
- !ruby/object:Gem::Version
|
|
117
|
-
version: '4'
|
|
118
|
-
type: :runtime
|
|
119
|
-
prerelease: false
|
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
-
requirements:
|
|
122
|
-
- - "~>"
|
|
123
|
-
- !ruby/object:Gem::Version
|
|
124
|
-
version: '4'
|
|
125
69
|
- !ruby/object:Gem::Dependency
|
|
126
70
|
name: nokogiri
|
|
127
71
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -158,6 +102,8 @@ extensions: []
|
|
|
158
102
|
extra_rdoc_files: []
|
|
159
103
|
files:
|
|
160
104
|
- ".github/workflows/rake.yml"
|
|
105
|
+
- ".github/workflows/release.yml"
|
|
106
|
+
- ".gitignore"
|
|
161
107
|
- ".hound.yml"
|
|
162
108
|
- ".rubocop.yml"
|
|
163
109
|
- Gemfile
|
|
@@ -167,25 +113,50 @@ files:
|
|
|
167
113
|
- bin/console
|
|
168
114
|
- bin/rspec
|
|
169
115
|
- bin/setup
|
|
170
|
-
-
|
|
171
|
-
- lib/isodoc-yaml/i18n-de.yaml
|
|
172
|
-
- lib/isodoc-yaml/i18n-en.yaml
|
|
173
|
-
- lib/isodoc-yaml/i18n-es.yaml
|
|
174
|
-
- lib/isodoc-yaml/i18n-fr.yaml
|
|
175
|
-
- lib/isodoc-yaml/i18n-ru.yaml
|
|
176
|
-
- lib/isodoc-yaml/i18n-zh-Hans.yaml
|
|
177
|
-
- lib/isodoc/i18n.rb
|
|
178
|
-
- lib/parse/parse.rb
|
|
179
|
-
- lib/parse/parse_contributors.rb
|
|
180
|
-
- lib/parse/parse_extract.rb
|
|
116
|
+
- docs/citation-style-pack.adoc
|
|
181
117
|
- lib/relaton-render.rb
|
|
182
|
-
- lib/relaton/
|
|
183
|
-
- lib/relaton/render.rb
|
|
184
|
-
- lib/relaton/
|
|
185
|
-
- lib/relaton/
|
|
186
|
-
- lib/relaton/
|
|
187
|
-
- lib/
|
|
188
|
-
- lib/
|
|
118
|
+
- lib/relaton/render/general.rb
|
|
119
|
+
- lib/relaton/render/iso690.rb
|
|
120
|
+
- lib/relaton/render/iso690/element.rb
|
|
121
|
+
- lib/relaton/render/iso690/elements.rb
|
|
122
|
+
- lib/relaton/render/iso690/elements/access.rb
|
|
123
|
+
- lib/relaton/render/iso690/elements/authorizer.rb
|
|
124
|
+
- lib/relaton/render/iso690/elements/citeid.rb
|
|
125
|
+
- lib/relaton/render/iso690/elements/component_part.rb
|
|
126
|
+
- lib/relaton/render/iso690/elements/creator.rb
|
|
127
|
+
- lib/relaton/render/iso690/elements/edition.rb
|
|
128
|
+
- lib/relaton/render/iso690/elements/extent.rb
|
|
129
|
+
- lib/relaton/render/iso690/elements/identifier.rb
|
|
130
|
+
- lib/relaton/render/iso690/elements/location.rb
|
|
131
|
+
- lib/relaton/render/iso690/elements/medium.rb
|
|
132
|
+
- lib/relaton/render/iso690/elements/numeration.rb
|
|
133
|
+
- lib/relaton/render/iso690/elements/production.rb
|
|
134
|
+
- lib/relaton/render/iso690/elements/pub_date.rb
|
|
135
|
+
- lib/relaton/render/iso690/elements/series.rb
|
|
136
|
+
- lib/relaton/render/iso690/elements/size.rb
|
|
137
|
+
- lib/relaton/render/iso690/elements/status.rb
|
|
138
|
+
- lib/relaton/render/iso690/elements/stddoc.rb
|
|
139
|
+
- lib/relaton/render/iso690/elements/title.rb
|
|
140
|
+
- lib/relaton/render/iso690/elements/updated.rb
|
|
141
|
+
- lib/relaton/render/iso690/fields.rb
|
|
142
|
+
- lib/relaton/render/iso690/i18n.rb
|
|
143
|
+
- lib/relaton/render/iso690/i18n/en.yml
|
|
144
|
+
- lib/relaton/render/iso690/i18n/fr.yml
|
|
145
|
+
- lib/relaton/render/iso690/i18n/ja.yml
|
|
146
|
+
- lib/relaton/render/iso690/identifier_kinds.rb
|
|
147
|
+
- lib/relaton/render/iso690/index_renderer.rb
|
|
148
|
+
- lib/relaton/render/iso690/kinds.rb
|
|
149
|
+
- lib/relaton/render/iso690/renderer.rb
|
|
150
|
+
- lib/relaton/render/iso690/style.rb
|
|
151
|
+
- lib/relaton/render/iso690/style/locale.rb
|
|
152
|
+
- lib/relaton/render/iso690/style/name_form.rb
|
|
153
|
+
- lib/relaton/render/iso690/style/scheme.rb
|
|
154
|
+
- lib/relaton/render/iso690/style/sort_rule.rb
|
|
155
|
+
- lib/relaton/render/iso690/style/template_map.rb
|
|
156
|
+
- lib/relaton/render/iso690/style/type_template.rb
|
|
157
|
+
- lib/relaton/render/iso690/styles/author-date.yml
|
|
158
|
+
- lib/relaton/render/iso690/template.rb
|
|
159
|
+
- lib/relaton/render/version.rb
|
|
189
160
|
- relaton-render.gemspec
|
|
190
161
|
homepage: https://github.com/relaton/relaton-render
|
|
191
162
|
licenses:
|
|
@@ -199,14 +170,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
199
170
|
requirements:
|
|
200
171
|
- - ">="
|
|
201
172
|
- !ruby/object:Gem::Version
|
|
202
|
-
version:
|
|
173
|
+
version: 3.3.0
|
|
203
174
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
204
175
|
requirements:
|
|
205
176
|
- - ">="
|
|
206
177
|
- !ruby/object:Gem::Version
|
|
207
178
|
version: '0'
|
|
208
179
|
requirements: []
|
|
209
|
-
rubygems_version: 3.
|
|
180
|
+
rubygems_version: 3.5.22
|
|
210
181
|
signing_key:
|
|
211
182
|
specification_version: 4
|
|
212
183
|
summary: Rendering of ISO 690 XML
|
data/lib/isodoc/i18n.rb
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
require "yaml"
|
|
2
|
-
require "isodoc-i18n"
|
|
3
|
-
|
|
4
|
-
module IsoDoc
|
|
5
|
-
class I18n
|
|
6
|
-
def load_yaml1(lang, script)
|
|
7
|
-
case lang
|
|
8
|
-
when "en", "fr", "ru", "de", "es", "ar"
|
|
9
|
-
load_yaml2(lang)
|
|
10
|
-
when "zh"
|
|
11
|
-
if script == "Hans" then load_yaml2("zh-Hans")
|
|
12
|
-
else load_yaml2("en")
|
|
13
|
-
end
|
|
14
|
-
else
|
|
15
|
-
load_yaml2("en")
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def load_yaml2(str)
|
|
20
|
-
YAML.load_file(File.join(File.dirname(__FILE__),
|
|
21
|
-
"../isodoc-yaml/i18n-#{str}.yaml"))
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
in: in
|
|
2
|
-
at: at
|
|
3
|
-
and: and
|
|
4
|
-
updated: updated
|
|
5
|
-
viewed: viewed
|
|
6
|
-
version: version
|
|
7
|
-
date:
|
|
8
|
-
month_year: to_long_s
|
|
9
|
-
day_month_year: to_long_s
|
|
10
|
-
date_time: to_long_s
|
|
11
|
-
edition_number: ["OrdinalRules", "digits-ordinal"]
|
|
12
|
-
edition: "% edition"
|
|
13
|
-
editor:
|
|
14
|
-
sg: ed.
|
|
15
|
-
pl: eds.
|
|
16
|
-
extent:
|
|
17
|
-
page:
|
|
18
|
-
sg: p.
|
|
19
|
-
pl: pp.
|
|
20
|
-
volume:
|
|
21
|
-
sg: vol.
|
|
22
|
-
pl: vols.
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
in: в
|
|
2
|
-
at: в
|
|
3
|
-
and: и
|
|
4
|
-
updated: обновлен
|
|
5
|
-
viewed: просмотрено
|
|
6
|
-
version: версия
|
|
7
|
-
date:
|
|
8
|
-
month_year: to_long_s
|
|
9
|
-
day_month_year: to_long_s
|
|
10
|
-
date_time: to_long_s
|
|
11
|
-
edition_number: ["SpelloutRules", "spellout-ordinal-neuter"]
|
|
12
|
-
edition: "% издание"
|
|
13
|
-
editor:
|
|
14
|
-
sg: изд.
|
|
15
|
-
pl: изд.
|
|
16
|
-
extent:
|
|
17
|
-
page:
|
|
18
|
-
sg: стр.
|
|
19
|
-
pl: стр.
|
|
20
|
-
volume:
|
|
21
|
-
sg: т.
|
|
22
|
-
pl: тт.
|
|
23
|
-
|