isodoc 2.4.0 → 2.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/isodoc.gemspec +1 -0
  3. data/lib/isodoc/base_style/all.css +29 -0
  4. data/lib/isodoc/base_style/metanorma_word.css +9 -0
  5. data/lib/isodoc/base_style/metanorma_word.scss +11 -0
  6. data/lib/isodoc/base_style/reset.css +29 -0
  7. data/lib/isodoc/base_style/reset.scss +34 -0
  8. data/lib/isodoc/base_style/rouge.css +39 -0
  9. data/lib/isodoc/base_style/typography.scss +6 -3
  10. data/lib/isodoc/convert.rb +7 -4
  11. data/lib/isodoc/function/blocks.rb +26 -16
  12. data/lib/isodoc/function/inline.rb +17 -17
  13. data/lib/isodoc/function/references.rb +38 -52
  14. data/lib/isodoc/function/table.rb +22 -13
  15. data/lib/isodoc/function/to_word_html.rb +1 -4
  16. data/lib/isodoc/function/utils.rb +5 -1
  17. data/lib/isodoc/html_function/html.rb +13 -34
  18. data/lib/isodoc/html_function/postprocess.rb +14 -1
  19. data/lib/isodoc/html_function/postprocess_cover.rb +6 -9
  20. data/lib/isodoc/metadata.rb +5 -0
  21. data/lib/isodoc/presentation_function/block.rb +15 -46
  22. data/lib/isodoc/presentation_function/refs.rb +75 -3
  23. data/lib/isodoc/presentation_function/sourcecode.rb +114 -0
  24. data/lib/isodoc/presentation_function/terms.rb +29 -37
  25. data/lib/isodoc/presentation_function/xrefs.rb +9 -6
  26. data/lib/isodoc/version.rb +1 -1
  27. data/lib/isodoc/word_function/body.rb +16 -16
  28. data/lib/isodoc/word_function/postprocess.rb +47 -43
  29. data/lib/isodoc/word_function/postprocess_cover.rb +29 -157
  30. data/lib/isodoc/word_function/postprocess_toc.rb +165 -0
  31. data/lib/isodoc/word_function/table.rb +25 -13
  32. data/lib/isodoc/xref/xref_gen.rb +2 -4
  33. metadata +19 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4a7c100c4751a8d8bfe69eeaf31614c74bfeec4c56d188fd0d4a6a16c09d3257
4
- data.tar.gz: '0858086207425a9c38bb6f12fba1a219599c4c7e469aea40e4f29255f152333b'
3
+ metadata.gz: 5f122ad0105340afb41607b8639eb00b7205328f9bddad0a5a3726e9644c912e
4
+ data.tar.gz: 04b386a592680a3315ed3d55e7c6716bc177fd628a8d67f520e224b1a4d4de5f
5
5
  SHA512:
6
- metadata.gz: bc74e409e73b0b63f5a609e44b0a90a88cf4e83253604cbf6634f62b9c6ff12cccdc40fa2399acd4c373c44d3748ff311828890f319fc508c35e4993c88ff800
7
- data.tar.gz: b6f7d0abe389ee3c0342fbdd862f0671bc94959eb9f7b3755e51c7aac1aad74e65127b8819f5b3f310a8e2c2ede29dd663642f9a16e12b5fdf563dd9e2e9bb4f
6
+ metadata.gz: 6fef982e2095471e35cc7235a3bc5712066845fd4302131e9760e8d10da548ec73b40f344816077b915b63d93d32cb5b459507ad2133ac52da257a6230e99353
7
+ data.tar.gz: cbbaa050b52517cf272d7d0da4d875075e094b3dcda074a89c55945ceedb6c357914f9e9be0cd09e45ac9d6ace9f61f71b8f9d2ccb5c8d3ebb5ba4fd9251e632
data/isodoc.gemspec CHANGED
@@ -43,6 +43,7 @@ Gem::Specification.new do |spec|
43
43
  spec.add_dependency "relaton-cli"
44
44
  spec.add_dependency "relaton-render", "~> 0.5.2"
45
45
  spec.add_dependency "roman-numerals"
46
+ spec.add_dependency "rouge", "~> 4.0"
46
47
  spec.add_dependency "thread_safe"
47
48
  spec.add_dependency "twitter_cldr", ">= 6.6.0"
48
49
  spec.add_dependency "uuidtools"
@@ -124,6 +124,35 @@ a.FootnoteRef + a.FootnoteRef:before {
124
124
  color: red;
125
125
  text-decoration: line-through; }
126
126
 
127
+ /* code highlighting with line numbers */
128
+ table.rouge-line-table td.rouge-gutter {
129
+ -moz-user-select: none;
130
+ -ms-user-select: none;
131
+ -webkit-user-select: none;
132
+ user-select: none;
133
+ padding-right: 1em; }
134
+
135
+ table.rouge-line-table td.rouge-code {
136
+ -moz-user-select: all;
137
+ -ms-user-select: all;
138
+ -webkit-user-select: all;
139
+ user-select: all; }
140
+
141
+ table.rouge-line-table,
142
+ table.rouge-line-table th,
143
+ table.rouge-line-table td {
144
+ width: auto;
145
+ border: none;
146
+ margin: 0;
147
+ padding: 0;
148
+ font-size: 100%; }
149
+
150
+ table.rouge-line-table pre {
151
+ margin: 0;
152
+ padding: 0;
153
+ overflow-x: visible;
154
+ font-size: 100%; }
155
+
127
156
  #standard-band {
128
157
  background-color: #0AC442; }
129
158
 
@@ -45,3 +45,12 @@ span.addition {
45
45
  span.deletion {
46
46
  color: red;
47
47
  text-decoration: line-through; }
48
+
49
+ table.rouge-line-table {
50
+ border: none;
51
+ mso-border-alt: none;
52
+ mso-border-insideh: none;
53
+ mso-border-insidev: none; }
54
+
55
+ td.rouge-code p.Sourcecode {
56
+ margin: 0px; }
@@ -42,3 +42,14 @@ span.deletion {
42
42
  color: red;
43
43
  text-decoration: line-through;
44
44
  }
45
+
46
+ table.rouge-line-table {
47
+ border:none;
48
+ mso-border-alt:none;
49
+ mso-border-insideh:none;
50
+ mso-border-insidev:none;
51
+ }
52
+
53
+ td.rouge-code p.Sourcecode {
54
+ margin: 0px;
55
+ }
@@ -123,3 +123,32 @@ a.FootnoteRef + a.FootnoteRef:before {
123
123
  .deletion {
124
124
  color: red;
125
125
  text-decoration: line-through; }
126
+
127
+ /* code highlighting with line numbers */
128
+ table.rouge-line-table td.rouge-gutter {
129
+ -moz-user-select: none;
130
+ -ms-user-select: none;
131
+ -webkit-user-select: none;
132
+ user-select: none;
133
+ padding-right: 1em; }
134
+
135
+ table.rouge-line-table td.rouge-code {
136
+ -moz-user-select: all;
137
+ -ms-user-select: all;
138
+ -webkit-user-select: all;
139
+ user-select: all; }
140
+
141
+ table.rouge-line-table,
142
+ table.rouge-line-table th,
143
+ table.rouge-line-table td {
144
+ width: auto;
145
+ border: none;
146
+ margin: 0;
147
+ padding: 0;
148
+ font-size: 100%; }
149
+
150
+ table.rouge-line-table pre {
151
+ margin: 0;
152
+ padding: 0;
153
+ overflow-x: visible;
154
+ font-size: 100%; }
@@ -152,3 +152,37 @@ a.FootnoteRef + a.FootnoteRef:before {
152
152
  color: red;
153
153
  text-decoration: line-through;
154
154
  }
155
+
156
+ /* code highlighting with line numbers */
157
+
158
+ table.rouge-line-table td.rouge-gutter {
159
+ -moz-user-select: none;
160
+ -ms-user-select: none;
161
+ -webkit-user-select: none;
162
+ user-select: none;
163
+ padding-right: 1em;
164
+ }
165
+
166
+ table.rouge-line-table td.rouge-code {
167
+ -moz-user-select: all;
168
+ -ms-user-select: all;
169
+ -webkit-user-select: all;
170
+ user-select: all;
171
+ }
172
+
173
+ table.rouge-line-table,
174
+ table.rouge-line-table th,
175
+ table.rouge-line-table td {
176
+ width: auto;
177
+ border: none;
178
+ margin: 0;
179
+ padding: 0;
180
+ font-size: 100%;
181
+ }
182
+
183
+ table.rouge-line-table pre {
184
+ margin: 0;
185
+ padding: 0;
186
+ overflow-x: visible;
187
+ font-size: 100%;
188
+ }
@@ -0,0 +1,39 @@
1
+ sourcecode table td { padding: 5px; }
2
+ sourcecode table pre { margin: 0; }
3
+ sourcecode, sourcecode .w {
4
+ color: #444444;
5
+ }
6
+ sourcecode .cp {
7
+ color: #CC00A3;
8
+ }
9
+ sourcecode .cs {
10
+ color: #CC00A3;
11
+ }
12
+ sourcecode .c, sourcecode .ch, sourcecode .cd, sourcecode .cm, sourcecode .cpf, sourcecode .c1 {
13
+ color: #FF0000;
14
+ }
15
+ sourcecode .kc {
16
+ color: #C34E00;
17
+ }
18
+ sourcecode .kd {
19
+ color: #0000FF;
20
+ }
21
+ sourcecode .kr {
22
+ color: #007575;
23
+ }
24
+ sourcecode .k, sourcecode .kn, sourcecode .kp, sourcecode .kt, sourcecode .kv {
25
+ color: #0000FF;
26
+ }
27
+ sourcecode .s, sourcecode .sb, sourcecode .sc, sourcecode .ld, sourcecode .sd, sourcecode .s2, sourcecode .se, sourcecode .sh, sourcecode .si, sourcecode .sx, sourcecode .sr, sourcecode .s1, sourcecode .ss {
28
+ color: #009C00;
29
+ }
30
+ sourcecode .sa {
31
+ color: #0000FF;
32
+ }
33
+ sourcecode .nb, sourcecode .bp {
34
+ color: #C34E00;
35
+ }
36
+ sourcecode .nt {
37
+ color: #0000FF;
38
+ }
39
+
@@ -24,8 +24,11 @@
24
24
  background: $colorHighlightBg;
25
25
  box-shadow: 3px 0 0 $colorHighlightBg, -3px 0 0 $colorHighlightBg;
26
26
  }
27
- ::selection,
28
- ::-moz-selection {
27
+ *::selection {
28
+ background: $colorHighlightBg;
29
+ color: $colorHighlightFg;
30
+ }
31
+ *::-moz-selection {
29
32
  background: $colorHighlightBg;
30
33
  color: $colorHighlightFg;
31
34
  }
@@ -62,6 +65,6 @@
62
65
  padding: 1em;
63
66
  }
64
67
  td.header {
65
- font-weigth: 400;
68
+ font-weight: 400;
66
69
  }
67
70
  }
@@ -11,7 +11,8 @@ require "mn-requirements"
11
11
 
12
12
  module IsoDoc
13
13
  class Convert < ::IsoDoc::Common
14
- attr_accessor :options, :i18n, :meta, :xrefs, :reqt_models, :requirements_processor
14
+ attr_accessor :options, :i18n, :meta, :xrefs, :reqt_models,
15
+ :requirements_processor
15
16
 
16
17
  # htmlstylesheet: Generic stylesheet for HTML
17
18
  # htmlstylesheet_override: Override stylesheet for HTML
@@ -48,6 +49,7 @@ module IsoDoc
48
49
  # fonts: fontist fonts to install
49
50
  # fontlicenseagreement: fontist font license agreement
50
51
  # modspecidentifierbase: base prefix for any Modspec identifiers
52
+ # sourcehighlighter: whether to apply sourcecode highlighting
51
53
  def initialize(options) # rubocop:disable Lint/MissingSuper
52
54
  @options = options_preprocess(options)
53
55
  init_stylesheets(@options)
@@ -76,10 +78,11 @@ module IsoDoc
76
78
  @suppressheadingnumbers = options[:suppressheadingnumbers]
77
79
  @break_up_urls_in_tables = options[:breakupurlsintables]
78
80
  @sectionsplit = options[:sectionsplit] == "true"
79
- @suppressasciimathdup = options[:suppressasciimathdup] == "true"
81
+ @suppressasciimathdup = options[:suppressasciimathdup]
80
82
  @bare = options[:bare]
81
83
  @aligncrosselements = options[:aligncrosselements]
82
84
  @modspecidentifierbase = options[:modspecidentifierbase]
85
+ @sourcehighlighter = options[:sourcehighlighter]
83
86
  end
84
87
 
85
88
  def init_i18n(options)
@@ -207,7 +210,7 @@ module IsoDoc
207
210
  docxml.root.default_namespace = ""
208
211
  convert_i18n_init(docxml)
209
212
  metadata_init(@lang, @script, @locale, @i18n)
210
- xref_init(@lang, @script, self, @i18n, {locale: @locale})
213
+ xref_init(@lang, @script, self, @i18n, { locale: @locale })
211
214
  [docxml, filename, dir]
212
215
  end
213
216
 
@@ -235,7 +238,7 @@ module IsoDoc
235
238
  end
236
239
 
237
240
  def middle_clause(_docxml = nil)
238
- "//clause[parent::sections][not(@type = 'scope')]"\
241
+ "//clause[parent::sections][not(@type = 'scope')]" \
239
242
  "[not(descendant::terms)]"
240
243
  end
241
244
 
@@ -6,19 +6,19 @@ module IsoDoc
6
6
  @annotation = false
7
7
 
8
8
  def middle_title(_isoxml, out)
9
- out.p(**{ class: "zzSTDTitle1" }) { |p| p << @meta.get[:doctitle] }
9
+ out.p(class: "zzSTDTitle1") { |p| p << @meta.get[:doctitle] }
10
10
  end
11
11
 
12
12
  def figure_name_parse(_node, div, name)
13
13
  return if name.nil?
14
14
 
15
- div.p **{ class: "FigureTitle", style: "text-align:center;" } do |p|
15
+ div.p class: "FigureTitle", style: "text-align:center;" do |p|
16
16
  name.children.each { |n| parse(n, p) }
17
17
  end
18
18
  end
19
19
 
20
20
  def figure_key(out)
21
- out.p **{ style: "page-break-after:avoid;" } do |p|
21
+ out.p style: "page-break-after:avoid;" do |p|
22
22
  p.b { |b| b << @i18n.key }
23
23
  end
24
24
  end
@@ -63,7 +63,7 @@ module IsoDoc
63
63
  def sourcecode_name_parse(_node, div, name)
64
64
  return if name.nil?
65
65
 
66
- div.p **{ class: "SourceTitle", style: "text-align:center;" } do |p|
66
+ div.p class: "SourceTitle", style: "text-align:center;" do |p|
67
67
  name.children.each { |n| parse(n, p) }
68
68
  end
69
69
  end
@@ -75,13 +75,19 @@ module IsoDoc
75
75
  def sourcecode_parse(node, out)
76
76
  name = node.at(ns("./name"))
77
77
  out.p **sourcecode_attrs(node) do |div|
78
- @sourcecode = true
79
- node.children.each { |n| parse(n, div) unless n.name == "name" }
80
- @sourcecode = false
78
+ sourcecode_parse1(node, div)
81
79
  end
82
80
  sourcecode_name_parse(node, out, name)
83
81
  end
84
82
 
83
+ def sourcecode_parse1(node, div)
84
+ @sourcecode = "pre"
85
+ node.at(ns(".//table")) || !node.ancestors("table").empty? and
86
+ @sourcecode = "table"
87
+ node.children.each { |n| parse(n, div) unless n.name == "name" }
88
+ @sourcecode = false
89
+ end
90
+
85
91
  def pre_parse(node, out)
86
92
  out.pre node.text, **attr_code(id: node["id"])
87
93
  end
@@ -89,18 +95,22 @@ module IsoDoc
89
95
  def annotation_parse(node, out)
90
96
  @sourcecode = false
91
97
  @annotation = true
92
- node.at("./preceding-sibling::*[local-name() = 'annotation']") or
93
- out << "<br/>"
94
- callout = node.at(ns("//callout[@target='#{node['id']}']"))
95
- out << "<br/>&lt;#{callout.text}&gt; "
96
- out << node&.children&.text&.strip
97
- @annotation = false
98
+ out.div class: "annotation" do |div|
99
+ #node.at("./preceding-sibling::*[local-name() = 'annotation']") or
100
+ # div << "<br/>"
101
+ callout = node.at(ns("//callout[@target='#{node['id']}']"))
102
+ div << "<span class='c'>&lt;#{callout.text}&gt;</span> "
103
+ div << "<span class='c'>#{node.children&.text&.strip}</span>"
104
+ node.at("./following-sibling::*[local-name() = 'annotation']") and
105
+ div << "<br/>"
106
+ @annotation = false
107
+ end
98
108
  end
99
109
 
100
110
  def formula_where(dlist, out)
101
111
  return unless dlist
102
112
 
103
- out.p **{ style: "page-break-after:avoid;" } do |p|
113
+ out.p style: "page-break-after:avoid;" do |p|
104
114
  p << @i18n.where
105
115
  end
106
116
  parse(dlist, out)
@@ -168,7 +178,7 @@ module IsoDoc
168
178
  source = node.at(ns("./source"))
169
179
  return if author.nil? && source.nil?
170
180
 
171
- out.p **{ class: "QuoteAttribution" } do |p|
181
+ out.p class: "QuoteAttribution" do |p|
172
182
  p << "&#x2014; #{author.text}" if author
173
183
  p << ", " if author && source
174
184
  eref_parse(source, p) if source
@@ -198,7 +208,7 @@ module IsoDoc
198
208
  end
199
209
 
200
210
  def toc_parse(node, out)
201
- out.div **{ class: "toc" } do |div|
211
+ out.div class: "toc" do |div|
202
212
  node.children.each { |n| parse(n, div) }
203
213
  end
204
214
  end
@@ -17,12 +17,12 @@ module IsoDoc
17
17
  def location_parse(node, out); end
18
18
 
19
19
  def span_parse(node, out)
20
- if node["style"]
21
- out.span **{ style: node["style"] } do |s|
20
+ if node["style"] || node["class"]
21
+ out.span **attr_code(style: node["style"],
22
+ class: node["class"]) do |s|
22
23
  node.children.each { |n| parse(n, s) }
23
24
  end
24
- else
25
- node.children.each { |n| parse(n, out) }
25
+ else node.children.each { |n| parse(n, out) }
26
26
  end
27
27
  end
28
28
 
@@ -42,7 +42,7 @@ module IsoDoc
42
42
  else
43
43
  "##{node['target']}"
44
44
  end
45
- out.a(**{ href: target }) { |l| no_locality_parse(node, l) }
45
+ out.a(href: target) { |l| no_locality_parse(node, l) }
46
46
  end
47
47
 
48
48
  def suffix_url(url)
@@ -77,10 +77,10 @@ module IsoDoc
77
77
  if href = eref_target(node)
78
78
  if node["type"] == "footnote"
79
79
  out.sup do |s|
80
- s.a(**{ href: href }) { |l| no_locality_parse(node, l) }
80
+ s.a(href: href) { |l| no_locality_parse(node, l) }
81
81
  end
82
82
  else
83
- out.a(**{ href: href }) { |l| no_locality_parse(node, l) }
83
+ out.a(href: href) { |l| no_locality_parse(node, l) }
84
84
  end
85
85
  else no_locality_parse(node, out)
86
86
  end
@@ -109,7 +109,7 @@ module IsoDoc
109
109
  when "LaTeX" then latexmath_parse(node)
110
110
  else HTMLEntities.new.encode(node.text)
111
111
  end
112
- out.span **{ class: "stem" } do |span|
112
+ out.span class: "stem" do |span|
113
113
  span.parent.add_child ooml
114
114
  end
115
115
  end
@@ -123,7 +123,7 @@ module IsoDoc
123
123
  def asciimath_parse(node)
124
124
  a = node.at(ns("./asciimath"))&.text || node.text
125
125
 
126
- "#{@openmathdelim}#{HTMLEntities.new.encode(a)}"\
126
+ "#{@openmathdelim}#{HTMLEntities.new.encode(a)}" \
127
127
  "#{@closemathdelim}"
128
128
  end
129
129
 
@@ -134,7 +134,7 @@ module IsoDoc
134
134
 
135
135
  def image_title_parse(out, caption)
136
136
  unless caption.nil?
137
- out.p **{ class: "FigureTitle", style: "text-align:center;" } do |p|
137
+ out.p class: "FigureTitle", style: "text-align:center;" do |p|
138
138
  p.b { |b| b << caption.to_s }
139
139
  end
140
140
  end
@@ -151,7 +151,7 @@ module IsoDoc
151
151
  end
152
152
 
153
153
  def smallcap_parse(node, xml)
154
- xml.span **{ style: "font-variant:small-caps;" } do |s|
154
+ xml.span style: "font-variant:small-caps;" do |s|
155
155
  node.children.each { |n| parse(n, s) }
156
156
  end
157
157
  end
@@ -160,21 +160,21 @@ module IsoDoc
160
160
  return if node.nil? || node.text.nil?
161
161
 
162
162
  text = node.to_s
163
- if in_sourcecode
163
+ @sourcecode == "pre" and
164
164
  text = text.gsub("\n", "<br/>").gsub("<br/> ", "<br/>&#xa0;")
165
- .gsub(/ (?= )/, "&#xa0;")
166
- end
165
+ @sourcecode and
166
+ text = text.gsub(/ (?= )/, "&#xa0;")
167
167
  out << text
168
168
  end
169
169
 
170
170
  def add_parse(node, out)
171
- out.span **{ class: "addition" } do |e|
171
+ out.span class: "addition" do |e|
172
172
  node.children.each { |n| parse(n, e) }
173
173
  end
174
174
  end
175
175
 
176
176
  def del_parse(node, out)
177
- out.span **{ class: "deletion" } do |e|
177
+ out.span class: "deletion" do |e|
178
178
  node.children.each { |n| parse(n, e) }
179
179
  end
180
180
  end
@@ -182,7 +182,7 @@ module IsoDoc
182
182
  def error_parse(node, out)
183
183
  text = node.to_xml.gsub(/</, "&lt;").gsub(/>/, "&gt;")
184
184
  out.para do |p|
185
- p.b(**{ role: "strong" }) { |e| e << text }
185
+ p.b(role: "strong") { |e| e << text }
186
186
  end
187
187
  end
188
188
  end
@@ -10,60 +10,59 @@ module IsoDoc
10
10
  text
11
11
  end
12
12
 
13
- def nonstd_bibitem(list, bib, ordinal, biblio)
13
+ def nonstd_bibitem(list, bib, _ordinal, biblio) # %%%
14
14
  list.p **attr_code(iso_bibitem_entry_attrs(bib, biblio)) do |ref|
15
- ids = bibitem_ref_code(bib)
16
- idents = render_identifier(ids)
17
- if biblio then ref_entry_code(ref, ordinal, idents, ids)
18
- else
19
- ref << (idents[:ordinal] || idents[:metanorma] || idents[:sdo]).to_s
20
- ref << ", #{idents[sdo]}" if idents[:ordinal] && idents[:sdo]
21
- end
22
- ref << "," if idents[:sdo]
23
- ref << " "
15
+ # ids = bibitem_ref_code(bib)
16
+ # idents = render_identifier(ids)
17
+ # if biblio then ref_entry_code(ref, ordinal, idents, ids)
18
+ # else
19
+ # ref << (idents[:ordinal] || idents[:metanorma] || idents[:sdo]).to_s
20
+ # ref << ", #{idents[sdo]}" if idents[:ordinal] && idents[:sdo]
21
+ # end
22
+ # ref << "," if idents[:sdo]
23
+ tag = bib.at(ns("./biblio-tag"))
24
+ tag&.children&.each { |n| parse(n, ref) }
24
25
  reference_format(bib, ref)
25
26
  end
26
27
  end
27
28
 
28
- def std_bibitem_entry(list, bib, ordinal, biblio)
29
+ def std_bibitem_entry(list, bib, _ordinal, biblio) # %%%
29
30
  list.p **attr_code(iso_bibitem_entry_attrs(bib, biblio)) do |ref|
30
- idents = render_identifier(bibitem_ref_code(bib))
31
- if biblio then ref_entry_code(ref, ordinal, idents, nil)
32
- else
33
- ref << (idents[:ordinal] || idents[:metanorma] || idents[:sdo]).to_s
34
- ref << ", #{idents[:sdo]}" if (idents[:ordinal] ||
35
- idents[:metanorma]) && idents[:sdo]
36
- end
37
- date_note_process(bib, ref)
38
- ref << "," if idents[:sdo]
39
- ref << " "
31
+ # idents = render_identifier(bibitem_ref_code(bib))
32
+ # if biblio then ref_entry_code(ref, ordinal, idents, nil)
33
+ # else
34
+ # ref << (idents[:ordinal] || idents[:metanorma] || idents[:sdo]).to_s
35
+ # ref << ", #{idents[:sdo]}" if (idents[:ordinal] ||
36
+ # idents[:metanorma]) && idents[:sdo]
37
+ # end
38
+ # date_note_process(bib, ref)
39
+ # ref << "," if idents[:sdo]
40
+ tag = bib.at(ns("./biblio-tag"))
41
+ tag&.children&.each { |n| parse(n, ref) }
40
42
  reference_format(bib, ref)
41
43
  end
42
44
  end
43
45
 
44
- # if ids is just a number, only use that ([1] Non-Standard)
45
- # else, use both ordinal, as prefix, and ids
46
- def ref_entry_code(ref, ordinal, ids, _id)
47
- prefix_bracketed_ref(ref, ids[:ordinal] || ids[:metanorma] ||
48
- "[#{ordinal}]")
49
- ids[:sdo] and ref << (ids[:sdo]).to_s
50
- end
46
+ # # if ids is just a number, only use that ([1] Non-Standard)
47
+ # # else, use both ordinal, as prefix, and ids
48
+ # def ref_entry_code(ref, ordinal, ids, _id) #%%%
49
+ # prefix_bracketed_ref(ref, ids[:ordinal] || ids[:metanorma] ||
50
+ # "[#{ordinal}]")
51
+ # ids[:sdo] and ref << (ids[:sdo]).to_s
52
+ # end
51
53
 
52
- def pref_ref_code(bib)
53
- return nil if bib["suppress_identifier"] == "true"
54
+ SKIP_DOCID = "@type = 'DOI' or @type = 'metanorma' or @type = 'ISSN' or " \
55
+ "@type = 'metanorma-ordinal' or @type = 'ISBN'".freeze
54
56
 
55
- ret = bib.xpath(ns("./docidentifier[@primary = 'true'][@language = '#{@lang}']"))
57
+ def pref_ref_code(bib)
58
+ bib["suppress_identifier"] == "true" and return nil
59
+ lang = "[@language = '#{@lang}']"
60
+ ret = bib.xpath(ns("./docidentifier[@primary = 'true']#{lang}"))
56
61
  ret.empty? and
57
62
  ret = bib.xpath(ns("./docidentifier[@primary = 'true']"))
58
63
  ret.empty? and
59
- ret = bib.at(ns(<<~XPATH,
60
- ./docidentifier[not(@type = 'DOI' or @type = 'metanorma' or @type = 'metanorma-ordinal' or @type = 'ISSN' or @type = 'ISBN')][@language = '#{@lang}']
61
- XPATH
62
- )) ||
63
- bib.at(ns(<<~XPATH,
64
- ./docidentifier[not(@type = 'DOI' or @type = 'metanorma' or @type = 'metanorma-ordinal' or @type = 'ISSN' or @type = 'ISBN')]
65
- XPATH
66
- ))
64
+ ret = bib.at(ns("./docidentifier[not(#{SKIP_DOCID})]#{lang}")) ||
65
+ bib.at(ns("./docidentifier[not(#{SKIP_DOCID})]"))
67
66
  ret
68
67
  end
69
68
 
@@ -123,14 +122,6 @@ module IsoDoc
123
122
  .include? prefix
124
123
  end
125
124
 
126
- def date_note_process(bib, ref)
127
- date_note = bib.at(ns("./note[@type = 'Unpublished-Status']"))
128
- return if date_note.nil?
129
-
130
- date_note.children = "<p>#{date_note.content}</p>"
131
- footnote_parse(date_note, ref)
132
- end
133
-
134
125
  def iso_bibitem_entry_attrs(bib, biblio)
135
126
  { id: bib["id"], class: biblio ? "Biblio" : "NormRef" }
136
127
  end
@@ -141,11 +132,6 @@ module IsoDoc
141
132
  bib["hidden"] == "true"
142
133
  end
143
134
 
144
- def prefix_bracketed_ref(ref, text)
145
- ref << text.to_s
146
- insert_tab(ref, 1)
147
- end
148
-
149
135
  def reference_format(bib, out)
150
136
  ftitle = bib.at(ns("./formattedref"))
151
137
  ftitle&.children&.each { |n| parse(n, out) }