metanorma-bipm 1.0.0 → 1.0.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/lib/asciidoctor/bipm/basicdoc.rng +50 -3
- data/lib/asciidoctor/bipm/bipm.rng +8 -1
- data/lib/asciidoctor/bipm/converter.rb +6 -10
- data/lib/asciidoctor/bipm/isodoc.rng +7 -0
- data/lib/isodoc/bipm/base_convert.rb +20 -7
- data/lib/isodoc/bipm/bipm.brochure.xsl +614 -166
- data/lib/isodoc/bipm/bipm.guide.xsl +614 -166
- data/lib/isodoc/bipm/bipm.mise-en-pratique.xsl +614 -166
- data/lib/isodoc/bipm/bipm.rapport.xsl +614 -166
- data/lib/isodoc/bipm/i18n-en.yaml +2 -0
- data/lib/isodoc/bipm/i18n-fr.yaml +6 -4
- data/lib/isodoc/bipm/index.rb +136 -0
- data/lib/isodoc/bipm/presentation_xml_convert.rb +2 -1
- data/lib/metanorma/bipm/processor.rb +11 -0
- data/lib/metanorma/bipm/version.rb +1 -1
- data/metanorma-bipm.gemspec +1 -1
- metadata +5 -5
- data/lib/metanorma/bipm/fonts_manifest.yaml +0 -7
@@ -1,6 +1,7 @@
|
|
1
1
|
annex: Annexe
|
2
2
|
appendix: Appendice
|
3
3
|
see: voir
|
4
|
+
see_also: voir aussi
|
4
5
|
clause: chapître
|
5
6
|
subclause: section
|
6
7
|
formula: équation
|
@@ -15,6 +16,7 @@ requirement: exigence
|
|
15
16
|
recommendation: recommandation
|
16
17
|
permission: autorisation
|
17
18
|
example_xref: exemple
|
19
|
+
index: Index
|
18
20
|
doctype_dict:
|
19
21
|
brochure: brochure
|
20
22
|
mise-en-pratique: mise-en-pratique
|
@@ -28,7 +30,7 @@ doctype_dict:
|
|
28
30
|
cipm-mra: cipm-mra
|
29
31
|
resolution: résolution
|
30
32
|
stage_dict:
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
33
|
+
draft-proposal: projet-de-proposition
|
34
|
+
draft-development: projet-de-développement
|
35
|
+
in-force: en-vigeur
|
36
|
+
retired: retiré
|
@@ -0,0 +1,136 @@
|
|
1
|
+
require "twitter_cldr"
|
2
|
+
require "sterile"
|
3
|
+
|
4
|
+
module IsoDoc
|
5
|
+
module BIPM
|
6
|
+
class PresentationXMLConvert < IsoDoc::Generic::PresentationXMLConvert
|
7
|
+
def add_id
|
8
|
+
%(id="_#{UUIDTools::UUID.random_create}")
|
9
|
+
end
|
10
|
+
|
11
|
+
def index(docxml)
|
12
|
+
return unless docxml.at(ns("//index"))
|
13
|
+
i = docxml.root.add_child "<clause type='index' #{add_id}><title>#{@i18n.index}</title></clause>"
|
14
|
+
index = sort_indexterms(docxml.xpath(ns("//index")), docxml.xpath(ns("//index-xref[@also = 'false']")),
|
15
|
+
docxml.xpath(ns("//index-xref[@also = 'true']")))
|
16
|
+
index1(docxml, i, index)
|
17
|
+
end
|
18
|
+
|
19
|
+
def index1(docxml, i, index)
|
20
|
+
index.keys.sort.each do |k|
|
21
|
+
c = i.first.add_child "<clause #{add_id}><title>#{k}</title><ul></ul></clause>"
|
22
|
+
words = index[k].keys.each_with_object({}) { |w, v| v[sortable(w).downcase] = w }
|
23
|
+
words.keys.localize(@lang.to_sym).sort.to_a.each do |w|
|
24
|
+
c.first.at(ns("./ul")).add_child index_entries(words, index[k], w)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
@xrefs.bookmark_anchor_names(docxml.xpath(ns(@xrefs.sections_xpath)))
|
28
|
+
end
|
29
|
+
|
30
|
+
def sortable(s)
|
31
|
+
HTMLEntities.new.decode(Nokogiri::XML.fragment(s).text)
|
32
|
+
end
|
33
|
+
|
34
|
+
def index_entries_opt
|
35
|
+
{ xref_lbl: ", ", see_lbl: ", #{see_lbl}", also_lbl: ", #{also_lbl}" }
|
36
|
+
end
|
37
|
+
|
38
|
+
def index_entries(words, index, primary)
|
39
|
+
ret = index_entries_head(words[primary], index.dig(words[primary], nil, nil), index_entries_opt)
|
40
|
+
words2 = index[words[primary]]&.keys&.reject { |k| k.nil?}&.each_with_object({}) { |w, v| v[w.downcase] = w }
|
41
|
+
unless words2.empty?
|
42
|
+
ret += "<ul>"
|
43
|
+
words2.keys.localize(@lang.to_sym).sort.to_a.each do |w|
|
44
|
+
ret += index_entries2(words2, index[words[primary]], w)
|
45
|
+
end
|
46
|
+
ret += "</ul>"
|
47
|
+
end
|
48
|
+
ret + "</li>"
|
49
|
+
end
|
50
|
+
|
51
|
+
def index_entries2(words, index, secondary)
|
52
|
+
ret = index_entries_head(words[secondary], index.dig(words[secondary], nil), index_entries_opt)
|
53
|
+
words3 = index[words[secondary]]&.keys&.reject { |k| k.nil?}&.each_with_object({}) { |w, v| v[w.downcase] = w }
|
54
|
+
unless words3.empty?
|
55
|
+
ret += "<ul>"
|
56
|
+
words3.keys.localize(@lang.to_sym).sort.to_a.each do |w|
|
57
|
+
ret += (index_entries_head(words3[w], index[words[secondary]][words3[w]], index_entries_opt) + "</li>")
|
58
|
+
end
|
59
|
+
ret += "</ul>"
|
60
|
+
end
|
61
|
+
ret + "</li>"
|
62
|
+
end
|
63
|
+
|
64
|
+
def index_entries_head(head, entries, opt)
|
65
|
+
ret = "<li>#{head}"
|
66
|
+
xref = entries&.dig(:xref)&.join(", ")
|
67
|
+
see_sort = entries&.dig(:see)&.each_with_object({}) { |w, v| v[sortable(w).downcase] = w }
|
68
|
+
see = see_sort&.keys&.localize(@lang.to_sym)&.sort&.to_a&.map { |k| see_sort[k] }&.join(", ")
|
69
|
+
also_sort = entries&.dig(:also)&.each_with_object({}) { |w, v| v[sortable(w).downcase] = w }
|
70
|
+
also = also_sort&.keys&.localize(@lang.to_sym)&.sort&.to_a&.map { |k| also_sort[k] }&.join(", ")
|
71
|
+
ret += "#{opt[:xref_lbl]} #{xref}" if xref
|
72
|
+
ret += "#{opt[:see_lbl]} #{see}" if see
|
73
|
+
ret += "#{opt[:also_lbl]} #{also}" if also
|
74
|
+
ret
|
75
|
+
end
|
76
|
+
|
77
|
+
def see_lbl
|
78
|
+
@lang == "en" ? @i18n.see : "<em>#{@i18n.see}</em>"
|
79
|
+
end
|
80
|
+
|
81
|
+
def also_lbl
|
82
|
+
@lang == "en" ? @i18n.see_also : "<em>#{@i18n.see_also}</em>"
|
83
|
+
end
|
84
|
+
|
85
|
+
def sort_indexterms(terms, see, also)
|
86
|
+
index = extract_indexterms(terms)
|
87
|
+
index = extract_indexsee(index, see, :see)
|
88
|
+
index = extract_indexsee(index, also, :also)
|
89
|
+
index.keys.sort.each_with_object({}) do |k, v|
|
90
|
+
v[sortable(k)[0].upcase.transliterate] ||= {}
|
91
|
+
v[sortable(k)[0].upcase.transliterate][k] = index[k]
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def extract_indexsee(v, terms, label)
|
96
|
+
terms.each_with_object(v) do |t, v|
|
97
|
+
term = t&.at(ns("./primary"))&.children&.to_xml
|
98
|
+
term2 = t&.at(ns("./secondary"))&.children&.to_xml
|
99
|
+
term3 = t&.at(ns("./tertiary"))&.children&.to_xml
|
100
|
+
v[term] ||= {}
|
101
|
+
v[term][term2] ||= {}
|
102
|
+
v[term][term2][term3] ||= {}
|
103
|
+
v[term][term2][term3][label] ||= []
|
104
|
+
v[term][term2][term3][label] << t&.at(ns("./target"))&.children&.to_xml
|
105
|
+
t.remove
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def xml_encode_attr(s)
|
110
|
+
HTMLEntities.new.encode(s, :basic, :hexadecimal).gsub(/\&#x([^;]+);/) { |x| "&#x#{$1.upcase};" }
|
111
|
+
end
|
112
|
+
|
113
|
+
# attributes are decoded into UTF-8, elements in extract_indexsee are still in entities
|
114
|
+
def extract_indexterms(terms)
|
115
|
+
terms.each_with_object({}) do |t, v|
|
116
|
+
term = t&.at(ns("./primary"))&.children&.to_xml
|
117
|
+
term2 = t&.at(ns("./secondary"))&.children&.to_xml
|
118
|
+
term3 = t&.at(ns("./tertiary"))&.children&.to_xml
|
119
|
+
index2bookmark(t)
|
120
|
+
v[term] ||= {}
|
121
|
+
v[term][term2] ||= {}
|
122
|
+
v[term][term2][term3] ||= {}
|
123
|
+
v[term][term2][term3][:xref] ||= []
|
124
|
+
to = t["to"] ? "to='#{t['to']}' " : ""
|
125
|
+
v[term][term2][term3][:xref] << "<xref target='#{t['id']}' #{to}pagenumber='true'/>"
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
def index2bookmark(t)
|
130
|
+
t.name = "bookmark"
|
131
|
+
t.children.each { |x| x.remove }
|
132
|
+
t["id"] = "_#{UUIDTools::UUID.random_create}"
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require "isodoc"
|
2
2
|
require "metanorma-generic"
|
3
3
|
require_relative "init"
|
4
|
+
require_relative "index"
|
4
5
|
|
5
6
|
module IsoDoc
|
6
7
|
module BIPM
|
@@ -113,7 +114,7 @@ module IsoDoc
|
|
113
114
|
end
|
114
115
|
|
115
116
|
def mathml1(f, locale)
|
116
|
-
|
117
|
+
localize_maths(f, locale)
|
117
118
|
end
|
118
119
|
|
119
120
|
include Init
|
@@ -14,6 +14,17 @@ module Metanorma
|
|
14
14
|
).tap { |hs| hs.delete(:doc) }
|
15
15
|
end
|
16
16
|
|
17
|
+
def fonts_manifest
|
18
|
+
{
|
19
|
+
"Arial" => nil,
|
20
|
+
"Times New Roman" => nil,
|
21
|
+
"Work Sans" => nil,
|
22
|
+
"STIX Two Math" => nil,
|
23
|
+
"Source Han Sans" => nil,
|
24
|
+
"TeX Gyre Chorus" => nil,
|
25
|
+
}
|
26
|
+
end
|
27
|
+
|
17
28
|
def version
|
18
29
|
"Metanorma::BIPM #{Metanorma::BIPM::VERSION}"
|
19
30
|
end
|
data/metanorma-bipm.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.require_paths = ["lib"]
|
27
27
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
|
28
28
|
|
29
|
-
spec.add_dependency "metanorma-generic", "~> 1.8.
|
29
|
+
spec.add_dependency "metanorma-generic", "~> 1.8.1"
|
30
30
|
|
31
31
|
spec.add_development_dependency "byebug", "~> 9.1"
|
32
32
|
spec.add_development_dependency "sassc", "2.4.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-bipm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-12-
|
11
|
+
date: 2020-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: metanorma-generic
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.8.
|
19
|
+
version: 1.8.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: 1.8.
|
26
|
+
version: 1.8.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: byebug
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -221,6 +221,7 @@ files:
|
|
221
221
|
- lib/isodoc/bipm/i18n-en.yaml
|
222
222
|
- lib/isodoc/bipm/i18n-fr.yaml
|
223
223
|
- lib/isodoc/bipm/i18n.rb
|
224
|
+
- lib/isodoc/bipm/index.rb
|
224
225
|
- lib/isodoc/bipm/init.rb
|
225
226
|
- lib/isodoc/bipm/metadata.rb
|
226
227
|
- lib/isodoc/bipm/pdf_convert.rb
|
@@ -228,7 +229,6 @@ files:
|
|
228
229
|
- lib/isodoc/bipm/xref.rb
|
229
230
|
- lib/metanorma-bipm.rb
|
230
231
|
- lib/metanorma/bipm.rb
|
231
|
-
- lib/metanorma/bipm/fonts_manifest.yaml
|
232
232
|
- lib/metanorma/bipm/processor.rb
|
233
233
|
- lib/metanorma/bipm/version.rb
|
234
234
|
- metanorma-bipm.gemspec
|