relaton 3.0.6 → 3.0.8

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.
Files changed (134) hide show
  1. checksums.yaml +4 -4
  2. data/bin/relaton +20 -0
  3. data/lib/relaton/bib/model/docidentifier.rb +17 -2
  4. data/lib/relaton/bibcollection.rb +146 -0
  5. data/lib/relaton/bibdata.rb +92 -0
  6. data/lib/relaton/bipm/data_outcomes_parser.rb +6 -1
  7. data/lib/relaton/cli/base_convertor.rb +134 -0
  8. data/lib/relaton/cli/command.rb +390 -0
  9. data/lib/relaton/cli/data_fetcher.rb +20 -0
  10. data/lib/relaton/cli/frontend/dist/404.html +18 -0
  11. data/lib/relaton/cli/frontend/dist/app.iife.js +1 -0
  12. data/lib/relaton/cli/frontend/dist/style.css +3 -0
  13. data/lib/relaton/cli/frontend/index.html +14 -0
  14. data/lib/relaton/cli/frontend/package-lock.json +2945 -0
  15. data/lib/relaton/cli/frontend/package.json +29 -0
  16. data/lib/relaton/cli/frontend/public/404.html +18 -0
  17. data/lib/relaton/cli/frontend/src/App.test.ts +501 -0
  18. data/lib/relaton/cli/frontend/src/App.vue +506 -0
  19. data/lib/relaton/cli/frontend/src/app.ts +90 -0
  20. data/lib/relaton/cli/frontend/src/components/DocumentDetail.test.ts +142 -0
  21. data/lib/relaton/cli/frontend/src/components/DocumentDetail.vue +228 -0
  22. data/lib/relaton/cli/frontend/src/components/DocumentRow.vue +88 -0
  23. data/lib/relaton/cli/frontend/src/components/Icon.test.ts +44 -0
  24. data/lib/relaton/cli/frontend/src/components/Icon.vue +55 -0
  25. data/lib/relaton/cli/frontend/src/components/Pagination.vue +26 -0
  26. data/lib/relaton/cli/frontend/src/dev/main.ts +100 -0
  27. data/lib/relaton/cli/frontend/src/dev/sample-data.json +71 -0
  28. data/lib/relaton/cli/frontend/src/lib/filter.test.ts +88 -0
  29. data/lib/relaton/cli/frontend/src/lib/filter.ts +95 -0
  30. data/lib/relaton/cli/frontend/src/lib/hydrate.test.ts +102 -0
  31. data/lib/relaton/cli/frontend/src/lib/hydrate.ts +55 -0
  32. data/lib/relaton/cli/frontend/src/lib/shards.test.ts +319 -0
  33. data/lib/relaton/cli/frontend/src/lib/shards.ts +183 -0
  34. data/lib/relaton/cli/frontend/src/lib/types.ts +148 -0
  35. data/lib/relaton/cli/frontend/src/lib/url.test.ts +151 -0
  36. data/lib/relaton/cli/frontend/src/lib/url.ts +111 -0
  37. data/lib/relaton/cli/frontend/src/shims-vue.d.ts +5 -0
  38. data/lib/relaton/cli/frontend/src/styles/index.css +27 -0
  39. data/lib/relaton/cli/frontend/src/test/fetch.ts +58 -0
  40. data/lib/relaton/cli/frontend/tsconfig.json +20 -0
  41. data/lib/relaton/cli/frontend/vite.config.ts +42 -0
  42. data/lib/relaton/cli/frontend/vitest.config.ts +11 -0
  43. data/lib/relaton/cli/frontend_assets.rb +58 -0
  44. data/lib/relaton/cli/full_text_search.rb +98 -0
  45. data/lib/relaton/cli/i18n.yaml +1 -0
  46. data/lib/relaton/cli/index_item_normalizer.rb +380 -0
  47. data/lib/relaton/cli/index_site_generator.rb +1015 -0
  48. data/lib/relaton/cli/relaton_file.rb +290 -0
  49. data/lib/relaton/cli/subcommand_collection.rb +263 -0
  50. data/lib/relaton/cli/subcommand_db.rb +81 -0
  51. data/lib/relaton/cli/templates/_document.liquid +111 -0
  52. data/lib/relaton/cli/templates/_index.liquid +61 -0
  53. data/lib/relaton/cli/templates/index/page.liquid +20 -0
  54. data/lib/relaton/cli/templates/index-style.css +1017 -0
  55. data/lib/relaton/cli/util.rb +8 -0
  56. data/lib/relaton/cli/version.rb +11 -0
  57. data/lib/relaton/cli/xml_convertor.rb +47 -0
  58. data/lib/relaton/cli/xml_to_html_renderer.rb +117 -0
  59. data/lib/relaton/cli/yaml_convertor.rb +102 -0
  60. data/lib/relaton/cli.rb +113 -0
  61. data/lib/relaton/doi/CLAUDE.md +1 -1
  62. data/lib/relaton/element_finder.rb +29 -0
  63. data/lib/relaton/gb/CLAUDE.md +1 -1
  64. data/lib/relaton/ietf/CLAUDE.md +1 -1
  65. data/lib/relaton/iho/CLAUDE.md +3 -3
  66. data/lib/relaton/iho/bibliography.rb +41 -27
  67. data/lib/relaton/iho/processor.rb +3 -2
  68. data/lib/relaton/nist/CLAUDE.md +11 -1
  69. data/lib/relaton/nist/README.adoc +7 -1
  70. data/lib/relaton/nist/hit_collection.rb +25 -1
  71. data/lib/relaton/nist/mods_parser.rb +32 -8
  72. data/lib/relaton/nist/pubs_export.rb +69 -11
  73. data/lib/relaton/ogc/CLAUDE.md +1 -1
  74. data/lib/relaton/omg/CLAUDE.md +1 -1
  75. data/lib/relaton/plateau/CLAUDE.md +1 -1
  76. data/lib/relaton/render/general.rb +319 -0
  77. data/lib/relaton/render/iso690/csl_import.rb +129 -0
  78. data/lib/relaton/render/iso690/element.rb +153 -0
  79. data/lib/relaton/render/iso690/elements/access.rb +44 -0
  80. data/lib/relaton/render/iso690/elements/authorizer.rb +45 -0
  81. data/lib/relaton/render/iso690/elements/citeid.rb +39 -0
  82. data/lib/relaton/render/iso690/elements/component_part.rb +97 -0
  83. data/lib/relaton/render/iso690/elements/creator.rb +267 -0
  84. data/lib/relaton/render/iso690/elements/edition.rb +97 -0
  85. data/lib/relaton/render/iso690/elements/extent.rb +71 -0
  86. data/lib/relaton/render/iso690/elements/identifier.rb +46 -0
  87. data/lib/relaton/render/iso690/elements/location.rb +73 -0
  88. data/lib/relaton/render/iso690/elements/medium.rb +32 -0
  89. data/lib/relaton/render/iso690/elements/numeration.rb +26 -0
  90. data/lib/relaton/render/iso690/elements/production.rb +111 -0
  91. data/lib/relaton/render/iso690/elements/pub_date.rb +63 -0
  92. data/lib/relaton/render/iso690/elements/series.rb +66 -0
  93. data/lib/relaton/render/iso690/elements/size.rb +45 -0
  94. data/lib/relaton/render/iso690/elements/status.rb +30 -0
  95. data/lib/relaton/render/iso690/elements/stddoc.rb +40 -0
  96. data/lib/relaton/render/iso690/elements/title.rb +56 -0
  97. data/lib/relaton/render/iso690/elements/updated.rb +38 -0
  98. data/lib/relaton/render/iso690/elements.rb +67 -0
  99. data/lib/relaton/render/iso690/fields.rb +142 -0
  100. data/lib/relaton/render/iso690/i18n/en.yml +48 -0
  101. data/lib/relaton/render/iso690/i18n/fr.yml +14 -0
  102. data/lib/relaton/render/iso690/i18n/ja.yml +38 -0
  103. data/lib/relaton/render/iso690/i18n.rb +83 -0
  104. data/lib/relaton/render/iso690/identifier_kinds.rb +29 -0
  105. data/lib/relaton/render/iso690/index_renderer.rb +57 -0
  106. data/lib/relaton/render/iso690/kinds.rb +53 -0
  107. data/lib/relaton/render/iso690/renderer.rb +150 -0
  108. data/lib/relaton/render/iso690/rules/bipm.rb +186 -0
  109. data/lib/relaton/render/iso690/rules/jis.rb +103 -0
  110. data/lib/relaton/render/iso690/rules/nist.rb +384 -0
  111. data/lib/relaton/render/iso690/rules.rb +227 -0
  112. data/lib/relaton/render/iso690/style/locale.rb +59 -0
  113. data/lib/relaton/render/iso690/style/name_form.rb +87 -0
  114. data/lib/relaton/render/iso690/style/scheme.rb +33 -0
  115. data/lib/relaton/render/iso690/style/sort_rule.rb +25 -0
  116. data/lib/relaton/render/iso690/style/template_map.rb +40 -0
  117. data/lib/relaton/render/iso690/style/type_template.rb +45 -0
  118. data/lib/relaton/render/iso690/style.rb +227 -0
  119. data/lib/relaton/render/iso690/styles/apa.yml +45 -0
  120. data/lib/relaton/render/iso690/styles/author-date.yml +31 -0
  121. data/lib/relaton/render/iso690/styles/chicago.yml +49 -0
  122. data/lib/relaton/render/iso690/styles/ieee-sa.yml +45 -0
  123. data/lib/relaton/render/iso690/styles/jis-en.yml +68 -0
  124. data/lib/relaton/render/iso690/styles/jis-ja.yml +67 -0
  125. data/lib/relaton/render/iso690/styles/lncs.yml +54 -0
  126. data/lib/relaton/render/iso690/styles/mla.yml +56 -0
  127. data/lib/relaton/render/iso690/template.rb +248 -0
  128. data/lib/relaton/render/iso690.rb +28 -0
  129. data/lib/relaton/render/version.rb +5 -0
  130. data/lib/relaton/un/CLAUDE.md +1 -1
  131. data/lib/relaton/version.rb +1 -1
  132. data/lib/relaton-cli.rb +17 -0
  133. data/lib/relaton-render.rb +13 -0
  134. metadata +192 -21
@@ -0,0 +1,227 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "lutaml/model"
4
+
5
+ module Relaton
6
+ module Render
7
+ module Iso690
8
+ # A citation style as an instance of the relaton-models CitationStyle
9
+ # model: the citation scheme (name form, localized strings), the
10
+ # citation and reference templates, and per-type template variants.
11
+ # All rendering knowledge is data; the engine holds no styles, no
12
+ # vocabularies, no localized strings.
13
+ class Style < Lutaml::Model::Serializable
14
+ autoload :NameForm, "relaton/render/iso690/style/name_form"
15
+ autoload :Locale, "relaton/render/iso690/style/locale"
16
+ autoload :Scheme, "relaton/render/iso690/style/scheme"
17
+ autoload :TemplateMap, "relaton/render/iso690/style/template_map"
18
+ autoload :SortRule, "relaton/render/iso690/style/sort_rule"
19
+ autoload :TypeTemplate, "relaton/render/iso690/style/type_template"
20
+
21
+ attribute :name, :string
22
+ # The citation-style family the pack belongs to (iso690 | lncs |
23
+ # chicago | ieee-sa | apa): selects the presentation-of-models
24
+ # conventions the templates address
25
+ attribute :family, :string, default: "iso690"
26
+ # A named pack this one deltas over; resolved at load with the
27
+ # documented merge semantics (#merge_delta)
28
+ attribute :extends, :string
29
+ # Engine capabilities the pack addresses; a resolver that lacks
30
+ # one fails loudly instead of mis-rendering
31
+ attribute :requires, :string, collection: true, default: []
32
+ # Pack-declared taxonomy: wire type -> kind (aliasing or
33
+ # fallthrough), consulted before the engine's Kinds table
34
+ attribute :types, :hash, default: -> { {} }
35
+ # Presentation-of-models selections: slot -> named engine rule
36
+ attribute :rules, :hash, default: -> { {} }
37
+ attribute :scheme, Scheme, default: -> { Scheme.new }
38
+ attribute :templates, TemplateMap, default: -> { TemplateMap.new }
39
+ attribute :per_type, TypeTemplate, collection: true, default: []
40
+ attribute :sort_key, SortRule, collection: true, default: []
41
+
42
+ key_value do
43
+ map "name", to: :name
44
+ map "family", to: :family
45
+ map "extends", to: :extends
46
+ map "requires", to: :requires
47
+ map "types", to: :types
48
+ map "rules", to: :rules
49
+ map "scheme", to: :scheme
50
+ map "templates", to: :templates
51
+ map "perType", to: :per_type
52
+ map "sortKey", to: :sort_key
53
+ end
54
+
55
+ # The index sort rules; creator then date when the style declares
56
+ # none (the name-and-date default).
57
+ def sort_keys
58
+ return sort_key unless sort_key.empty?
59
+
60
+ [SortRule.new(attribute: "creator"), SortRule.new(attribute: "date")]
61
+ end
62
+
63
+ # The ISO 690 kind of an item: the vocabulary's mapping, or
64
+ # the style's declared kind for types the vocabulary does not
65
+ # map (a flavor whose untyped items are not reports)
66
+ def kind_for(type)
67
+ declared_type = types[type.to_s]
68
+ unless declared_type.to_s.empty?
69
+ return Kinds.mapped?(declared_type) ? Kinds.kind_for(declared_type) :
70
+ declared_type
71
+ end
72
+
73
+ return Kinds.kind_for(type) if Kinds.mapped?(type)
74
+
75
+ declared = scheme.default_kind.to_s
76
+ declared.empty? ? Kinds.kind_for(type) : declared
77
+ end
78
+
79
+ # Per-type template selection is a data lookup; unmatched types
80
+ # fall back to the general reference template. When a kind has
81
+ # home-flagged variants, the split is resolved by whether the item
82
+ # carries the scheme's home document identifier.
83
+ def template_for(type, home: nil)
84
+ candidates = per_type.select { |t| t.type == type.to_s }
85
+ if candidates.size > 1 && !home.nil?
86
+ candidates = candidates.select { |t| (t.home || false) == home }
87
+ end
88
+ candidates.first&.template || templates.reference
89
+ end
90
+
91
+ def type_template_for(type)
92
+ per_type.find { |t| t.type == type.to_s }
93
+ end
94
+
95
+ # The home split applies to the short cite as it does to the
96
+ # reference template (a home standard's short cite is not an
97
+ # external standard's)
98
+ def short_template_for(type, home: nil)
99
+ candidates = per_type.select { |t| t.type == type.to_s }
100
+ if candidates.size > 1 && !home.nil?
101
+ candidates = candidates.select { |t| (t.home || false) == home }
102
+ end
103
+ candidates.filter_map(&:short).first
104
+ end
105
+
106
+ # The absent-slot replacement text declared for a type, when any
107
+ def fallback_for(type, slot)
108
+ type_template_for(type)&.fallbacks&.[](slot.to_s)
109
+ end
110
+
111
+ def title_form_for(type)
112
+ per_type.lazy.select { |t| t.type == type.to_s }
113
+ .find { |t| t.title && !t.title.empty? }&.title
114
+ end
115
+
116
+ # First-creator name form: the style's declared name template with
117
+ # the surname upcased, per the name-and-date convention.
118
+ def render_name(surname:, given:)
119
+ shown = scheme.name_form.surname_upcase ? surname.upcase : surname
120
+ Template.new(templates.name).evaluate(
121
+ "surname" => Template::Field[!shown.empty?, shown],
122
+ "givennames" => Template::Field[!given.empty?, given],
123
+ )
124
+ end
125
+
126
+ # The documented delta merge: perType entries merge per type
127
+ # key (a delta re-declaring `article` never drops the base's
128
+ # `monograph`); hash sections merge per key; scalars, templates
129
+ # and rule selections replace; sortKey and requires union.
130
+ # Deterministic and engine-portable.
131
+ def merge_delta(base)
132
+ merged_per_type = base.per_type.dup
133
+ per_type.each do |delta|
134
+ index = merged_per_type.find_index do |b|
135
+ b.type == delta.type && (b.home || false) == (delta.home || false)
136
+ end
137
+ index ? merged_per_type[index] = delta : merged_per_type << delta
138
+ end
139
+ self.per_type = merged_per_type
140
+ self.types = base.types.merge(types)
141
+ self.rules = base.rules.merge(rules)
142
+ merge_scheme(base)
143
+ merge_templates(base)
144
+ self.sort_key = (base.sort_key + sort_key).uniq
145
+ self.requires = (base.requires + requires).uniq
146
+ self
147
+ end
148
+
149
+ private
150
+
151
+ def merge_scheme(base)
152
+ fresh = NameForm.new
153
+ NameForm.attributes.each_key do |attr|
154
+ val = scheme.name_form.send(attr)
155
+ next unless val == fresh.send(attr)
156
+
157
+ base_val = base.scheme.name_form.send(attr)
158
+ scheme.name_form.send("#{attr}=", base_val) if
159
+ base_val != fresh.send(attr)
160
+ end
161
+
162
+ scheme.system = base.scheme.system if scheme.system.to_s.empty?
163
+ scheme.short_from_reference = base.scheme.short_from_reference unless
164
+ scheme.short_from_reference
165
+ scheme.home_docid_type = base.scheme.home_docid_type if
166
+ Array(scheme.home_docid_type).empty?
167
+ scheme.default_kind = base.scheme.default_kind if
168
+ scheme.default_kind.to_s.empty?
169
+
170
+ locale = scheme.locale
171
+ base_locale = base.scheme.locale
172
+ locale.conj ||= base_locale.conj
173
+ locale.others ||= base_locale.others
174
+ locale.no_date ||= base_locale.no_date
175
+ locale.no_author ||= base_locale.no_author
176
+ locale.in_str ||= base_locale.in_str
177
+ locale.at ||= base_locale.at
178
+ locale.available_at ||= base_locale.available_at
179
+ # delta labels win per key; the base's label map only fills
180
+ # gaps. Hash#merge! yields |key, receiver, other|, so the
181
+ # delta value is the second argument.
182
+ locale.labels.merge!(base_locale.label_map) { |_k, delta, _base| delta }
183
+ # a delta's named attributes assert over the inherited labels
184
+ locale.named_label_map.each_key { |k| locale.labels.delete(k) }
185
+ locale.punct = (base_locale.punct || {}).merge(locale.punct || {})
186
+ end
187
+
188
+ def merge_templates(base)
189
+ fresh = TemplateMap.new
190
+ TemplateMap.attributes.each_key do |attr|
191
+ val = templates.send(attr)
192
+ base_val = base.templates.send(attr)
193
+ next unless val == fresh.send(attr) && base_val != fresh.send(attr)
194
+
195
+ templates.send("#{attr}=", base_val)
196
+ end
197
+ end
198
+
199
+ class << self
200
+ def load(name_or_path, seen = [])
201
+ path = style_path(name_or_path) or
202
+ raise ArgumentError, "unknown style #{name_or_path}"
203
+ style = from_yaml(File.read(path))
204
+ return style if style.extends.to_s.empty?
205
+
206
+ style.extends.split(/\s+/).each do |base_name|
207
+ raise ArgumentError,
208
+ "circular extends #{base_name}" if seen.include?(base_name)
209
+
210
+ style.merge_delta(load(base_name, seen + [base_name]))
211
+ end
212
+ style
213
+ end
214
+
215
+ private
216
+
217
+ def style_path(name)
218
+ file = File.join(__dir__, "styles", "#{name}.yml")
219
+ return file if File.file?(file)
220
+
221
+ name if name.is_a?(String) && File.file?(name)
222
+ end
223
+ end
224
+ end
225
+ end
226
+ end
227
+ end
@@ -0,0 +1,45 @@
1
+ # American Psychological Association (7th ed.) reference forms: all
2
+ # author names invert with initials ("Author, A. B."), the date
3
+ # follows the authors in parentheses, article titles take no marks
4
+ # (sentence case is the author's), and only book titles and journal
5
+ # names carry italics. The reference list joins with a comma and ampersand.
6
+ name: "APA (7th edition) references"
7
+ family: apa
8
+ scheme:
9
+ system: name-date
10
+ nameForm:
11
+ initials: true
12
+ initialsSeparator: " "
13
+ initialsPeriod: true
14
+ invertedAll: true
15
+ givenNameFirst: false
16
+ editorsMarked: false
17
+ surnameUpcase: false
18
+ orgUpcase: false
19
+ subsequentSurnameUpcase: false
20
+ locale:
21
+ "in": "In"
22
+ labels:
23
+ "and": "&"
24
+ oxford_comma: ","
25
+ templates:
26
+ titleOpen: ""
27
+ titleClose: ""
28
+ citation: "{{surname}}, {{date}}"
29
+ reference: "{{creator}} ({{date}}). {{title}}. {{series}}. {{production}}. {{extent}}"
30
+ name: "{{surname}}, {{givenNames}}"
31
+ identifierMode: all
32
+ perType:
33
+ - type: report
34
+ home: true
35
+ template: "{{title}}"
36
+ - type: report
37
+ template: "{{identifier}}. ({{date}}). {{title}}. {{production}}."
38
+ - type: monograph
39
+ title: "<em>{{title}}</em>"
40
+ template: "{{creator}} ({{date}}). {{title}}. {{production}}."
41
+ - type: component_part
42
+ template: "{{creator}} ({{date}}). {{title}}. {{componentpart}} ({{extent}}). {{production}}."
43
+ - type: continuing
44
+ series: "<em>{{seriestitle}}, {{serienumber}}</em>"
45
+ template: "{{creator}} ({{date}}). {{title}}. {{series}} {{extent}}. {{location}}"
@@ -0,0 +1,31 @@
1
+ # ISO 690 name-and-date citation style, an instance of the relaton-models
2
+ # CitationStyle model. Templates place the ISO 690 clause 7 data elements
3
+ # ({{creator}}, {{title}}, ...) in each resource kind's clause 8 order; an
4
+ # absent element takes its trailing punctuation with it. A new style is a
5
+ # YAML instance — the engine holds no styles.
6
+ name: "ISO 690 (name and date)"
7
+ scheme:
8
+ system: name-date
9
+ nameForm:
10
+ initials: false
11
+ givenNameFirst: false
12
+ # ISO 690 marks an editor list's role ("(éd.)") also when the list
13
+ # holds a single editor; flavors opt out per their own style
14
+ loneEditorMarked: true
15
+ templates:
16
+ titleOpen: "_"
17
+ titleClose: "_"
18
+ citation: "{{surname}}, {{date}}{{disambiguator}}"
19
+ reference: "{{creator}}. {{title}}. {{medium}}. {{edition}}. {{series}}. {{production}}, {{date}}. {{identifier}}. {{location}}."
20
+ name: "{{surname}}, {{givenNames}}"
21
+ perType:
22
+ - type: monograph
23
+ template: "{{creator}}. {{title}}. {{edition}}. {{series}}. {{production}}, {{date}}. {{identifier}}. {{location}}."
24
+ - type: report
25
+ template: "{{creator}}. {{title}}. {{numeration}}. {{edition}}. {{series}}. {{production}}, {{date}}. {{identifier}}. {{location}}."
26
+ - type: patent
27
+ template: "{{creator}}. {{title}}. {{identifier}}. {{date}}."
28
+ - type: continuing
29
+ template: "{{creator}}. {{title}}. {{componentPart}}. {{medium}}. {{edition}}. {{production}}, {{date}}. {{numeration}}. {{identifier}}. {{location}}."
30
+ - type: online
31
+ template: "{{creator}}. {{title}}. {{date}}. {{identifier}}. {{location}}."
@@ -0,0 +1,49 @@
1
+ # Chicago Manual of Style (17th ed.), bibliography forms: the notes
2
+ # system's reference list. Only the first author name inverts ("Peck,
3
+ # R. B., W. E. Hanson, and T. H. Thornburn"), article titles carry
4
+ # quotation marks, book titles are set in italics, and production runs
5
+ # "Place: Publisher".
6
+ name: "Chicago Manual of Style (bibliography)"
7
+ family: chicago
8
+ requires:
9
+ - extent_units
10
+ scheme:
11
+ system: name-date
12
+ nameForm:
13
+ initials: false
14
+ initialsSeparator: " "
15
+ initialsPeriod: true
16
+ invertedAll: false
17
+ givenNameFirst: false
18
+ editorsMarked: true
19
+ loneEditorMarked: true
20
+ surnameUpcase: false
21
+ subsequentSurnameUpcase: true
22
+ orgUpcase: false
23
+ locale:
24
+ "in": "in"
25
+ labels:
26
+ "and": "and"
27
+ oxford_comma: ","
28
+ series_no: "no."
29
+ templates:
30
+ titleOpen: "\""
31
+ titleClose: "\""
32
+ citation: "{{surname}}, {{date}}"
33
+ reference: "{{creator}}. {{title}}. {{edition}}. {{series}}. {{production}}, {{date}}. {{extent}}."
34
+ name: "{{surname}}, {{givenNames}}"
35
+ identifierMode: all
36
+ perType:
37
+ - type: report
38
+ home: true
39
+ template: "{{title}}"
40
+ - type: report
41
+ template: "{{creator}}. {{title}}. {{edition}}. {{production}}, {{date}}."
42
+ - type: monograph
43
+ title: "<em>{{title}}</em>"
44
+ template: "{{creator}}. {{title}}. {{edition}}. {{production}}, {{date}}. {{extent}}."
45
+ - type: component_part
46
+ template: "{{creator}}. \"{{title}}.\" {{componentpart}}. {{production}}, {{date}}. {{extent}}."
47
+ - type: continuing
48
+ series: "<em>{{seriestitle}}</em>"
49
+ template: "{{creator}}. \"{{title}}.\" {{series}} {{extent}} ({{date}}). {{location}}"
@@ -0,0 +1,45 @@
1
+ # IEEE-SA Standards Style Manual bibliography forms (clause 17): a
2
+ # standard's entry is its designation and title, nothing else - no
3
+ # authors, no publisher, no place; articles and books follow the
4
+ # Chicago-derived forms, with only the first author name inverting and
5
+ # the in-text citation carrying the designation and the [B#] number.
6
+ name: "IEEE-SA standards bibliography"
7
+ family: ieee-sa
8
+ scheme:
9
+ system: designation
10
+ nameForm:
11
+ initials: true
12
+ initialsSeparator: " "
13
+ initialsPeriod: true
14
+ invertedAll: false
15
+ givenNameFirst: false
16
+ editorsMarked: false
17
+ surnameUpcase: false
18
+ subsequentSurnameUpcase: false
19
+ locale:
20
+ labels:
21
+ "and": "and"
22
+ oxford_comma: ","
23
+ templates:
24
+ titleOpen: ""
25
+ titleClose: ""
26
+ citation: "{{identifier}}"
27
+ reference: "{{creator}}, {{title}}. {{series}}. {{extent}}. {{date}}."
28
+ name: "{{surname}}, {{givenNames}}"
29
+ identifierMode: first
30
+ perType:
31
+ - type: report
32
+ home: true
33
+ template: "{{title}}"
34
+ - type: report
35
+ template: "{{identifier}}, {{title}}"
36
+ - type: monograph
37
+ title: "<em>{{title}}</em>"
38
+ template: "{{creator}}, {{title}}, {{edition}}. {{production}}, {{date}}, {{extent}}."
39
+ - type: component_part
40
+ title: "\"{{title}},\""
41
+ template: "{{creator}}, {{title}} {{componentpart}}, {{extent}}, {{date}}."
42
+ - type: continuing
43
+ title: "\"{{title}},\""
44
+ series: "<em>{{seriestitle}}</em>"
45
+ template: "{{creator}}, {{title}} {{series}}, {{extent}}, {{date}}."
@@ -0,0 +1,68 @@
1
+ # The metanorma-jis CitationStyle instance, English forms
2
+ # (relaton-render 3.0.0.pre Iso690 engine): the ISO 690 order with the
3
+ # Latin punctuation of the en language pack.
4
+ name: "ISO 690 (JIS, en)"
5
+ scheme:
6
+ system: name-date
7
+ shortFromReference: true
8
+ homeDocidType: []
9
+ nameForm:
10
+ initials: true
11
+ initialsSeparator: ""
12
+ initialsPeriod: true
13
+ surnameUpcase: false
14
+ subsequentSurnameUpcase: false
15
+ invertedAll: true
16
+ completenameUpcase: false
17
+ orgUpcase: false
18
+ editorsMarked: false
19
+ locale:
20
+ availableAt: "Available at:"
21
+ labels:
22
+ "and": "&amp;"
23
+ oxford_comma: ""
24
+ series_no: ""
25
+ templates:
26
+ titleOpen: ""
27
+ titleClose: ""
28
+ identifierMode: first
29
+ citation: "{{surname}} {{date}}"
30
+ uri: "<span class='biburl'><fmt-link target='{{uri}}'>{{uri}}</fmt-link></span>"
31
+ reference: "{{creator}}{{role}}. {{title}}. {{edition}}. ({{series}}). {{production}}. {{date}}. {{size}}"
32
+ name: "{{surname}} {{givenNames}}"
33
+ perType:
34
+ - type: report
35
+ home: true
36
+ short: "<span class='stddocTitle'>{{title}}</span>, {{extent}}"
37
+ template: "{{title}}"
38
+ title: "<span class='stddocTitle'>{{title}}</span>"
39
+ - type: report
40
+ fallbacks:
41
+ date: "n.d"
42
+ template: "{{creator}}. {{title}}. {{edition}}. {{production}}. {{authorizer}}. {{location}}"
43
+ short: "{{creator}}. <span class='stddocTitle'>{{title}}</span>. {{edition}}. {{production}}"
44
+ title: "<span class='stddocTitle'>{{title}}</span>"
45
+ - type: monograph
46
+ noPlace: true
47
+ fallbacks:
48
+ date: "n.d"
49
+ template: "{{creator}}{{role}}. {{title}}. {{edition}}. ({{series}}). {{production}}. {{date}}. {{size}}. {{location}}"
50
+ - type: continuing
51
+ template: "{{title}}. {{date}}"
52
+ - type: online
53
+ fallbacks:
54
+ date: "n.d"
55
+ template: "{{creator}}. {{title}}. {{production}}. {{date}}. {{location}}"
56
+ - type: webdoc
57
+ fallbacks:
58
+ date: "n.d"
59
+ template: "{{creator}}. {{title}}. {{production}}. {{date}}. {{location}}"
60
+ - type: component_part
61
+ noPlace: true
62
+ template: "{{creator}}{{role}}. {{title}}. {{componentpart}}. {{edition}}. ({{series}}). {{production}}. {{date}}. {{extent}}. {{location}}"
63
+ - type: serial_part
64
+ template: "{{creator}}{{role}}. {{title}}. {{series}}. {{date}}, {{extent}}. {{location}}"
65
+ series: "{{seriestitle}} ({{seriesrun}})"
66
+ - type: article
67
+ template: "{{creator}}{{role}}. {{title}}. {{series}}. {{date}}, {{extent}}"
68
+ series: "{{seriestitle}} ({{seriesrun}})"
@@ -0,0 +1,67 @@
1
+ # The metanorma-jis CitationStyle instance, Japanese forms
2
+ # (relaton-render 3.0.0.pre Iso690 engine): the ISO 690 order with the
3
+ # Latin punctuation of the en language pack.
4
+ name: "ISO 690 (JIS, ja)"
5
+ scheme:
6
+ system: name-date
7
+ shortFromReference: true
8
+ homeDocidType: []
9
+ nameForm:
10
+ initials: true
11
+ initialsSeparator: ""
12
+ initialsPeriod: true
13
+ surnameUpcase: false
14
+ subsequentSurnameUpcase: false
15
+ invertedAll: true
16
+ completenameUpcase: false
17
+ orgUpcase: false
18
+ editorsMarked: false
19
+ locale:
20
+ labels:
21
+ "and": ""
22
+ oxford_comma: ""
23
+ series_no: ""
24
+ templates:
25
+ titleOpen: ""
26
+ titleClose: ""
27
+ identifierMode: first
28
+ citation: "{{surname}} {{date}}"
29
+ uri: "<span class='biburl'><fmt-link target='{{uri}}'>{{uri}}</fmt-link></span>"
30
+ reference: "{{creator}}{{role}}。 {{title}}。 {{edition}}。({{series}})。 {{production}}。 {{date}}。 {{size}}"
31
+ name: "{{surname}} {{givenNames}}"
32
+ perType:
33
+ - type: report
34
+ home: true
35
+ short: "<span class='stddocTitle'>{{title}}</span>、 {{extent}}"
36
+ template: "{{title}}"
37
+ title: "<span class='stddocTitle'>{{title}}</span>"
38
+ - type: report
39
+ fallbacks:
40
+ date: "日付なし"
41
+ template: "{{creator}}。 {{title}}。 {{edition}}。 {{production}}。 {{authorizer}}。 {{location}}"
42
+ short: "{{creator}}。 <span class='stddocTitle'>{{title}}</span>。 {{edition}}。 {{production}}"
43
+ title: "<span class='stddocTitle'>{{title}}</span>"
44
+ - type: monograph
45
+ noPlace: true
46
+ fallbacks:
47
+ date: "日付なし"
48
+ template: "{{creator}}{{role}}。 {{title}}。 {{edition}}。({{series}})。 {{production}}。 {{date}}。 {{size}}。 {{location}}"
49
+ - type: continuing
50
+ template: "{{title}}。 {{date}}"
51
+ - type: online
52
+ fallbacks:
53
+ date: "日付なし"
54
+ template: "{{creator}}。 {{title}}。 {{production}}。 {{date}}。 {{location}}"
55
+ - type: webdoc
56
+ fallbacks:
57
+ date: "日付なし"
58
+ template: "{{creator}}。 {{title}}。 {{production}}。 {{date}}。 {{location}}"
59
+ - type: component_part
60
+ noPlace: true
61
+ template: "{{creator}}{{role}}。 {{title}}。 {{componentpart}}。 {{edition}}。({{series}})。 {{production}}。 {{date}}。 {{extent}}。 {{location}}"
62
+ - type: serial_part
63
+ template: "{{creator}}{{role}}。 {{title}}。 {{series}}。 {{date}}、{{extent}}。 {{location}}"
64
+ series: "{{seriestitle}} ({{seriesrun}})"
65
+ - type: article
66
+ template: "{{creator}}{{role}}。 {{title}}。 {{series}}。 {{date}}、{{extent}}"
67
+ series: "{{seriestitle}} ({{seriesrun}})"
@@ -0,0 +1,54 @@
1
+ # Springer LNCS citation style, an instance of the relaton-models
2
+ # CitationStyle model. The LNCS shape: "Author, A.B.: Title. In:
3
+ # Editor, E. (ed.), Proceedings. LNCS 1234, pp. 10-20. Springer,
4
+ # Heidelberg (2010)" - the creator list closes on a colon, the year
5
+ # closes the entry in parentheses, publishers precede places, and a
6
+ # standard with no personal authors leads with the publisher's
7
+ # abbreviation.
8
+ name: "Springer LNCS"
9
+ family: lncs
10
+ requires:
11
+ - production_order
12
+ - extent_units
13
+ scheme:
14
+ system: name-date
15
+ nameForm:
16
+ initials: true
17
+ initialsSeparator: ""
18
+ initialsPeriod: true
19
+ invertedAll: true
20
+ givenNameFirst: false
21
+ editorsMarked: true
22
+ loneEditorMarked: true
23
+ creatorFallback: publisher_abbrev
24
+ surnameUpcase: false
25
+ subsequentSurnameUpcase: false
26
+ locale:
27
+ "in": "In"
28
+ availableAt: ""
29
+ labels:
30
+ "and": ""
31
+ oxford_comma: ""
32
+ series_no: ""
33
+ punct:
34
+ production_order: publisher_first
35
+ production_sep: ", "
36
+ templates:
37
+ titleOpen: ""
38
+ titleClose: ""
39
+ citation: "{{surname}}, {{date}}"
40
+ reference: "{{creator}}: {{title}}. {{series}}. {{production}} {{dategroup}}. {{location}}"
41
+ name: "{{surname}}, {{givenNames}}"
42
+ identifierMode: first
43
+ perType:
44
+ - type: report
45
+ home: true
46
+ template: "{{title}}"
47
+ - type: report
48
+ template: "{{creator}}: {{identifier}}, {{title}}. {{production}} {{dategroup}}."
49
+ - type: monograph
50
+ template: "{{creator}}: {{title}}. {{series}} {{production}} {{dategroup}}"
51
+ - type: component_part
52
+ template: "{{creator}}: {{title}}. {{componentpart}} {{extent}} {{production}} {{dategroup}}"
53
+ - type: continuing
54
+ template: "{{creator}}: {{title}}. {{series}} {{extent}} {{dategroup}}"
@@ -0,0 +1,56 @@
1
+ # MLA Handbook (9th ed.), Works Cited forms: every author after the
2
+ # first renders in natural order ("Dorris, Michael, and Louise
3
+ # Erdrich"), three or more collapse to "et al."; self-contained titles
4
+ # are italic and container/part titles take quotation marks; the date
5
+ # closes the entry before the extent. The in-text citation carries the
6
+ # author alone - MLA has no date in the parenthesis.
7
+ name: "MLA (9th edition) Works Cited"
8
+ family: mla
9
+ requires:
10
+ - extent_units
11
+ scheme:
12
+ system: name-date
13
+ nameForm:
14
+ initials: false
15
+ initialsSeparator: " "
16
+ initialsPeriod: true
17
+ invertedAll: false
18
+ givenNameFirst: false
19
+ editorsMarked: true
20
+ surnameUpcase: false
21
+ subsequentSurnameUpcase: false
22
+ orgUpcase: false
23
+ listStyle: serial
24
+ etalCount: 3
25
+ etalDisplay: 1
26
+ locale:
27
+ "in": "in"
28
+ labels:
29
+ "and": "and"
30
+ oxford_comma: ","
31
+ others: "et al."
32
+ templates:
33
+ titleOpen: "\""
34
+ titleClose: "\""
35
+ citation: "{{surname}}"
36
+ reference: "{{creator}}. {{title}}. {{edition}}. {{series}}. {{production}}, {{date}}. {{extent}}."
37
+ name: "{{surname}}, {{givenNames}}"
38
+ identifierMode: all
39
+ perType:
40
+ - type: report
41
+ title: "<em>{{title}}</em>"
42
+ template: "{{creator}}. {{title}}. {{edition}}. {{production}}, {{date}}."
43
+ - type: monograph
44
+ title: "<em>{{title}}</em>"
45
+ template: "{{creator}}. {{title}}. {{edition}}. {{production}}, {{date}}. {{extent}}."
46
+ - type: component_part
47
+ title: "\"{{title}}\""
48
+ componentpart: "<em>{{componentpart}}</em>"
49
+ template: "{{creator}}. {{title}}. {{componentpart}}, {{production}}, {{date}}. {{extent}}."
50
+ - type: continuing
51
+ title: "\"{{title}}\""
52
+ series: "<em>{{seriestitle}}</em>"
53
+ template: "{{creator}}. {{title}}. {{series}}, {{date}}. {{extent}}."
54
+ sortKey:
55
+ - attribute: creator
56
+ - attribute: date