metanorma-bipm 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|